summaryrefslogtreecommitdiff
path: root/lib/rites
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rites')
-rw-r--r--lib/rites/rite_ef/temporal_ef.ml74
1 files changed, 73 insertions, 1 deletions
diff --git a/lib/rites/rite_ef/temporal_ef.ml b/lib/rites/rite_ef/temporal_ef.ml
index bbd88ec..4aa8aea 100644
--- a/lib/rites/rite_ef/temporal_ef.ml
+++ b/lib/rites/rite_ef/temporal_ef.ml
@@ -154,6 +154,69 @@ let holy_name_fallback_date y = mk y 1 2
let holy_name_names =
Colitur_kernel.Names.of_list [ (Colitur_kernel.Lang.of_string_exn "la", "Sanctissimi Nominis Iesu") ]
+(* RG 91 entry 2 (Sacred Triduum) ranks Holy Thursday/Good Friday/Holy
+ Saturday above even entry 7's own I-class ferias (this file's own comment
+ on [privileged_feria]), but [temporal] constructs no proper NAMED office
+ for any of the three (ef-triduum-litanies task, Gap 1) -- they fall
+ through to the generic Passiontide ferial branch below like any other day
+ of Holy Week. The slug STAYS that generic key: RG 91 entry 2 is already
+ identified structurally, off the day's own Easter offset and rank
+ (Precedence_ef.band's own entry-2 branch), never off the slug, so
+ renaming it would touch precedence for no reason and would break the
+ lectio differential's own slug mapping for these three lectionary keys
+ (the same reasoning [holy_family_sunday]'s own citation above gives for
+ keeping "ef-time-after-epiphany-sunday-1"). What was actually missing is
+ IDENTITY alone, closed the same way RG 17(b)/(a) (Holy Family/Holy Name,
+ above) already were: Latin, not English, in [names] -- zero circularity
+ (an English name would mean reading missalemeum's own title text, the
+ oracle this exact axis is compared against, to decide colitur's own
+ "ground truth").
+
+ Both photographic scans, word for word, corroborated by the electronic
+ transcription's own table-of-contents-style listing at the identical
+ three headings (docs/research/rules-register.md; three-way agreement, no
+ scan-vs-transcription conflict to adjudicate here -- these three headings
+ sit OUTSIDE the Mass-propers body text the transcription is documented
+ elsewhere as missing almost all of, in a title/running-header line it
+ carries just the same): "FERIA QUINTA IN CENA DOMINI" / running header
+ "Feria V in Cena Domini" (Holy Thursday); "FERIA SEXTA / IN PASSIONE ET
+ MORTE DOMINI" (Good Friday -- NOT the informal "Feria VI Parasceve" the
+ transcription uses in passing elsewhere in an unrelated rubric; this is
+ the Missal's own Mass-propers section title, confirmed as the running
+ header on every page of that Office in both scans); "SABBATO SANCTO"
+ (Holy Saturday, both scans, with "I classis" printed directly beneath the
+ heading).
+
+ [subject = Lord] is also set (Holy Family/Holy Name needed it only
+ because Precedence_ef.band's entry 14 reads [subject] to outrank a
+ colliding fixed feast; entry 2 here needs no such thing --
+ Precedence_ef.band's own entry-2 branch tests only [rank] and the Easter
+ offset). Tagged anyway because it is simply true (the Last Supper, the
+ Passion and Death, the entombment are textbook mysteries of the Lord) and
+ safe: Precedence_ef.disposition's RG 112(a) branch (a mystery of the Lord
+ excluding a commemoration of ANOTHER mystery of the same Divine Person)
+ only fires when BOTH sides of an occurrence are tagged [Lord], and no
+ [Lord]-subject entry in data/ef/sanctoral.sexp has a fixed civil date
+ inside Holy Week's own movable range (earliest 19 March, latest 24 April;
+ the register's own subject audit lists exactly six [Lord]-tagged
+ entries, all fixed in January, February, August, September or November)
+ -- and any [Class1] sanctoral entry that DOES land there (e.g. a
+ transferred Annunciation) reaches Precedence_ef.disposition's EARLIER,
+ subject-blind "I class, not a Sunday -> Transfer" branch first
+ regardless, so RG 112(a)'s branch is never reached for it either way.
+ Measured, not merely argued: this task's own full 1583-9999 blast-radius
+ sweep (git archive, pre- vs post-change) shows zero
+ [observed]/[commemorations]/[transferred_*] difference traceable to this
+ tag anywhere in the domain -- see the task report. *)
+let triduum_names = function
+ | -3 -> Some (Colitur_kernel.Names.of_list [ (Colitur_kernel.Lang.of_string_exn "la", "Feria V in Cena Domini") ])
+ | -2 ->
+ Some
+ (Colitur_kernel.Names.of_list
+ [ (Colitur_kernel.Lang.of_string_exn "la", "Feria VI in Passione et Morte Domini") ])
+ | -1 -> Some (Colitur_kernel.Names.of_list [ (Colitur_kernel.Lang.of_string_exn "la", "Sabbato Sancto") ])
+ | _ -> None
+
let same a b = Date.compare a b = 0
(* Named temporal days: the I-class feasts of the Lord (RG 91 entries 1 and 3),
@@ -731,7 +794,16 @@ let temporal d =
Printf.sprintf "ef-%s-%d-%s" (season_slug_word s)
(Option.value week_n ~default:0) (weekday_word d)
in
- build ~season:s ~slug ~colour ~rank:(ferial_rank d s) ~week:week_n ())))
+ (* [triduum_names]'s own citation above: identity only,
+ for the three days of the Sacred Triduum -- every
+ other ferial day here stays unnamed, subject
+ Temporal, as before. *)
+ let subject, names =
+ match triduum_names (days_between easter d) with
+ | Some names -> (Colitur_kernel.Subject.Lord, names)
+ | None -> (Colitur_kernel.Subject.Temporal, Colitur_kernel.Names.empty)
+ in
+ build ~subject ~names ~season:s ~slug ~colour ~rank:(ferial_rank d s) ~week:week_n ())))
(* Independent restatement of [named]'s fixed and Easter-relative dates,
paired with the slug each should carry, for civil year [y]. Deliberately