Skip to content

GOAL — Ch1 verbatim conformance: the playscript is the script #132

Description

@juliatetrud

GOAL — Ch1 Verbatim Conformance: the playscript is the script

Goal issue. Supersedes the partial-apply posture of #111, #129, #130, #131: the playscript
wins everywhere.
Ends when every Ch1 dialogue and narration line matches the committed
ch01-playscript.docx verbatim, proven by diff, live on Pages.

Stage 0 — what is actually live (COMPLETE)

0.1 The commits are on the remote. Push is NOT the explanation.

Check Result
git log origin/main..HEAD empty
local HEAD e77fb78d5d62517ec55e7602467dc2a3a9cbeab9
git ls-remote origin main e77fb78d5d62517ec55e7602467dc2a3a9cbeab9
R01b commits bea4d87 d757fcb 8acfef2 b717f39 e77fb78 all contained in origin/main

0.2 GitHub Pages is serving the current build. Propagation is NOT the explanation.

git show HEAD:game/index.html | shasum  -> 14212587c29e806a325522984a78633c9f9da5b7
worktree game/index.html                -> 14212587c29e806a325522984a78633c9f9da5b7
live https://juliatetrud.github.io/...  -> 14212587c29e806a325522984a78633c9f9da5b7   (HTTP 200, 934,972 bytes)

Byte-identical. The live page is the committed HEAD. Only a client-side browser cache
could still show stale content — unverifiable from here; a hard refresh (⌘⇧R) rules it out.

0.3 So why did Ch1 look unchanged? Because R01b changed almost no words.

This is the real answer, and it is not a deployment problem:

  • 14 of R01b's 16 edits changed zero text. They flipped the italic flag — which box a
    line renders in
    (thought bubble vs. narration box). Every character of every line is the
    same. Reading Ch1 for wording, nothing would look different.
  • The 15th edit moved one line's position ('Pip finishes the dish in record time.').
  • The 16th was not applied — held as R01b Stage 3 — kitchen bite-beat timing: scoped, NOT applied (needs ruling) #131 pending ruling.

R01b was correctly applied and correctly verified. It simply was never going to change how
Ch1 reads, because the changelog it implemented was about presentation and ordering.

0.4 Fresh conformance baseline vs. the committed canonical playscript

Method: python3 stdlib docx extraction, normalized matching (mixed \uXXXX-escape vs. UTF-8
curly quotes, dash/ellipsis/whitespace folding). No packages, no browser.

108 payloads — 97 match, 11 divergent. Of the 11:

  • 8 are the three held items — the only remaining wording divergences in Chapter 1.
  • 3 are extraction artifacts, not divergences: dc-cart-inspect's clipboard line (identical
    text, split across two dialogue lines in code); janitor-mutter (whitespace only — one space
    before an ellipsis); PIP (softer now): Hello? (parser artifact — the line "Hello?" is
    present and correct).

Conclusion: Chapter 1 already matches the playscript verbatim except for the three held
items.
This goal is therefore, in substance, the decision to apply those three — which is
exactly what the goal states. The remaining work is small in line count and large in risk.

The risk this goal has to decide, before Stage 1 rewrites anything

Two of the three held items are safe text swaps. One is not.

Safe: held item 1 — gp-door-return

Playscript: "Babcia and Dziadek are gone." The Go in. / Not now. choices are separate from
the line text, so swapping the narration does not remove the radio-backtrack entry point. The
objection was continuity (they don't leave until the Ch7 dock-farewell), not breakage.
Applying it is a pure text change. Julia's call, no engineering risk.

Mostly safe: held item 2 — the cart clue

Playscript drops "back in the cabin" and says "call" for "page". The radio still works; what
is lost is the hint that the CP-2b / G-S5 fix added to close a corridor→radio dead-end.
Risk is discoverability, not a hard block. Julia's call.

NOT safe as a text swap: held item 3 — the radio

The playscript describes the pre-Sprint-20 design: a radio in Dziadek's coat pocket that
Pip pulls out and speaks into, with gp-armchair-inspect carrying four lines and setting
radioDiscovered. The shipped design is a windowsill gp-radio object (x=200) with three
gated states
.

Applying the playscript's text verbatim produces two failures:

  1. Two radios in one room — a narrated coat-pocket radio plus the still-present interactive
    windowsill object.
  2. A potentially uncompletable chapter. The playscript replaces gp-radio-page-choice's
    Listen / Page / Not-now choice block with a single spoken line. But chapterState.janitorPaged
    is set inside that block's onSelect. Lose the choices, lose the flag → the janitor never
    walks → the cart never clears → the stairwell gate never opens → Chapter 1 cannot be
    finished.

Verbatim conformance for this beat is achievable, but it is a feature rewrite — move the
radio back into the coat, re-home the radioDiscovered / janitorPaged chain, and keep the
gate satisfied — not a line substitution. It needs to be scoped as such.

Blocked — awaiting the rest of the goal prompt

The goal instruction terminates mid-sentence in Stage 1:

"1. Re-extract the committed ch01-playscript.docx to a plain-text working transcript,
scene by scene,"

and it refers to "the hard stops" ("stop only at the hard stops") which are never defined.
There is no Stage 2 or beyond. Stage 0 is complete and reported; Stages 1+ cannot be run to
completion from what was given.

What is needed to proceed

  1. The remainder of the goal prompt — the rest of Stage 1, subsequent stages, and the
    definition of the hard stops.
  2. A ruling on held item 3. Verbatim text conformance and a completable Chapter 1 are not
    simultaneously achievable by substitution here. Either:
    • (i) authorize the radio feature rewrite (pocket radio restored, ability chain re-homed,
      stairwell gate preserved) — verbatim conformance, larger sprint; or
    • (ii) apply items 1 and 2 verbatim and carve item 3 out as the single documented
      exception until the rewrite is scoped; or
    • (iii) something else Julia specifies.

Nothing has been changed. Stage 0 was read-only.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    chapter-1Chapter 1: Cabin 646decision-neededBlocked on a design decision — raise in chat, don't guessgoalGOAL-run parent (autonomous multi-sprint run)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions