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) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
Sylpheed port agent
2026-08-30 10:53:25 +00:00
parent 2a137db16f
commit f1ce932ce1

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 -->
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)
<!-- /INDEX -->
## 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.59.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 **47× 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".