re: a second JP capture closes the transfer -- and corrects my own noise claim
Last turn I transferred the EN title's capture noise to the JP box and flagged the gap: build 7 carries ptloop01/02.rat which may animate inside that region where the EN plate does not, and the era adjudication rests on a single capture. Took a second, independent capture from a fresh boot in a separate session (jp_title_session.sh -- sets ja, captures, always restores en; verified back at language=1). Within-run stability reproduces: 0 of 138 600 px in the ROI across four comparisons, with 47k-73k px moving whole-frame as the contrast control. BETWEEN SESSIONS, inside the box the adjudication uses: 645 of 164 124 px differ, RMSE 0.3215, against 116 492 px whole-frame -- genuinely different sessions. And the verdict reproduces to three decimals: stale 58.412 -> 58.413, fixed 41.690 -> 41.692, margin 16.722 -> 16.721. The shape is the useful part: capture noise moves both candidates together, so it nearly cancels in a MARGIN. Absolute scores moved 0.001-0.002 while the margin moved 0.001 against an in-box noise of 0.32. A margin between two renders scored on one capture is far more robust than either score is. CORRECTION to a claim I made earlier today and sent to the port: I said the settle-vs-rest negative was STRENGTHENED because 1.48 sits below the whole-frame capture spread of 2.8. Wrong comparison -- the measurement lives in the box, and in-box between-session noise is 0.32, so 1.48 is well above it. The negative rests on the render axis alone (1.2, ratio 1.2x), exactly as first stated. I reached for a number that was to hand rather than the one that applies, which is the same family as the errors we have both been cataloguing. METHOD gains: match the noise floor to the quantity, including which noise applies; and sylpheed-port's point that an instrument which rounds away the thing being verified cannot verify it (they called a harness reproducible from an RMSE printed to two decimals when the residual was 0.0565). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
This commit is contained in:
35
tools/re-capture/jp_title_session.sh
Executable file
35
tools/re-capture/jp_title_session.sh
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
# Drive a JAPANESE title capture end to end, and ALWAYS put the locale back.
|
||||
#
|
||||
# The first JP capture (2026-08-30) demonstrated the logo stack is at rest
|
||||
# WITHIN a run: five frames ~1.5 s apart, byte-identical over the port's ROI,
|
||||
# against a whole-frame contrast control showing 5-8 % of the screen moving.
|
||||
# That does not test the axis sylpheed-port's drift was on -- BETWEEN runs, where
|
||||
# a free-running clock lands somewhere else on a fresh boot. This script exists
|
||||
# to take a second, independent capture so that axis can be measured.
|
||||
#
|
||||
# Usage: jp_title_session.sh OUTDIR [wait_s]
|
||||
set -u
|
||||
export HOME=/sylph-home/re SDL_AUDIODRIVER=dummy DISPLAY=:98
|
||||
SD="$(cd "$(dirname "$0")" && pwd)"
|
||||
OUT="${1:-/sylph-home/re/jp2}"; WAIT="${2:-700}"
|
||||
mkdir -p "$OUT"
|
||||
|
||||
restore() {
|
||||
echo "-- restoring locale --"
|
||||
python3 "$SD/set_console_language.py" en || echo "RESTORE FAILED -- check by hand"
|
||||
python3 "$SD/set_console_language.py" --show
|
||||
}
|
||||
trap restore EXIT INT TERM
|
||||
|
||||
ps -o pid= -C xenia_canary | xargs -r kill -9 # kill by NAME: `pkill -f` matches this shell
|
||||
python3 "$SD/set_console_language.py" ja
|
||||
python3 "$SD/set_console_language.py" --show
|
||||
|
||||
( cd "$OUT" && nohup run-canary --mem_watch=false \
|
||||
--logged_profile_slot_0_xuid=B13EBABEBABEBABE \
|
||||
>"$OUT/canary.stdout" 2>"$OUT/canary.stderr" & )
|
||||
sleep 8
|
||||
timeout $((WAIT + 120)) python3 "$SD/jp_title_capture.py" "$OUT" "$WAIT"
|
||||
echo "CAPTURE STEP DONE"
|
||||
ls -la "$OUT"/*.png 2>/dev/null | head
|
||||
Reference in New Issue
Block a user