ZacharyZhang-NY
f8052c3741
refactor(scheduler): split 15s tick into 4 independent intervals
...
Split the single 15s setInterval in scheduler.ts (6 serial jobs) into 4
independent schedulers so a slow job no longer stalls the others:
- scheduler-heartbeat.ts (15s): wake eligible agents, CEO bootstrap,
schedule automation trigger
- scheduler-lock-recovery.ts (60s): stale task-lock recovery and stale
workspace-lock release
- scheduler-idle-automation.ts (60s): idle-agent automation dispatch
- scheduler-housekeeping.ts (300s): monthly budget reset, expired budget
incident auto-close, stale review sweep, expired wakeup purge
scheduler.ts is now a thin composer exposing startAllSchedulers /
stopAllSchedulers. Bootstrap and service-graph updated accordingly.
Business logic, error isolation, and atomic actions preserved.
2026-04-16 21:47:09 -04:00
..
2026-04-16 21:42:04 -04:00
2026-04-16 21:36:41 -04:00
2026-04-04 17:01:26 -04:00
2026-04-16 21:36:22 -04:00
2026-04-16 14:48:51 -04:00
2026-04-16 21:47:09 -04:00
2026-04-16 14:48:51 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 17:01:26 -04:00
2026-04-06 00:35:27 -04:00
2026-03-18 01:15:58 -04:00
2026-04-16 21:37:16 -04:00
2026-04-04 12:03:50 -04:00
2026-03-23 23:31:48 -04:00
2026-04-04 12:03:50 -04:00
2026-04-04 12:03:50 -04:00
2026-04-16 21:47:09 -04:00
2026-04-04 17:01:26 -04:00
2026-04-04 17:01:26 -04:00
2026-04-04 17:01:26 -04:00
2026-04-04 12:03:50 -04:00
2026-04-05 20:14:48 -04:00
2026-04-05 23:47:56 -04:00
2026-04-04 12:03:50 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 12:03:50 -04:00
2026-04-04 12:03:50 -04:00
2026-04-07 20:18:47 -04:00
2026-04-04 12:03:50 -04:00
2026-03-23 12:13:11 -04:00
2026-04-04 12:03:50 -04:00
2026-04-04 12:03:50 -04:00
2026-04-16 21:42:29 -04:00
2026-04-16 14:48:51 -04:00
2026-04-05 20:14:48 -04:00
2026-04-05 20:14:48 -04:00
2026-03-29 14:08:15 -04:00
2026-03-18 01:15:58 -04:00
2026-04-04 12:03:50 -04:00
2026-03-18 01:15:58 -04:00
2026-04-04 17:01:26 -04:00
2026-04-05 20:14:48 -04:00
2026-03-18 01:15:58 -04:00
2026-04-16 14:48:51 -04:00
2026-04-16 14:48:51 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 12:03:50 -04:00
2026-04-04 12:03:50 -04:00
2026-04-04 12:03:50 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 12:03:50 -04:00
2026-04-16 21:43:44 -04:00
2026-04-04 17:01:26 -04:00
2026-03-26 20:57:52 -04:00
2026-03-18 01:15:58 -04:00
2026-04-04 12:03:50 -04:00
2026-04-05 20:14:48 -04:00
2026-03-22 16:37:07 -04:00
2026-04-16 21:37:58 -04:00
2026-03-18 01:15:58 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 12:03:50 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 17:01:26 -04:00
2026-03-22 16:30:49 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 12:03:50 -04:00
2026-04-04 12:03:50 -04:00
2026-04-04 12:03:50 -04:00
2026-04-05 20:14:48 -04:00
2026-04-16 21:47:09 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 12:03:50 -04:00
2026-04-05 20:14:48 -04:00
2026-03-29 14:08:15 -04:00
2026-04-04 12:03:50 -04:00
2026-04-05 20:14:48 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 17:01:26 -04:00
2026-04-05 20:14:48 -04:00
2026-04-16 21:36:29 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 12:03:50 -04:00