feat: assemble the resolved day and wire day() (#37) #353
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!353
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/37-assemble-day"
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?
Closes #37. Epic #29, issue 8/8 — the resolver; day() now works end to end.
What
day()composes the temporal skeleton and the sanctoral overlay into oneresolved
LiturgicalDay.Precedence\DayResolverresolves a whole civil year in one deterministicforward sweep (a transferred feast makes any day depend on earlier ones): per
day it gathers the temporal office + movable feasts + sanctoral offices (+ any
feast transferred onto the day), orders by tier, takes the top as the
celebration, and resolves the rest to a commemoration (trimmed by
CommemorationSelector), a transfer (TransferLedger/ forced date), or anomission. A second pass fills in the evening concurrence.
Precedence\ResolvedYear— the immutable per-year index;day()resolvesthe year once and memoises it.
Calendar\LiturgicalDaynow carriesRealizedObservances in its four rolesplus
secondVespers().Correctness
Cross-checked end-to-end against a published 2025 traditional (1962) ordo — 11
of 12 sample days matched; the one discrepancy was a real bug now fixed: an
ordinary feria (not Advent/Lent/Passiontide) carries no commemoration when
impeded (n. 108e) — omitted, not commemorated. Verified resolutions: Christmas;
St Joseph over its Lenten feria; the Annunciation on 25 Mar; the Immaculate
Conception; Ss Peter & Paul commemorating their Sunday; the II-class Sunday
outranking St Lawrence; the Christmas-octave interaction; and the whole-year
transfer (St Joseph off the 2017 Lenten Sunday → celebrated the next day).
Exhaustive multi-oracle re-proving is the validation-harness epic (#45).
Verification
composer lint·composer analyse(PHPStan L6, no errors) ·composer test(472 tests, 30,329 assertions — +18). Commits signed + DCO.