schedule: parse + validate a cron on a container, refuse run-once+schedule (ADR 0053) #11

Merged
jschoubben merged 1 commits from feat/schedule-container into main 2026-09-06 12:27:42 +00:00
Owner

Control-plane half of the scheduled-step primitive (ADR 0053). Adds a minimal 5-field cron validator; the manifest parser accepts schedule: "<cron>" on a container, refuses a malformed cron, a non-string, and the pair run-once+schedule. The resolver carries the field through untouched (as run-once is). 4 new tests; full suite green (353 tests, vet clean). Proven end-to-end alongside the host half in mesh-lab assigned-schedule-tick (SUITE_EXIT=0).

https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF

Control-plane half of the scheduled-step primitive (ADR 0053). Adds a minimal 5-field cron validator; the manifest parser accepts `schedule: "<cron>"` on a container, refuses a malformed cron, a non-string, and the pair `run-once`+`schedule`. The resolver carries the field through untouched (as `run-once` is). 4 new tests; full suite green (353 tests, vet clean). Proven end-to-end alongside the host half in mesh-lab `assigned-schedule-tick` (SUITE_EXIT=0). https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF
jschoubben added 1 commit 2026-09-06 12:27:26 +00:00
A container may declare schedule: "<cron>", the recurring twin of
run-once. The resolver already carries a resource's keys through
untouched, so schedule reaches the rendered host declaration on its own;
what belongs here is refusing, near its author, what the host would
otherwise refuse far away.

The manifest parser refuses a schedule that is not a string, one that is
not a well-formed five-field cron (cron.go: fields, ranges, *, comma,
dash, slash), and the contradictory pair run-once + schedule -- a
container runs once and gates, or on a cadence, or stays up, never two.

Claude-Session: https://claude.ai/code/session_01LrgweAeERJYBg88c5cKDzF
jschoubben merged commit b69fbc0e86 into main 2026-09-06 12:27:42 +00:00
jschoubben deleted branch feat/schedule-container 2026-09-06 12:27:42 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#11