method: ask whether the measurement is live, not only whether it agrees

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
sylph-decoder
2026-08-31 02:00:21 +00:00
parent 56ba2ea4f3
commit 6db2a70db7

View File

@@ -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.