re: the record-layout fix is confirmed against the GAME, and settle-vs-rest is not

The era test left one element responsible for all 74 507 differing pixels on
title_jp -- ptlogo_eff3.t32, the corpus's named plateau-less rest() discriminator
-- with two candidate rest poses, (108,72) stale and (98,42) fixed. There is a
capture of that exact screen, so the oracle can choose.

Scored over the 388x423 box where the two renders differ, so the result is not
diluted by the ~92 % of the frame that is identical:

  stale era  rest (108,72)   RMSE 58.412
  fixed era  rest  (98,42)   RMSE 41.690   <- the game agrees with the fixed era
  fixed era  --settle t=213  RMSE 40.210

Until now the keyframe record-layout fix rested on internal consistency: 0 of
1 042 multi-segment alpha ramps constant-rate under the old reading against 857
of 1 540 under the new. Strong, but not a measurement of the game. It now has
one, on the single screen where the two readings change pixels.

Three controls, all run first. Alignment found by sweeping the vertical offset
rather than assuming it -- 45 gives 32.41 against 56.37 and 53.08 either side, a
sharp minimum at the known game-surface offset. The scoring box discriminates:
the same box against a different screen's capture gives 98-103 against 40-58
here. And --black changes nothing (58.412/41.690 either way) because every pixel
in that box is covered by an element -- recorded because the flag's help says a
framebuffer capture must be compared against a black canvas, and here it happens
not to matter.

Sweeping the screen's own timeline with --at gives the noise scale: the capture
sits on a plateau from t~135 to t~240, flat to 1.2 RMSE across 105 units, rising
sharply outside (78 at t=0 and t=270). So the stale-vs-fixed margin of 16.7 is
~14x that flatness and decisive, while the settle-vs-rest margin of 1.5 is INSIDE
it and is not. This capture separates the eras and cannot separate the policies;
the settle-instant proposal stays unadopted.

Refutation attempted: sylpheed-port's adjudication that their shipped pose is
closer to the game than their reference. It SURVIVES, independently and by a
different metric, in the same direction.

Also concedes that my "your branch is the stale era" reasoning was invalid -- I
inferred era from a line count, which is the error they named -- while recording
that the conclusion holds for the ref I could see: origin/auto/port-p6-audio's
ui_layout.rs is md5-identical to origin/main's.

METHOD: two things that should differ producing identical output is a broken
experiment until proven otherwise, and a zero is its most dangerous form. Four
instances now. Verify the inputs differ before believing the outputs match, and
do not infer that difference from a proxy -- line count is not era.

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 14:48:30 +00:00
parent 82ce9dbaaa
commit 84cf98477f
4 changed files with 178 additions and 0 deletions

View File

@@ -1,5 +1,65 @@
# A keyframe is the start of a ramp, not a pose that is held
## ✅ 2026-08-30 — the corrected association's rest pose is what the GAME shows
**Status: ✅ measured against the oracle.** Until now the keyframe record-layout
fix rested on *internal consistency* — 0 of 1 042 multi-segment alpha ramps
constant-rate under the old reading against 857 of 1 540 under the new. That is a
strong argument and it is not a measurement of the game. It now has one, on the
single screen in `GP_TITLE` where the two readings change pixels.
`ptlogo_eff3.t32` on entry 7 (`title_jp`) is the **only** element whose rest pose
moves between the two eras — `(108,72)` stale, `(98,42)` fixed — and it accounts
for all 74 507 differing pixels. Scored against
[`live-title-jp-at-rest.png`](../captures/title-builds/live-title-jp-at-rest.png)
over the 388×423 box where the two renders differ, so the result is not diluted by
the ~92 % of the frame that is identical:
| candidate | RMSE vs the running game |
|---|---|
| stale era, rest `(108,72)` | 58.412 |
| **fixed era, rest `(98,42)`** | **41.690** |
| fixed era, `--settle` t=213 | 40.210 |
**Three controls, run before believing any of it:**
* **alignment found by sweep, not assumed** — offset 0 → 87.29, 40 → 56.37,
**45 → 32.41**, 50 → 53.08, 60 → 72.84. A sharp minimum at the known
game-surface offset;
* **the box discriminates** — the same box against a *different* screen's capture
(the EN title) scores 98103, against 4058 here;
* **`--black` changes nothing** (58.412 / 41.690 either way) — every pixel in this
box is covered by an element, so the canvas never shows through it. Recorded
because the flag's own help says a framebuffer capture must be compared against
a black canvas, and here it happens not to matter.
### 🟡 And the same run says settle-vs-rest is NOT decidable from this capture
Sweeping the screen's own timeline with `--at` gives the instrument's noise scale
([`data/ptlogo-eff3-rest-vs-oracle.txt`](../data/ptlogo-eff3-rest-vs-oracle.txt)):
```
t= 0 77.97 t= 90 58.50 t=150 40.59 t=210 40.23 t=270 78.41
t= 45 63.05 t=120 45.49 t=165 40.20 t=240 40.07 t=285 78.42
```
The capture sits on a broad **plateau from t≈135 to t≈240, flat to 1.2 RMSE across
105 units**, with sharp rises outside it. So:
* the **stale-vs-fixed margin of 16.7 is ~14× that flatness** — decisive;
* the **settle-vs-rest margin of 1.5 is *inside* it** — not decisive.
That is a better statement than "non-decisive": this capture separates the *eras*
and cannot separate the *policies*, and the number that says so is the plateau's
own width. The settle-instant proposal stays unadopted on the same evidence it
had.
⚠️ **Reach.** One screen, one capture. The absolute residual is ~40 RMSE even at
the best instant, because the JP title carries live animation a static render
cannot reproduce; every comparison here is relative and none of it says our render
is *correct*, only which of two candidates the game is closer to.
**Status:**`CONFIRMED` against the framebuffer capture of the running title
screen — the new rule aligns at **zero shift**, the old one had to be moved.
🟡 the fallback for groups that never hold is unverified. ❔ interpolation