feat: select a particular calendar via day()/contract() (#78) #444
No reviewers
Labels
No labels
area: build
area: ci
area: compare
area: data
area: engine
area: model
area: provenance
area: rite
area: validation
backport
blocked
breaking
confirmed
dependencies
duplicate
epic
github_actions
invalid
needs-info
needs-triage
php
priority: high
priority: low
priority: medium
regression
type: bug
type: chore
type: correction
type: docs
type: enhancement
type: feature
type: fix
type: perf
type: refactor
type: security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Directorium/Core!444
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/78-calendar-selector"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wires the particular-calendar overlays (#76/#77) into the public API:
day()andcontract()take an optional$calendarselector, so a caller can resolve a date under the universal 1962 calendar or a particular calendar (SSPX, and future FSSP/ICKSP). Refs #78.The selector
day($date)/contract($date)— universal 1962, unchanged.day($date, 'sspx')/contract($date, false, 'sspx')— under the SSPX calendar. A selector is accepted as either the slug (sspx) or the full overlay URN (introibo:overlay:roman:sspx); an unknown selector throwsInvalidArgumentExceptionnaming the available calendars.explain($date, 'sspx')carries the selector through the trace path too.How
CalendarCatalogis the seam: given a selector it builds theDayResolver(layering the overlay onto the base sanctoral viaOverlaidSanctoralDatafrom #77) and theCalendarDescriptorthe contract stamps. The engine is untouched — selecting a calendar only chooses whichSanctoralDatathe resolver reads.(year, calendar).Contract
calendarblock (additive, shape-stable)The reserved day-level
calendarblock gains aparticularsub-key naming the selected calendar; it staysnullunder the universal calendar, so the default output shape and its golden digest are unmoved (the golden-year and stable-identifier tests pass unchanged). The overlay also travels on thecorpusVersionaxis (base+overlayId) —particularis the structured, human-readable counterpart.docs/design/output-contract.mddocuments the now-partly-filled block, with the reserved astronomical/lectionary fields joiningparticularat v0.4.Verification
lint+analyseclean ·introibo-core703 green ·validation22 green (1 pre-existing skip). Default (universal) output byte-for-byte unchanged; under SSPX, St Pius X (Sep 3) and the Seven Sorrows (Sep 15) resolve first class. Commit SSH-signed + DCO.Next: #80 wires this selector into the SSPX oracle as a green conformance gate.