Problem
A crew with a current paused: or verified captain-held status can re-enter the normal stale-wake cadence whenever its pane hash changes.
pause_state_class re-reads backend liveness on every evaluation. For a live agent it returns none; the caller then clears pause tracking, including the long-cadence marker and throttle. The next stable pane hash consequently surfaces another bare stale: wake even though the declared wait never changed.
Expected behavior
The liveness check should be one-shot per declared wait. After the initial inspection, the declaration should retain the bounded pause cadence across pane redraws, declaring status appends, watcher restarts, and a live agent. A new needs-decision:, blocked:, or done: line must still wake immediately.
Existing fix
We carry a focused fix in withally/firstmate@c735ec1, merged in the fork through PR #67. Its regression reproduces five stale wakes across five churning-pane watcher restarts before the fix and one bounded initial inspection after it, while pinning the captain-relevant wake boundary.
Happy to open that change as a focused upstream PR if wanted.
Problem
A crew with a current
paused:or verifiedcaptain-heldstatus can re-enter the normal stale-wake cadence whenever its pane hash changes.pause_state_classre-reads backend liveness on every evaluation. For a live agent it returnsnone; the caller then clears pause tracking, including the long-cadence marker and throttle. The next stable pane hash consequently surfaces another barestale:wake even though the declared wait never changed.Expected behavior
The liveness check should be one-shot per declared wait. After the initial inspection, the declaration should retain the bounded pause cadence across pane redraws, declaring status appends, watcher restarts, and a live agent. A new
needs-decision:,blocked:, ordone:line must still wake immediately.Existing fix
We carry a focused fix in withally/firstmate@c735ec1, merged in the fork through PR #67. Its regression reproduces five stale wakes across five churning-pane watcher restarts before the fix and one bounded initial inspection after it, while pinning the captain-relevant wake boundary.
Happy to open that change as a focused upstream PR if wanted.