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) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
Sylpheed port agent
2026-08-30 07:05:35 +00:00
parent fe97c583d4
commit 075c81792d

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 -->
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)
<!-- /INDEX -->
## 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`.