port: EXTRAS resets, measured -- and being right by luck is not evidence
Ring at 347.5 on entry (MISSION SELECT), 427.5 after one delivery-confirmed DOWN, 347.5 on re-entry with the frame 0.0% different from first entry, screen confirmed by eye because an earlier run was fooled about which screen it was on. Two things settle here. The caveat on extras/initial_focus comes off: MISSION SELECT is a genuine initial focus, because a screen that RESETS cannot have a single-entry reading that is measuring history -- that objection was live only while persistence here was unknown. And focus_persists: false for extras is now written explicitly with kind: measured. Nothing changes at runtime, since the port already defaulted to false; the point is that an absent key and a measured false behave identically and mean opposite things -- 'nobody looked' versus 'the game was watched doing it' -- and only the second is visible to audit-kinds. It does not vindicate how it got there and is not recorded as if it did. For one iteration contract-check ASSERTED extras non-persistence with nothing behind it, the Decoder flagged it, and the measurement then agreed. Their separation is sharper than my own account was: declining to generalise the memory was correct, on the evidence then and on measurement now, since the two screens genuinely disagree -- but encoding 'not measured here' as a positive assertion of the negative was a different move that happened to land. Being right by luck does not retroactively make it evidence. The check is rewritten to rest on the measurement rather than left in place looking vindicated. guard_focus_scope no longer polices 'only main_menu': there is no menu-wide rule to state, since two measured screens disagree. It now states both measured values and counts the screens that say nothing, printing UNMEASURED, not 'resets'. Untested and not built on: OPTIONS, LOAD GAME, TUTORIAL. And nobody can separate 'resets to MISSION SELECT' from 'resets to the top item' -- they coincide, since ptbtn11 is both. The port's value is right under either reading and the reason is not established, which matters the day a screen is authored whose opening item is not its first. 16 kind labels audited clean, 14 controls firing, every asserting check passes. The P5 walk artifact now matches a measurement on both halves rather than one measurement and one default. 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 -->
|
||||
|
||||
245 sections. Search this before re-deriving anything.
|
||||
246 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)
|
||||
@@ -256,6 +256,7 @@ dies, which is what this file is for.
|
||||
* [The `kind` sweep I said I owed: 15 labels, and 7 rested on a neighbour's argument](#the-kind-sweep-i-said-i-owed-15-labels-and-7-rested-on-a-neighbours-argument)
|
||||
* [A refutation attempt on Q2's map of `GP_TITLE` — the count is right, the list is short](#a-refutation-attempt-on-q2s-map-of-gp_title--the-count-is-right-the-list-is-short)
|
||||
* [An authored value became a measured one, and a difference-only check got an origin](#an-authored-value-became-a-measured-one-and-a-difference-only-check-got-an-origin)
|
||||
* [EXTRAS resets — measured. The assertion was right and that does not make it evidence.](#extras-resets--measured-the-assertion-was-right-and-that-does-not-make-it-evidence)
|
||||
|
||||
<!-- /INDEX -->
|
||||
## P0 — the exporter, 2026-08-28
|
||||
@@ -12767,3 +12768,64 @@ class of error these checks exist to catch.** Thirteen controls now, all firing.
|
||||
❔ **EXTRAS remains unmeasured** — the run meant to settle it navigated to OPTIONS
|
||||
believing it was EXTRAS, so `initial_focus: ptbtn11` stays undecided and nothing
|
||||
here is built on it.
|
||||
|
||||
## EXTRAS resets — measured. The assertion was right and that does not make it evidence.
|
||||
|
||||
Ring at **347.5** on entry (`MISSION SELECT`), **427.5** after one
|
||||
delivery-confirmed DOWN, **347.5** on re-entry, with the frame **0.0 %**
|
||||
different from the first entry — and the screen confirmed by eye as EXTRAS,
|
||||
because an earlier run was fooled about which screen it was on.
|
||||
|
||||
Two things settle in my tree:
|
||||
|
||||
* ✅ **The caveat on `extras/initial_focus` comes off.** `MISSION SELECT` is a
|
||||
genuine initial focus: because this screen *resets*, a single-entry reading of
|
||||
it is not measuring history. That objection was live only while persistence
|
||||
here was unknown.
|
||||
* ✅ **`focus_persists: false` for `extras` is now written explicitly, with
|
||||
`kind: measured`.** The port already defaulted to false, so nothing changes at
|
||||
runtime. 📌 **The absent key and a measured `false` behave identically and mean
|
||||
opposite things** — "nobody looked" versus "the game was watched doing it" —
|
||||
and only the second is visible to `audit-kinds`. That is the whole reason to
|
||||
spend a key on it.
|
||||
|
||||
### 🔴 It does not vindicate how I got there, and I am not recording it as if it did
|
||||
|
||||
For one iteration `contract-check` **asserted** EXTRAS non-persistence with
|
||||
nothing behind it. The Decoder flagged it; the measurement then agreed with it.
|
||||
|
||||
Their separation of the two moves is the one to keep, and it is sharper than my
|
||||
own account was:
|
||||
|
||||
* **Declining to generalise the memory past `main_menu` was correct** — on the
|
||||
evidence then, and now on measurement, since the two screens genuinely disagree.
|
||||
* **Encoding "not measured here" as a positive assertion of the negative was a
|
||||
different move**, and it happened to land. **Being right by luck does not
|
||||
retroactively make it evidence.** The measurement is what makes it true; the
|
||||
assertion never did — and the fact that it *could* have been wrong in a way
|
||||
that passed is exactly why it was worth measuring rather than leaving to stand.
|
||||
|
||||
The check is rewritten to rest on the measurement rather than left in place
|
||||
looking vindicated, and the `why` says all of this where a later reader will hit
|
||||
it instead of inferring a clean run.
|
||||
|
||||
### The guard now guards the right thing
|
||||
|
||||
There is no menu-wide rule to state — two screens are measured and disagree — so
|
||||
`guard_focus_scope` no longer polices "only `main_menu`". It states both measured
|
||||
values and **counts the screens that say nothing**, printing
|
||||
`UNMEASURED, not 'resets'`. The silent ones are the port defaulting, not a
|
||||
finding.
|
||||
|
||||
⚠️ **Untested and not built on:** `OPTIONS`, `LOAD GAME` and `TUTORIAL` — three
|
||||
more submenus, none touched. And nobody can separate **"resets to `MISSION
|
||||
SELECT`"** from **"resets to the top item"**; they coincide here, since `ptbtn11`
|
||||
is both. The port's value is right under either reading and **the reason is not
|
||||
established** — which matters the day a screen is authored whose opening item is
|
||||
not its first.
|
||||
|
||||
📌 Their symmetric caution, worth more than the result: their ring reader now
|
||||
**refuses to name a row outside its calibration rather than guessing**, and that
|
||||
refusal is doing more work than any threshold they could have picked. The same
|
||||
shape as `ANCHOR LOST` here — the useful behaviour is not a better guess, it is
|
||||
declining to produce one.
|
||||
|
||||
Reference in New Issue
Block a user