Session Prompt — WP-007 — 2026-06-02
Paste this as the first message to the executing Claude Code session. The session opens execution for WP-007 against the cached binaries.
Header
- WP:
WP-007 - Title:
Scooby.exestrings dump + import table extract - Session date:
2026-06-02 - Paired pre-flight: pre-flight-WP-007-2026-06-02-b — verdict
READY, signed against commitf3cd590 - Targets generation(s): Gen 1 (Showdown — primary), Gen 1 (Phantom), Gen 2 (Jinx), Gen 3 (Case File #1)
- Targets disc(s): all four — running cached EXEs only, no ISO re-mount needed
Intent
Produce the Phase 0 strings + imports baseline for all four target binaries and land it under Findings in scooby-exe. This unblocks WP-001’s Ghidra session (EC-001 Step 3 becomes a cross-check, not a re-extraction) and lets WP-003’s pre-payload region scan validate any asset-name strings against the dump.
Explicitly NOT in scope for this session: any Ghidra work, behavioral analysis of imports (xrefs to call sites), asset-resolution-strategy determination (Ghidra-only), resource-directory contents, Case File #2 (disc not cached).
Authority chain (read order)
Read these files top-to-bottom before doing any work:
C:\Users\jjensen\.claude\CLAUDE.md— operator preferences (tone, ownership, even-handedness, commercial defaults)- docs/01-VISION — engine-lineage finding, generation discipline
- docs/reference/wp-lifecycle — Phase 3 execution discipline + commit hygiene
- Paired pre-flight artifact: pre-flight-WP-007-2026-06-02-b — Binary identity table + scope lock + risk review
- WP body: WP-007-strings-and-imports — §Execution scripts + §Output specification structure + §Exit criteria
- Format doc to update: docs/formats/scooby-exe — Findings sections + cross-title runtime-dependencies table
- Cache reference: tools/exes/README — per-title cache state, disc inventories, SHA-256s already recorded
Pre-execution checks
Confirm each before touching files:
git status --shortreturns empty- HEAD on
mainat or after commitf3cd590(“docs: add WP lifecycle reference doc + wire into pre-flight and WORK_INDEX”) - Paired pre-flight artifact
pre-flight-WP-007-2026-06-02-b.mdis onmainwith verdictREADY - Binary SHA-256s match the Binary identity table in the pre-flight. Verify each before extraction:
- Showdown:
1328454334CDDB9518168B78BA7FFEB13BA7B772E6B52F4E2B87098D18AF7478(Get-FileHash tools\exes\showdown\Scooby.exe -Algorithm SHA256) - Phantom:
619EA6871A2FD305CA30814C438F9552DB85FDADB65AD7BE5B82A1656AF807ED - Jinx:
136A276872803AC99B0D050B21CC3A83F8E1608F2394C33865CFFF781FB20271 - Case File #1:
9813A3DDBE58BC9D7CC898030F4A2F93658FD4A69156BA8531C6E4F273E97CF8
- Showdown:
- Python 3 available with
pefileinstalled (pip install pefileif missing)
If any check fails: STOP. Surface the failure; do not extract against mismatched state.
Execution rules
Scope allowlist (verbatim from pre-flight §Scope lock):
docs/formats/scooby-exe.md
docs/work-packets/WORK_INDEX.md
docs/work-packets/WP-007-strings-and-imports.md
tools/extract_strings.py
tools/extract_imports.py
Allowed but local-only (gitignored under tools/exes/*):
tools/exes/<title>/strings-ansi.txt
tools/exes/<title>/strings-wide.txt
tools/exes/<title>/imports.txt
Forbidden:
- Game data binaries committed to git —
.gitignoreis the safety net; do not bypass engines/scooby/**— out of scope- Any
docs/formats/file other thanscooby-exe.md docs/execution-checklists/EC-001-ghidra-session.md— hand-off documented in WP-007 §Notes; EC-001 itself is not edited here- Anything outside the allowlist above
Generation discipline (REQUIRED): every Finding subsection labels its title + generation (#### Showdown (Gen 1), etc.). The Cross-title delta bullet in each Conclusions block forces explicit comparison.
Copyright posture: raw strings-ansi.txt / strings-wide.txt / imports.txt live ONLY under tools/exes/<title>/ (gitignored). Into docs/formats/scooby-exe.md go ONLY: structured anchor strings (filenames are functional/factual), a small handful of error-message samples for shape, and the full import table (function names are uncopyrightable interface data). Do NOT paste full strings dumps wholesale.
Commit conventions:
docs:prefix; imperative subject under ~80 chars- Two-commit topology recommended:
- Commit A:
docs: WP-007 — strings + imports baseline across four titles - Commit B:
docs: close WP-007 — flip to ✅ Done
- Commit A:
- Body explains the why in 1–4 sentences
- Co-Author footer:
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Top risks (imperative form from pre-flight §Risk review):
- You MUST cite the SHA-256 of the source binary in every Finding section header. A finding without a SHA-256 anchor is invalid.
- You MUST NOT paste the full strings dump into
docs/. Pick a handful of representative samples per category; the rest stays in the gitignored local dump. - You MUST sort outputs deterministically (
sorted(...)with explicit keys). Run each extraction twice and confirm byte-identical output before committing any finding derived from it.
Session task
Execute WP-007 §Execution in this order:
- Write the extraction scripts at the exact paths in the §Scope allowlist:
tools/extract_strings.py— Python regex over the binary; ANSI pass ([\x20-\x7E]{6,}) + UTF-16LE pass ((?:[\x20-\x7E]\x00){6,}). Writesstrings-ansi.txtandstrings-wide.txtto the binary’s parent directory. See WP-007 §1 for the canonical implementation.tools/extract_imports.py— PythonpefilewalkingDIRECTORY_ENTRY_IMPORT. Writesimports.txtto the binary’s parent directory. See WP-007 §2 for the canonical implementation.- Both scripts take the binary path as
sys.argv[1]. Test against Showdown first.
-
Run extraction against all four cached binaries. Use the cross-title PowerShell loop in WP-007 §3. Produces 12 local-only files (3 per title × 4 titles), all gitignored.
-
Author Findings in
docs/formats/scooby-exe.mdper WP-007 §Output specification:a. Binary identity table — copy verbatim from the pre-flight artifact §Repo + disc state. Four rows, one per title.
b. String literals subsection per title, with subsections: File / asset names · Paths / directories · Error / debug strings (handful only, not full set — copyright) · Registry keys · Other notable strings.
c. Strings Conclusions block per title — ANSI count, UTF-16LE count, registry usage Y/N, hardcoded paths Y/N, ≥3 filename / data-file anchors for Ghidra (NOT error strings — those fail the WP §Exit criterion 6), cross-title delta vs Showdown.
d. Import table subsection per title — grouped by category (Win32 File I/O, Memory / Process, Graphics / DirectX, Audio / Video, Input, CRT / Standard Library, Other).
e. Imports Conclusions block per title — Path API encoding (CreateFileA/W presence), Bink runtime, Smacker runtime, DirectDraw / D3D version, DirectSound, CRT version, cross-title delta vs Showdown.
f. Update the Cross-title runtime dependencies table — replace every “TBD” / “unverified” / “predicted same” cell with the verdict derived from the imports findings above. This is exit criterion 9.
-
Commit work as Commit A (
docs: WP-007 — strings + imports baseline across four titles). - Update WORK_INDEX — flip WP-007’s Status to ✅ Done. Update the effort estimate cell from “15–30 min” to actual (likely 20–40 min per the WP body). Commit as Commit B (
docs: close WP-007 — flip to ✅ Done).
Outputs this session MUST produce:
tools/extract_strings.py(committed, ~30 lines)tools/extract_imports.py(committed, ~20 lines)- Updated
docs/formats/scooby-exe.mdwith Binary identity table + per-title strings + per-title imports + both Conclusions blocks per title + updated Cross-title runtime dependencies table - Updated
docs/work-packets/WORK_INDEX.mdwith WP-007 row at ✅ Done - Local-only (gitignored): 12 raw extraction files under
tools/exes/<title>/
Outputs this session MUST NOT produce (sprawl guard — log as follow-up candidates instead):
- Ghidra annotations or
.gprwork (that’s WP-001) - Edits to
EC-001-ghidra-session.md(that’s WP-001’s pre-flight scope) - Decisions about asset resolution strategy (Ghidra-only; deferred to EC-001 Step 4)
- Format-doc updates outside
scooby-exe.md— even if findings hint at MMFW structure, that’s WP-006 / mmfw-container.md territory - A
tools/exes/casefile2/row in the Binary identity table — Case File #2 isn’t cached; absence is a noted skip, not a populate
Close ritual
When all WP-007 §Exit criteria are satisfied:
- Confirm outputs landed. Every file in the §Scope lock allowlist has the expected change. Verify the Binary identity table has all four rows + SHA-256s, both Conclusions blocks have every bullet answered (no
TBD), and the Cross-title runtime dependencies table has no remaining “TBD” / “unverified” / “predicted” cells for the four cached titles. - Confirm raw extracts gitignored.
git diff --cached --name-onlyshows zerotools/exes/**content files (only the scripts undertools/if they’re freshly committed). - Verify the two-commit topology is on the branch (or both commits are clean on
mainif working directly there). Commit A = findings; Commit B = WORK_INDEX flip. - Propagate to dependent WPs. WP-001 and WP-003 both cite WP-007 as a “recommended” prerequisite — note in WORK_INDEX Current state that the WP-007 baseline is now landed.
- Update the lessons-learned section of the pre-flight artifact — either “No lessons learned” if execution was clean, or one line on any preventable gap pre-flight should have caught.
- Report back to operator. State: outputs landed, exit criteria satisfied, status flipped. Surface any anomalies that came up but didn’t fit existing WP/EC scope — these become follow-up WP candidates (likely targets: the 4096-byte Showdown↔Phantom size delta, the BK.025 anomaly, the IBSlogo.avi cross-disc timing puzzle).
If any §Exit criterion is NOT met: WP-007 stays 🚧 In Progress. Do NOT flip WORK_INDEX. Document what’s open in WP §Notes and report back honestly.