Skip to content

feat(history): verify explicit weekly calendar occurrences - #14

Merged
scbrown merged 2 commits into
mainfrom
grant/6vf-calendar-history
Oct 21, 2026
Merged

scbrown merged 2 commits into
mainfrom
grant/6vf-calendar-history

Conversation

@scbrown

@scbrown scbrown commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

Add an opt-in calendar signed-history reader beside the unchanged fixed ScheduledHistory path. The reader takes explicit Chaski occurrence slots, next-occurrence deadlines and pinned zone, validates local-week/DST coverage, then reuses existing public registration/signature/event verification. It never calls the fixed cadence measure method.

A missing target is MISSED only after a successful same-scope signed control. Future/stale slots, gaps/both fold occurrences, cross-month control/start/completion windows, partial/corrupt/truncated evidence and unavailable transport remain UNKNOWN. No timer, CLI, private-key access, writer, profile or runtime action is added. Fixed reader/9l1 paths are byte unchanged.

Validation: guarded full suite97PASS, HOME157paths+5resources CLEAN; existing state.py ResourceWarnings retained. Private actual Chaski WeeklyScheduledProjection event_id/next_checks/pinned-zone mapping produces the expected occurrence and paired MISSED->SUCCEEDED with real temporary signatures and mocked graph transport. The projection JSON is not a flat occurrence object; docs spell out that handoff.

Demo: recording, timing, reproduced with python scripts/demo-calendar-history.py. Download and use scriptreplay. Watch signed-control/missing-target MISSED -> signed-target SUCCEEDED -> empty-history UNKNOWN. Source fixtures only, no installed/natural delivery claim.

Rollback: inverse the six added paths to the recorded parent. No runtime state or key is changed.

@scbrown
scbrown merged commit 220ced2 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