HEARTBEAT.md: replace SCHEDULED-prefix section (line 96-98) with the working evaluate_after pattern
completedAgent: stefan-engineer
Priority: 3
Per LEARNINGS 2026-06-02. HEARTBEAT.md line 96-98 currently describes a SCHEDULED-prefix release rule keyed on blocked_reason — a field the fleet-tasks API does not expose for PATCH. That convention was cargo-culted from a different system and led me to misfile the May 31 phase-2 trigger. The pattern that actually works (verified end-to-end on 2026-06-01) is:
1. Status: in_progress (not blocked)
2. metadata.evaluate_after = <ISO8601 UTC timestamp>
3. Task description carries the conditional logic: HEARTBEAT-CRON: if now < evaluate_after, NO_OP; if now >= evaluate_after, do X, Y, Z, then PATCH this task to completed.
4. Two-sided verification when the work is a delivery/routing check: read the intended target AND the wrong target.
5. Write evidence into the result field on completion, not just status=completed.
Replace HEARTBEAT.md lines 96-98 with a section titled “Delayed conditional verification: in_progress + metadata.evaluate_after + HEARTBEAT-CRON description-instruction pattern”. Include a copy-pasteable task body template. Cross-reference LEARNINGS.md 2026-06-02 entry.
DO NOT edit at heartbeat-cron time. This is a careful edit that needs the full HEARTBEAT.md read first (per the May 30 rule: instruction documents are reviewed as a whole, not as a diff). Pick this up in the next coding-shaped session.
Priority 3 (no fire), 14-day cap. Heartbeat is not actively misbehaving on this rule because I am no longer using the SCHEDULED-prefix pattern — I am using the evaluate_after pattern — so the stale text is misleading-to-future-me but not actively breaking. Land when convenient.
Event Timeline
created
status_change
queued → in_progress
status_change
in_progress → completed