port: a second capture closes the sweep-geometry question; title+plate matches at 0.00093%

live-title-press-a.png was unused in the corpus. Posed at t=237 -- inside the
plate's 8-unit window -- the port matches it at 0.00093%, against 0.0124% for
the no-plate capture at leaf phase ~400. Two captures, two different phases,
both under 0.013%: a systematic sweep-geometry error would leave a floor in
both, so last iteration's caveat is closed.

Sweeping the whole screen's instant against capture 1 gives at best 0.148% at
t=230 -- 10x worse than the leaf-only fit. So that capture is the screen SETTLED
with the sweeps still looping, which is the first independent evidence for the
authored loop_leaf decision.

Fixes the cause of a flat 1% floor: --screen=X --overlay=Y pushed the raw
elapsed clock into the overlay (9 units at capture), so press_start drew nothing
-- the flag whose purpose is 'put the plate on the title'. A static overlay now
poses at its own arrival; the --boot shared clock is untouched.

Adds title_plate to verify-capture at 0.00%, the most sensitive row in it. Its
instant is FITTED and labelled as such.

Also records that I nearly committed a wrong cause for the overlay bug: I wrote
that nothing drives the overlay's clock outside a sequence. It is driven, every
frame, from view.time_units.

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 01:16:57 +00:00
parent 96fe0eac51
commit 69e9043b96
3 changed files with 116 additions and 1 deletions

View File

@@ -75,6 +75,23 @@ MAP=(
# against 1.82 % here. Picking that one would be fitting the pose to the
# score, which is the thing this harness exists not to do.
"title:$CAPS/live-title-build4-no-plate.png:t357"
# A SECOND title comparison, and the most sensitive row this tool has.
#
# `live-title-press-a.png` is the title WITH the plate. Posed at t=237 -- inside
# the plate's own 8-unit opaque window, t=236-238 -- the port matches it at
# **0.00093 %**, two orders below every other row. That makes it the best
# regression detector here: anything structural that moves will show.
#
# ⚠️ The instant is FITTED, not measured: 237 is where this capture's content
# places it, found by sweeping. That is legitimate for choosing which frame to
# compare against -- every row does it -- but it is not a claim about the game,
# and the 0.00093 % is therefore a floor for THIS pose, not a general accuracy.
#
# It also closes the systematic-error question the leaf sweep left open. Two
# independent captures fit at two DIFFERENT phases -- this one at 237, the
# no-plate one at ~400 -- and both to 0.01 % or better. A geometry error in how
# the sweeps are drawn would leave a floor in both. Neither has one.
"title_plate:$CAPS/live-title-press-a.png:plate"
"publisher_logo:$CAPS/live-splash-publisher.png:screen"
"developer_logos:$CAPS/live-splash-developer.png:screen"
)
@@ -94,6 +111,9 @@ for row in "${MAP[@]}"; do
godot --path port --resolution 1280x720 -- "--menu=$name" --script=wait \
"--shots=$OUT/$name" >"$OUT/$name.log" 2>&1 || true
[ -f "$OUT/${name}_00_start.png" ] && cp "$OUT/${name}_00_start.png" "$OUT/$name.render.png"
elif [ "$pose" = plate ]; then
godot --path port --resolution 1280x720 -- "--screen=title" --overlay=press_start \
--time=3.95 "--capture=$OUT/$name.render.png" >"$OUT/$name.log" 2>&1 || true
elif [ "$pose" = t357 ]; then
# 🔴 NO `--time` HERE EITHER, and the row's note used to claim otherwise.
#