diff --git a/port/scripts/boot.gd b/port/scripts/boot.gd index b1d95cd6..42dd2ee6 100644 --- a/port/scripts/boot.gd +++ b/port/scripts/boot.gd @@ -1333,6 +1333,22 @@ func _run_script() -> void: # at, not the one it started from. See the note beside the early capture. if _capture_to != "": await _capture(_capture_to) + # 🔴 `--linger=SECONDS` KEEPS A SCRIPTED RUN ALIVE AFTER THE WALK SETTLES. + # + # Without it a scripted run quits the moment the last step settles, and + # ANYTHING THE SCREEN DOES AFTERWARDS IS UNOBSERVABLE. That is not + # hypothetical: the plate on a returned title arrives on its own declared + # ramp at t=214..236, which is ~3.6 s after the screen settles, and a film of + # `--script=cancel` stopped at 168 units and never reached it. The behaviour + # was inferred from code-path identity because the harness could not watch it. + # + # `_script_settled` waiting for a hold is right -- a shot taken mid-fade is a + # photograph of a fade. This does not change that. It changes what happens + # after the shot, which was "exit" and is now optionally "keep running". + var linger := float(_args().get("linger", "0")) + if linger > 0.0: + print("linger: holding %.2f s past the walk so late arrivals are observable" % linger) + await get_tree().create_timer(linger).timeout get_tree().quit(0)