port: test the half-guard they named -- it found a real gap on first use

They flagged that my pose line reports the pins from the variables in force,
never checked against a pin set but not reaching the view. I had recorded the same
doubt and not acted on it.

The case is the overlay: a second ScreenView with its own pins, while the
announcement read view.* only -- and the plate carries a looping focus record,
the clock in question, drawing from overlay.*.

Extended the line to report the overlay's pins, and its first use printed
overlay(loop-phase=0.0, leaf=free): overlay.loop_phase_units was wired and
overlay.leaf_time_units was not. A run requesting both had one pin reach the
overlay and one not, and the pre-fix announcement would have printed leaf=0.0 from
the main view while the overlay drew free-running. Their half-guard precisely.

Currently inert -- press_start carries no leaf, so the render is byte-identical
before and after. The gap was real, live for any overlay carrying a leaf, and cost
nothing today.

Fourth instance of their remedy of putting the qualifier in the text rather than
the reader's memory, and it caught something within a minute of existing.

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 18:54:13 +00:00
parent b98220e049
commit 8337aaf29c
2 changed files with 59 additions and 1 deletions

View File

@@ -869,6 +869,16 @@ func _capture(path: String) -> void:
pins.append("frozen" if view.frozen else "running")
pins.append("loop-phase=%s" % ("free" if view.loop_phase_units < 0.0 else str(view.loop_phase_units)))
pins.append("leaf=%s" % ("free" if view.leaf_time_units < 0.0 else str(view.leaf_time_units)))
# 🔴 THE OVERLAY IS A SECOND ScreenView WITH ITS OWN PINS, and this line
# reported only the first. An unpinned overlay would have been announced as
# pinned, because the announcement read `view.*` while the plate -- which
# carries a looping focus record, exactly the clock in question -- draws from
# `overlay.*`. An announcement that cannot distinguish the cases it announces
# is only half a guard.
if overlay != null:
pins.append("overlay(loop-phase=%s, leaf=%s)" % [
"free" if overlay.loop_phase_units < 0.0 else str(overlay.loop_phase_units),
"free" if overlay.leaf_time_units < 0.0 else str(overlay.leaf_time_units)])
print("t = %.2f units (%.3f s), pose = %s [%s]" % [
view.time_units, view.time_units / view.units_per_second,
"rest" if view.pose_mode == ScreenView.Pose.REST else "timeline",
@@ -1247,6 +1257,10 @@ func _raise_overlay(name: String) -> void:
overlay.exit_ramp_units = view.exit_ramp_units
overlay.looping_focus = _looping_for(name)
overlay.loop_phase_units = _loop_phase
# The overlay's LEAF pin was missing while its loop-phase pin was wired, so a
# run requesting both had one reach this view and one not. Found by extending
# the announcement to cover the overlay -- the guard's first use.
overlay.leaf_time_units = view.leaf_time_units
overlay.draw_leaf_for = _draw_leaf_for
overlay.loop_leaf = _loop_leaf_screens.has(name)
overlay.holding = true