feat(openworlds): surface living-story read-models (betrayal-warning + quest-evolution) - #200
Conversation
… read-models (#118/#120) Project two newly-landed living-story engine features into the OpenWorlds read-model surfaces, read-only (the viewer is a projection of engine state): - Relations (#118): each companion row carries an advisory `betrayalWarning` (None unless live) recomputed from the snapshot, mirroring the engine's companion_arc._betrayal_warning danger band [-40, -20] — present only for a LIVE unfired attitude_below agenda below its breaking point. The relations screen renders a "Bond fracturing" telegraph beside the Approval gauge, and flags a choice-deepened rift via the engine-set decision flag. The sealed agenda's private intent never leaks. - Journal (#120): each quest row carries evolvesTo/callbackInDays, and a new `_journal_evolutions` builder projects scheduled rule-of-three callbacks from consequences tagged `evolves_from:<quest_id>` (due / pending / fired), skipping worldsim background beats. The journal screen shows a per-quest "this thread will return" badge plus a "Threads & Callbacks" sub-list. Icon-free (icon registry not yet merged); all changes confined to the disjoint journal/relations builder regions + screens + test_readmodel_surfaces.py, no sibling-PR files touched. Tests round-trip through the strict Campaign model.
|
Warning Review limit reached
More reviews will be available in 4 minutes and 58 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (4)
Comment |
Desktop parallel lane — surfaces the new engine living-story features into the OpenWorlds app, in regions DISJOINT from the sibling lane's open PRs (per /tmp/desktop-lane-plan.md). RELATIONS (#118): a per-NPC betrayalWarning (the L2 danger band -40..-20, read-only, never leaks the sealed agenda) → a 'Bond fracturing' advisory. JOURNAL (#120): quest evolvesTo/callbackInDays + a threads array projecting evolves_from: consequences → a 'this thread will return' badge. Read-only projection (passes assert_no_private_keys). Rebased clean onto the L3 main. Tests: test_readmodel_surfaces.py green (6 new) + test_openworlds_static.py no regression. Icon-free (icon registry #182 not merged). Local-gated.