summaryrefslogtreecommitdiff
path: root/test/test_oracle.ml
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_oracle.ml')
-rw-r--r--test/test_oracle.ml47
1 files changed, 46 insertions, 1 deletions
diff --git a/test/test_oracle.ml b/test/test_oracle.ml
index f1d1a89..01938e1 100644
--- a/test/test_oracle.ml
+++ b/test/test_oracle.ml
@@ -1381,6 +1381,33 @@ let m26_dates =
citation fields are not, discovered by this task). *)
let m27_dates = [ "2026-12-25"; "2027-12-25" ]
+(* M31 (celebrant-rubrics-phase1, Bug 2, 2026-08-22) -- the six ferias
+ between the Ascension and the Friday before the Vigil of Pentecost that
+ repeat the Ascension's own Mass by an explicit marginal rubric in the
+ Proprium de Tempore (data/ef/lectionary.sexp's own [ascension_week_
+ entries], full citation there and in this file's sibling
+ data/ef/expected-divergences.sexp's own C41). Only three of the six
+ civil dates this window's own [c_date] range can reach are actually
+ unoccupied in 2026-2027: 2026-05-21, 2026-05-22 and 2027-05-14 (the
+ other three fall to a real sanctoral feast both engines already agree
+ on). missalemeum -- Divinum Officium's own lineage, the SAME lineage
+ lectio inherited this defect from before colitur's own bootstrap --
+ still walks these ferias back to the preceding Sunday's Mass, the
+ pre-fix answer colitur itself used to give; [Observed_identity_
+ unresolved] fires alongside because none of the three is a SANCTORAL-
+ origin day (the mapping this whole file's own header describes cannot
+ name a TEMPORAL office's title either way, unrelated to this cause). *)
+let m31_dates = [ "2026-05-21"; "2026-05-22"; "2027-05-14" ]
+
+(* The exact six slugs data/ef/lectionary.sexp's own [ascension_week_entries]
+ answers -- reused by [classify_2038]/[classify_2035] below, which key on
+ slug identity rather than a date list (those two live windows are not
+ scoped the way the 2026-2027 fixture is). *)
+let ascension_week_slugs =
+ [ "ef-easter-6-friday"; "ef-easter-7-monday"; "ef-easter-7-tuesday"; "ef-easter-7-wednesday";
+ "ef-easter-7-thursday"; "ef-easter-7-friday"
+ ]
+
(* The oracle's own row went unused when M2 -- its one reader, via
[o.o_title] -- was closed/removed (see the comment above [m1_dates]), and
was kept as a named, typed parameter rather than dropped from the
@@ -1512,6 +1539,8 @@ let layer_m_reason (c : colitur_row) (o : oracle_row) diffs =
[ Rank; Colour_f; Comm_presence; Comm_count; Observed_identity_mismatch;
Comm_identity_unresolved; First_mismatch; Gospel_mismatch ]
then Some "M30"
+ else if List.mem c.c_date m31_dates && subset diffs [ Observed_identity_unresolved; First_mismatch; Gospel_mismatch ]
+ then Some "M31"
else None
(* ---------------------------------------------------------------------- *)
@@ -1992,6 +2021,16 @@ let classify_2038 (c : colitur_row) (o : oracle_row) diffs =
List.mem c.c_date [ "2035-08-09"; "2035-08-14"; "2038-08-09"; "2038-08-14" ]
&& diffs = [ Colour_f ]
then Some "VIGIL-COLOUR-RG128 (M29, colitur; see C37)"
+ (* The Ascension-repeat rubric (celebrant-rubrics-phase1, Bug 2; see M31
+ in this file's own 2026-2027 [layer_m_reason] and C41 in
+ data/ef/expected-divergences.sexp for the full citation). 2038 carries
+ three unoccupied instances the 2026-2027 window did not (2038-06-07/
+ 08/09, all week-7 weekdays); 2035 carries one (2035-05-08). Gated on
+ colitur's own slug rather than on the date list this window's sibling
+ windows use, the same style [m21_2038_slugs] already establishes for
+ a live-window slug-keyed class. *)
+ else if List.mem c.c_observed_slug ascension_week_slugs && diffs = [ First_mismatch; Gospel_mismatch ] then
+ Some "ASCENSION-WEEK-REPEAT (M31, colitur; register, Bug 2)"
else None
(* COMMEMORATIONS join the live-window comparison (2026-08-18).
@@ -2129,7 +2168,13 @@ let test_2038_class_counts () =
("MISSAL-TWO-PART-CITATION (register 6.9)", 1);
("COMM-IDENTITY-UNRESOLVED (temporal-origin, no English name -- M15's limit)", 2);
("PERPETUA-COMMON (register 6.8)", 1);
- ("PETER-COMPANION-ABSENT-UPSTREAM (M19)", 1)
+ ("PETER-COMPANION-ABSENT-UPSTREAM (M19)", 1);
+ (* celebrant-rubrics-phase1, Bug 2: 2038-06-07/08/09 (the Monday,
+ Tuesday and Wednesday of the week after the Sunday after the
+ Ascension) are unoccupied that year, all three landing on the
+ Ascension-repeat rubric -- see M31 (2026-2027 window) and C41
+ (data/ef/expected-divergences.sexp) for the full citation. *)
+ ("ASCENSION-WEEK-REPEAT (M31, colitur; register, Bug 2)", 3)
]
|> List.sort compare
in