port: the third clock was in my own enumeration and I did not wire it
Last iteration I enumerated three free-running clocks, wrote that the leaf is pinned only by --leaf-time, then tested reproducibility without passing --leaf-time and concluded nothing free-runs on the menu path. The answer was one paragraph above the experiment that contradicted it. My own flagged weakness found it: deliberate wall-clock variation via --script=wait:N, putting the capture at t=96 units against t=369. Spin pinned only, wait 0.5 vs 5.0 differs by max 91.19 per channel; with --leaf-time=0 added it is byte-identical. draw_leaf_for is ptloop01/ptloop02, present on main_menu and not just the title, which is why that row drifted. verify-capture passed --loop-phase=0 and not --leaf-time=0 -- I fixed the clock I had been bitten by and left the one I had merely listed. Enumeration without follow-through fails exactly like no enumeration. Both are now pinned at all six render sites. main_menu returns 13.21 across three runs and two renders after different waits are byte-identical. The number moved 13.26 -> 13.21 and that is NOT an accuracy improvement: pinning the leaf at phase 0 puts ptloop01/02 at one specific pose rather than wherever the wall clock left them. A different configuration, now reproducible. Which pose the game shows at rest is not settled by this. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N7FiFFFwbvG2uxdcEh8HyF
This commit is contained in:
@@ -144,20 +144,20 @@ for row in "${MAP[@]}"; do
|
||||
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" = band ]; then
|
||||
godot --path port --resolution 1280x720 -- --loop-phase=0 "--screen=title" --overlay=press_start \
|
||||
godot --path port --resolution 1280x720 -- --loop-phase=0 --leaf-time=0 "--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 -- --loop-phase=0 "--menu=main_menu" "--focus=$forced" \
|
||||
godot --path port --resolution 1280x720 -- --loop-phase=0 --leaf-time=0 "--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"
|
||||
elif [ "$pose" = menu ]; then
|
||||
godot --path port --resolution 1280x720 -- --loop-phase=0 "--menu=$name" --script=wait \
|
||||
godot --path port --resolution 1280x720 -- --loop-phase=0 --leaf-time=0 "--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 -- --loop-phase=0 "--screen=title" --overlay=press_start \
|
||||
godot --path port --resolution 1280x720 -- --loop-phase=0 --leaf-time=0 "--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.
|
||||
@@ -177,7 +177,7 @@ for row in "${MAP[@]}"; do
|
||||
#
|
||||
# So: pose at the settle, which is what was actually being measured, and let
|
||||
# the leaf loop carry the sweeps' phase.
|
||||
godot --path port --resolution 1280x720 -- --loop-phase=0 "--screen=$name" \
|
||||
godot --path port --resolution 1280x720 -- --loop-phase=0 --leaf-time=0 "--screen=$name" \
|
||||
"--capture=$OUT/$name.render.png" >"$OUT/$name.log" 2>&1 || true
|
||||
else
|
||||
# NO `--time`. It used to pass `--time=99` as an idiom for "settled", and
|
||||
@@ -189,7 +189,7 @@ for row in "${MAP[@]}"; do
|
||||
# that accident. Now that `--time` is honoured, asking for it explicitly
|
||||
# would pose past the end of every group, so the request is simply dropped
|
||||
# and the settled pose asked for by omission.
|
||||
godot --path port --resolution 1280x720 -- --loop-phase=0 "--screen=$name" \
|
||||
godot --path port --resolution 1280x720 -- --loop-phase=0 --leaf-time=0 "--screen=$name" \
|
||||
"--capture=$OUT/$name.render.png" >"$OUT/$name.log" 2>&1 || true
|
||||
fi
|
||||
[ -f "$OUT/$name.render.png" ] || { printf '%-17s %s\n' "$name" "render failed"; continue; }
|
||||
|
||||
Reference in New Issue
Block a user