R-293: a desk playtest is a record, not a scenario with rolls in it

Counting the readers that had broken on their own format turned up one nothing had
caught. docs/scenarios holds scenarios, eight playtest records and two art prompt
sheets, and every guard treated all three as scenarios -- harmless for citations
and skill spellings, false for reachability. Six quotations across passes 4, 6 and
7 were checked as live rolls, so a record of a session already played could fail
the build over a skill nobody can reach. Planting Science (Physics) in pass 4 fails
before the split and passes after; the same skill in CLEAN_GROUND still fails.

Classified by the document's own H1, not its filename, because tools/scenario-*
naming is what swept a tools file into this corpus in R-268. An unclassified
document is fatal: an allowlist that silently drops what it does not recognise
would take a new scenario out of reachability checking on the day it was written.

89 rolls across 18 files becomes 83 across 8.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
slaguru666
2026-09-13 16:05:03 +01:00
co-authored by Claude Opus 5
parent 6171d1e9b9
commit daf77f4aac
4 changed files with 115 additions and 5 deletions
+36
View File
@@ -6894,3 +6894,39 @@ refused, 19 guards green.
Wrong. `beatsIn` returns every marker and `measure()` filters the quoted one — Anomaly Lore at
line 758, Act Three's quotation of the format. 22 markers, 21 real beats. Both figures were
right and the disagreement was mine.
## R-293 — a record of a session is not a scenario
The fifth self-reference case, and the only live one: counting the readers that had broken on
their own format turned up a sixth that nothing had ever caught. `docs/scenarios/` holds three
kinds of document — the scenarios, eight desk playtest records, and two art prompt sheets —
and every guard reading the corpus treated all three as scenarios. Harmless for citations and
skill spellings. False for reachability.
check-rollable's claim is that **every clue a GM can put behind a roll is reachable by somebody
at the table.** A playtest report quoting `` `[CUS: Anomaly Lore — what a peg is]` `` to say
which beat a roll hung off had that quotation held to the claim. Six such quotations across
passes 4, 6 and 7 were being checked as live rolls, and a record of a session already played
could fail the build over a skill nobody can reach. Measured: planting `Science (Physics)` in
pass 4 gives *"a clue is behind a roll nobody present can make"* before the split and passes
after it, while the same skill in CLEAN_GROUND still fails. 89 rolls across 18 files becomes
83 across 8.
**Classified by the document's own H1, not its filename**, because `tools/scenario-*` naming is
what swept a tools file into this corpus in R-268. A generator has no H1 and is a scenario by
construction.
**An unclassified document is fatal.** An allowlist that silently drops what it does not
recognise would take a new scenario out of reachability checking on the day it was written —
the fail-open this session has spent its whole length removing. `classifiedFiles()` is called
by check-scenarios, the first guard over the corpus, so the message arrives at the right guard,
and it names the corpus rather than a guard because it runs inside whichever one asked first.
**Two things I had wrong on the way**, both caught by insisting on a measurement. The first
probe used `Demolition` and passed everywhere, which looked like the guard being blind; it is
reachable, and the playtest files have no cast marker so they were being checked against the
whole duty roster rather than the declared six. The claim "would have failed the build" was
hypothetical until a skill nobody on the roster reaches proved it. And the first version of the
new test ended in `assert.ok(… || true)` — a tautology that passes on anything, which is the
decoration this suite exists to refuse. Mutation-checked after removing it: making
`playableFiles` stop excluding records turns it red.