Ch1-CANON — standing ruling: the playscript is canon in full
Standing ruling from Julia, superseding everything prior: ch01-playscript.docx is canon
in full. No held lines, no carve-outs, no defaults. Every prior exception is revoked. If lines
are missing from the script it is because she deleted them.
Closes the exception-tracking that ran through #111 → #129 → #130 → #131 → #132 → #133.
The radio rewrite was already done
The feature rewrite requested in this ruling shipped last turn as #133 (e837256, live
hash verified): radio in the coat, radioDiscovered / janitorPaged re-homed onto
gp-armchair, dialogue verbatim, traversal proved by simulation. It is not repeated here.
What this ruling changed that #133 did not
Three exceptions survived #133. All were mine, and all are now revoked.
1. An invented line — gp-armchair-passive
I added a third state to the armchair last sprint with the line "The radio hums quietly in
the coat pocket." That line is not in the script. It was a default, and the ruling
forbids defaults. Removed. The script gives this beat two nodes, not three; re-inspecting
before the cart now replays the discovery beat, exactly as every other inspectable does.
2. gp-dziadek-inspect — two lines kept that the script deletes
In #133 I kept "Dziadek's back is to Pip…" and "Pip waits, in case he turns…", reasoning
that the script's silence was not evidence they should go. Under the ruling, silence is
exactly that evidence. Both deleted; the node is now node: null, which removes the prompt
and the aura outright rather than opening an empty dialogue box.
3. mirror-post — a narrated line where the script says show, don't narrate
The script's ▸ mirror-post carries the staging note "No dialogue: The mirror shows Pip his
ghostly reflection." The code narrated it: "The mirror shows Pip his ghost-face. He already
knows." Deleted; the mirror stops being inspectable once revealed, and the reflection is
simply seen.
Why 2 and 3 went unnoticed until now — a real gap in my method
The conformance differ skipped any node the script listed with zero dialogue lines. It
treated empty as "not transcribed" rather than "deleted", so those nodes were never compared
at all. Every prior conformance report — including the one where I told you Ch1 was at zero
divergence — was blind to exactly the case this ruling is about.
The differ now checks zero-line nodes, and scores a script node with no lines and no code node
as conformant rather than missing. That change is what surfaced gp-dziadek-inspect and
mirror-post.
Verification
- Strict conformance: 110 comparisons, 0 divergences. No exceptions column.
- Traversal re-traced by simulation after the change: both orderings complete; all 8
combinations of cartFound × radioDiscovered × janitorPaged return a node; paging
reachable from every post-cart state.
drawObjectAura skips null-node objects, so neither Dziadek nor the revealed mirror leaves
an orphan sparkle.
- No invented line remains anywhere in Ch1.
node --check PARSE OK.
Standing process change
From here forward, if implementing the script verbatim would genuinely break something, I stop
and ask in one plain sentence describing what the player would experience — never an
item-numbered menu, never a default, never a hold.
Nothing in this sprint met that bar. The two deletions remove affordances (Dziadek and the
revealed mirror stop being inspectable) but strand nothing and gate nothing.
Ch1-CANON — standing ruling: the playscript is canon in full
Standing ruling from Julia, superseding everything prior:
ch01-playscript.docxis canonin full. No held lines, no carve-outs, no defaults. Every prior exception is revoked. If lines
are missing from the script it is because she deleted them.
Closes the exception-tracking that ran through #111 → #129 → #130 → #131 → #132 → #133.
The radio rewrite was already done
The feature rewrite requested in this ruling shipped last turn as #133 (
e837256, livehash verified): radio in the coat,
radioDiscovered/janitorPagedre-homed ontogp-armchair, dialogue verbatim, traversal proved by simulation. It is not repeated here.What this ruling changed that #133 did not
Three exceptions survived #133. All were mine, and all are now revoked.
1. An invented line —
gp-armchair-passiveI added a third state to the armchair last sprint with the line "The radio hums quietly in
the coat pocket." That line is not in the script. It was a default, and the ruling
forbids defaults. Removed. The script gives this beat two nodes, not three; re-inspecting
before the cart now replays the discovery beat, exactly as every other inspectable does.
2.
gp-dziadek-inspect— two lines kept that the script deletesIn #133 I kept "Dziadek's back is to Pip…" and "Pip waits, in case he turns…", reasoning
that the script's silence was not evidence they should go. Under the ruling, silence is
exactly that evidence. Both deleted; the node is now
node: null, which removes the promptand the aura outright rather than opening an empty dialogue box.
3.
mirror-post— a narrated line where the script says show, don't narrateThe script's
▸ mirror-postcarries the staging note "No dialogue: The mirror shows Pip hisghostly reflection." The code narrated it: "The mirror shows Pip his ghost-face. He already
knows." Deleted; the mirror stops being inspectable once revealed, and the reflection is
simply seen.
Why 2 and 3 went unnoticed until now — a real gap in my method
The conformance differ skipped any node the script listed with zero dialogue lines. It
treated empty as "not transcribed" rather than "deleted", so those nodes were never compared
at all. Every prior conformance report — including the one where I told you Ch1 was at zero
divergence — was blind to exactly the case this ruling is about.
The differ now checks zero-line nodes, and scores a script node with no lines and no code node
as conformant rather than missing. That change is what surfaced
gp-dziadek-inspectandmirror-post.Verification
combinations of
cartFound×radioDiscovered×janitorPagedreturn a node; pagingreachable from every post-cart state.
drawObjectAuraskips null-node objects, so neither Dziadek nor the revealed mirror leavesan orphan sparkle.
node --checkPARSE OK.Standing process change
From here forward, if implementing the script verbatim would genuinely break something, I stop
and ask in one plain sentence describing what the player would experience — never an
item-numbered menu, never a default, never a hold.
Nothing in this sprint met that bar. The two deletions remove affordances (Dziadek and the
revealed mirror stop being inspectable) but strand nothing and gate nothing.