Parent: #392
Make idle cheap and explicit so scheduled harnesses can stop before starting a model.
Expected behavior:
- next-task returns idle when no work exists
- idle response includes a short reason
- idle check is read-only
- idle check does not require model context
Acceptance:
- worker schedule can exit early
- groomer schedule can exit early
- tests cover empty queue and empty follow-up state
- docs show the idle-first pattern
Parent: #392
Make idle cheap and explicit so scheduled harnesses can stop before starting a model.
Expected behavior:
Acceptance: