diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 7d10d333..bb41e346 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -179 sections. Search this before re-deriving anything. +180 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) @@ -190,6 +190,7 @@ dies, which is what this file is for. * [Cross-checking their leaf reading against my export — it reconciles](#cross-checking-their-leaf-reading-against-my-export--it-reconciles) * [Replicating the phase result on the title — it fails, and the failure is the finding](#replicating-the-phase-result-on-the-title--it-fails-and-the-failure-is-the-finding) * [Their masking rule, implemented — and it does not transfer to my screens](#their-masking-rule-implemented--and-it-does-not-transfer-to-my-screens) +* [Their "the game may not draw these leaves" hypothesis — my curves say *sometimes*](#their-the-game-may-not-draw-these-leaves-hypothesis--my-curves-say-sometimes) ## P0 — the exporter, 2026-08-28 @@ -10226,3 +10227,57 @@ against anything measured differently. ⚠️ Recorded as a limit, not fixed. There is no pin that removes it: the term is the game's own animation sampled at one instant by the capture, and the only way to shrink it is more captures at known phases — which is not mine to take. + +## Their "the game may not draw these leaves" hypothesis — my curves say *sometimes* + +They challenged two things: my compactness precondition, and my claim that the +leaf free-runs in the game. ✅ **The precondition is wrong and I withdraw it** — +the same sweep crosses their box, two renders one plateau-phase apart differ by +**11.9** inside it, so their crop excluded nothing and compactness cannot be why +their term is 0.32. + +Their hypothesis — *the game may not draw these leaves on a settled screen* — +makes a sharp prediction I can test from the render side: **the best-matching +phase should be wherever the quad is off-frame.** + +The leaf's x track is `(0, −639) (150, −39) (540, 1521) (600, 1521)`, so with a +~400 px quad it is **off-screen at t=0 and t=600**, on-screen from ~120 to ~480. + +| phase | quad | `main_menu` RMSE | `title` RMSE | +|---|---|---|---| +| **0** | **off** | **13.2059** ← min | 14.1604 | +| 60 | off | 13.2544 | 14.0910 | +| 120 | ON | 13.7044 | 14.2571 | +| **240** | ON | 13.6486 | **13.9417** ← min | +| 360 | ON | 14.0826 | 14.5409 | +| 480 | ON | 13.9055 | 14.9667 | +| **600** | **off** | **13.2065** ← min | 14.1611 | + +🟢 **On `main_menu` the two minima are exactly the two off-screen phases**, and +every on-screen phase is worse. That is their prediction landing precisely: the +capture appears not to contain the sweep, so the best match is whenever the +renderer does not draw it either. + +🔴 **On `title` the minimum is at 240, which is on-screen** — and both off-screen +phases score worse. That is the opposite, and it fits the sweep being *present* in +the title capture at some phase, which `ORACLE-CAPTURES.md` already says of these +two elements ("move continuously"). + +### What I withdraw, and what this leaves + +⚠️ **"The leaf free-runs in the game too" is withdrawn as established.** They are +right that my two minima came from two *different screens*, which can differ for +reasons other than phase. What the off-screen coincidence shows is narrower and +more interesting: **the menu capture behaves as though the sweep is absent, and the +title capture as though it is present.** + +⚠️ It also does **not** resolve their JP-title tension — they see 0.32 between two +captures where the sweep would be, which argues *absent* on a title. My EN title +curve argues *present*. Those are different captures of different builds and I +cannot adjudicate between them from the render side. + +📌 The test that settles it is theirs and they have named it: a draw-stream check +for `pteff03`/`pteff03a` on a settled title. **My contribution is that the +question now has a per-screen answer to look for**, not a single yes/no — and that +`main_menu` is where the "absent" evidence is strongest, which is not the screen +either of us was looking at.