Deployed a root-cause correction for narration that omitted known active bodily effects even when the compact effect context reached the narrator. Prompt enforcement alone was insufficient, so required authored ongoing sensations are now composed by the backend into visible narration before persistence.
- Select and deduplicate known active player effects, preferring the record whose effect kind matches the configured canonical kind.
- Build an ongoing sensation beat from authored
body_sensation, primary_effects, or sensory_effects and include the first authored movement constraint when present.
- Insert the beat into initial and regenerated narration before it is committed.
- Suppress the ongoing beat when that exact effect has a typed onset transition in the current turn, avoiding duplicate onset narration.
- Keep model-generated surrounding prose compatible with structured effects without relying on model compliance as the enforcement mechanism.
- Updated EventHorizon requirements REQ-0498 and REQ-0500.
- Workspace tests: backend 346 passed; frontend 8 passed; no failures.
- Requirements JSONL parsed successfully; formatting and diff checks passed.
- Gitea workflows passed: frontend in 2m30s; build/deploy in 7m49s.
- Merge commit:
e90dc08e53f37232263f9c332f8e55a68d342aed.
- Production image:
gitea.app.lan/eventhorizon/eventhorizon:sha-e90dc08e53f3.
- Kubernetes rollout completed with 2/2 replicas ready and zero restarts.
/healthz returned ok; /readyz reported PostgreSQL and Qdrant ready.
- Recent deployment logs contained no panic, fatal, or error entries.
No synthetic roleplay turn was generated and the existing game session was not changed. Functional confirmation against a natural post-deployment turn remains observational.