mirror of
https://github.com/PR0M3TH3AN/TORCH.git
synced 2026-10-27 16:01:54 +00:00
Adds a cadence-aware time-window check that runs after the Nostr relay lock check to exclude agents that already ran within the current window (24h daily, 7d weekly). This closes the cross-midnight edge case where the relay's date-scoped d-tag rolls over but the agent ran minutes ago. Changes: - scheduler-utils.mjs: export log-parsing helpers (parseDateValue, parseTimestampFromFilename, parseAgentFromFilename, isStrictSchedulerLogFilename, parseFrontmatterCreatedAt, parseFrontmatterAgent, parseFrontmatterValue) plus CADENCE_WINDOW_MS constant and buildRecentlyRunExclusionSet(). Helpers are exported so they can be unit-tested independently. Adds 'node:path' import. - run-scheduler-cycle.mjs: import the moved helpers from utils (removes ~45 lines of duplicate definitions), call buildRecentlyRunExclusionSet after excludedSet is built from relay data, merge results, log newly-excluded agents. Adds cycle saturation detection: when all roster agents are covered by the time-window guard, exit 0 with a clear "Cycle complete" message instead of a failure. - test/scheduler-time-window.test.mjs: 30 new scenario-first unit tests covering SCN-TWG-01..11 (in-window exclusion, out-of-window pass-through, cross-midnight, frontmatter precedence, weekly threshold, empty dir, missing dir, deferred log passthrough, mixed rosters, anti-cheat for non-log files). All 30 new tests pass. Existing scheduler-ratchet tests (7) still pass. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>