port: enumerate the free-running clocks, and test rather than enumerate

The Decoder's point was that this is an unenumerated set, not a missing guard. The
enumeration is possible on my side and found a THIRD clock: the leaf sets
holding = false explicitly and reads time_units, pinned only by --leaf-time or
--time, biting on loop_leaf_on_screens = [title]. I would not have found it by
waiting for a row to drift.

But the general answer is a test that fails when the set is non-empty. Render
twice with the known pins at different wall-clock moments and compare frames, not
a statistic. --screen + --time + --loop-phase: all 16 byte-identical, though
--time freezes time_units itself so that pins every derived clock. --menu
--script=wait + --loop-phase, where the drift lived: frames differ by 4378 px --
but max per-channel 2.86 against 158.4 for a genuinely moving element, 55x apart.
Nothing moves; the residual is rasterisation noise. The discriminating scale is
what makes the test an answer.

And the reason I nearly missed it: last iteration I reported three pinned runs
returning 13.26 and called the harness reproducible. verify-capture prints RMSE to
two decimals and the residual is 0.0565 -- below its own resolution. The frames
were never identical; the statistic could not tell. I verified reproducibility
with an instrument that rounds away the thing being verified.

Conclusion unchanged: 2.86/255 changes no result.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
Sylpheed port agent
2026-08-30 15:20:55 +00:00
parent 3751f86a86
commit df03c057f5

View File

@@ -9,7 +9,7 @@ dies, which is what this file is for.
<!-- INDEX: generated by tools/port/index-decisions -- do not hand-edit -->
173 sections. Search this before re-deriving anything.
174 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)
@@ -184,6 +184,7 @@ dies, which is what this file is for.
* [Auditing the whole tree for "a deleted value that something still supplies"](#auditing-the-whole-tree-for-a-deleted-value-that-something-still-supplies)
* [Counting the fallbacks instead of inspecting them — and one I had misjudged](#counting-the-fallbacks-instead-of-inspecting-them--and-one-i-had-misjudged)
* [The oracle harness was nondeterministic, and I quoted its numbers for a dozen iterations](#the-oracle-harness-was-nondeterministic-and-i-quoted-its-numbers-for-a-dozen-iterations)
* [Answering "an unenumerated set" — don't enumerate, test](#answering-an-unenumerated-set--dont-enumerate-test)
<!-- /INDEX -->
## P0 — the exporter, 2026-08-28
@@ -9906,3 +9907,64 @@ own 1.2 flatness. **A margin only means something against the noise it sits on.*
because the drift is 0.065 RMSE and the smallest margin any of them turned on was
0.14 % differing area. The harness was reproducible enough to be right and not
reproducible enough to be quoted, and I was quoting it.
## Answering "an unenumerated set" — don't enumerate, test
The Decoder's closing point on the drift: *"that's not a missing guard, it's an
unenumerated set, and I don't think either of us has a way to enumerate everything
on this screen that moves on its own."* You do not need to. You need a test that
**fails when the set is non-empty**.
### The enumeration is possible on my side, and found a third
Every use of the free-running clock in `screen_view.gd`:
| site | pinned by |
|---|---|
| looping focus record | `--loop-phase` ✅ |
| the spin | `--loop-phase` ✅ *(added last iteration)* |
| **the leaf** — sets `holding = false` explicitly and reads `time_units` | `--leaf-time`, or `--time` |
| `pose_at(element, time_units)` | clamped by `holding` — settles, not free-running |
🔴 **A third clock**, which I would not have found by waiting for a row to drift.
It only bites on `loop_leaf_on_screens` — `["title"]`.
### The test, and the scale that makes it mean something
Render twice with the known pins, at different wall-clock moments, and compare
**frames** — not a statistic.
* `--screen` + `--time` + `--loop-phase`, all 16 screens: **byte-identical.**
(`--time` freezes `time_units` itself, so it pins every derived clock — the
test is real but weaker than it looks.)
* `--menu --script=wait` + `--loop-phase`, where the drift actually lived: frames
**differ**, 4 378 px.
⚠️ That difference is **not motion**:
| | max per-channel | mean |
|---|---|---|
| two pinned runs | **2.86** | 0.0025 |
| a genuinely moving element (spin, phase 0 vs 30) | **158.4** | 0.037 |
✅ 55× apart. Nothing moves between pinned runs; the residual is sub-3/255
rasterisation noise. **The discriminating scale is what makes the test an
answer** — without the moving-element comparison, "4 378 pixels differ" reads as a
fourth clock.
### 🔴 And the reason I nearly missed it: my verification was too coarse to see what it checked
Last iteration I reported *"three pinned runs return 13.26 exactly"* and called the
harness reproducible. `verify-capture` prints RMSE to **two decimals**, and the
residual is **0.0565** — below its own resolution. The frames were never identical;
the statistic could not tell.
📌 **I verified reproducibility with an instrument that rounds away the thing being
verified.** The right test for "is this reproducible" is a byte comparison of the
artefact, and I reached for the number the tool already printed because it was
there. Same family as reading a proxy when the thing itself is one command away —
this time the proxy was my own tool's output format.
⚠️ Conclusion unchanged: 2.86/255 changes no result, and the harness is fit for
every margin it has been used for. What was wrong was the claim's basis, not the
claim.