aboutsummaryrefslogtreecommitdiff
path: root/lib/rites/rite_ef/rubrics_ef.mli
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-24 16:29:23 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-24 16:29:23 +0200
commit8a5da8756cf6b57aa36c01b71ce893f7967d3a29 (patch)
tree10873a692400fa25ce54c67ac9fc34d46af86272 /lib/rites/rite_ef/rubrics_ef.mli
parent4f87cbde4ee79ac96aa7ebfed105b3a5ec02be43 (diff)
parent73b15551804bb63ee0081005e2869d36afb54be2 (diff)
downloadcolitur-8a5da8756cf6b57aa36c01b71ce893f7967d3a29.tar.gz
colitur-8a5da8756cf6b57aa36c01b71ce893f7967d3a29.zip
merge: celebrant Mass rubrics, and four rubrical corrections
colitur now prints what a real ordo prints for the Mass: which formulary is said and how it was reached, the Gloria, the Creed, the preface, and the commemorations with their Low-Mass/sung distinction. colitur rubrics joins day and readings. Four defects were found and fixed on the way, each by an external witness rather than by inspection: the Creed said at Requiem Masses (RG 476(f)), the missing bissextile shift of St Matthias and St Gabriel (2 041 leap years), Rogation Monday and Tuesday coloured violet in Paschaltide (RG 119(b)), and the ferias after the Ascension resuming the wrong Sunday's Mass rather than the Ascension's. Validation gained a sixth layer and then some: the preface is checked against three independent publishers over seven witness-years (FIUV, three LMS editions, three extraordinaryform.org editions), none of which shares the Divinum Officium -> missalemeum -> lectio lineage the older layers all descend from.
Diffstat (limited to 'lib/rites/rite_ef/rubrics_ef.mli')
-rw-r--r--lib/rites/rite_ef/rubrics_ef.mli107
1 files changed, 107 insertions, 0 deletions
diff --git a/lib/rites/rite_ef/rubrics_ef.mli b/lib/rites/rite_ef/rubrics_ef.mli
new file mode 100644
index 0000000..c005aaf
--- /dev/null
+++ b/lib/rites/rite_ef/rubrics_ef.mli
@@ -0,0 +1,107 @@
+(** RG 475-476 (docs/research/LT.txt, grep "dicitur symbolum") -- whether the
+ Creed is said at Mass. The first rubric in this phase governing a PART OF
+ MASS rather than occurrence/precedence, hence its own module: see the
+ .ml's own header for the rubric quoted in full and every branch's
+ citation. *)
+
+open Colitur_kernel
+
+(** RG 475(e)'s "festis nataliciis Apostolorum et Evangelistarum, necnon in
+ festis Cathedrae S. Petri et S. Barnabae Ap." -- see the .ml's own
+ citation for how each entry was derived from and verified against
+ data/ef/sanctoral.sexp, and for what was deliberately excluded. Exposed
+ so the test suite can assert completeness against the shipped data the
+ same way {!Precedence_ef.vigil_feast_table} already lets it. *)
+val creed_apostle_slugs : string list
+
+(** Whether the Creed is said, post-Gospel/homily, at the Mass this day
+ resolves to.
+
+ [temporal] is read for exactly one fact -- RG 475(a)'s own "in qualibet
+ dominica, ETSI EIUS OFFICIUM ALICUI FESTO LOCUM CEDAT" ("on any Sunday,
+ EVEN WHEN a feast displaces its own Office"): a Sunday impeded by a
+ Feast of the Lord (RG 16(a)) still says the Creed, so this reads the
+ TEMPORAL cycle's own weekday, never [observed]'s. Every other clause
+ reads [observed] -- the celebration whose Mass is actually said -- and
+ [date], read once against the rite's own (Gregorian) Easter for the two
+ Easter-relative window questions (RG 475(d)'s three octaves, RG 23's
+ Ash-Wednesday-and-Holy-Week feriae). [creed] never reads
+ {!Liturgical_day.t.commemorations}: RG 476(e), "ratione alicuius
+ commemorationis in Missa occurrentis" [never say the Creed merely
+ because of a commemoration], holds by construction rather than by a
+ checked branch. RG 476(f) ("in Missis defunctorum") reads
+ [observed]'s [colour]: see the .ml's own header for why [Colour.Black]
+ is a sound proxy for "this Mass is a Requiem" on the shipped data, and
+ what would have to be re-checked if that ever stops being true. *)
+val creed :
+ temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t ->
+ observed:Vocab_ef.rank Celebration.t ->
+ date:Date.t ->
+ bool
+
+(** Whether the Te Deum was said at Matins (Breviary 1961 Codex Rubricarum
+ nn. 237-238) -- NOT the Divine Office arriving in scope, but a single
+ Breviary fact {!gloria}'s own RG 431(a) defers a Mass question to. See
+ the .ml's own header for the rubric quoted in full, every branch's own
+ citation, and this source's own stated weakness (a single, not yet
+ scan-verified, web transcription -- docs/research/breviary/PROVENANCE.md).
+ Same three parameters as {!creed}, for the same reasons: [temporal] for
+ the day's own weekday/season, [observed] for the celebration whose
+ Office is actually kept, [date] for the Easter-relative window
+ questions. *)
+val te_deum :
+ temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t ->
+ observed:Vocab_ef.rank Celebration.t ->
+ date:Date.t ->
+ bool
+
+(** Whether the Gloria in excelsis is said at this day's Mass (RG 431-432).
+ 431(a)/432(a) defer to {!te_deum}; 431(c) (Holy Thursday, the Easter
+ Vigil Mass) and 432(b)/(d) (violet vestments; a Requiem) are
+ independent overrides, checked ahead of the Te Deum-derived answer --
+ see the .ml's own header for the full account, including which of
+ 431/432's own clauses this engine has no votive-Mass-class dimension to
+ implement and are therefore marked not-applicable rather than silently
+ skipped. *)
+val gloria :
+ temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t ->
+ observed:Vocab_ef.rank Celebration.t ->
+ date:Date.t ->
+ bool
+
+(** RG 487(a)'s own two fixed-feast triggers for the Holy Cross preference
+ (the Exaltation of the Holy Cross, the Most Precious Blood) -- see the
+ .ml's own citation for what RG 487(a)'s further-named categories (the
+ Passion/Instruments of the Passion, the Most Holy Redeemer) are absent
+ from the shipped calendar entirely, not merely from this list. *)
+val preface_holy_cross_slugs : string list
+
+(** RG 496's own two St Joseph feasts in the shipped calendar. *)
+val preface_st_joseph_slugs : string list
+
+(** RG 497's own [Apostolorum et Evangelistarum] population -- WIDER than
+ {!creed_apostle_slugs} (no natalicium restriction); includes
+ "conversion-of-st-paul" (Preface-witnesses task, 2026-08-23, four
+ independent unimpeded-year confirmations across two publishers -- see
+ the .ml's own citation for the full evidence and the survey of every
+ other Apostle/Evangelist-named slug that was checked and NOT added. *)
+val preface_apostle_slugs : string list
+
+(** RG 495's own [beatae Mariae Virginis] population -- WIDER than
+ {!Precedence_ef.marian_slugs} (a different, looser standard than that
+ list's own RG 112(d) oration-level one); see the .ml's own citation
+ for the FIUV Ordo evidence. *)
+val preface_bvm_slugs : string list
+
+(** Which preface is said at this day's Mass (RG 482-499). [None] both when
+ this engine resolves a day with no Mass at all (Good Friday) and -- for
+ a rite that has not implemented this function at all -- as the type's
+ own neutral value; see the .ml's own header for the rubric quoted in
+ full, the priority order every branch follows and why, and the FIUV
+ Ordo evidence that order rests on. Same three parameters as {!creed}/
+ {!te_deum}/{!gloria}, for the same reasons. *)
+val preface :
+ temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t ->
+ observed:Vocab_ef.rank Celebration.t ->
+ date:Date.t ->
+ Preface.t option