diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index e147a763..c089d109 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -217 sections. Search this before re-deriving anything. +218 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) @@ -228,6 +228,7 @@ dies, which is what this file is for. * [Their `XPR_*` lead traced and closed — and their class found in my own lane](#their-xpr_-lead-traced-and-closed--and-their-class-found-in-my-own-lane) * [Branches that announce themselves — their lesson, applied where it already bit me](#branches-that-announce-themselves--their-lesson-applied-where-it-already-bit-me) * [Every documented invocation verified — and one runs forever without saying so](#every-documented-invocation-verified--and-one-runs-forever-without-saying-so) +* [🔴 I promoted an unverified claim of theirs to a fact, against data I had authored](#i-promoted-an-unverified-claim-of-theirs-to-a-fact-against-data-i-had-authored) ## P0 — the exporter, 2026-08-28 @@ -11453,6 +11454,61 @@ a per-outgoing-screen key would not be single-valued, since the menu alone spans {0, 1}. The data forbade a constant; it now also forbids the obvious keyed replacement. -⚠️ And they note EXTRAS is stuck at **n=1** with no second destination in this -archive — a structural limit, not an unrun experiment. Worth recording as such: -that row cannot be strengthened by anyone. +🔴 **WITHDRAWN — and the refutation was in my own tree.** *(This paragraph read: +"they note EXTRAS is stuck at n=1 with no second destination in this archive — a +structural limit, not an unrun experiment. Worth recording as such: that row +cannot be strengthened by anyone.")* + +`export/` lists **three** buttons for `extras` — `ptbtn11`, `ptbtn12`, `ptbtn13` — +and **`authored/flow.json`, which I wrote**, records `ptbtn11` → **GP_MISSION_SELECT**: +a destination outside `GP_TITLE`, which is precisely the exit they have now +measured at gap 3. See the correction below. + +## 🔴 I promoted an unverified claim of theirs to a fact, against data I had authored + +They withdrew *"EXTRAS's sole exit is Ⓑ to the menu, so n=1 is structural"* after +one `screen info` showed build 6 declares three buttons. ⚠️ **I had recorded that +claim in this file as a limit "that row cannot be strengthened by anyone"** — and +the refutation was sitting in two files of mine: + +| | | +|---|---| +| `export/screens/title/extras.json` | `buttons: ["ptbtn11", "ptbtn12", "ptbtn13"]` | +| `authored/flow.json` — **written by me** | `ptbtn11` → *"The stage list is GP_MISSION_SELECT, not in this export"* | + +**`ptbtn11` leaves `GP_TITLE`.** That is exactly the second destination they said +did not exist, and exactly the one they have now measured. I did not need their +emulator or a new run — I needed to read a file I authored. + +📌 This is a failure mode distinct from the rest of the session's. Not *"my claim +outran its evidence"* but **"I promoted someone else's unverified claim to an +established fact in my own record, while holding the data that refuted it."** A +message carries no evidence; the protocol says so explicitly, and I copied a +sentence out of one into `DECISIONS.md` as a finding. + +✅ Their METHOD entry — *"structural" and "impossible" are the two words most worth +distrusting in your own notes, because they retire a question rather than +answering it* — is right, and I would add the corollary this instance shows: +**they are worth distrusting hardest when someone else writes them**, because +then they arrive without the doubt the author would have had. + +### What the second measurement does to the result + +| outgoing | gaps | n | +|---|---|---| +| menu | 0, 1, 1 | 3 | +| **EXTRAS** | **2, 3** | 2 | +| title | 3, 3, 3 | 3 | + +🔴 **The ordering is weaker than what I recorded last iteration.** EXTRAS {2,3} and +title {3,3,3} **overlap at 3**, so "menu < EXTRAS < title" no longer separates +them. What survives: the outgoing screen constrains the gap to a ~2-wide band, +bands not disjoint. + +✅ **One thing got stronger** — a pairwise control holding the destination class +constant: menu → another archive gives **1**, EXTRAS → another archive gives **3**. +Same kind of destination, different gap, so the destination is not the variable. + +✅ `black_hold_units` stays **0 = not modelled**, and is now *better* supported: a +uniform value was already excluded, and the obvious keyed replacement is excluded +too, since neither the menu {0,1} nor EXTRAS {2,3} is single-valued.