mirror of
https://gh-proxy.org/https://github.com/klinsmaya/multica.git
synced 2026-11-09 18:06:45 +08:00
* fix(scheduler): stop a dense-cron autopilot trigger going permanently silent Root cause (#8939): autopilotPlansForScope enumerated (lastPlan, dbNow] under a 24h replay cap. NextOccurrencesUTC keeps the FIRST 1024 activations of the interval, so after a pause longer than 1024 occurrences of a dense cron ("* * * * *" after ~17h) the latest kept one is hours stale, fails the 5-minute lateness guard, and the hook returns nothing. Nothing is written to sys_cron_executions, the anchor never moves, and next_run_at keeps looking valid while the trigger stays silent for good. Any cron with more than 1024 activations per 24h is affected; */2 (720/day) is not. Floor `after` at now - maxAutopilotScheduleLateness (inclusive) before enumerating. This keeps the latest-only collapse, the lateness guard, the retry path and the cold-start anchors, and makes the 1024 cap unreachable for this caller; the 24h replayWindow is now redundant and removed. This also recovers triggers an older build already left silent: the next tick re-anchors inside the lateness window and the trigger fires again, so the manual recovery from the report (change the cron, or delete and recreate the trigger) is no longer needed. An anchor past dbNow (DB clock rollback) is healed through the same floor instead of keeping (after, dbNow] empty forever. Tests (jobs_autopilot_long_pause_test.go): dense-cron pauses of 18h and 3 days fail before and pass after; the short-pause and */2 cases are controls; the 5-minute lateness bound is pinned on both sides; the automatic self-heal and the future-anchor recovery are covered. go test ./internal/scheduler/ and go vet ./internal/scheduler/ pass. Signed-off-by: Battleplus <[email protected]> * fix(scheduler): keep dense-cron recovery scoped to stale anchors Co-authored-by: multica-agent <[email protected]> --------- Signed-off-by: Battleplus <[email protected]> Co-authored-by: Sol-Boy <[email protected]> Co-authored-by: multica-agent <[email protected]>