v0.2.13 — Scheduled / recurring tasks (R15)
Scheduled / recurring tasks (R15). Register a recurring job — a concrete tool-path plan plus a cron expression — that an external OS timer (launchd/cron) replays with hubspot schedule run-due. No always-on daemon.
A scheduled run executes reads unattended and stages every write as a pending preview — nothing mutates on its own. You approve the queued batch later; each write re-verifies with per-record compare-and-set (drift → skip), so a deferred approval never clobbers a since-changed record.
hubspot schedule add|list|remove|run-due|install-timer_drive_loopstage-and-continue mode; interactive loop unchanged (still pauses at every write)- Non-concrete (free-text) plans are refused so cron can replay deterministically with no run-time LLM
- Overlap gate skips while a batch is unreviewed and un-freezes when resolved; unreviewed batches expire after
schedule_queue_ttl_days(default 7) - New in-house
cron.py+ per-portalschedule_store.py
Adversarial review before ship caught and fixed an unattended-mutation hole (free-text steps), a freeze-until-TTL bug, and a reaper/TTL mismatch.
Full suite 1267 passed, 1 skipped on Python 3.12. CI (pytest + plugin validate + artifact allowlist) green.