From a2fba71d8cccc765c4a987df99fa780f5467514d Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 25 Aug 2026 22:38:31 +0200 Subject: fix(of): Nativity Vigil no longer suppresses a Sunday of Advent Temporal_of.named claimed 24 December unconditionally as of-nativity-vigil (Sollemnitas), and temporal's dispatch matched named before sunday_slug. On a Sunday 24 December, the Fourth Sunday of Advent -- Tabula I.2, Normae n. 5's own privileged Sundays of Advent, Lent and Easter -- was silently replaced by the Vigil. named now returns None for 24 December when that date is itself a Sunday, so temporal's dispatch falls through to sunday_slug and the day resolves as of-advent-sunday-4. The Vigil Mass is an evening Mass of the following solemnity, not an office belonging to 24 December's own civil day -- the same civil-day-granularity reasoning already applied to Holy Thursday (Precedence_of.band's entry-1 comment) and to expected-divergences-litcal.sexp's L1 entry. Every non-Sunday 24 December is unaffected. Audited every other named entry for the same latent shape (see .superpowers/sdd/of-r8-advent-iv-report.md): none of them has it, either because the date can never fall on a Sunday, or because the date IS the definition of that Sunday (Palm Sunday, Easter, Pentecost, Trinity, Christ the King), or because the competing movable-Sunday windows are constructed to exclude that date. Added test_nativity_vigil_yields_to_advent_sunday, covering 2028-12-24 and 2034-12-24 (both inside the litcal fixture window) and the 2026-12-24 non-Sunday control. Re-ran the litcal layer: no allow-list counts moved, since it compares only season and Ordinary-Time week, and both readings of 24 December are "advent" either way. Updated test_precedence_of.ml's "entry 3, not 9" comment, which had carried this as a known, unfixed defect, to describe the fix; its own pinned assertion (a hand-built Thursday candidate) needed no change. --- lib/rites/rite_of/temporal_of.mli | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'lib/rites/rite_of/temporal_of.mli') diff --git a/lib/rites/rite_of/temporal_of.mli b/lib/rites/rite_of/temporal_of.mli index 982ff05..d2acadd 100644 --- a/lib/rites/rite_of/temporal_of.mli +++ b/lib/rites/rite_of/temporal_of.mli @@ -103,7 +103,16 @@ val christ_the_king : int -> Date.t threading extra state through every other branch too -- the exact reason EF's own [named] excludes its structurally identical Holy Family/Holy Name. {!temporal} applies all three as its own targeted - dispatch instead. *) + dispatch instead. + + 24 December is ALSO conditional, not unconditional like the rest of this + function's fixed dates: it yields [of-nativity-vigil] only when that date + is not itself a Sunday. On a Sunday, [None] is returned so {!temporal}'s + dispatch falls through to {!sunday_slug}'s own [of-advent-sunday-4] -- + Tabula I.2/Normae n. 5's Sundays of Advent outrank the Vigil (Tabula + I.3), the same evening-Mass-inside-the-civil-day reasoning already + applied to Holy Thursday (see [named]'s own implementation comment for + the full argument). *) val named : Date.t -> (Vocab_of.season * string * Colour.t * Vocab_of.rank) option (** Week within the season, 1-indexed, Sunday-aligned (constant across a -- cgit v1.3