| 1234567891011121314151617181920212223242526272829 |
- from __future__ import annotations
- from pathlib import Path
- ROOT = Path(__file__).resolve().parents[2]
- MIGRATION = ROOT / "migrations/versions/20260813_497_agent_runtime_critical_hardening.py"
- DEPLOYMENT = ROOT / "deployment/migrations/versions/20260813_497_agent_runtime_critical_hardening.py"
- def test_critical_hardening_migration_is_after_496_and_contains_atomic_claim_and_runtime_boundary():
- source = MIGRATION.read_text(encoding="utf-8")
- assert 'revision = "20260813_497"' in source
- assert 'down_revision = "20260813_496"' in source
- for required in (
- "agent_runtime_authorize", "FOR UPDATE", "request_digest", "idempotency_key",
- "dataops_agent_runtime_owner", "dataops_agent_runtime", "SECURITY DEFINER",
- "REVOKE ALL ON TABLE public.agent_invocation_audits", "governance_task_reviews",
- "data_incidents", "approval_task_uid", "clock_timestamp()",
- "t.business_domain_uid=p_domain::text",
- "END; $agent_runtime_authorize$;",
- "p_payload->>'request_digest')",
- "agent runtime role-init is required before migration 20260813_497",
- "agent_runtime_transition", "agent_runtime_canary_transition",
- "runtime recovery approval required", "generation fence conflict",
- ):
- assert required in source
- for forbidden in ("raw_input", "raw_output", "secret_value"):
- assert forbidden not in source
- assert MIGRATION.read_bytes() == DEPLOYMENT.read_bytes()
|