port: score the boot's own end frame against the game -- 0.00% differing
--boot --capture= used to write no file: _finish_boot() was reachable only from the overlay-quit branch, and the boot quit first because that branch fires when _overlay_spec.is_empty(), which it is the instant the overlay is raised. Fixed earlier this session by the _overlay_quit_at guard -- and I never went back to check what the fix made possible. The P3/P7 artifact has been available for hours and unused. The boot running unattended and photographing its own end state: RMSE 12.80, 0.00% differing against live-title-press-a.png. The residual is the known capture gamma floor. More useful: verify-capture reaches this frame by a shortcut (--screen=title --overlay=press_start --time=3.95) rather than by booting, and that shortcut has been trusted since it was written and never tested against what it stands in for. It is faithful -- 12.83 / 0.00% against the boot path's 12.80 / 0.00%, agreeing to 0.03 RMSE. Does not show the intervening sequence is right: it is one frame, the last one. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
@@ -9,7 +9,7 @@ dies, which is what this file is for.
|
||||
|
||||
<!-- INDEX: generated by tools/port/index-decisions -- do not hand-edit -->
|
||||
|
||||
153 sections. Search this before re-deriving anything.
|
||||
154 sections. Search this before re-deriving anything.
|
||||
|
||||
* [P0 — the exporter, 2026-08-28](#p0--the-exporter-2026-08-28)
|
||||
* [P1 — Godot draws the screen, 2026-08-28](#p1--godot-draws-the-screen-2026-08-28)
|
||||
@@ -164,6 +164,7 @@ dies, which is what this file is for.
|
||||
* [Correction: those two are the *sound* path, which makes the rule stronger](#correction-those-two-are-the-sound-path-which-makes-the-rule-stronger)
|
||||
* [The two loading screens are no longer black, and it was the paint order](#the-two-loading-screens-are-no-longer-black-and-it-was-the-paint-order)
|
||||
* [Adjudicating the Decoder's `rest()` replacement against the game](#adjudicating-the-decoders-rest-replacement-against-the-game)
|
||||
* [The boot's own end frame, scored against the game for the first time](#the-boots-own-end-frame-scored-against-the-game-for-the-first-time)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -5942,7 +5943,7 @@ Fixed: with a script, the capture defers to the end of the run, through the same
|
||||
`_capture_to` member the boot path already used. Verified — the two runs now
|
||||
differ at max 235, and the capture lands at t=82 units instead of t=8.
|
||||
|
||||
### 2. `--boot --capture=` wrote no file at all
|
||||
### 2. `--boot --capture=` wrote no file at all — ✅ FIXED, see below
|
||||
|
||||
`_finish_boot()` is reachable only from the overlay-quit branch, but the boot
|
||||
quit first: line 412 exits when `_film == "" and _overlay_spec.is_empty()`, and
|
||||
@@ -8941,3 +8942,39 @@ in value is unmeasured. And three screens are three screens.
|
||||
📌 They are right not to change `rest()` on this. I pin their crate, nothing I
|
||||
ship reads `rest`, and a proposal whose evidence comes entirely from the consumer
|
||||
has no business landing in the dependency on that basis alone.
|
||||
|
||||
## The boot's own end frame, scored against the game for the first time
|
||||
|
||||
`--boot --capture=` used to write **no file**: `_finish_boot()` was reachable only
|
||||
from the overlay-quit branch, and the boot quit first because that branch fires
|
||||
when `_overlay_spec.is_empty()` — which it is the instant the overlay is raised.
|
||||
✅ Fixed by the `_overlay_quit_at < 0.0` guard added earlier this session. The
|
||||
defect entry above is left standing with a pointer here, because the reasoning is
|
||||
what makes the guard legible.
|
||||
|
||||
⚠️ I fixed it and never went back to check what it made possible. **The whole
|
||||
P3/P7 artifact — the boot running unattended and photographing its own end
|
||||
state — has been available for hours and unused.**
|
||||
|
||||
### What it shows
|
||||
|
||||
| | RMSE | differing |
|
||||
|---|---|---|
|
||||
| **boot's own end frame**, real sequence, unattended | **12.80** | **0.00 %** |
|
||||
| `title_plate`, synthetically posed at `--time=3.95` | 12.83 | 0.00 % |
|
||||
|
||||
✅ **Zero pixels over the threshold against the game.** The residual RMSE is the
|
||||
known capture gamma floor, which every row on this corpus carries and which is not
|
||||
a target.
|
||||
|
||||
📌 **And the two agree to 0.03 RMSE.** That is the more useful half. `verify-capture`
|
||||
reaches this frame by a *shortcut* — `--screen=title --overlay=press_start
|
||||
--time=3.95` — rather than by booting. The shortcut has been trusted since it was
|
||||
written and never tested against the thing it stands in for. It is faithful:
|
||||
posing the composite directly and arriving there through publisher logo →
|
||||
developer logos → `ADV.wmv` → title → plate land on the same frame.
|
||||
|
||||
⚠️ What this does **not** show is that the intervening sequence is right. It is one
|
||||
frame, the last one; the boot could take a wrong path and still end correctly.
|
||||
`--shots` walks the sequence, and comparing those against captures needs captures
|
||||
of the intermediate states, which the corpus does not have for the video handover.
|
||||
|
||||
Reference in New Issue
Block a user