Host half of the scheduled-step primitive (ADR 0053). A container with schedule: "<cron>" is installed as recurring state — applySchedule records it and reports current without running it or gating (the deliberate inversion of run-once). A Scheduler (rebuilt from the applied declaration each Sync, no persisted state) fires the container to completion on its cadence via a minute-ticker; a non-zero run is logged and touches nothing else; runs never stack (a still-running job skips its next due). Adds a small Clock seam so the behavior is unit-tested with a fixed clock (no wall-clock sleeps); 5-field cron parser/evaluator. All ADR checks unit-tested; full suite green (237 tests, race-clean, vet clean). Proven end-to-end in mesh-lab assigned-schedule-tick.
Host half of the scheduled-step primitive (ADR 0053). A container with `schedule: "<cron>"` is installed as recurring state — `applySchedule` records it and reports current **without running it or gating** (the deliberate inversion of run-once). A `Scheduler` (rebuilt from the applied declaration each `Sync`, no persisted state) fires the container to completion on its cadence via a minute-ticker; a non-zero run is logged and touches nothing else; runs never stack (a still-running job skips its next due). Adds a small `Clock` seam so the behavior is unit-tested with a fixed clock (no wall-clock sleeps); 5-field cron parser/evaluator. All ADR checks unit-tested; full suite green (237 tests, race-clean, vet clean). Proven end-to-end in mesh-lab `assigned-schedule-tick`.
https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF
The recurring twin of run-once, one modifier over: a container marked
schedule: "<cron>" is run to completion on its cadence, not started as a
service and not run once as a gate.
The gating rule is deliberately reversed. Installing a schedule records it
as present state and reports the node current at once (applySchedule) --
it never runs the container and does not gate what follows. A Scheduler,
held for the life of the daemon and re-established from each applied
declaration (the declaration is the source of truth, ADR 0018), fires the
container off an injected clock. A run that exits non-zero is logged and
never fails the apply or flips the node's state, because it happens
outside the apply and the store entirely. Runs never stack: a run still
going when the next is due is skipped, not started as a second copy.
No new host shape and no new action -- schedule is a string on the
container the host already has, and the host process runs the container
itself rather than installing a system timer (the rejected option 1). A
minimal five-field cron (declaration/cron.go) validates on arrival and
computes the next due minute; time is injected so the scheduler is tested
without the wall clock.
Claude-Session: https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Host half of the scheduled-step primitive (ADR 0053). A container with
schedule: "<cron>"is installed as recurring state —applySchedulerecords it and reports current without running it or gating (the deliberate inversion of run-once). AScheduler(rebuilt from the applied declaration eachSync, no persisted state) fires the container to completion on its cadence via a minute-ticker; a non-zero run is logged and touches nothing else; runs never stack (a still-running job skips its next due). Adds a smallClockseam so the behavior is unit-tested with a fixed clock (no wall-clock sleeps); 5-field cron parser/evaluator. All ADR checks unit-tested; full suite green (237 tests, race-clean, vet clean). Proven end-to-end in mesh-labassigned-schedule-tick.https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF