diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 8f6f40ed..22595269 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -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) ## 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.