port: cross-check the leaf sweep against my export -- their reading and mine reconcile

Their withdrawal gave coordinates to check my renderer against, and my first
measurements looked like a contradiction: phase-to-phase differences span the
whole frame against their 400 px quad tracking x 921->1041. Fine steps showed the
shape -- nothing above threshold over 5 units, the entire frame over 120 -- a
large, slowly-moving object, and with --time frozen all of it is the leaf.

Reading the leaf record from my own export resolves it. ptloop01: leaf pteff03,
span 600, x track -639..1521, scale (100,600). ptloop02: span 720, scale (100,800).
Loop spans 600 and 720 differing from each other is exactly their reading from the
other side. Scale is 100% horizontal, so the quad is a normal-width strip
stretched vertically, and its x track crosses the entire 1280 frame -- two phases
120 units apart put it hundreds of pixels apart and the difference covers the
union, which is why the bboxes are frame-wide.

Their 921->1041 is a segment of that track, not its extent. The caution they
applied one level up applies again: a centre track is not a drawn extent either,
and I nearly wrote up a disagreement by comparing a sub-range against a full
sweep.

It also explains their dead zone: a strip anchored at the pivot sweeping at 100%
width spends almost all its time outside the 200x90 parent rect.

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:58:39 +00:00
parent 11a35651cb
commit bb1e4c4195

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 -->
176 sections. Search this before re-deriving anything.
177 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)
@@ -187,6 +187,7 @@ dies, which is what this file is for.
* [Answering "an unenumerated set" — don't enumerate, test](#answering-an-unenumerated-set--dont-enumerate-test)
* [🔴 The third clock was in my own list, and I did not wire it](#the-third-clock-was-in-my-own-list-and-i-did-not-wire-it)
* [The leaf phase was an arbitrary choice; the capture turns out to determine it](#the-leaf-phase-was-an-arbitrary-choice-the-capture-turns-out-to-determine-it)
* [Cross-checking their leaf reading against my export — it reconciles](#cross-checking-their-leaf-reading-against-my-export--it-reconciles)
<!-- /INDEX -->
## P0 — the exporter, 2026-08-28
@@ -10069,3 +10070,46 @@ pose, so the flat reading was *partly real* and the wrong conclusion had support
pinning (max 89.48 → 0 across waits) is **confirmed** — re-run with fresh files and
distinct md5s — and in correct units the phase sweep gives five distinct frames.
The flag was never the problem.
## Cross-checking their leaf reading against my export — it reconciles
Their withdrawal (*"the parent rect is a pivot anchor, not the drawn extent"*)
gave me coordinates to check my renderer against, and my first measurements looked
like a contradiction: phase-to-phase differences on both `title` and `main_menu`
span the **whole frame**, against their 400 px quad tracking x 921→1041.
Fine steps showed the shape: **nothing changes above threshold over 5 units, and
the entire frame changes over 120** — a large, slowly-moving object. At
`--time=4.0` the screen is frozen, so all of that is the leaf.
✅ Reading the leaf record out of my own export resolves it:
| | `ptloop01` | `ptloop02` |
|---|---|---|
| leaf element | `pteff03` | `pteff04` |
| loop span | **600** | **720** |
| x track | **639 … 1521** | 639 … 1521 |
| scale | **(100, 600)** | (100, 800) |
***Loop spans 600 and 720, different from each other** — exactly their reading,
from the other side.
* ✅ Scale is **100 % horizontal**, 600/800 % vertical — so the quad is *not*
widened; it is a normal-width strip stretched vertically.
* 📌 **The x track runs 639 to 1521**, right across and beyond the 1280 frame. Two
phases 120 units apart place the quad hundreds of pixels apart, and the
*difference* covers the union of both positions — which is why my diff bboxes
are frame-wide. **No contradiction.**
Their x 921→1041 is a segment of that track, not its extent. So the caution they
just applied one level up applies again here: **a centre track is not a drawn
extent either**, and I nearly wrote up a disagreement by comparing a sub-range
against a full sweep.
✅ It also explains their dead zone honestly: a strip anchored at the pivot,
sweeping horizontally at 100 % width, spends almost all its time **outside** the
200×90 parent rect — so zero difference inside that rect is expected and proves
nothing, which is what they withdrew.
⚠️ And it strengthens my phase-0 result rather than threatening it: a quad crossing
the entire frame is exactly the kind of element whose phase a whole-frame RMSE can
resolve, which is consistent with the 0.5 spread I measured against a 0.0565 floor.