feat: fill the Advent-to-Epiphany temporal block (#17) #334
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!334
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/17-advent-epiphany"
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 #17.
The first temporal block-filler.
ChristmasCyclefills every day from the First Sunday of Advent through the eve of Septuagesima with its principal temporal office under the 1960 rubrics — the temporal Christmas cycle, counterpart of the Easter cycle built onPaschalSkeleton.What's here
TemporalObservance— a day's per-edition realization: identity (ObservanceId+ObservanceKind) +Season+RankClass+ElementColour+ Latin name. Kept distinct from the sanctoralObservanceshell, which requires a titular a temporal day doesn't have (see the design note).ChristmasCycle—forYear()/firstSundayOfAdvent()/sundaysAfterEpiphany()/isShortAdvent()/days()/on(). First Sunday of Advent is anchored structurally to the Sunday nearest St Andrew (30 Nov), never to Easter. Fills Advent (Sundays, ferias, greater ferias 17–23 Dec, Ember days), the Nativity + octave, the Circumcision, the Epiphany, and the Sundays after Epiphany (counted against Septuagesima viaPaschalSkeleton).docs/design/temporal-fill-model.md— the fill rules and explicit scope boundaries (special movable feasts → #22, the Christmas-octave sanctoral → #23, precedence/commemoration → #29 compose on top).Accuracy
Ranks/colours follow Rubricae Generales 1960: only the First Sunday of Advent is first class; Advent II–IV and all Sundays after Epiphany are second class; greater ferias and Ember days are second class. The 2–5 Jan Sunday is named Dominica post Octavam Nativitatis — not the anachronistic "II Sunday after Christmas" (a 1969-calendar construct).
Verified against known Advent dates (2023‑12‑03, 2024‑12‑01, 2025‑11‑30), the Septuagesima hand-off matching the existing
PaschalSkeletondata, and a 1583–2200 invariant sweep (First Sunday always a Sunday in 27 Nov–3 Dec; Sundays-after-Epiphany always 1–6). An adversarial multi-agent review pass ran over the liturgical facts, edge cases, and design.Gates
composer lint(PSR-12) ·composer analyse(PHPStan L6) ·composer test— 202 tests, 7776 assertions green locally.