Gate finding C12 r3 #9 (quality): degraded_since only wrapped
degraded_record(...).since, and jobs.py late-imported store_health in three
places for no cycle (store_health imports cron.jobs only lazily, inside
_active_cron_dir). Remove degraded_since, call degraded_record at the
one-shot gate, and import store_health once at module level next to
_claim_owner_is_dead. A fresh interpreter imports cron.jobs,
cron.scheduler, cron.store_health (either order) and
agent.monitoring.cron_health cleanly. dispatch_blocked loses the walrus and
the split locking: probe outside the lock, then update last_probe, error
and skipped under it in a single block. Behaviour is unchanged (the existing
cron tests pass as-is).