fix(harness): record postgres decision phases

This commit is contained in:
User
2026-07-16 18:08:17 +02:00
parent c1cddaa667
commit 72db6b823d
2 changed files with 37 additions and 1 deletions
@@ -6,6 +6,7 @@ from sqlalchemy import create_engine, text
from testcontainers.postgres import PostgresContainer
from tht.decisions import DecisionInput
from tht.phase import effective_decisions
from tht.session.models import PrincipalContext, SessionManifest
from tht.session.store import SessionError
@@ -61,6 +62,27 @@ def test_owner_can_read_own_snapshot_but_not_another_owners(database_url):
bob.get(session_id)
def test_named_decision_is_stale_after_postgres_ledger_reopen(database_url):
repository = _repository(database_url, "phase-owner")
session_id = str(uuid.uuid4())
repository.create(_manifest(session_id))
for phase in range(1, 5):
repository.append_decisions(session_id, [
DecisionInput(type="phase_approved", subject=f"phase:{phase}")
])
repository.append_decisions(session_id, [
DecisionInput(type="cte_approved", subject="named_cte")
])
repository.append_decisions(session_id, [
DecisionInput(type="phase_reopened", subject="phase:3")
])
snapshot = repository.get(session_id)
named = next(item for item in snapshot.decisions if item.subject == "named_cte")
assert named.phase == 5
assert "named_cte" not in {item.subject for item in effective_decisions(snapshot)}
def test_admin_can_read_another_owners_session(database_url):
owner = _repository(database_url, "owner")
admin = _repository(database_url, "admin", is_admin=True)