port: the settle-instant candidate is not uniformly better -- the menus arrive late
Their symmetry-breaking property is testable on the two screens my earlier table marked confounded, and it turns up a class where their candidate loses. ptmsg is [0:a0 44:a0 56:a255 58:a255 64:a0] and main_menu's settle window is [44,56] with instant 50 -- so the footer is at alpha 127.5, half-drawn, at the instant their candidate poses everything. Same on extras. The settle instant is the midpoint of the longest keyframe-free interval, and on both menus that interval ends exactly as the footer starts to arrive. Measured with focus absent from both sides so the earlier confound cancels: t=50 gives 0.30% differing, t=58 (the footer's own hold) gives 0.25%. Small and real. It does not overturn the proposal, which wins 9x-75x where rest() returns a transient's peak. It identifies a failure mode of its own: an element arriving after the settle window closes is caught mid-fade. Both poses are approximations to a settled screen; neither is the settled screen. Also: my first run asked --time=50 meaning units and got 50 SECONDS, past the end of everything. Both poses returned RMSE 56.02 / 9.15%, identical to two decimals, which is what made me look -- two different inputs giving the same output is the instrument saying it ignored the input. 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 -->
|
||||
|
||||
154 sections. Search this before re-deriving anything.
|
||||
155 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)
|
||||
@@ -165,6 +165,7 @@ dies, which is what this file is for.
|
||||
* [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)
|
||||
* [Refutation attempt: the settle-instant candidate is **not** uniformly better](#refutation-attempt-the-settle-instant-candidate-is-not-uniformly-better)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -8978,3 +8979,51 @@ developer logos → `ADV.wmv` → title → plate land on the same frame.
|
||||
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.
|
||||
|
||||
## Refutation attempt: the settle-instant candidate is **not** uniformly better
|
||||
|
||||
Their symmetry-breaking property attributes every `rest()` disagreement to the
|
||||
chosen plateau not covering the settle instant. That is testable from my side on
|
||||
the two screens my earlier table had to mark **confounded** — and it turns up a
|
||||
screen class where their candidate is *worse*.
|
||||
|
||||
🔴 **At `main_menu`'s settle instant the footer is half-drawn.**
|
||||
|
||||
| screen | settle window | settle instant | `ptmsg` alpha there |
|
||||
|---|---|---|---|
|
||||
| `main_menu` | [44, 56] | **50** | **127.5** of 255 |
|
||||
| `extras` | [38, 50] | **44** | **127.5** of 255 |
|
||||
|
||||
`ptmsg` is `[0:a0 44:a0 56:a255 58:a255 64:a0]` — it finishes arriving at t=56,
|
||||
*after* the settle window has closed at 56 and well after its midpoint at 50. The
|
||||
settle instant is the midpoint of the longest keyframe-free interval, and on both
|
||||
menus **that interval ends exactly as the footer starts to arrive.**
|
||||
|
||||
Measured against the game, with focus absent from both renders so the confound
|
||||
that voided my earlier rows cancels:
|
||||
|
||||
| pose | RMSE | differing |
|
||||
|---|---|---|
|
||||
| t=50 — the screen's settle instant | 14.98 | **0.30 %** |
|
||||
| t=58 — the footer's own hold | 14.83 | **0.25 %** |
|
||||
|
||||
⚠️ **Small, and real.** This does not overturn their proposal — it wins by 9× to
|
||||
75× on `title` and both splashes, and by 4.6× on their own `title` measurement.
|
||||
What it shows is that "pose everything at the screen's settle instant" has a
|
||||
**failure mode of its own**: an element that arrives after the settle window
|
||||
closes is caught mid-fade. The port's hold-based pose does not have it, because it
|
||||
parks each element at its own hold.
|
||||
|
||||
📌 So the honest summary of this whole thread is narrower than either of us has
|
||||
been writing: **the screen-settle pose beats per-element `rest()` decisively where
|
||||
`rest()` returns a transient's peak, and loses slightly where an element arrives
|
||||
late.** Both are approximations to a settled screen; neither is the settled screen.
|
||||
|
||||
### And a unit bug, caught by two identical numbers
|
||||
|
||||
My first run of this asked for `--time=50` meaning 50 *units* and got **50
|
||||
seconds** — 3000 units, past the end of everything. Both poses returned RMSE 56.02
|
||||
/ 9.15 %, **identical to two decimal places**, which is what made me look. Two
|
||||
different inputs producing exactly the same output is not a result; it is the
|
||||
instrument saying it ignored the input. Same tell as the two `--script` runs that
|
||||
came out bit-identical because the capture fired before the first press.
|
||||
|
||||
Reference in New Issue
Block a user