summaryrefslogtreecommitdiff
path: root/lib/rites/rite_of/precedence_of.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rites/rite_of/precedence_of.ml')
-rw-r--r--lib/rites/rite_of/precedence_of.ml87
1 files changed, 87 insertions, 0 deletions
diff --git a/lib/rites/rite_of/precedence_of.ml b/lib/rites/rite_of/precedence_of.ml
index 5344374..0e2c246 100644
--- a/lib/rites/rite_of/precedence_of.ml
+++ b/lib/rites/rite_of/precedence_of.ml
@@ -124,6 +124,87 @@ let is_nativity_octave_day (ctx : Vocab_of.season Precedence.context) =
let is_lenten_feria (ctx : Vocab_of.season Precedence.context) =
ctx.season = Vocab_of.Lent
+(* W3 (of-known-wrongs, 2026-08-26). Both are shipped MOVABLE obligatory
+ memorials of the BVM (data/of/calendar-2002.sexp: [immaculate-heart-of-mary],
+ Easter_offset 69; data/of/amendments/006-mary-mother-of-the-church.sexp:
+ [mary-mother-of-the-church], Easter_offset 50), and both can land on a
+ FIXED obligatory memorial's own date in a real year -- confirmed, not
+ merely possible: e.g. 2011-06-13 (Mater Ecclesiae vs Anthony of Padua) and
+ 2015-06-13 (Immaculate Heart vs Anthony of Padua, three years apart via
+ the other offset). Both candidates then band identically at Tabula
+ III.10 (100, both universal Memoria_obligatoria) -- a tie {!band} could
+ not break on its own, so {!Colitur_kernel.Precedence.resolve}'s kernel
+ tie-break (Slug.compare, alphabetical) silently decided instead: 892 days
+ for Mater Ecclesiae and 1109 for the Immaculate Heart across 1583-9999
+ (measured with the fix applied and compared against the plain alphabetical
+ order every one of those days would otherwise have taken -- see this
+ task's own report for the full sweep).
+
+ NEITHER of colitur's two checked primary sources resolves this: the 2018
+ decree inscribing Mater Ecclesiae (AAS 110, 437-438) is silent on
+ universal-calendar coincidence (its own coincidence clause covers only a
+ PARTICULAR calendar keeping the celebration on a different day at a
+ higher grade); Normae n. 14's third clause ("Si eodem die plures
+ inscribuntur in calendario memoriae ad libitum, una tantum celebrari
+ potest, omissis ceteris.") resolves only memoriae AD LIBITUM colliding
+ with each other, and n. 14's second clause covers only the Lenten-feria
+ case. Two OBLIGATORY memorials colliding is genuinely unaddressed by
+ either.
+
+ RESOLVED on a THIRD, later primary source, found by searching the
+ corpus (docs/research/of/), not invented: the Congregation for Divine
+ Worship and the Discipline of the Sacraments' own "Notification on the
+ Memorial of the Blessed Virgin Mary, Mother of the Church" (24 March
+ 2018 -- the SAME dicastery, the SAME two signatories, Robertus Card.
+ Sarah [Praefectus] and Arturus Roche [Archiepiscopus a Secretis], as the
+ 11 February 2018 decree itself). Published only on the Dicastery's own
+ site (vatican.va/roman_curia/congregations/ccdds/documents/
+ rc_con_ccdds_doc_20180324_notificazione-mater-ecclesiae_{en,it,la,sp}.html);
+ confirmed NOT listed in the AAS 2018 combined index
+ (docs/research/of/aas-indices/aas-indice2018.pdf, checked directly via
+ pdftotext) alongside the decree it follows up, which IS indexed there
+ (p.437) -- so this is a genuine dicasterial clarification, not an AAS
+ promulgation, and is cited as such rather than papered over as "AAS n.".
+ Its own operative Latin: "In casu occurrentiae huius memoriae cum alia
+ memoria principia generalia normarum universalium de Anno liturgico et
+ de Calendario (cf. Tabula dierum liturgicorum, n. 60) sequenda sunt. Cum
+ autem memoria B.M.V. Ecclesiae Matris sit Pentecoste coniuncta, sicut
+ pariter memoria Immaculati Cordis B.M.V. celebrationi Sacratissimi
+ Cordis Iesu coniuncta est, in casu occurrentiae cum alia memoria
+ alicuius Sancti vel Beati, iuxta liturgicam traditionem praestantiae
+ inter personas, memoria B.M.V. praevalere debet." The Dicastery's own
+ official English: "In the case where this Memorial coincides with
+ another Memorial the principles of the Universal Norms... are to be
+ followed (cf. Table of Liturgical Days, n. 60). Given that the Memorial
+ of the Blessed Virgin Mary, Mother of the Church is linked to Pentecost,
+ as the Memorial of the Immaculate Heart of the Blessed Virgin Mary is
+ similarly linked to the celebration of the Most Sacred Heart of Jesus,
+ then, in the case where it coincides with another Memorial of a Saint or
+ Blessed, and following the liturgical tradition of pre-eminence amongst
+ persons, the Memorial of the Blessed Virgin Mary is to prevail." The
+ Notification itself names BOTH memorials by this same analogy -- Mater
+ Ecclesiae's own rule IS the Immaculate Heart's pre-existing one, restated
+ -- so both are listed here, not only the one this task's own defect
+ report was filed against.
+
+ THIS IS THEREFORE A RUBRIC, NOT COLITUR'S OWN REASONED CHOICE: a
+ primary, dicastery-issued clarification of universal application, not an
+ analogy imported from the EF's own RG 91 entry 14 (which was the
+ fallback this task's brief authorized if nothing resolving turned up).
+
+ Implemented as a sub-rank strictly BETWEEN Tabula entries 9 and 10 (95,
+ not 100/110) -- the same "fits between neighbours" technique this
+ module's own header comment documents for exactly this situation. Never
+ climbs above entries 1-9: neither memorial's own date range (Easter+50 =
+ 11 May-14 June; Easter+69 = 30 May-3 July) can ever reach a Tabula 1-9
+ day, so 95 is inert there. Deliberately NOT a [subject = Bvm] rule: the
+ Notification's own reasoning is specifically that EACH of these two
+ memorials is tied to a movable SOLEMNITY OF THE LORD (Pentecost, the
+ Sacred Heart) -- a FIXED BVM memorial (e.g. Our Lady of Guadalupe, 12
+ December) gets no such boost, because nothing in the Notification's own
+ text extends this to Marian memorials in general. *)
+let movable_bvm_memorials = [ "mary-mother-of-the-church"; "immaculate-heart-of-mary" ]
+
let band (ctx : Vocab_of.season Precedence.context)
(c : Vocab_of.rank Precedence.candidate) : int =
let temporal = c.Precedence.origin = Precedence.Temporal in
@@ -191,6 +272,12 @@ let band (ctx : Vocab_of.season Precedence.context)
temporal
&& (is_late_advent_feria ctx || is_nativity_octave_day ctx || is_lenten_feria ctx)
then 90 (* Tabula II.9 *)
+ else if
+ c.cel.rank = Vocab_of.Memoria_obligatoria && List.mem (slug_of c) movable_bvm_memorials
+ then
+ 95 (* Between Tabula 9 and 10 -- W3, see [movable_bvm_memorials]'s own
+ comment above for the Notification this cites and why it is
+ scoped to these two slugs rather than [subject = Bvm]. *)
else if c.cel.rank = Vocab_of.Memoria_obligatoria && not (is_proper layer) then
100 (* Tabula III.10 -- universal or proper; the [layer] test is what
separates entry 10 from entry 11. Unlike entries 3, 5 and 7, "or