From 0a85280b0588629a05149e07934759f83f7bd83e Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 25 Aug 2026 20:51:12 +0200 Subject: fix(of): correct season citation, note All Souls gap, guard transfer search Fix wave from the final whole-branch review of OF Phase 2 (0 Critical, 5 Important, 8 Minor). Applies the five items ruled in-scope and records two more, per the controller's R7/R8/R9 rulings. Fixes: - temporal_of.ml: season-boundary header cited "Normae n. 71-77", a range that does not exist (the Normae end at n. 61) and collides with real IGMR nn. 71-77 (Preparation of the Gifts) in the same PDF -- EF leakage from RG 71-77. Corrected to Normae Titulus II, nn. 17-47, with a note against reintroducing the wrong range. - precedence_of.ml entry 3: added the Tabula's second clause (Commemoratio omnium fidelium defunctorum / All Souls) to the comment, and recorded the Phase 3 hazard -- Vocab_of.rank has no constructor for it yet, and every natural tagging choice gets 2 November's precedence wrong in a different way. No code change; nothing can construct the entity yet. - precedence_of.ml transfer_target's search: added a domain_max_date guard (following Rite_ef.Precedence_ef's existing shape and reasoning) so the walk can no longer probe Computus past 9999-12-31, and it now returns the last date visited on bound exhaustion instead of failwith-ing. .mli updated to drop the @raise Failure clause. - precedence_of.ml is_privileged_sunday: added its own inline Tabula I.2 citation, matching its sibling helpers. - precedence_of.ml entry 10: trimmed the reused "universal or temporal-origin" comment -- Temporal_of never constructs a Memoria_obligatoria candidate, so the temporal-origin half was vacuous there. Recorded without fixing (both comment-only, per explicit scope ruling): - test_precedence_of.ml: corrected the entry-3 Nativity Vigil test's characterisation. The pinned band-30 assertion (2026-12-24, a Thursday) is correct, but is not the value on a 24-December Sunday (e.g. 2028, 2034), where is_privileged_sunday instead bands the same candidate 20. Named the underlying Phase 1 defect this exposes -- named() claims 24 December unconditionally and is matched before sunday_slug, so the Fourth Sunday of Advent gets no office at all in those years, invisible to the litcal layer -- as known and carried to the next task. - precedence_of.mli transfer_target: documented Normae n. 56(f) (St Joseph on Palm Sunday anticipates backward to 18 March) as a known, cited, unimplemented fourth transfer rule, and named the underlying kernel constraint (Rite.t.transfer_target's strictly-later obligation, justified only by the EF's RG 96) as the reason a real fix needs a kernel change. dune test: 799 tests, exit 0. make check (exhaustive sweep): 805 tests, exit 0, 224.7s. No kernel/rite_ef/data changes (git diff empty). --- lib/rites/rite_of/temporal_of.ml | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'lib/rites/rite_of/temporal_of.ml') diff --git a/lib/rites/rite_of/temporal_of.ml b/lib/rites/rite_of/temporal_of.ml index 367d855..9aa898e 100644 --- a/lib/rites/rite_of/temporal_of.ml +++ b/lib/rites/rite_of/temporal_of.ml @@ -82,11 +82,22 @@ let second_sunday_of_christmas y = full two-block week arithmetic this anchors. *) let christ_the_king y = Date.add_days (advent_start y) (-7) -(* Normae n. 71-77 boundary text, PRIMARY-SOURCE-VERIFIED against the 2002 - typical edition (docs/research/of/missale-romanum-2002.pdf, pdftotext - -layout, extracted lines ~3660-3790 for the Titulus II season definitions - themselves; see vocab_of.ml's own top-of-file comment for the Triduum - placement argument this function's own Lent branch below rests on). +(* Normae Titulus II, nn. 17-47 boundary text (season definitions), + PRIMARY-SOURCE-VERIFIED against the 2002 typical edition + (docs/research/of/missale-romanum-2002.pdf, pdftotext -layout, extracted + lines ~3660-3790 for the Titulus II season definitions themselves; see + vocab_of.ml's own top-of-file comment for the Triduum placement argument + this function's own Lent branch below rests on). + + CORRECTED: this header previously cited "Normae n. 71-77" -- the EF's own + RG 71-77 season-boundary range (CLAUDE.md: "seasons RG 71-77"), leaked in + by mistake. The Normae universales end at n. 61 (the Tabula sits at + n. 59/60), so that range cannot exist; worse, nn. 71-77 DO exist in the + same PDF, but as IGMR paragraphs on the Preparation of the Gifts -- exactly + the document-ambiguity this module's own citation discipline + (vocab_of.ml:1-9) exists to prevent. The per-bullet citations below (n. 40, + n. 33, n. 44, n. 28, n. 22-23) were always correct; only this header's own + range was wrong. Do not reintroduce "n. 71-77" here. Tested in chronological order within the civil year, mirroring Rite_ef.Temporal_ef.season's own structure -- see that function's own -- cgit v1.3