from __future__ import annotations import unittest from pathlib import Path ROOT = Path(__file__).resolve().parents[1] PAGE = ROOT / "webui" / "src" / "features" / "datasources" / "DatasourcesPage.tsx" API = ROOT / "webui" / "src" / "api" / "datasources.ts" class DatasourceLifecycleGovernanceUiTests(unittest.TestCase): def test_stage_decisions_and_retention_use_shared_semantic_primitives(self) -> None: source = PAGE.read_text(encoding="utf-8") self.assertIn(" None: source = API.read_text(encoding="utf-8") self.assertIn("expected_policy_hash", source) self.assertIn("expected_subject_digest", source) self.assertIn("/lifecycle-evidence", source) self.assertIn("/retention/plan", source) self.assertIn("plan_hash: plan.plan_hash", source) self.assertIn("/refresh/stage", source) if __name__ == "__main__": unittest.main()