Repository navigation
RTerm v3.2.16
Scheduled-task (cron) overhaul + Model-settings Base URL prefill
12 scheduler improvements
- Timezone-aware evaluation — per-task
timezone(IANA, e.g.Africa/Lagos) via the Intl API, no new dependency. DST handled by the tz database (LA 2am fires exactly once on the November fallback day — verified). - Overlap guard — in-flight tracking per task; a new firing while the previous runs is SKIPPED and logged (default
maxConcurrent: 1). Two concurrentrm -rfcleanups can no longer race. - Pause windows —
pausedUntil(ISO) maintenance blackouts. - Catch-up policy — missed minutes stay missed by default (classic cron);
catchUp: trueopts in, still bounded by the 24h window and at-most-once-per-tick. - Cron validation —
validateCron()rejects wrong field counts, garbage, out-of-range values, and never-matching expressions (Feb 31) with a human-readable reason;createrefuses invalid expressions. - Run-now —
manage_scheduled_task action="runNow"fires immediately for testing, respecting the overlap guard. - Run history — last 20 runs per task (ring): outcome, duration, targets, error.
action="history"reports run count, success rate, avg duration, consecutive failures, last result. - Failure-streak alerting —
alertAfterFailures: Nwarns on N consecutive failures. - Task → playbook binding —
playbookIdruns a playbook (validation + rollback inherited); MOP-gated playbooks refused with a clear message. - Chaining —
onSuccess/onFailurepoint at the next task id. - Drift detection —
action="drift"flags tasks that have not fired in >3× their expected interval.expectedIntervalMinutes()fixed for cron's dom/dow OR semantics (a bug found by the tests). - Retry wiring —
retryAttempts/retryDelaySecondsnow actually execute (the fields existed on the type but were never applied).
Model settings UI
The "ADD MODEL" Base URL field is prefilled with https://api.superagent.ng (still fully editable).
Verification
- New
v3216Scheduler.extreme.spec.ts(41/41): validation, timezone (UTC/Lagos/LA/DST/invalid), overlap, pause, catch-up, history, drift, runNow + 6 regression tests proving the original semantics unchanged - Existing scheduler (15/15) + scheduledTaskRunner (12/12) still green
- typecheck:all clean; backend-unit, layout-ui, automation suites green
npm
neuralos@3.2.16 · rterm-backend@3.2.16 · rterm-cli@3.2.16