diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-26 08:23:38 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-26 08:23:38 +0200 |
| commit | 1a1479fd60e192c48789b3b065a3033702e4eeda (patch) | |
| tree | 283a5fca36c942a6d7fbf287d8d21d57e1b8c1f8 /lib/rites/rite_of/rubrics_of.mli | |
| parent | 85c1f194c03634eaa905f0bfd630fe23b5f53e59 (diff) | |
| download | colitur-1a1479fd60e192c48789b3b065a3033702e4eeda.tar.gz colitur-1a1479fd60e192c48789b3b065a3033702e4eeda.zip | |
feat(of): Rubrics_of -- Gloria, Credo, and an all-None Preface verdict
Task 3 of OF Phases 3-5: the celebrant-rubrics module for the OF rite,
supplying three of Rite.t's four remaining fields.
creed/gloria implement IGMR n. 53 (Gloria) and n. 67-68 (Symbolum),
both quoted in full in the module header. temporal is read, not
observed, for both Sunday clauses: Temporal_of.temporal tags every
Sunday of Advent/Lent/Easter Sollemnitas (the privileged-season
convention), so an observed.rank test alone would wrongly grant Gloria
on an Advent or Lent Sunday, which n. 53's own "extra tempus Adventus
et Quadragesimae" explicitly withholds. Credo is deliberately narrower
than Gloria: n. 68 has no "et festis" clause, so an ordinary Festum
does not get the Creed, unlike EF's RG 475(b)/(c). Two Missale-proper
exceptions (Holy Thursday evening Mass, the Easter Vigil Mass) are
cited from the Missal's own "Dicitur Gloria in excelsis" rubric, not
the IGMR, which is silent on both. The Requiem question is likewise
IGMR-silent (nn. 379-385 say nothing about Gloria/Credo); flagged as
an inference from the Missal's own consistent marker pattern, applied
only to the one Requiem-shaped slug the shipped OF data can construct
(all-souls), the same closed-population discipline Rubrics_ef's own
Colour.Black proxy uses.
preface returns None unconditionally, a measured verdict rather than
a stub. The module header transcribes the 2002 Missal's own "INDEX
PRAEFATIONUM" in full: nine of Preface.t's 15 EF-cited constructors
name an OF occasion with multiple distinct texts (Nativity x3, Lent
x4-9, Easter x5, Ascension x2, Holy_spirit x2, Bvm x5, Apostles x2,
Common split across two independent 7/8-member families, Requiem x5)
-- structurally lossy to collapse into one constructor. The other six
(Epiphany, Trinity, Sacred_heart, Christ_the_king, St_joseph,
Holy_cross) match cardinality with a single OF text apiece, and were
checked and rejected anyway: Preface.t's own constructors are RG-cited
by construction, and IGMR n. 364's own "quibus Missale Romanum
ditatur" (prefaces the Missal is ENRICHED with) is direct textual
evidence the 2002 collection is not a bare carry-over -- corroborated
directly for Sacred Heart, whose OF text was read and found to be a
different composition from its RG 491 namesake. Reusing any of the
six on cardinality and theme alone would be the exact "sounds similar"
trap the task brief warns against.
test/test_rubrics_of.ml: 26 table-driven cases. Every temporal-origin
row builds observed via Temporal_of.temporal on a real date; every
sanctoral-origin row (a solemnity in Lent, an ordinary Festum, a
weekday obligatory memorial, All Souls) pairs a real Temporal_of.temporal
result with an observed record copied verbatim from
data/of/calendar-2002.sexp, since no full OF Rite.t/Calendar pipeline
exists yet to derive one. Includes same-date Gloria/Credo pairs that
prove the two rules genuinely diverge (a Sunday of Advent, an ordinary
Festum) rather than one silently mirroring the other.
dune test: exit 0, 845 tests. make check (COLITUR_EXHAUSTIVE_SWEEP=1,
full 1583-9999 sweep): exit 0, 851 tests, 303.6s, both run unpiped in
the foreground. git diff --stat v1.0.0..HEAD -- lib/rites/rite_ef/
lib/kernel/ data/ef/ is empty.
Diffstat (limited to 'lib/rites/rite_of/rubrics_of.mli')
| -rw-r--r-- | lib/rites/rite_of/rubrics_of.mli | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/lib/rites/rite_of/rubrics_of.mli b/lib/rites/rite_of/rubrics_of.mli new file mode 100644 index 0000000..5325f12 --- /dev/null +++ b/lib/rites/rite_of/rubrics_of.mli @@ -0,0 +1,78 @@ +(** IGMR n. 53 (Gloria), n. 67-68 (Symbolum/Credo), n. 364-365 and the + Missale Romanum editio typica tertia (2002)'s own printed "INDEX + PRAEFATIONUM" (preface choice) -- see the .ml's own header for every + paragraph quoted in full and every branch's own citation. The OF + counterpart of {!Rite_ef.Rubrics_ef}; same shape, same three functions, + same [Rite.t] signatures -- but see [preface]'s own citation for why + this file's verdict on {!Colitur_kernel.Preface.t} differs sharply from + what {!Rite_ef.Rubrics_ef.preface} was able to build. *) + +open Colitur_kernel + +(** The one Requiem-shaped entity the shipped OF calendar can ever construct + as [observed] (All Souls, 2 November) -- see the .ml's own header for + why colour cannot serve as the Requiem proxy here the way + {!Colour.Black} does for {!Rite_ef.Rubrics_ef} (OF permits, but never + requires, black vestments for the dead -- IGMR n. 346 e -- and the + shipped data uses violet), so a closed slug list, checked against + [data/of/calendar-2002.sexp] directly, is the only signal available. + Exposed so the test suite can assert this population stays exactly + what it was measured to be, the same discipline + {!Rite_ef.Rubrics_ef.creed_apostle_slugs} already establishes. *) +val requiem_slugs : string list + +(** Whether the Gloria in excelsis is said at this day's Mass (IGMR n. 53). + [temporal] is read for exactly one fact -- n. 53's own "diebus dominicis + EXTRA TEMPUS ADVENTUS ET QUADRAGESIMAE": {!Rite_of.Temporal_of.temporal} + tags every Sunday of Advent/Lent/Easter [Sollemnitas] (the same rank a + genuine solemnity carries), so testing [observed.rank] alone would + wrongly grant an Advent or Lent Sunday the Gloria n. 53 explicitly + denies it -- the identical "read temporal, not observed, for a day-of- + week/season fact" discipline {!Rite_ef.Rubrics_ef.creed}'s own RG 475(a) + citation already establishes. [date] is read once, against the rite's + own (Gregorian) Easter, for the two Missale-Romanum-own-rubric + exceptions (Holy Thursday evening Mass, the Easter Vigil Mass) -- see + the .ml's own citation for the primary text, found in the Missal's + Proper of Time rather than the IGMR itself. [observed]'s [slug] is + checked once against {!requiem_slugs} -- see that value's own citation + for why this is an INFERENCE, not an IGMR paragraph, and exactly how + narrowly it is applied. *) +val gloria : + temporal:(Vocab_of.season, Vocab_of.rank) Temporal.t -> + observed:Vocab_of.rank Celebration.t -> + date:Date.t -> + bool + +(** Whether the Symbolum (Credo) is said, post-homily, at this day's Mass + (IGMR n. 67-68). Reads [temporal] for the identical reason [gloria] + does -- n. 68's own "diebus dominicis" is a plain, weekday-only fact, + unlike n. 53's Advent/Lent carve-out, so every Sunday qualifies + (Advent/Lent Sundays INCLUDED, unlike [gloria]) -- and [observed]'s + [rank] for n. 68's own "in sollemnitatibus", and [slug] against + {!requiem_slugs} for the identical reason [gloria] checks it. Narrower + than [gloria] on purpose: n. 68 has no "et festis" clause at all, so a + [Festum]-rank day (an ordinary feast) does NOT get the Credo -- the one + place this function's shape most visibly parts from EF's own RG + 475(b)/(c). [date] is accepted, for signature symmetry with [gloria]/ + [preface] and {!Rite.t}'s own shared shape, but genuinely unread: n. + 67-68 carries no Easter-relative window of its own, unlike RG 475(d)'s + three EF octaves -- checked, not assumed (see the .ml's own citation). *) +val credo : + temporal:(Vocab_of.season, Vocab_of.rank) Temporal.t -> + observed:Vocab_of.rank Celebration.t -> + date:Date.t -> + bool + +(** Which preface is said at this day's Mass (IGMR n. 364-365; the Missale's + own "INDEX PRAEFATIONUM"). ALWAYS [None] -- not a stub, a measured + verdict: see the .ml's own header for the full census of the 2002 + Missal's preface collection (over 50 individual texts across ~30 named + occasions) against {!Preface.t}'s 15 EF-cited constructors, and why + none of them is safe to reuse. Same three parameters as [gloria]/ + [credo], all three genuinely unread -- kept only for {!Rite.t}'s shared + shape. *) +val preface : + temporal:(Vocab_of.season, Vocab_of.rank) Temporal.t -> + observed:Vocab_of.rank Celebration.t -> + date:Date.t -> + Preface.t option |
