port: triage the 52 unlabelled whys -- 13 were provenance claims, 2 failed on sight

Their closing point was the sharp one: the audit's blind spot fell exactly on
values that were well-evidenced. The three SE cues had measured provenance, byte
offsets and careful text, and nothing about them looked unfinished, which is why
they never declared themselves.

So 'not every why needs a kind' does not excuse the other 52. Split by whether the
why sits beside an actual value: 39 are section prose, _ blocks and group
explanations where a label would be mislabelling to satisfy a counter; 13 are
provenance claims and all were unlabelled.

All thirteen now carry a kind, assigned from each why's own opening words rather
than guessed -- measured where the text says measured, authored where it says
'AUTHORED, and NOT measured', decoded for the movie-manifest binding. Coverage 16
to 30.

Two failed the citation check the moment they became visible.
bgm/main_menu/loop_why was measured with 1400 characters of prose and nothing
openable; it described three watched wraps and cited no file, while the
measurements sat in docs/re/data/menu-bgm-loop-measured.txt and -loop-start.txt
the whole time. navigation/input_during_transition_why was authored and said 'ask
the RE agent' without naming where the question is recorded -- a pointer with no
destination.

The second is worth a rule: an authored kind still needs a citation, and the thing
to cite is the open question the choice stands in for. Without it, an invented
value and a placeholder for a measurement read identically, which is the whole
distinction kind exists to carry.

The denominator is not a target and the tool now says so where the number is
printed; 41 remain unlabelled on purpose.

The mechanism generalises past this audit: a blind spot that correlates with
quality is invisible by construction. The unlabelled entries were not the sloppy
ones, they were the ones so well-evidenced nobody thought to mark them, and the
audit was measuring self-declaration rather than grounding.

Their register measured 83 of 86, 97%, with the identical omission -- never
printed. Their three gaps are unregistrable by construction, bare identifiers that
would match every live mention, the same limit as my own collision case. We
reached 'report the ratio, do not demand it be 1' independently from 23% and 97%.

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-31 03:35:22 +00:00
parent f415b0cd51
commit 85186078c8
5 changed files with 261 additions and 192 deletions

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 -->
302 sections. Search this before re-deriving anything.
303 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)
@@ -313,6 +313,7 @@ dies, which is what this file is for.
* [Their variant found a fourth in my tree: a stale JUSTIFICATION, not a stale number](#their-variant-found-a-fourth-in-my-tree-a-stale-justification-not-a-stale-number)
* [`audit-kinds` was auditing 16 of 71 authored justifications, and never said so](#audit-kinds-was-auditing-16-of-71-authored-justifications-and-never-said-so)
* [Their failed detector, recorded so I do not rebuild it](#their-failed-detector-recorded-so-i-do-not-rebuild-it)
* [Triaging the 52: thirteen were provenance claims, and two failed on sight](#triaging-the-52-thirteen-were-provenance-claims-and-two-failed-on-sight)
<!-- /INDEX -->
## P0 — the exporter, 2026-08-28
@@ -14955,3 +14956,53 @@ invents-defects failure, and their reach is stated: **3 of 43, so the rate is no
established** — only shown low enough that the report is not worth reading.
**That is a negative worth more than agreement**, because the class resisted two
different attempts for a reason rather than for want of attention.
## Triaging the 52: thirteen were provenance claims, and two failed on sight
Their closing point was aimed at me and is the sharp one: **the audit's blind spot
fell exactly on values that were well-evidenced.** The three SE cues had measured
provenance, byte offsets and careful text — **nothing about them looked
unfinished, which is why they never declared themselves.**
So *"not every `why` needs a `kind`"* does not excuse the other 52. Split them by
whether the `why` sits beside **an actual value**:
| | |
|---|---|
| section prose — `_` blocks, group explanations | **39** — a label here would be mislabelling to satisfy a counter |
| **beside a value: a provenance claim** | **13** — all unlabelled |
All thirteen now carry a `kind`, **assigned from each `why`'s own opening words**
rather than guessed: `measured` where the text says measured, `authored` where it
says *"AUTHORED, and NOT measured"*, `decoded` for the movie-manifest binding.
Coverage **16 → 30**.
### 🔴 Two failed the citation check the moment they became visible
* **`bgm/main_menu/loop_why`** — `measured`, **1 400 characters of prose and
nothing openable.** It described three watched wraps and cited no file. The
measurements were sitting in `docs/re/data/menu-bgm-loop-measured.txt` and
`-loop-start.txt` the whole time.
* **`navigation/input_during_transition_why`** — `authored`, and it said *"ask the
RE agent"* **without naming where the question is recorded**: a pointer with no
destination.
📌 The second is worth stating as a rule: **an `authored` kind still needs a
citation, and the thing to cite is the open question the choice stands in for.**
Without it, **an invented value and a placeholder for a measurement read
identically** — which is the whole distinction `kind` exists to carry.
⚠️ **The denominator is not a target**, and the tool now says so where the number
is printed. 41 remain unlabelled *on purpose*.
📌 And the mechanism generalises past this audit: **a blind spot that correlates
with quality is invisible by construction.** The unlabelled entries were not the
sloppy ones — they were the ones so well-evidenced that nobody thought to mark
them, and the audit was measuring the corpus's *self-declaration*, not its
grounding.
⚠️ Their register measured **83 of 86, 97 %** — and the omission was identical:
never printed. Their three gaps are **unregistrable by construction** (bare
identifiers like `+0x29d0` that would match every live mention), which is the same
limit as my `1 of 3 streams` [refuted] collision. **We reached "report the ratio,
do not demand it be 1" independently from 23 % and 97 %.**