Date: 2026-07-27
Corrected narration that omitted the player's ongoing bodily sensations after a configured effect had already become active.
The one-turn typed onset transition correctly applies only when an effect crosses from pending to active. The affected effect became active before that transition mechanism was deployed, so later turns had no onset event to render. Ongoing effect state was still available, but narration received complete raw effect records including duplicate lifecycle entries, identifiers, decay curves, and SVG icon markup. The authored warmth, heaviness, and movement or speech consequences were buried inside an approximately 10,000-token narrator input and were optional rather than a per-turn embodied obligation.
- Replaced raw narrator-facing
active_effects with compact player_effect_experience state.
- Include only known active effects targeting the player, with authored perceptible manifestations and capability consequences.
- Deduplicate records by structured source, canonical configured effect kind, and target.
- Prefer the structured active lifecycle record over older duplicate lifecycle records.
- Exclude internal IDs, source identifiers, SVGs, decay curves, timers, inventory, and passive evaluator deltas from narration context.
- For every active effect materially engaged by the turn's body parts, contact, movement, breathing, or speech, require at least one relevant sensation or consequence in narration.
- Treat full-body effects as engaged by any player bodily experience, movement, breathing, or speech.
- Preserve the one-time onset transition without replaying onset in subsequent turns.
- Updated durable requirements REQ-0498 and REQ-0500.
cargo fmt --all
- Backend test suite: 345 passed, 0 failed
- Frontend test suite: 8 passed, 0 failed
- Documentation tests: 0 failed
- Requirements JSONL parsed successfully
- Gitea frontend run 2400: success in 2m25s
- Gitea build/deploy run 2399: success in 7m54s
- Source commit:
135f5f2
- Main merge:
289c461
- Production image:
gitea.app.lan/eventhorizon/eventhorizon:sha-289c46136b8a
- Deployment: 2/2 replicas ready and available, zero restarts after rollout
/healthz: ok
/readyz: ready; PostgreSQL and Qdrant ready
The affected session was inspected read-only. No transcript, effect, item, or session state was repaired or otherwise mutated, and no synthetic roleplay turn was generated.