Date: 2026-08-11
The final deployment in this change series is merge commit 7a8a90470164 and image gitea.app.lan/eventhorizon/eventhorizon:sha-7a8a90470164.
The initial implementation removed the fixed eight-person generated-cast lifetime ceiling and added focal-scene pressure. Live evidence then showed that rotating existing actors continually reset that signal while the roster did not grow. The corrected implementation keeps a separate durable cast-expansion clock: turns without successfully persisted cast growth accumulate regardless of which existing actors act. Its interval gradually lengthens with cast size, up to 12 turns, without imposing a lifetime population ceiling.
When expansion is due and foreground capacity exists, selecting only existing actors is invalid. The selector must create at least one complete rule-grounded persona or a linked ensemble of up to three session-owned personas. It receives a bounded typed summary of represented roles and treats royalty or sovereign households as distinct from ordinary aristocracy when supported by the setting. Ensemble relationships use stable typed member identities and persist atomically.
The first live expansion attempt was correctly retained as overdue but rejected because a generated profile string was empty or exceeded an undocumented bound. The final patch publishes exact field limits, safely bounds nonempty overlong values, and reports exact empty fields without clearing expansion debt.
The pressure mechanisms use structured surviving actor and persisted-persona state, not narration text, and are excluded from persona and narrator projections. They do not invent player movement, consent, compliance, emotion, or response.
Verification:
cargo test --locked: 498 backend and 14 frontend tests passed./healthz returned {"status":"ok"}./readyz returned PostgreSQL and Qdrant ready.