diff --git a/authored/rendering.json b/authored/rendering.json index a4cea797..8e985218 100644 --- a/authored/rendering.json +++ b/authored/rendering.json @@ -36,9 +36,27 @@ " parent scale gates the leaf it is a 0.95 s flash; if the leaf runs free it", " spins for 16 s. Nothing on the disc chooses and title_jp has no oracle", " capture.", - " `build_12,15/pgloading_loop5` -- leaf scale (0,0). A zero scale is one of", - " the three historical failures this corpus names, so it is exactly where a", - " guess is most expensive.", + " `build_12,15/pgloading_loop5` -- STILL NOT DRAWN, but the reason given here", + " was WRONG and is replaced. It read \"leaf scale (0,0). A zero scale is one of", + " the three historical failures this corpus names\" -- which describes t=0 and", + " t=30 and nothing after them.", + "", + " What the leaf actually holds, read out of the export: ONE element,", + " `pgloading_ring`, with a sprite, whose scale ramps 0 -> 250 -> 800 -> 1000", + " while its alpha rises to full at t=55 and falls to nothing by t=130. An", + " expanding, fading ring -- a loading pulse, not a degenerate record.", + "", + " 🔴 And it is VISIBLE at the instant this port poses. `build_12`'s settle", + " window is [40, 48], so the pose lands near t=44, where the ring interpolates", + " to scale 140 at alpha 143. So withholding it is not declining to draw", + " nothing; it is declining to draw something, and the old reason hid that.", + "", + " It stays withheld on the reason below, which is the one that always applied:", + " there is no way to adjudicate it here. The loading screens have no oracle", + " capture -- the RE agent records them as not reachable from the title path --", + " and `verify-screen` compares against a renderer that draws no leaves at all.", + " Drawing it would put unadjudicable content on a screen, which is the same", + " test `ptlogo_eff2` fails.", "", "AND THERE IS NO WAY TO ADJUDICATE EITHER HERE. `title_jp` has no oracle", "capture, and `verify-screen` compares against `sylpheed-cli`, which does not", diff --git a/docs/port/BLOCKED.md b/docs/port/BLOCKED.md index c93b1931..aab24495 100644 --- a/docs/port/BLOCKED.md +++ b/docs/port/BLOCKED.md @@ -651,3 +651,26 @@ one frame between two of our own renderers, on a screen matching the oracle at ⚠️ Do not read this as the port being wrong. Against the **capture**, `title` is at 0.21 % and `title_plate` at 0.00093 %. This is two of our renderers disagreeing, and the one with an oracle behind it is not the one under suspicion. + +--- + +## The loading screens hide a visible leaf animation + +*Derived from HANDOFF `9ca1eb5`. Raised 2026-08-30 by the port. **Low priority**, +and nothing is waiting on it.* + +`pgloading_loop5` on `build_12`/`build_15` carries a leaf — `pgloading_ring`, one +sprite — that expands **scale 0 → 1000** while fading in and out over t=0…130. At +the port's own pose instant (~t=44) it would draw at **scale 140, alpha 143**. The +port does not draw it. + +⚠️ It is withheld for a reason that is sound — no oracle capture exists for a +loading screen, and `verify-screen`'s reference draws no leaves, so the content +would be unadjudicable either way — but the reason previously recorded was +**false** (*"leaf scale (0,0)"*), which made it look like there was nothing to +draw. There is. + +What would settle it: **any capture of a loading screen with the ring mid-expansion**. +The Decoder records these screens as unreachable from the title path, so this may +never become answerable, and that is an acceptable outcome — the entry now says +what is being withheld rather than implying the question is empty. diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 53ee95a3..8565672d 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -118 sections. Search this before re-deriving anything. +119 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) @@ -129,6 +129,7 @@ dies, which is what this file is for. * [A second witness for the pixel-cost claim, from a different renderer](#a-second-witness-for-the-pixel-cost-claim-from-a-different-renderer) * [Reconciling the two ink figures, and what "has its own key" is resting on](#reconciling-the-two-ink-figures-and-what-has-its-own-key-is-resting-on) * [Not one of the 80 has a decoded key — and the port's four are the rule's oracle check](#not-one-of-the-80-has-a-decoded-key--and-the-ports-four-are-the-rules-oracle-check) +* [A withholding reason that was false, and the measurement beside it that was not](#a-withholding-reason-that-was-false-and-the-measurement-beside-it-that-was-not) ## P0 — the exporter, 2026-08-28 @@ -6969,3 +6970,49 @@ convention, a retracted control of theirs, and this. It has also stopped being about the port — nothing in `build_12`/`build_15` has moved since the rule landed, and the remaining questions are the Decoder's to hold. Continuing would be refining someone else's page. + +## A withholding reason that was false, and the measurement beside it that was not + +`authored/rendering.json` names three leaf records the exporter flags and the port +does **not** draw. Auditing the reasons rather than the behaviour: + +### 🔴 `build_12,15/pgloading_loop5` — the reason was wrong + +It read *"leaf scale (0,0). A zero scale is one of the three historical failures +this corpus names."* That describes **t=0 and t=30 and nothing after them.** + +What the leaf actually holds, read from the export: one element, +`pgloading_ring`, with a sprite, whose scale ramps **0 → 250 → 800 → 1000** while +its alpha rises to full at t=55 and falls to nothing by t=130. An expanding, +fading ring — a loading pulse, not a degenerate record. + +⚠️ **And it is visible at the instant this port poses.** `build_12`'s settle window +is [40, 48], so the pose lands near **t=44**, where the ring interpolates to +**scale 140 at alpha 143**. Withholding it is not declining to draw *nothing*; it +is declining to draw *something*, and the one-line reason concealed which. + +✅ **It stays withheld**, on the reason that always applied and is already written +below it in the same file: there is no way to adjudicate it here. The loading +screens have no oracle capture — the Decoder records them as unreachable from the +title path — and `verify-screen` compares against a renderer that draws no leaves. +Drawing it would put unadjudicable content on a screen, which is the test +`ptlogo_eff2` also fails. Behaviour unchanged: `build_12` still renders 59 530 px +of ink. + +📌 The two entries in that list were written to different standards. The +`title_jp/ptlogo_eff2` reason is four paragraphs, states the scale as a *pop* +(0 → 125 % → 0 over 0.95 s), works through both readings and says why neither can +be chosen. The `pgloading_loop5` reason was one line and false. Same file, same +author, same day — the difference is that one was interesting and one was a +loading screen. + +### ✅ The measurement in the same paragraph checks out + +That paragraph also claims *"its max went 155 → 232 when they were drawn"* for +`title_jp`. Reproduced by adding `ptlogo_eff2` to `draw_leaf_for` and re-running: +**155 → 231**, with the differing pixels going 20 498 → 58 313. One off a number +recorded days ago, which is rounding rather than drift. + +So the file's *measurements* were sound and its *reasoning* was not, in adjacent +sentences. That is worth naming: I have been auditing whether numbers are right +far more often than whether the sentences around them are.