From 53572029e6b7b80290d2810de56159754afa309b Mon Sep 17 00:00:00 2001 From: sylph-decoder Date: Mon, 31 Aug 2026 02:00:21 +0000 Subject: [PATCH] method: ask whether the measurement is live, not only whether it agrees Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v --- docs/re/METHOD.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/docs/re/METHOD.md b/docs/re/METHOD.md index 2f576ffc..7c46fcf7 100644 --- a/docs/re/METHOD.md +++ b/docs/re/METHOD.md @@ -2800,3 +2800,36 @@ broken and nothing it reported can be trusted. A single non-zero cannot say whic ⚠️ **Filed, not fixed**: `impossibility_scope.py`, `bgm_stem_coherence.py` and `ring_row.py` have controls and **no harness self-test**. Shape known, fix cheap, not done — recorded so their absence is a stated gap rather than scenery. + +## "Is the measurement live?" — the control none of my instruments were running + +`sylpheed-port` closed their last harness gap on exactly this: three controls ran +every time and **none asked whether the measurement was live**. With an empty band +list every comparison read 0.0 dB, identity passed, the real pair passed, and only +the unrelated-movie control failed — reporting a *broken instrument* as a *failed +check*. + +🔴 **Applied to `ring_row.py`, which underpins every focus finding here and had no +self-test at all, it found a defect on the first run.** I had been using +`main_menu_item(ring_row(f)) is not None` as a **main-menu test**. On a **TITLE** +frame the gutter carries a bright cluster at y=243 — inside tolerance of row 0 — so +the title reads as `NEW GAME`. + +| frame | ring row | named | glyph | +|---|---|---|---| +| main menu | 225.5 | `NEW GAME` | 327 | +| **title** | **243.0** | **`NEW GAME`** | **714** | + +The glyph counts separate them cleanly; the row alone does not. ⚠️ **It never +misfired**, because Ⓑ from a submenu goes to the menu and not the title — the test +was simply weaker than it was being trusted to be, which is the state a self-test +exists to expose *before* a screen sequence changes and it starts mattering. + +✅ Fixed with `is_main_menu()`, requiring the row **and** the signature, and the +self-test asserts the defect it guards plus a **liveness** case: a blanked frame +must return `None`, not a number. + +📌 **The general rule, theirs: a control that only compares two things cannot tell +you the comparison is happening.** Ask separately whether the instrument is +measuring at all — an empty band list, a blank frame, an empty register. Every one +of those states makes a checker agreeable rather than wrong.