port: run their absence shape on my citations -- five stale paths, and a wording gap in my P0 closure
Their finding was about their own audit: evidence exists in three forms and their check looked for one, so '48 citations, 0 missing' was a statement about the data-file form -- reported in the wording rather than the scope. The analogue: do my own citations resolve? 32 paths cited in DECISIONS.md, 12 do not. Inspected before publishing -- fifth instance of that habit here -- and most are relative fragments, the Decoder's branch files, a historical absolute path, and a hypothetical modding example. Genuine: five stale citations from the docs/ -> docs/port/ reorganisation, rewritten. And one reached a claim I published 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'. Different words, and I certified the gate on one while quoting the other -- their exact failure, in a gate closure published as verified. Checked rather than assumed: docs/port/FORMAT.md is 405 lines and contains format: sylpheed.screen/3 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, and had FORMAT.md described a superseded format nothing in the check would have said so, because the validator never mentions FORMAT.md. Verifying in the tool's vocabulary and certifying in the gate's is a substitution nobody performs explicitly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
@@ -9,7 +9,7 @@ dies, which is what this file is for.
|
||||
|
||||
<!-- INDEX: generated by tools/port/index-decisions -- do not hand-edit -->
|
||||
|
||||
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)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -278,7 +279,7 @@ background with no error anywhere. `sprites/<subdir>/<screen>/<name>.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.
|
||||
|
||||
Reference in New Issue
Block a user