Repository navigation
v0.24.0
Fixed (security)
-
Killed sessions can no longer be reactivated —
activate_session()andresume_session()raise whenkilled_atis set. Previously a session paused by the kill switch could be silently resumed.unkill_session()added for explicit operator recovery.SessionState.killed_at/SessionSummary.killed_atare new fields (existing rows default toNULL). -
Event sequence monotonicity enforced on replay —
EventStore.replay()raisesSessionStateIntegrityErrorif the sequence contains gaps or duplicates.
Added
SessionState.started_at— stamped when a session first becomes ACTIVE; preserved through pause/resume. Enables run-duration computation.ControlPlaneObserver.list_sessions()— now available on the sync facade, matching the async counterpart.
Changed (breaking)
-
ActionNamestripped toUNKNOWNsentinel — 35 hardcoded domain action names removed. Use plain strings:decision="wire_transfer"instead ofdecision=ActionName.WIRE_TRANSFER.register_action_names()no longer required before use. -
parse_action_name()no longer coerces unknown strings toUNKNOWN— any non-empty, non-"unknown"string passes through as-is. Unlisted actions reach thePolicyEnginenormally instead of being blocked.
See docs/compatibility.md for migration details.