port: place the last unused capture; its residual is oracle-to-oracle, not the port's

live-attract-title-press-a-band.png is 1279x120 and the harness could not compare
a band. Placed by sliding: y=520, a 25x drop over five pixels, and it fits at
t=236-238, the plate's own window.

Its 0.354% is not the port's error. The port reproduces the same band of
live-title-press-a EXACTLY (0.000%), and the two captures differ from each other
by 0.301% -- two thin strips, 248x5 and 206x1, the shape of a sub-pixel edge
difference. The row's job is to stay near the oracle-to-oracle gap, not reach
zero, and it says so.

I had begun writing that the attract-returned title differs from the boot title.
It is two hairlines. The connected-component breakdown stopped it.

All eight live captures are now used. The three that were idle were each blocked
by the harness, not the capture.

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 02:15:00 +00:00
parent a758f9b247
commit e811bb99e2
2 changed files with 83 additions and 2 deletions

View File

@@ -6104,3 +6104,60 @@ having to withdraw.
⚠️ Still unused: `live-attract-title-press-a-band.png`, a 1279×**120** strip
rather than a full frame. It needs a banded comparison the harness does not do,
so it is named here rather than quietly left out.
## The last unused capture, placed — and its residual is the oracle's, not the port's
`live-attract-title-press-a-band.png` was the one live capture nothing consumed.
Following last iteration's rule — *an unused capture is a signal about the
harness* — it turned out the same way as the previous two: nothing about the
capture was unusable, the harness simply could not compare a **band**. It is
1279×**120**, not a full frame.
### Placing it
Sliding it down the render, structural difference against the port:
| y | differing |
|---|---|
| 300 | 51.99 % |
| 500 | 19.61 % |
| 515 | 9.14 % |
| **520** | **0.354 %** |
| 525 | 8.87 % |
| 555 | 24.02 % |
**y = 520**, a 25× drop over five pixels. Measured, not guessed. Sweeping the
instant at that offset puts it at **t = 236238** — the plate's own opaque
window, the same instant the full-frame `title_plate` row fits.
### 🔴 The 0.354 % is not the port's error
Three comparisons separate it:
| | differing |
|---|---|
| port's band vs `live-title-press-a`'s same band | **0.000 %** |
| `live-title-press-a`'s band vs the attract band *(oracle vs oracle)* | **0.301 %** |
| port's band vs the attract band | 0.354 % |
The port reproduces one capture's band **exactly**. The two captures differ from
*each other* by 0.301 %, which is nearly the whole residual.
And that oracle-to-oracle difference is two thin horizontal strips — **248×5 px**
and **206×1 px** — which is the shape of a sub-pixel edge difference or capture
noise, not of a state difference.
⚠️ I had started writing that the *attract-returned* title differs from the boot
title, which would have been a finding about the game inferred from 0.3 % of a
band. It is two hairlines. The connected-component breakdown is what stopped it,
and I would not have run it if the number alone had looked small enough to
dismiss or large enough to report — it was in the range where you have to look.
So `title_band` joins the harness at 0.35 %, and its job is to **stay near the
oracle-to-oracle gap**, not to reach zero. A row whose target is not zero has to
say so, or the next person tunes toward it.
**All eight live captures in the corpus are now used.** Three were sitting idle
and all three were blocked by the harness, not by the capture: an overlay posed at
t=9 that drew nothing, a `--focus=` overwritten on every menu entry, and a banded
comparison that did not exist.

View File

@@ -100,6 +100,21 @@ MAP=(
# 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"
# A BANDED row -- the capture is 1279x120, not a full frame, and the harness
# could not compare one until now. That was the only reason this capture sat
# unused; nothing about it was unusable.
#
# Its y offset is MEASURED, not guessed: sliding it down the render, the
# structural difference is 0.354 % at y=520 against 8.9-9.1 % five pixels
# either side and 17-52 % further out. A 25x drop over five pixels.
#
# ⚠️ Its residual is NOT the port's error. The port reproduces the same band of
# `live-title-press-a.png` EXACTLY (0.000 %), and the two captures differ from
# each other by 0.301 % -- two thin horizontal strips, 248x5 px and 206x1 px,
# the shape of a sub-pixel edge difference rather than a state difference. So
# 0.354 % is very nearly the oracle-to-oracle gap and this row's job is to stay
# near it, not to reach zero.
"title_band:$CAPS/live-attract-title-press-a-band.png:band"
"publisher_logo:$CAPS/live-splash-publisher.png:screen"
"developer_logos:$CAPS/live-splash-developer.png:screen"
)
@@ -115,7 +130,12 @@ for row in "${MAP[@]}"; do
IFS=: read -r name cap pose forced <<<"$row"
if [ ${#want[@]} -gt 0 ] && ! printf '%s\n' "${want[@]}" | grep -qx "$name"; then continue; fi
[ -f "$cap" ] || { printf '%-17s %s\n' "$name" "no capture"; continue; }
if [ "$pose" = focus ]; then
if [ "$pose" = band ]; then
godot --path port --resolution 1280x720 -- "--screen=title" --overlay=press_start \
--time=3.95 "--capture=$OUT/$name.full.png" >"$OUT/$name.log" 2>&1 || true
[ -f "$OUT/$name.full.png" ] && convert "$OUT/$name.full.png" \
-crop 1279x120+0+520 +repage "$OUT/$name.render.png"
elif [ "$pose" = focus ]; then
godot --path port --resolution 1280x720 -- "--menu=main_menu" "--focus=$forced" \
--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"
@@ -161,7 +181,11 @@ for row in "${MAP[@]}"; do
fi
[ -f "$OUT/$name.render.png" ] || { printf '%-17s %s\n' "$name" "render failed"; continue; }
# Crop the render to the capture's frame. The capture is the crop, not a scale.
convert "$OUT/$name.render.png" -crop 1279x675+0+0 +repage "$OUT/$name.crop.png"
if [ "$pose" = band ]; then
cp "$OUT/$name.render.png" "$OUT/$name.crop.png"
else
convert "$OUT/$name.render.png" -crop 1279x675+0+0 +repage "$OUT/$name.crop.png"
fi
raw=$(convert "$OUT/$name.crop.png" "$cap" -metric RMSE -compare -format "%[distortion]" info: 2>&1 | tail -1)
raw=$(python3 -c "print('%.2f' % (float('$raw')*255))" 2>/dev/null || echo "?")
note=""