re: sweep the disc for the ordinal foot-gun -- GP_TITLE was the mildest case

Last iteration I retracted three claims because `--build 10/11` on GP_TITLE are
entries 12/15, and named the untested remainder in my own report: how much else
in the corpus used a build ordinal as an entry index. This is that sweep.

`screen --build N` indexes a predicate-filtered list, so every rejected entry
shifts every later ordinal. Disc-wide: 21 of 24 build-bearing archives diverge,
18 of them at ordinal 0 -- `--build 0` is entry 108 in each GP_MAIN_GAME_*2D,
24/26 in GP_HANGAR_ARSENAL/GP_READY_ROOM. GP_TITLE is the ONLY archive whose
first ten ordinals are the identity, which is the sole reason 207 of the
corpus's 226 build citations are safe. Second foot-gun: `--all` swaps the
predicate and renumbers 18 archives, so `--build N` and `--build N --all` are
not the same object.

The instrument failed its control first. A version using parse_build as the
predicate reported GP_TITLE as 16 builds, ordinal == entry throughout -- it
would have certified the exact bug it was built to find. The shipped version
uses the same predicates screen_builds() uses and reproduces `screen list` on
GP_TITLE exactly.

Audited all 226 citations. One real defect: a five-row table in
ui-keyframe-time-unit.md headed "declared element (build 11)" spans builds 10
and 11 -- palogo_sqex is in 10. All five placements re-verified and correct, so
the linear-ramp measurement is untouched; only the label was wrong. Fixed with a
per-row bundle column. GP_DIALOG --build 0 and GP_DEBRIEFING_PILOTLOG --build 10
re-run and reproduce.

Refutation attempted: sylpheed-port's corrected mid-ramp test rests on
ptlogo_all_eff holding a=127 from t=112 to t=246. Their quote is exact and it is
a plateau. The refutation fails; their correction stands.

METHOD already carried the rule I broke, and ui-splash-addressing already said
the splashes need --all. The failure was not missing knowledge -- it was
addressing a bundle by index without grepping for the index first.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
sylph-decoder
2026-08-30 13:20:41 +00:00
parent f102cf9209
commit c364cde476
7 changed files with 375 additions and 7 deletions

View File

@@ -169,6 +169,26 @@ agent's loop prompt, i.e. nowhere durable. See [`README.md`](README.md) for the
entry. **Write `entry N`, not `build N`, whenever the number leaves this
repository.**
🔴 **This entry was already here when I broke the rule.** So was
`ui-splash-addressing.md`, which says in as many words that the splashes are
entries 10/11/13/14, that `is_build` **rejects** them, and that they are
reachable *only* through `--all`. Two documents in my own corpus, and I still
ran `--build 10` bare and wrote three claims on the output. The failure was not
missing knowledge — it was **addressing a bundle by index without grepping for
the index first**. A rule written down is not a rule applied. Before any
`--build N`, run `screen list` on that pak and read the `entry` column; it costs
one command and it is the only step that would have caught this.
📌 **And the sweep says `GP_TITLE` was the mildest case on the disc**
([`structures/build-ordinal-vs-entry.md`](structures/build-ordinal-vs-entry.md),
[`data/ordinal-entry-map.txt`](data/ordinal-entry-map.txt)): **21 of 24**
archives diverge, **18 of them at ordinal 0** — in the six `GP_MAIN_GAME_*2D`
paks `--build 0` is entry **108**. `GP_TITLE` is the *only* archive whose first
ten ordinals are the identity, which is why the corpus survived: almost
everything written about builds is about `GP_TITLE`, at ordinals 09. That is
luck in one archive, not a property of the format, and it does not extend to the
screens the port has left to do.
## Runtime / emulator
* **Look at the PNG** — and check its dimensions.