aboutsummaryrefslogtreecommitdiff
path: root/test/test_oracle.ml
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_oracle.ml')
-rw-r--r--test/test_oracle.ml37
1 files changed, 36 insertions, 1 deletions
diff --git a/test/test_oracle.ml b/test/test_oracle.ml
index 129c43b..7ee3848 100644
--- a/test/test_oracle.ml
+++ b/test/test_oracle.ml
@@ -1334,6 +1334,20 @@ let m25_dates = [ "2026-03-09"; "2026-03-24"; "2027-03-01"; "2027-03-16" ]
fix seen from the lectio side, and register 6.20 on the shared lineage.
Spans all three oracle windows. 2026-08-09 is absent because it is a
Sunday that year and the vigil never occurs; checked with `date -d`. *)
+(* M30 (ef-sanctoral-status) -- `ubaldus` (16 May) and `didacus` (13 Nov),
+ promoted from Commemoration_only to Feast on the Missal's own universal
+ calendarium ("III classis" outright, no commemoration rubric, and a Mass
+ entry of their own in the Proprium). missalemeum keeps them as
+ commemorations, so on these days colitur observes the SAINT where the
+ oracle observes the feria: rank, observed identity and both citations
+ differ together, and the commemoration colitur used to emit is gone.
+ Colour differs only on 13 November, where the ferial green gives way to
+ the confessor's white; 16 May is in Paschaltide, already white. The same
+ population as C38 in the lectio differential -- and, as there, the oracle
+ here is colitur's own discarded ancestor rather than an independent
+ witness (register 6.20). *)
+let m30_dates = [ "2026-05-16"; "2026-11-13"; "2027-11-13" ]
+
let m29_dates =
[ "2026-08-14"; "2027-08-09"; "2027-08-14"; "2035-08-09"; "2035-08-14"; "2038-08-09";
"2038-08-14" ]
@@ -1493,6 +1507,11 @@ let layer_m_reason (c : colitur_row) (o : oracle_row) diffs =
&& subset diffs [ Observed_identity_unresolved; First_mismatch; Gospel_mismatch ]
then Some "M27"
else if List.mem c.c_date m29_dates && subset diffs [ Colour_f ] then Some "M29"
+ else if List.mem c.c_date m30_dates
+ && subset diffs
+ [ Rank; Colour_f; Comm_presence; Comm_count; Observed_identity_mismatch;
+ Comm_identity_unresolved; First_mismatch; Gospel_mismatch ]
+ then Some "M30"
else None
(* ---------------------------------------------------------------------- *)
@@ -1844,7 +1863,19 @@ let classify_2038 (c : colitur_row) (o : oracle_row) diffs =
nh = 0 || at 0
in
let first_is s = match c.c_first with Some f -> contains f s | None -> false in
- if contains title "Mass of the B. V. M." then Some "BVM-SATURDAY-MASS (M26 shape 1)"
+ (* ef-sanctoral-status: `didacus`, promoted to Feast on the Missal's own
+ calendarium. 13 November 2038 is a SATURDAY, so before the promotion the
+ day kept RG 78's votive Office of the BVM (nothing else occupied it) and
+ after it the III-class feast does. Classified here explicitly, ahead of
+ every other branch, because without it the day falls through to the
+ BVM-Saturday branch and is labelled as the very office the promotion
+ REMOVED -- a label that would read as "still a BVM Saturday" and hide the
+ real cause. Same population as M30 in the 2026-2027 window and C38 in the
+ lectio differential. 16 May 2038 is a Sunday, so `ubaldus` is impeded and
+ never reaches this window at all. *)
+ if c.c_date = "2038-11-13" then
+ Some "PROMOTED-FEAST-RG-CALENDARIUM (M30, colitur; see C38)"
+ else if contains title "Mass of the B. V. M." then Some "BVM-SATURDAY-MASS (M26 shape 1)"
else if first_is "Col 1:12-20" then Some "CHRIST-THE-KING-WEEK (M26 shape 2b)"
else if diffs = [ Colour_f ] && List.mem c.c_observed_slug m21_2038_slugs then Some "COLOUR (M21)"
else if first_is "Judith" then Some "JUDITH (M28, register 6.6)"
@@ -2069,6 +2100,10 @@ let test_2038_class_counts () =
Paschaltide. 2 of 2 possible -- neither 9 nor 14 August 2038 is a
Sunday, so both vigils are actually observed that year. *)
("VIGIL-COLOUR-RG128 (M29, colitur; see C37)", 2);
+ (* ef-sanctoral-status: 13 November 2038 is a Saturday, so the
+ promoted `didacus` displaces RG 78's BVM Office there. 1 of 2
+ possible: 16 May 2038 is a Sunday and `ubaldus` is impeded. *)
+ ("PROMOTED-FEAST-RG-CALENDARIUM (M30, colitur; see C38)", 1);
("COMM-NAME-FORM (same entity, different English name)", 2);
("COMM-ONLY-TIE-BREAK (RG-under-determined convention -- register 6.16)", 1);
("JOSEPH-ANNUNCIATION-TRANSFER-ORDER (C14's own collision)", 2);