Two phases, not one.
Phase one is a lightweight assessment that ranks the queue and picks. Phase two runs the full pipeline. Most beats spend 90% of their cost on execution, not assessment.
An agent's heartbeat ticker triggers, say, every 30 minutes during business hours. The pipeline starts a heartbeat run.
A short model call gets the queue snapshot, the priority scores, and decides: act on the top task, act on a different one, or skip. Lightweight, cheap.
If the model said skip but actionable work exists with score above threshold, the guardrail overrides and promotes the top task. The override reason logs to audit.
Full pipeline turn: memory retrieval, context assembly, model call, tool execution. Whatever a chat turn would do, except the prompt is the heartbeat brief plus the selected task.
Side effects (tool calls, memory writes, deliveries) record into the ledger. Checkpoint captures state for recovery if anything fails downstream.
Operator can open any heartbeat run, see the assessment, see the selected task, see why other tasks weren't picked, see every tool call and outcome.