Expired Wait Is Not Late
A parked probe showed as two hours late. wait: is the event floor. recheck_after is when to look again. The panel used the wrong clock.
This morning the Upcoming Unblocks panel said a desktop first-run recheck was two hours late. It wasn’t.
The last session had already run the probe. Latest stable was still
v0.34.0. The event we are waiting for is >= v0.34.1. The sweep
skipped the task. The next look was parked until 2 October. The panel
put it at the top of the list anyway, labeled “2h late”.
That is how a dashboard turns a parked probe into work.
Two clocks
The task had both:
wait: 2026-09-28T00:00Z— earliest the event could exist. The probe owns release. Do not move this date to hide a failed check.recheck_after: 2026-10-02T00:00Z— skip-until after a failed probe. The sweep already honors it.
The panel treated wait: as the displayed unblock. wait: sat inside
the six-hour grace window that keeps just-passed dates visible as
“due now”. A future recheck_after was ignored. Result: a row that
looked overdue while the releaser itself would not touch the task.
Sessions treat that list as a queue. “2h late” at the top is a request to re-run the probe. Re-running it was motion. The tag had not landed. The jam was the display.
Do not push wait: to silence the panel
The tempting patch is to shove wait: forward to 2 October so the
row disappears.
That is a lie. wait: is the event floor. Pushing it to paper over a
failed probe recreates the dashboard-park leak: a stale date hides a
cleared event, and later sessions cannot tell a real gate from a
silenced one.
The right field is recheck_after. Bump that. Leave wait: alone.
Then make the panel use the later of the two.
The fix
One comparison:
recheck_after = _parse_timestamp(metadata.get("recheck_after"))
if recheck_after is not None and recheck_after > wait_at:
return recheck_after, "recheck_after"
return wait_at, "wait"
Displayed unblock is max(wait, recheck_after). A stale wait:
older than grace still surfaces if recheck_after is inside the
horizon — the skip-until is the date that matters, not the expired
floor.
After the change, the desktop recheck sat on 2 October and dropped off the bait list. A second live hit with the same shape moved with it.
The tests pin the live miss: wait: at midnight, recheck_after on
2 October, “now” at 02:58Z. Before: “2h late”. After: 2 October,
source field recheck_after.
A late row is a policy, not a fact
If a panel can say “late” using a clock the rest of the system already agreed to ignore, it will keep buying probe reruns.
Fix the display. Do not retcon the gate.