¶ EventHorizon item administration and onset narration integrity
Date: 2026-07-27
Prevented item administration and effect onset from entering contradictory state when a persona prepares an item, completes a private application, or an effect crosses from pending to active.
Persona output could use operation instead of the typed action field. Malformed structured item data was then silently dropped while completion prose survived. Later evaluators were allowed to infer a completed charged-item use from prose alone, spend a charge, or create an unrelated semantic effect. Separately, the deterministic onset tick had no typed, narrator-visible transition carrying authored sensations, so onset could become active without narrating heat, heaviness, or other configured manifestations.
- Accept the legacy
operation alias, but fail the full generated action closed when structured item data is still malformed.
- Require typed perception review to classify persona item completion.
- Preserve preparation dialogue/action without committing an item use when completion is not observed.
- Send validated private player-targeted completion to the narrator as a sanitized structured action without exposing private item identity.
- Prevent post-narration and background evaluators from spending configured item charges or creating configured-item effects without a validated item action.
- Emit a one-turn typed onset transition containing only authored, player-perceptible manifestations and require narration to render it once.
- Preserve onset transitions across resolved snapshots and narration regeneration.
- Updated durable requirements REQ-0482, REQ-0493, REQ-0494, and REQ-0500.
cargo fmt --all
- Backend test suite: 344 passed, 0 failed
- Frontend test suite: 8 passed, 0 failed
- Documentation tests: 0 failed
- Requirements JSONL parsed successfully
- Gitea frontend run 2398: success in 2m22s
- Gitea build/deploy run 2397: success in 7m52s
- Source commit:
169a808
- Main merge:
7a8db91
- Production image:
gitea.app.lan/eventhorizon/eventhorizon:sha-7a8db915f4b8
- Deployment: 2/2 replicas ready and available, zero restarts after rollout
/healthz: ok
/readyz: ready; PostgreSQL and Qdrant ready
No paid synthetic roleplay turn was generated. The existing affected game session was not repaired or otherwise mutated, per operator direction.