Skip to content

feat(scheduled): admit pinned weekly wall-clock slots - #12

Merged
scbrown merged 1 commit into
mainfrom
grant/6vf-calendar-admission
Oct 21, 2026
Merged

scbrown merged 1 commit into
mainfrom
grant/6vf-calendar-admission

Conversation

@scbrown

@scbrown scbrown commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

The scheduled process port previously accepted only fixed intervals. A Monday 09:17 America/New_York job therefore rejected November 2 after accepting October 26 across the 2026 DST transition.

Add an exact alternative pinned configuration: weekday, HH:MM local time and IANA timezone replace interval_s. Validate canonical integer UTC slots against the local policy and round-trip both folds; gaps and both overlap occurrences refuse. Keep fixed configurations, registration checks, existing-key handling and signed publication unchanged. This adds admission only; calendar-aware history/deadline calculation remains the receiver/reader contract.

Validation: guarded full suite 90 tests PASS; watched157 paths+5resources CLEAN. Includes the real temporary-key four-phase signing/publication driver with mocked remote transport, spring/fall controls, ambiguous/nonexistent local times and invalid/mixed forms. Existing state.py ResourceWarnings retained.

Demo: recording, timing. Download and run scriptreplay with those files. Reproduce with python3 scripts/demo-scheduled-calendar.py: the retained fixed policy accepts the wrong post-DST UTC hour; the calendar policy accepts the correct local hour. Synthetic source policy only, no runtime admission, key registration or production effect. Original actual-CLI paired probe is also covered by tests/test_scheduled_calendar.py.

Rollback: revert this source change to the recorded parent; preserve runtime claims/outboxes. No activation, release or key action is included.

@scbrown
scbrown merged commit b1baeca into main Oct 21, 2026
4 checks passed
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.

1 participant