2 Commits
Author SHA1 Message Date
slaguru666andClaude Opus 5 37b4043746 Play a full case, then fix what it found
Ran THE HOLLOW ROAD with five agents — approach, crossing, contact, the thing on
the road, extraction, debrief — with panic and Coherence both live. It ran clean
and it found one thing that mattered.

ANOMALY LORE 0. Marta Holloway, Field Lead, Senior Field Officer, could not roll
the department's signature skill. Nor could Okonkwo. Induction was gated to
TRADES on the reasoning that a career posting is itself the agency training —
but 17 of the 25 postings do not list anomaly lore, its printed base is 0 on
purpose, and nothing else supplies it. So the people who joined the department
straight out of school were the only ones who never received its basic training,
which is exactly backwards.

Induction is a FLOOR for everybody now, posting or trade, in the live generator
and the pack builder both. It never demotes: Bhattacharya keeps Registry's 63,
Holloway goes 0 → 43, Okonkwo 0 → 33. All twenty built agents verified non-zero.

Two GM tools the case showed were missing, both found by feeling the friction
rather than by reading anything:

  - clearPanic(actors). Panic clears when the scene does — one line in the book
    and, until now, five sheets edited by hand while the table waited. It leaves
    Coherence alone, which is the whole point of having two tracks.
  - partyState(). Everybody's hit points, panic and Coherence in one card. With
    five agents the alternative is asking "what are you on?" five times a scene,
    which is friction a table absorbs silently and then blames on the game.

And the player-facing gap: the primer never mentioned panic. Players got a
one-page aide-memoire for a track they now meet in the first scene. It has a
page of its own and a row on the cheat sheet, both generated from the same
tables as the rules.

One thing I reported as a bug and withdraw: Okonkwo's "Firearm (Pistol) 5%" was
me rolling the wrong weapon. He carries a marksman rifle at 53%. check-kits was
right.

Version 1.2.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 00:10:28 +01:00
slaguru666andClaude Opus 5 7ec7efd29b Replay the scene with the fumble rule; expose panicReliefFor
Ran the east corridor again with fresh dice and every relief attempt routed
through easePanic, fumbles included.

The rule did not fire this time. All three attempts failed cleanly — Psychology
58 against 40, and two POW×5 rolls at 66 and 76 — so nobody was punished for
trying. That is worth reporting as loudly as a hit would have been: two
play-throughs in and a fumbled relief has come up once, which is about right for
something meant to be a memorable disaster rather than a tax.

Braithwaite still broke at 5 on "it said your name" and fled. Marrow went down
in a single round to a special with the entry bar — 19 through armour — against
the 4.5-round average the thirty-run tuning gave, so that was dice, not balance.

Then the question the rule actually raises. Relief rolls are made at your own
panic penalty, so the worse you are the worse your odds AND the wider your fumble
range — and now a fumble adds a point. That is a feedback loop, so I measured it
rather than trusting it, 300 runs per row:

    from 2, POW×5 60%   280 calm ·  0 broke
    from 3, POW×5 60%   227 calm ·  2 broke
    from 4, POW×5 60%   138 calm · 31 broke
    from 4, POW×5 50%    96 calm · 35 broke
    from 4, POW×5 85%   267 calm ·  5 broke

Recovery dominates everywhere. The worst case — overwhelmed, weak POW, no help —
spirals into breaking about one time in eight, which is a bad night rather than a
trap. No change needed.

Also: panicReliefFor and panicAfter were missing from the API, which I only
noticed because measuring the loop needed them and the alternative was
re-implementing the rule in the test — the exact duplication check-rules exists
to forbid. Both exposed.

Version 1.1.3.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 23:31:35 +01:00
146 changed files with 239 additions and 130 deletions
+2 -2
View File
@@ -182,7 +182,7 @@ The build runs all five guards before it writes anything:
``` ```
check-rules: OK — 92 rules, 20 files scanned, 3 aliases + 45 constant sets checked, 291 formulas verified check-rules: OK — 92 rules, 20 files scanned, 3 aliases + 45 constant sets checked, 291 formulas verified
check-kits: OK — 25 roles, 10 trades, 218 catalogue items, every kit key resolves, every posting can use what it carries, every loadout distinct check-kits: OK — 25 roles, 10 trades, 218 catalogue items, every kit key resolves, every posting can use what it carries, every loadout distinct
check-lang: OK — en.json, 977 keys, no leaf/branch collisions check-lang: OK — en.json, 981 keys, no leaf/branch collisions
check-behaviour: OK — 57 behavioural tests check-behaviour: OK — 59 behavioural tests
``` ```
<!-- guards:end --> <!-- guards:end -->
+5 -1
View File
@@ -975,5 +975,9 @@
"RINGBRP.Panic.NoChange": "No change.", "RINGBRP.Panic.NoChange": "No change.",
"RINGBRP.Flavour.Panicking": "panicking ({mod}%)", "RINGBRP.Flavour.Panicking": "panicking ({mod}%)",
"RINGBRP.Chat.ToEverything": "to everything", "RINGBRP.Chat.ToEverything": "to everything",
"RINGBRP.Panic.Backfired": "Fumbled —" "RINGBRP.Panic.Backfired": "Fumbled —",
"RINGBRP.Panic.SceneEnd": "Scene over",
"RINGBRP.Panic.SceneEndNote": "Panic clears when the scene does. Coherence does not.",
"RINGBRP.Party.Title": "The team, right now",
"RINGBRP.Party.Who": "Agent"
} }
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.247472 17253f000 Recovering log #3 2026/08/18-00:10:28.183213 16f9eb000 Delete type=3 #1
2026/08/17-23:24:47.247505 17253f000 Level-0 table #5: started
2026/08/17-23:24:47.247700 17253f000 Level-0 table #5: 4591 bytes OK
2026/08/17-23:24:47.248094 17253f000 Delete type=0 #3
2026/08/17-23:24:47.248137 17253f000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.473921 16e827000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.267497 173d63000 Recovering log #3 2026/08/18-00:10:28.247767 16e9d3000 Delete type=3 #1
2026/08/17-23:24:47.267518 173d63000 Level-0 table #5: started
2026/08/17-23:24:47.267658 173d63000 Level-0 table #5: 4129 bytes OK
2026/08/17-23:24:47.267918 173d63000 Delete type=0 #3
2026/08/17-23:24:47.267949 173d63000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.544854 16e827000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.248920 173d63000 Recovering log #3 2026/08/18-00:10:28.184766 1701f7000 Delete type=3 #1
2026/08/17-23:24:47.249014 173d63000 Level-0 table #5: started
2026/08/17-23:24:47.249313 173d63000 Level-0 table #5: 31614 bytes OK
2026/08/17-23:24:47.249730 173d63000 Delete type=0 #3
2026/08/17-23:24:47.249796 173d63000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.475804 17004b000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.261246 17253f000 Recovering log #3 2026/08/18-00:10:28.233431 16f9eb000 Delete type=3 #1
2026/08/17-23:24:47.261511 17253f000 Level-0 table #5: started
2026/08/17-23:24:47.261915 17253f000 Level-0 table #5: 46857 bytes OK
2026/08/17-23:24:47.262265 17253f000 Delete type=0 #3
2026/08/17-23:24:47.262307 17253f000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.528809 16f033000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.235329 173d63000 Recovering log #3 2026/08/18-00:10:28.217982 16f1df000 Delete type=3 #1
2026/08/17-23:24:47.236302 173d63000 Level-0 table #5: started
2026/08/17-23:24:47.238305 173d63000 Level-0 table #5: 234672 bytes OK
2026/08/17-23:24:47.238754 173d63000 Delete type=0 #3
2026/08/17-23:24:47.238827 173d63000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.510747 16f83f000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.244550 17253f000 Recovering log #3 2026/08/18-00:10:28.243180 16e9d3000 Delete type=3 #1
2026/08/17-23:24:47.244581 17253f000 Level-0 table #5: started
2026/08/17-23:24:47.244685 17253f000 Level-0 table #5: 3295 bytes OK
2026/08/17-23:24:47.244965 17253f000 Delete type=0 #3
2026/08/17-23:24:47.245003 17253f000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.539431 17004b000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.222820 172d4b000 Recovering log #3 2026/08/18-00:10:28.204150 16f9eb000 Delete type=3 #1
2026/08/17-23:24:47.225060 172d4b000 Level-0 table #5: started
2026/08/17-23:24:47.229466 172d4b000 Level-0 table #5: 561098 bytes OK
2026/08/17-23:24:47.229981 172d4b000 Delete type=0 #3
2026/08/17-23:24:47.230132 172d4b000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.496406 16e827000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.251999 173d63000 Recovering log #3 2026/08/18-00:10:28.240419 16f1df000 Delete type=3 #1
2026/08/17-23:24:47.252036 173d63000 Level-0 table #5: started
2026/08/17-23:24:47.252324 173d63000 Level-0 table #5: 21613 bytes OK
2026/08/17-23:24:47.252692 173d63000 Delete type=0 #3
2026/08/17-23:24:47.252736 173d63000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.536318 17004b000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.263027 17253f000 Recovering log #3 2026/08/18-00:10:28.237109 16e9d3000 Delete type=3 #1
2026/08/17-23:24:47.263228 17253f000 Level-0 table #5: started
2026/08/17-23:24:47.263611 17253f000 Level-0 table #5: 44887 bytes OK
2026/08/17-23:24:47.263871 17253f000 Delete type=0 #3
2026/08/17-23:24:47.263914 17253f000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.533004 16e827000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.253858 172d4b000 Recovering log #3 2026/08/18-00:10:28.246420 16f9eb000 Delete type=3 #1
2026/08/17-23:24:47.253959 172d4b000 Level-0 table #5: started
2026/08/17-23:24:47.254345 172d4b000 Level-0 table #5: 36526 bytes OK
2026/08/17-23:24:47.254740 172d4b000 Delete type=0 #3
2026/08/17-23:24:47.254786 172d4b000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.542959 16f83f000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.241716 17253f000 Recovering log #3 2026/08/18-00:10:28.177717 16f1df000 Delete type=3 #1
2026/08/17-23:24:47.241766 17253f000 Level-0 table #5: started
2026/08/17-23:24:47.241955 17253f000 Level-0 table #5: 7806 bytes OK
2026/08/17-23:24:47.242285 17253f000 Delete type=0 #3
2026/08/17-23:24:47.242328 17253f000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.467729 16f033000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000004 MANIFEST-000002
+1 -5
View File
@@ -1,5 +1 @@
2026/08/17-23:24:47.264565 17253f000 Recovering log #3 2026/08/18-00:10:28.241902 16f9eb000 Delete type=3 #1
2026/08/17-23:24:47.264605 17253f000 Level-0 table #5: started
2026/08/17-23:24:47.264863 17253f000 Level-0 table #5: 16902 bytes OK
2026/08/17-23:24:47.265193 17253f000 Delete type=0 #3
2026/08/17-23:24:47.265233 17253f000 Delete type=3 #2
-1
View File
@@ -1 +0,0 @@
2026/08/17-23:24:31.538092 16f033000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More