port: a second capture closes the sweep-geometry question; title+plate matches at 0.00093%

live-title-press-a.png was unused in the corpus. Posed at t=237 -- inside the
plate's 8-unit window -- the port matches it at 0.00093%, against 0.0124% for
the no-plate capture at leaf phase ~400. Two captures, two different phases,
both under 0.013%: a systematic sweep-geometry error would leave a floor in
both, so last iteration's caveat is closed.

Sweeping the whole screen's instant against capture 1 gives at best 0.148% at
t=230 -- 10x worse than the leaf-only fit. So that capture is the screen SETTLED
with the sweeps still looping, which is the first independent evidence for the
authored loop_leaf decision.

Fixes the cause of a flat 1% floor: --screen=X --overlay=Y pushed the raw
elapsed clock into the overlay (9 units at capture), so press_start drew nothing
-- the flag whose purpose is 'put the plate on the title'. A static overlay now
poses at its own arrival; the --boot shared clock is untouched.

Adds title_plate to verify-capture at 0.00%, the most sensitive row in it. Its
instant is FITTED and labelled as such.

Also records that I nearly committed a wrong cause for the overlay bug: I wrote
that nothing drives the overlay's clock outside a sequence. It is driven, every
frame, from view.time_units.

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 01:16:57 +00:00
parent 96fe0eac51
commit 69e9043b96
3 changed files with 116 additions and 1 deletions

View File

@@ -5980,3 +5980,77 @@ geometry error would produce at a wrong phase.
whatever they measured it on*. It says the phase that matches this capture is
~400. If those are the same quantity, one of the two is off by ~42 units; if they
are not, this is a second quantity nobody had.
## A second capture closes the sweep-geometry question, and the plate matches at 0.00093 %
Last iteration's leaf-phase fit came with a caveat I could not close: *a
systematic error in how the port draws the sweeps could be absorbed by shifting
the phase, and one capture cannot separate those.* A second capture can, and
`live-title-press-a.png` — the title **with** the plate — was sitting in the
corpus unused.
### The second capture fits at a different phase, and better
| capture | pose | differing |
|---|---|---|
| `live-title-build4-no-plate.png` | settled, leaf at ~400 units | **0.0124 %** |
| `live-title-press-a.png` | t=237, everything | **0.00093 %** |
**Two independent captures, two different sweep phases, both fitting to 0.01 % or
better.** A geometry error in how the sweeps are drawn would leave a floor in
*both*, and at a phase-independent level. Neither has one. ✅ The caveat is closed
and the port's sweep rendering is not systematically wrong.
The two phases are also consistent with each other rather than merely different:
the plate is opaque only at t=236238, so a frame containing it is early
(t≈237) and a frame without it is either earlier or later. The no-plate capture
fits at leaf ~400 — 6.7 s in, well past the plate's window — and its filename
says it is build 4 alone. Both readings agree on where each frame sits.
⚠️ I nearly drew a further inference — that the no-plate capture *dates* the
plate's disappearance and therefore answers the BLOCKED question about whether
the plate stays up. It does not: the filename says `build4-no-plate`, so the
capture was taken **of build 4 alone, deliberately without the overlay**. It
carries no information about how long a plate lasts. That row stays open.
### Capture 1 is not a whole-screen instant, which corroborates `loop_leaf`
Sweeping the *whole screen's* time against the no-plate capture, the best is
**0.1483 % at t=230**, degrading sharply past 240 as the group fades out — an
order of magnitude worse than the leaf-only fit's 0.0124 % at phase ~400, which
the main timeline cannot reach without fading everything.
So that capture is **not** "the screen at instant t". It is the screen **settled**
with the sweeps **still looping** — which is exactly what `authored/rendering.json`'s
`loop_leaf_on_screens: ["title"]` models. That decision was authored from the
leaf's zero slack; this is the first independent evidence for it.
### 🔴 The 1 % floor was the plate not being drawn at all
Before any of that, every sweep phase against capture 2 gave a flat ~1.0 %, with
the residual a row of glyph-sized blobs on the plate's own position.
`--screen=X --overlay=Y` pushed the **raw elapsed clock** into the overlay — 9
units at the moment `--capture` fires. `press_start` is transparent until t=214.
So the one flag whose entire purpose is *put the plate on the title* drew nothing
and reported `drew 0`, and the frame read as a title with no plate.
A static overlay now poses at **its own arrival**. The `--boot` path is untouched:
there the shared clock is the finding — the 120 units between build 4's last ramp
and the plate's `a=255` is a fixed interval on one timeline.
⚠️ My first patch for this was wrong and I nearly committed the comment for it:
I wrote that *"nothing outside a boot sequence drives the overlay's clock"*. It is
driven — from `view.time_units`, every frame. The symptom was identical either
way, and only re-reading the log after the fix failed showed the cause was the
opposite of what I had written down.
### The new row
`title_plate` joins `verify-capture` at **0.00%** — two orders below every other
row, which makes it the most sensitive regression detector in the harness.
⚠️ Its instant is **fitted, not measured**. t=237 is where this capture's content
places it, found by sweeping. Choosing which frame to compare against is what
every row here does, but the 0.00093 % is a floor for *that pose*, not a general
statement of accuracy.