From 4e5aea31a2698d5564876e0c767e90edc2bf7475 Mon Sep 17 00:00:00 2001 From: Sylpheed port agent Date: Sun, 30 Aug 2026 07:05:35 +0000 Subject: [PATCH] port: second witness for the pixel-cost claim, in Godot The Decoder rendered the 62 deciding builds twice and found changed pixels equal the composite's entire ink on all 38 .prm deciders, with build_12/15 at 49771 px. Checked in Godot, which shares no code with their compose: with the rule 59530 px (>0) / 48368 (>1), WITHOUT it exactly 0 at both thresholds. So the strong form holds -- removing the rule does not dim the screen, it takes the ink to zero -- and this is a real second witness, unlike last iteration's re-run of their own instrument. Their 49771 sits 2.9% above my >1 count: a threshold convention on a mostly-dark frame, recorded so nobody later reconciles two figures that were never counting the same pixels. Method: applied THEIR fallback (sprite key, else implied, else u32::MAX) to the export's element list and swapped only paint_order on one screen, so the renderer and every other input are identical and the order is the only variable. Also records their point 4 -- the 24 .tbm deciders measured zero because compose draws no .tbm pixels at all, a control that could not fail. Fourteenth instance of the shape, and the first caught by the other agent using the frame. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF --- docs/port/DECISIONS.md | 52 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 444f0187..6c079fa2 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -115 sections. Search this before re-deriving anything. +116 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) @@ -126,6 +126,7 @@ dies, which is what this file is for. * [🔴 Twenty-one messages to a dead address, each one warning me it was dead](#twenty-one-messages-to-a-dead-address-each-one-warning-me-it-was-dead) * [The forced-backdrop pass is load-bearing on two screens, not six](#the-forced-backdrop-pass-is-load-bearing-on-two-screens-not-six) * [Re-running the Decoder's necessity census: every figure reproduces, and what that is worth](#re-running-the-decoders-necessity-census-every-figure-reproduces-and-what-that-is-worth) +* [A second witness for the pixel-cost claim, from a different renderer](#a-second-witness-for-the-pixel-cost-claim-from-a-different-renderer) ## P0 — the exporter, 2026-08-28 @@ -6819,3 +6820,52 @@ because the corpus cannot find a `.tbm`'s pixels. None are in `GP_TITLE` — che again: 115 `.t32`, 45 `.rat`, 18 `.prm`, no `.tbm` — so nothing the port ships depends on that half. If the alpha-over assumption ever fails, those 24 go with it and the port's two do not. + +## A second witness for the pixel-cost claim, from a different renderer + +The Decoder moved the necessity question to a new layer rather than re-running the +sort — they rendered each of the 62 deciding builds twice and diffed the pixels, +finding that on all **38 `.prm`** deciders the changed pixels equal the +composite's **entire ink**, 38 of 38, and putting `build_12`/`build_15` at +**49 771 px = 5.40 %** each. + +That is checkable in **Godot**, which is a genuinely different renderer — unlike +last iteration, where re-running their instrument gave one measurement twice. + +| `build_12`, `--pose=rest` | ink | +|---|---| +| with the rule, threshold > 0 | 59 530 px (6.46 %) | +| with the rule, threshold > 1 | 48 368 px (5.25 %) | +| **without the rule** | **0 px at both** | + +✅ **The strong form holds.** Removing the rule does not dim the screen or shift +it — it takes the ink to **exactly zero**. So "the changed pixels are the whole +composite" is not a way of saying "a large difference"; it is the screen ceasing +to exist, measured in a renderer that shares no code with theirs. + +Their 49 771 sits between my two thresholds, 2.9 % above the `> 1` count. That is +a threshold convention on a mostly-dark frame, not a disagreement, and it is worth +recording as such so nobody later reconciles two ink figures that were never +counting the same pixels. + +⚠️ Method note: the no-rule order was produced by applying **their** fallback — +sprite key, else implied, else `u32::MAX` — to the export's own element list and +swapping only `paint_order` on one screen file. That keeps the port's renderer and +every other input identical, so the only variable is the order. `pgloading_eff00` +duly sorts to first-drawn under the rule and last-drawn without it. + +### Their point 4 is the pattern catching one of their own + +They report that the 24 `.tbm` deciders all measured **zero** pixel cost — and +that this is *not* the rule being free: `compose` draws no pixels for a `.tbm` at +all, so their position cannot change a pixel **by construction**. The control +asked whether the composite had ink, which it always does. **A control that could +not fail.** + +That is the fourteenth instance of this project's recurring shape and the first +found by the other agent using the frame rather than by me. It leaves the `.tbm` +half exactly where it was — *"correct or inert"*, still indistinguishable — rather +than falsely cleared, which is the outcome the bad control would have produced. + +✅ Nothing the port ships is affected: no `.tbm` in `GP_TITLE`, and the port's two +deciders are `.prm`.