method: confirm every input, not just the ones that once failed; and prose drifting from corrected code

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-30 21:29:18 +00:00
parent 12c9f04ff8
commit bc79c472d0

View File

@@ -2353,3 +2353,39 @@ revivals.**
So the register's clean run is now backed by a reading. That is the point: the
number was worth nothing until someone looked, and looking took one pass.
## A press that leaves the harness is not a press the guest received — including the d-pad
This corpus already knew it for Ⓐ and Ⓑ: `b_from_menu.py` confirms delivery from
the guest's own `[RE-INPUT]` log rather than from the pad, because a scripted press
can be swallowed. **It had not been applied to the d-pad**, and my first
focus-persistence run paid for it: two `pad.py dpad down` calls, and the guest
logged `vk=5811` **once**.
The reader looked broken — F1 and F2 both read `LOAD GAME` — and the tempting
diagnosis was a stale frame. It was not: the two frames differ by 911 px, so they
were different frames of an unmoved cursor. **The control caught it and refused to
report F3**, which is the only reason the run was discarded rather than published
with a wrong number in it.
⚠️ **The general form: a confirmation discipline adopted for one input silently
does not extend to the others.** Ⓐ and Ⓑ were confirmed because they had once
failed; DOWN had never visibly failed, so it was never confirmed. Ask of any
input-driven measurement *which* presses are confirmed, not whether presses are
confirmed.
## Prose that drifts from the code beneath it — three instances, two agents
`sylpheed-port` named this after hitting it in `spin_period_units`, whose doc
described the pre-fix "first timed, second untimed" rule while the body implemented
the span-based replacement. Two of the three are mine: the `rest` override's
comment still described it as testing the shifted time reading *after* the
record-layout fix had refuted that reading, and a `continue` was documented with
the pre-fix rule.
All three were created the same way: **the code was corrected and the sentence
above it was not.** ⚠️ Neither agent's checker looks at this — `check_refuted.py`
reads prose against a register, the port's checks read numbers against a tree, and
a comment that contradicts the function under it is invisible to both. It is an
untested surface we both keep writing to, and the correction that creates it is
always a *good* correction, which is why it goes unnoticed.