¶ 2026-07-27 EventHorizon Proceed continuity and effect grounding
EventHorizon normal-turn prompting was hardened so that:
- Empty Proceed still does not create consent, but it also does not erase earlier player-authored direction.
- An established, unopposed operation should reach its next coherent result or a genuinely necessary player decision instead of repeating setup gestures across turns.
- Item descriptions, template effects, ready effects, consumed state, and administration history do not establish a live condition. A current effect requires structured
active_effects state or an enforced item operation that applies it in the current turn.
Repository requirement REQ-0012 was updated to version 11. Commit 0a34af6 was merged to main as 6a4d558.
The normal Gitea workflow built and deployed image:
gitea.app.lan/eventhorizon/eventhorizon:sha-6a4d558e635c
Both replicas completed rollout with zero restarts.
A narrow guarded transaction repaired Elara session 2b8c6d5b-74a4-49c5-9c3d-60c6f98b116c:
- Rewound the session from turn 34 to turn 31, the last trustworthy boundary before repeated preparation and the false Lullaby statement.
- Removed 8 later chat messages and 5 later turn jobs.
- Removed later turn-memory evidence and player-metric rows.
- Incremented
session_generation from 1 to 2.
- Restored the Lullaby suppository in both Elara's configured starter inventory and the live session from the canonical template:
condition=new, 5/5 charges, one ready effect, and template_source_id=lullaby-suppository-1.
- Confirmed there is no active Lullaby effect.
- Removed one stale completed memory extraction batch spanning turns 29–34 after confirming it produced no durable memory, evidence, or vector rows.
Mode-600 recovery artifacts are retained under /home/ax_julian/temp/eventhorizon-elara-repair.AefYd8/:
pre-repair.jsonl — SHA-256 ab5c460c329a2ba0b3d2f7c46e6c176324ca3228529b96c4afba0f08514928cb
executed-repair.sql — SHA-256 3fd015e120835aee964c2c8f157eda11a8c86e1b7c47270a090ecfec6da82d12
cargo fmt --all -- --check: passed.
- Backend tests: 322 passed, 0 failed.
- Live session: turn 31, generation 2, last resolved turn 31, player metric source turn 31.
- Transcript: no messages after the turn-31 assistant reply and no Lullaby mention.
- Persona and live-session Lullaby records:
condition=new, 5/5 charges, one ready effect, canonical template source retained.
- Future turn jobs, future memory jobs/evidence, future metric rows, future durable memories, and future vector rows: zero.
- Browser-facing session/history APIs return turn 31, 63 messages, the turn-31 final reply, and no Lullaby/check-in text.
/healthz: healthy.
/readyz: PostgreSQL and Qdrant ready.
- Production replicas: 2/2 ready on
sha-6a4d558e635c, zero restarts.