Files
Sylpheed/docs/re/harness-title-gate-assumes-a-static-title.md
sylph-decoder 982b6349c6 re: two boots failed because the title gate tests for stillness on a screen that never stills
skip_intro.sh admits a static screen at d <= 1500 between grabs 0.6 s apart. Over
72 samples of the failing boot the MINIMUM was 1551 -- zero could ever pass. The
timeout is unreachable by construction, not bad luck about intro length.

The premise is in the script's own comment ('the resting title barely changes')
and it is refuted by this session's own draw capture: the title free-runs two
full-screen-height sweep leaves and pulses the plate. HANDOFF already said a
settled screen is not a static screen. wait_plate_pulse.py, which counts glyph
pixels instead of demanding stillness, reached TITLE SETTLED at 245.6 s on the
same game the same day.

Threshold deliberately NOT raised: 7 of 72 samples fall under 2000, so a gate loose
enough to admit this title would also admit movie frames -- the confusion the
script's own header records paying for once already.

Cost recorded: the focus-persistence question it was booted for is unanswered.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
2026-08-30 21:15:48 +00:00

3.0 KiB

skip_intro.sh's title gate assumes a static title — and the title is never static

measured — 2026-08-30. Two boots failed, 600 s and 1 100 s, and the cause is an assumption the corpus had already refuted elsewhere.

What happened

focus_persistence.sh needed the main menu. boot_menu.sh gets there through skip_intro.sh, which classifies each 0.6 s frame pair as movie or static screen and only presses Ⓐ once it sees a static screen carrying the glyph. Both boots reported movie (rmse …) -> waiting it out continuously and then TIMEOUT. The second ran 1 100 s and never once saw a static screen.

The gate, and the measurement

The test is d <= 1500 between two grabs 0.6 s apart. Over the 72 samples of the second boot:

samples 72
minimum d observed 1 551
median 13 414
would pass d <= 1500 0 / 72 (0 %)
would pass d <= 2000 7 / 72

The quietest frame the screen produced all boot is 51 units above the threshold. The gate cannot fire, so the timeout is not bad luck about intro length — it is unreachable by construction on these boots.

Why — and the corpus already knew

skip_intro.sh's own comment states the premise: "The resting title barely changes between two grabs 0.6s apart; a movie …". That is false, and it is false for a reason measured this same session: the title draws two full-screen-height pteff03/pteff03a sweep leaves that free-run continuously, plus a plate that pulses without decay. HANDOFF.md says it in as many words — "a settled screen is not a static screen".

So a stillness test can never gate this title. The harness encodes an assumption the findings had already retired.

And the working instrument already exists. wait_plate_pulse.py counts glyph pixels in a band rather than demanding stillness, and it reached TITLE SETTLED at 245.6 s on this same game earlier the same day. Two gates, same title, opposite verdicts — the difference is entirely the premise.

What was NOT done, deliberately

The threshold was not raised. Seven of 72 samples fall under 2 000, so a gate loose enough to admit the title would also admit frames from a playing movie — the exact confusion skip_intro.sh's header records paying for once already ("a display and a playing movie must never be able to look the same"). Choosing a new number here would be improvising around a blocker; the design question is whether this gate should be a stillness test at all, and that is not settled by two failed boots.

⚠️ Reach: two boots, one container session, one harness path. Not tested on jp_title_session.sh or the other launchers, which use different gates. Whether the intro is genuinely longer on these boots is unknown and separate — the gate could not have fired even if it were short.

Cost

The question this was booted for is unanswered: whether the main menu's initial focus persists across menu → title → menu. See menu-navigation-semantics.md's 🟡.