diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 94524210..bf1d2c64 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -228 sections. Search this before re-deriving anything. +229 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) @@ -239,6 +239,7 @@ dies, which is what this file is for. * [Applying "a correction is a new claim" to my own most recent correction](#applying-a-correction-is-a-new-claim-to-my-own-most-recent-correction) * [P0 gate — recorded at last, and the gap it belongs to](#p0-gate--recorded-at-last-and-the-gap-it-belongs-to) * [Their sufficiency gap, run on `authored/` — clean, after I nearly reported 35 false positives](#their-sufficiency-gap-run-on-authored--clean-after-i-nearly-reported-35-false-positives) +* [Their absence shape on my own citations — and the wording gap in my P0 closure](#their-absence-shape-on-my-own-citations--and-the-wording-gap-in-my-p0-closure) ## P0 — the exporter, 2026-08-28 @@ -278,7 +279,7 @@ background with no error anywhere. `sprites///.png`. ### The format is executable -`sylpheed-export check --out export` validates a tree against `docs/FORMAT.md` +`sylpheed-export check --out export` validates a tree against `docs/port/FORMAT.md` with no disc in hand. It exists because "the export is correct" is otherwise an assertion, and because the P0 gate is *"validates against FORMAT.md"* — which is not a thing anyone can confirm by reading. @@ -484,7 +485,7 @@ other eleven screens are clean. destination-pixel bias toward the top-left that no rasteriser produces, and the Xenon GPU that drew this screen sampled at pixel centres. But I have no framebuffer capture of `title_jp` and the disagreement is sub-pixel on one glow, -so this is a reading, not a measurement — recorded in `docs/BLOCKED.md` rather +so this is a reading, not a measurement — recorded in `docs/port/BLOCKED.md` rather than acted on. **The port is not changing to match**, because matching the CLI here would mean deliberately reproducing a half-pixel offset in order to make a number smaller. @@ -495,7 +496,7 @@ Two pixels at 4/255. Rounding. ### What the diff cannot tell us -The pivot question in `docs/BLOCKED.md` predicted that a P1 diff could not +The pivot question in `docs/port/BLOCKED.md` predicted that a P1 diff could not distinguish "anchor scale to the declared pivot" from "anchor to half the texture", because both renderers use the declared pivot. That prediction held: the port and the CLI agree on every scaled element, and that agreement is **not @@ -593,7 +594,7 @@ that renderer-vs-renderer diffing compares like with like. Note what this says about P1: the port and the reference renderer **agreed** on `main_menu` to 3/255, and both were missing two elements the game draws. Two renderers reading the same field through the same decoder agreeing is not -evidence that the field is right. `docs/BLOCKED.md` had already said that about +evidence that the field is right. `docs/port/BLOCKED.md` had already said that about the pivot; here it bit for real. ## The title is not settled, and P2 does not claim it @@ -797,7 +798,7 @@ focused record **over** the base element. Those are different operations, and the capture shows a ring marker beside `NEW GAME` that the port does not draw. This is P5's, not P2's, and it is not being guessed at here. Raised in -`docs/BLOCKED.md`. +`docs/port/BLOCKED.md`. --- @@ -11977,3 +11978,48 @@ clean result:** this tests that a `why` exists **in scope**, not that it *explai that value*. A parent `_` covering twenty values may say nothing about any one of them. Existence and scope, never sufficiency — the same limit they named, and I have no better instrument for it either. + +## Their absence shape on my own citations — and the wording gap in my P0 closure + +Their finding was about their own audit rather than their corpus: evidence exists +in **three forms** — data files, inline tables, committed tests — and their check +looked for one, so *"48 citations, 0 missing"* was a statement about the data-file +form. **They reported it in the wording rather than the scope.** + +The analogue I could run: **do my own citations resolve?** 32 distinct file paths +cited in `DECISIONS.md`; **12 do not resolve.** Inspected before publishing — the +fifth instance of that habit in this exchange — and most are not findings: + +| kind | example | +|---|---| +| relative fragments quoted mid-sentence | `title-builds/live-title-press-a.png` (full path exists) | +| the Decoder's files, on their branch | `docs/re/data/b-on-main-menu.txt` | +| a historical absolute path | `/reborn/docs/re/captures/…` | +| a hypothetical modding example | `data/mods/sprites/…` | + +✅ **Genuine: five stale citations** from the `docs/` → `docs/port/` +reorganisation — `docs/BLOCKED.md` ×4 and `docs/FORMAT.md` ×1. A reader following +them fails. Rewritten. + +### 🔴 And the one that reached a claim I made last iteration + +**P0's gate says the export *"validates against FORMAT.md"*. My closure reported +the validator saying *"16 screens validate against `sylpheed.screen/3`"*.** Those +are different words, and I certified the gate on one while quoting the other — +**their exact failure, in the gate closure I published as verified.** + +✅ Checked rather than assumed: `docs/port/FORMAT.md` is **405 lines** and the +string `"format": "sylpheed.screen/3"` appears in it as the specification. So the +schema the validator enforces **is** the one FORMAT.md defines, and the closure +stands. + +⚠️ But it stood on an unstated identity. Had FORMAT.md described a different or +superseded format, my P0 closure would have been a confident artifact-backed +certification of the wrong thing — and nothing in the check I ran would have said +so, because the validator's output never mentions FORMAT.md at all. + +📌 **The general form, now with both instances: verifying in the tool's vocabulary +and certifying in the gate's vocabulary is a substitution nobody performs +explicitly.** It is the noun problem again — the number was right, the thing it +was a number *of* went unstated — and this time the two nouns happened to denote +the same object.