Skip to content

#60: CronScheduler with cron jobs and heartbeat intervals#80

Merged
lapc506 merged 1 commit intomainfrom
60-cron-scheduler
Mar 26, 2026
Merged

#60: CronScheduler with cron jobs and heartbeat intervals#80
lapc506 merged 1 commit intomainfrom
60-cron-scheduler

Conversation

@lapc506
Copy link
Copy Markdown
Owner

@lapc506 lapc506 commented Mar 26, 2026

Summary

  • New application/services/cron_scheduler.py with CronScheduler, CronJob, HeartbeatJob
  • Standard 5-field cron expression parser (wildcards, ranges, steps, comma lists)
  • HeartbeatJob for periodic interval-based checks (e.g. sensor reads every 5min)
  • Deterministic tick(now) for testing; max_runs, enable/disable, job lifecycle
  • 26 new tests covering parsing, matching, lifecycle, tick behavior, error handling

Closes #60

Config Example

scheduler.add_job(CronJob(
    name="daily-report", cron="0 7 * * *",
    persona_id="analyst", message="Generate metrics report",
))
scheduler.add_heartbeat(HeartbeatJob(
    name="sensor-check", interval_seconds=300,
    persona_id="agronomist", message="Check sensor readings",
))

Test plan

  • All 283 unit tests pass
  • mypy --strict: 0 errors
  • Cron parsing: wildcard, range, step, comma
  • Cron matching: specific time, day-of-week
  • Heartbeat interval enforcement
  • max_runs completion, disabled job skipping
  • Callback error graceful handling

Created by Claude Code on behalf of @lapc506

🤖 Generated with Claude Code

…vals (#60)

CronScheduler supports standard 5-field cron expressions with wildcards,
ranges, steps, and comma lists. HeartbeatJob for periodic interval-based
checks. Deterministic tick() for testing. Max runs, enable/disable,
job lifecycle management. Inspired by OpenClaw cron+heartbeat pattern.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@lapc506 lapc506 merged commit d2ce9f4 into main Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Scheduled tasks: CronScheduler + heartbeat system

1 participant