Date: 2026-08-11 UTC
Deployed image gitea.app.lan/eventhorizon/eventhorizon:sha-8040b5c18ce3 through PR #230. The release separates human-player choices from AI-persona decision dependencies, validates NPC dependency owners against stable roster IDs, and prevents blocked or unchanged waiting agendas from retaining automatic foreground priority.
Deployed image gitea.app.lan/eventhorizon/eventhorizon:sha-1e59d4babf4b through PR #231. Cast-expansion-only generation now persists complete personas as dormant session cast rather than forcing them to enter and act. Ordinary casting admits at most one discretionary actor beyond directly required actors; genuine typed social-scene pressure can still introduce a group or linked ensemble.
Deployed image gitea.app.lan/eventhorizon/eventhorizon:sha-e99b1d7fff31 through PR #232. The root cause was an actor-scoped delivery gap: a direct target did not receive an ordinary public AI action unless the model also named it in private observer metadata. Exact target_entity_ids now deliver the earlier action to that persona. The persona decision must return one bounded typed disposition for every direct source actor before an unrelated agenda can progress; the server rejects missing, duplicate, unknown, unrelated, or null dispositions through the existing structural correction path.
Lady Seraphina von Kessler's reusable profile and the cleared session's editable persona snapshot were repaired through their supported APIs. Thirteen authored comma-containing behavioral patterns had been split into 54 independent array fragments, causing fragments such as status words and names to become standalone agenda sources. Both saved profiles now contain the original 13 complete semantic patterns, with all other persona fields preserved. The cleared session was verified at turn 0 with no retained persona agendas.
Deployed image gitea.app.lan/eventhorizon/eventhorizon:sha-681655909424 through PR #233. Persona decisions now receive a bounded actor-scoped capability index before choosing an action. The index exposes stable item IDs, names, compact locations, availability, and affordance labels while excluding full private records, visual payloads, history, and other actors' hidden items. Inventory listing and exact reads are valid noncommittal planning and inspiration; transactional edits remain gated by exact reads and available affordances. Actor-private filtering now recognizes the canonical typed owner and holder aliases used by the item engine, including starting-inventory ownership.
Verification: all four releases passed their complete backend suites and both Gitea workflows. The final deployment reached 2/2 ready replicas with zero restarts; /healthz and /readyz returned healthy. One persona-memory extraction job requeued on a transient storage warning during rollout startup; no further warning or error entries appeared after that event.