diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 6c079fa2..4db5fea4 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -116 sections. Search this before re-deriving anything. +117 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) @@ -127,6 +127,7 @@ dies, which is what this file is for. * [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) +* [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) ## P0 — the exporter, 2026-08-28 @@ -6869,3 +6870,51 @@ 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`. + +## Reconciling the two ink figures, and what "has its own key" is resting on + +The Decoder reconciled our `build_12` ink counts and corrected a mistake I would +otherwise have made in their favour. + +| | theirs | mine | gap | +|---|---|---|---| +| RGB > 0 | 49 771 | 59 530 | 9 759 px | +| RGB > 1 | 48 043 | 48 368 | **325 px — 0.67 %** | + +🔴 **Their 49 771 was never a threshold figure.** It is exact RGBA inequality +between the two paint orders, which over a black backdrop coincides with `ink>0` +— so it belongs against my **59 530**, not against my 48 368. Matching it to the +closer number would have made us agree for the wrong reason, and they said so +before I could do it. + +Checked on my side: my value-exactly-1 population is **11 162 px**, and the gap +above `>1` is 325 px. So **9 434 of the 9 759-px gap — 96.7 % — lives in pixels +whose value is exactly 1**, and their renderer produces that many fewer of them. +Their claim holds structurally, not just in headline. + +✅ Two conventions worth carrying, both theirs: + +* **`>0` is not portable between renderers on a mostly-dark frame; `>1` is.** Any + cross-renderer ink figure needs its threshold named. This corpus has spent real + effort on residuals at the 0.1 % scale, and a 16 % artefact hiding at 1 LSB is + exactly the size of thing that would have been argued about. +* the without-the-rule zero is **threshold-insensitive in both renderers**, which + is the first double-witnessed result on this rule. + +### One refinement on the 18 confirmations + +They sharpened my summary: the 18 are worse than "the crate agreeing with +itself" — 14 have their own key so the rule never fires decisively, and 4 are +builds where every element is forced, so the tie-break gives the same order +regardless. None is evidence in either direction. Agreed. + +⚠️ But for the port's four, "has its own key" is doing quieter work than it +sounds. `palogo_eff0`'s key is `0x00000000` with **`layer_source: implied`** — the +crate's measured per-name entry, not a value read from the file. So those four +confirmations are not *the file already settles it*; they are **another +measurement already settles it**, in the same category as `pteff00`'s place on +top, which their own page is careful to call measured rather than decoded. + +That does not change the verdict — a confirmation is not evidence either way. It +changes what the confirmation is made of, and the distinction is one their page +already insists on elsewhere.