From db1170d0db2ddd172c8d7d27a97ab41204d33749 Mon Sep 17 00:00:00 2001 From: parththakkar106 Date: Tue, 21 Jul 2026 16:59:49 +0530 Subject: [PATCH] Add proportionality guidance to the emit rule (story-neutral) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tell the model to read each stat's range and band labels and keep changes proportionate — minor events nudge a value, while large jumps or hitting a min/max are reserved for pivotal moments. Examples are relationship/story based (not combat) so it fits any scenario. Co-Authored-By: Claude Opus 4.8 --- backend/app/worldstate/engine.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/app/worldstate/engine.py b/backend/app/worldstate/engine.py index 3e7b11b..f2389d3 100644 --- a/backend/app/worldstate/engine.py +++ b/backend/app/worldstate/engine.py @@ -26,7 +26,13 @@ EMIT_RULE = ( "MUST record it, including the numbers, not just on/off flags. After your narration, " "append a fenced code block labelled `state` with a JSON object of the CHANGES ONLY, " "as deltas (not new totals). Update every value the scene affected this turn, not only " - 'the obvious ones. Use the paths exactly as shown in the world state: "player.", ' + "the obvious ones. Read the range and band labels shown for each stat and keep every " + "change proportionate to the moment: an ordinary or minor event nudges a value slightly, " + "while a large change — or reaching a stat's minimum or maximum — is reserved for a " + "genuinely pivotal, defining moment (a passing remark shifts a relationship a little; a " + "lasting act of loyalty or betrayal shifts it a lot). Do not move a value across most of " + 'its range in a single ordinary turn. Use the paths exactly as shown in the world state: ' + '"player.", ' '"world.", "npc.." (use the id in parentheses, e.g. npc.gwen.trust, ' 'not the display name); "flags.": true or false to toggle an on/off state; and ' '"milestones.": true when an objective is completed. Send only things that actually '