Align lifecycle persistence with review isolation and runtime health

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a10780-6d41-7952-9718-dfbc1f41236f
This commit is contained in:
tegwick 2026-10-04 18:34:40 +02:00
parent b2a4b863a8
commit f0e9341650
8 changed files with 102 additions and 5 deletions

View file

@ -184,3 +184,31 @@ def test_foundation_imports_no_ui_or_http_runtime():
"assert not {'informed_decision.ui', 'informed_decision.web', "
"'informed_decision.runtime'} & sys.modules.keys()"], capture_output=True, text=True)
assert result.returncode == 0, result.stderr
def test_unpublished_records_do_not_enter_legacy_review_overview(workspace):
repo, memo = workspace
legacy = replace(memo, id="legacy-review")
repo.store.save_memo(legacy)
repo.register(AGENT, memo, key="register")
assert [m.id for m in repo.store.memos_for(memo.binding.principal.id)] == [legacy.id]
def test_legacy_import_cannot_bypass_lifecycle_revision_history(workspace):
repo, memo = workspace
repo.register(AGENT, memo, key="register")
with pytest.raises(Conflict, match="lifecycle revision"):
repo.store.save_memo(memo.next_version(brief="unattributed edit"))
assert repo.retrieve(AGENT.tenant, memo.id).version == 1
assert repo.store.lifecycle_counts() == {"records": 1, "events": 1, "pending": 1}
def test_pending_lifecycle_events_close_existing_runtime_readiness_immediately(workspace):
from informed_decision.runtime import AuditPump
repo, memo = workspace
pump = AuditPump(repo.store, None, clock=lambda: 100)
pump._last_ok = 100
assert pump.ready()
repo.register(AGENT, memo, key="register")
assert not pump.ready()
assert not AuditPump(Store(repo.store.path), None).ready()