From 28fb2d68922d1a0e3b427962ec029e7cd29867da Mon Sep 17 00:00:00 2001 From: Sylpheed port agent Date: Sun, 30 Aug 2026 10:53:25 +0000 Subject: [PATCH] port: identify their submenu capture as GP_TUTORIAL, using edges where intensity failed They reached a submenu and could not identify it: intensity correlation cannot discriminate when the candidates are near-blank, which is what the .tbm hypothesis predicts. Their capture is 99.999% non-black -- a full-screen background our renderer omits -- and an additive background swamps intensity but not edges. Control first: edge correlation against my own title capture over seven GP_TITLE builds picks build 4 at +0.2792, 1.4x over second and 7.6x over third. Result: GP_TUTORIAL build 0 at +0.4962, build 1 at +0.3137, best GP_SAVE_LOAD at +0.0713. Winning r higher than the control's and margin better; both TUTORIAL builds 4-7x above every SAVE_LOAD build. Independently plausible -- flow.json has ptbtn03 = TUTORIAL -> TUTORIAL_MENU, not a GP_TITLE build. The ARCHIVE is identified with a large margin; WHICH BUILD is not -- 1.58x is the same order as the control's 1.4x and the two are variants of one screen. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF --- docs/port/DECISIONS.md | 61 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/docs/port/DECISIONS.md b/docs/port/DECISIONS.md index 5b940e6f..2668750a 100644 --- a/docs/port/DECISIONS.md +++ b/docs/port/DECISIONS.md @@ -9,7 +9,7 @@ dies, which is what this file is for. -142 sections. Search this before re-deriving anything. +143 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) @@ -153,6 +153,7 @@ dies, which is what this file is for. * [Applying "grep the corpus for the claim" to my own corpus](#applying-grep-the-corpus-for-the-claim-to-my-own-corpus) * [A refuted-claim register, because the audit found what the audit found](#a-refuted-claim-register-because-the-audit-found-what-the-audit-found) * [State of the port, and a claim I built on for a week without checking](#state-of-the-port-and-a-claim-i-built-on-for-a-week-without-checking) +* [Identifying their submenu capture: edges where intensity could not](#identifying-their-submenu-capture-edges-where-intensity-could-not) ## P0 — the exporter, 2026-08-28 @@ -8204,3 +8205,61 @@ navigation wrap, the cue bindings, the voice streams and their positional weight ⚠️ The black hold is measured but sits at **the top of its range** (~6.5–9.2 units, authored 9), and that is recorded at the value rather than in a footnote. + +## Identifying their submenu capture: edges where intensity could not + +They reached and captured a submenu but could not identify it. Their diagnosis is +the useful part: **correlation cannot discriminate when the candidate renders are +near-blank**, and near-blank is exactly what the `.tbm` hypothesis predicts — all +19 `GP_SAVE_LOAD` builds scored −0.004…−0.010, a ranking with no information in +it. *The instrument is disabled by the thing it was brought in to detect.* + +That diagnosis implies its own fix. Their capture is **99.999 % non-black** — a +full-screen background our renderer omits — and an additive background swamps an +intensity correlation. **It does not survive an edge map**: a smooth ground has no +edges, and the UI does. + +### The control first, because a ranking is worthless without one + +Edge correlation against my own `title` capture, over seven `GP_TITLE` builds +whose answer I know: + +| build | r | +|---|---| +| **4 — the right answer** | **+0.2792** | +| 6 (`extras`, its nearest sibling) | +0.1936 | +| everything else | ≤ +0.037 | + +✅ Right answer on top, 1.4× over second and 7.6× over third. Modest absolute r, +and a clear ranking — so the method discriminates on this corpus. + +### The result + +Their capture against all 22 candidate builds: + +| build | r | +|---|---| +| **`GP_TUTORIAL` build 0** | **+0.4962** | +| `GP_TUTORIAL` build 1 | +0.3137 | +| best `GP_SAVE_LOAD` (17) | +0.0713 | +| worst | −0.0331 | + +🟢 **The submenu is a `GP_TUTORIAL` build.** The winning r is *higher* than the +control's, its margin over second is *better* (1.58× against 1.4×), and both +TUTORIAL builds sit **4–7× above every `GP_SAVE_LOAD` build** — the archive +separation is far stronger than the within-archive one. + +✅ It is independently plausible: `authored/flow.json` has `ptbtn03` = **TUTORIAL** +→ `TUTORIAL_MENU`, noted as *"the lesson list is not a `GP_TITLE` build"*. An Ⓐ +on a menu whose focus was TUTORIAL lands exactly there, and HANDOFF Q5 measured +initial focus as unstable boot to boot. + +⚠️ **What this does and does not settle.** The **archive** is identified with a +large margin. **Which build within it** is not: 1.58× is the same order as my +control's 1.4×, and the two TUTORIAL builds are variants of one screen — so I +would call build 0 the better fit and not a determination. + +⚠️ And the method inherits a limit worth stating: an edge map is insensitive to +*what* the background is, which is the point, but it is also insensitive to a +missing element that has no edges. It answers "which screen", not "is our render +complete".