summaryrefslogtreecommitdiff
path: root/lib/rites/rite_ef/precedence_ef.mli
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-21 15:07:44 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-21 15:07:44 +0200
commit35c11c7ccf95acfb35a7ec34edfa86d92da60e4a (patch)
tree63e2e0c8f9c6317f68a52961c7770f72c3ba79c0 /lib/rites/rite_ef/precedence_ef.mli
parent0eae32f67145065b0e4960650ae06c293fd9f272 (diff)
parentf3ac69d0a679200a48716be065a0fa2e70a2c6da (diff)
downloadcolitur-35c11c7ccf95acfb35a7ec34edfa86d92da60e4a.tar.gz
colitur-35c11c7ccf95acfb35a7ec34edfa86d92da60e4a.zip
merge: RG 33's third omission trigger
The last unbuilt clause in the EF module. A II/III-class vigil is omitted entirely when the feast it precedes fails to keep its own day -- 1 744 days across 1583-9999, three verified shapes, zero unexplained. Rule and vigil inventory independently confirmed by O'Connell 1964, outside the Divinum Officium -> missalemeum -> lectio lineage. The 10 affected days in 2005-2050 are allow-listed as C39; no external day-level witness exists, which the note states rather than glosses.
Diffstat (limited to 'lib/rites/rite_ef/precedence_ef.mli')
-rw-r--r--lib/rites/rite_ef/precedence_ef.mli35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/rites/rite_ef/precedence_ef.mli b/lib/rites/rite_ef/precedence_ef.mli
index 419613a..4c2523a 100644
--- a/lib/rites/rite_ef/precedence_ef.mli
+++ b/lib/rites/rite_ef/precedence_ef.mli
@@ -217,6 +217,41 @@ val disposition :
loser:Vocab_ef.rank Precedence.candidate ->
Precedence.disposition
+(** RG 33's third omission trigger. Given a candidate, the feast it is a
+ VIGIL of, when that vigil is one this rule can omit; [None] otherwise --
+ which is every candidate that is not one of the five II/III-class vigils
+ in the 1962 universal calendar.
+
+ Answers only the identity question. Whether the feast actually kept its
+ own day is {!Colitur_kernel.Calendar}'s to determine, because only the
+ kernel holds the settled post-transfer placement of the whole year; see
+ {!Colitur_kernel.Precedence.rules.vigil_feast} for the division of labour
+ and for why the feast is NAMED here rather than inferred there.
+
+ The I-class vigils (Nativity Eve, Pentecost Vigil) are outside this rule
+ by RG 33's own wording and outside losing at all by RG 30, so they are
+ absent from the table and this returns [None] for them -- the same
+ argument {!is_omissible_vigil} already makes for the rule's other two
+ triggers. *)
+val vigil_feast : Vocab_ef.rank Precedence.candidate -> Slug.t option
+
+(** The (vigil slug, feast slug) pairs {!vigil_feast} answers from, exposed so
+ the test suite can assert both directions against the shipped sanctoral
+ data: that every slug named here exists, and that no II/III-class vigil in
+ the data is missing from it. Neither is checkable by a type, and both fail
+ SILENTLY -- an unmatched slug simply makes RG 33 inert for that entry. *)
+val vigil_feast_table : (string * Slug.t) list
+
+(** Whether a slug names a vigil, by either of the two conventions this
+ calendar's data uses (a "-vigil" suffix from the temporal cycle, a
+ "vigil-of-" prefix from the sanctoral bootstrap). Exposed for the same
+ table-drift assertions as {!vigil_feast_table}. *)
+val is_vigil : string -> bool
+
+(** Whether a rank is one RG 33 can omit -- II or III class. I-class vigils are
+ outside the rule (RG 30). Exposed alongside {!is_vigil}. *)
+val is_omissible_vigil : Vocab_ef.rank -> bool
+
(** Slug prefix marking a celebration as one of RG 91 entry 17's days within
the Octave of the Nativity (29-31 Dec -- 26-28 Dec are Stephen, John, the
Innocents, sanctoral, never this prefix). Also colitur's own convention