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.ml51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/test_oracle.ml b/test/test_oracle.ml
index 3a9e499..c1d0e6a 100644
--- a/test/test_oracle.ml
+++ b/test/test_oracle.ml
@@ -910,6 +910,52 @@ let m19_commemoration_matches (c : colitur_row) =
| [ (slug, _, _, _) ] -> String.equal slug "commemoration-of-st-peter"
| _ -> false
+(* M21 -- ef-sanctoral-audit task (2026-08-14): the SAME closed 14-slug list
+ test_differential.ml's own [audit_colour_corrected_slugs] uses (RG 124,
+ data/ef/adjustments.sexp's own audit-block comment has the full
+ citation), now checked against THIS window's own oracle. Two of the
+ fourteen (`apollinaris`, 23 July; `josaphat`, 14 November) and one
+ further entry not on the Feast-status list at all (`chair-of-st-peter`,
+ 22 February, a Feast in its own right, RG124(b)) disagree with
+ missalemeum's own colour TOO, not merely lectio's -- a SECOND,
+ independent data source repeating the same defect (Apollinaris and
+ Josaphat are each martyr-bishops, RG 124(e); Peter's Chair is an
+ Apostle's own feast day, RG 124(b) -- both scan-verified word for word,
+ data/ef/adjustments.sexp's own comment), so this is not a case of
+ "missalemeum corroborates colitur, only lectio disagrees": the primary
+ TEXT is what decides it, and missalemeum is simply wrong on these three
+ the same way lectio is on all fourteen. [Comm_identity_unresolved] is
+ allowed alongside on 22 February specifically: that date's OTHER
+ commemoration (the ordinary Lenten feria RG 110 rides in alongside Paul)
+ is TEMPORAL-origin and already unresolved for identity, the same
+ pre-existing gap [M15]/[M18] elsewhere in this file document -- a
+ different axis, not something this entry's own citation explains, so it
+ is admitted by the subset check rather than folded into the citation. *)
+let m21_colour_slugs =
+ [ "conversion-of-st-paul"; "chair-of-st-peter"; "john-of-san-fecundo"; "ephrem-of-syria";
+ "julia-of-falconieri"; "john-gualbert"; "camillus-de-lellis"; "jerome-emiliani"; "apollinaris";
+ "martha"; "alphonsus-liguori"; "augustine"; "rose-of-lima"; "josaphat" ]
+
+(* M22 -- ef-sanctoral-audit task: `barbara` (4 December, data/ef/
+ adjustments.sexp's own new `Add`) is a genuine DATA GAP in missalemeum
+ too, the identical shape M1/M3/M8/M10/M19 above already document (each
+ "missalemeum does not implement X"): both years' own 4 December row
+ shows only the Advent feria's own temporal commemoration, no Barbara at
+ all, not even displaced -- missalemeum never constructed a candidate for
+ her either, the same absence lectio's own tridentine-calendar.ini has
+ (data/ef/adjustments.sexp's own `Add barbara` comment). Identity-gated
+ the same way [M19] is (coordinator finding F2): the predicate requires
+ colitur's own admitted set to be EXACTLY the temporal feria plus
+ `barbara`, not merely that SOME count diff exists on this date, so a
+ future unrelated regression on 4 December cannot silently hide behind
+ this citation. *)
+let m22_dates = [ "2026-12-04"; "2027-12-04" ]
+
+let m22_commemoration_matches (c : colitur_row) =
+ match List.map (fun (slug, _, _, _) -> slug) c.c_commemorations with
+ | [ a; b ] -> (String.equal a "barbara") <> (String.equal b "barbara")
+ | _ -> false
+
(* [_o] (the oracle's own row) is unused now that M2 -- its one reader, via
[o.o_title] -- is closed/removed (see the comment above [m1_dates]):
every remaining predicate below reads only [c]/[diffs]. Kept as a named,
@@ -965,6 +1011,11 @@ let layer_m_reason (c : colitur_row) (_o : oracle_row) diffs =
else if List.mem c.c_date m19_dates && diffs = [ Comm_presence ] && m19_commemoration_matches c then
Some "M19"
else if
+ List.mem c.c_observed_slug m21_colour_slugs && diffs = [ Colour_f ]
+ then Some "M21"
+ else if List.mem c.c_date m22_dates && diffs = [ Comm_count ] && m22_commemoration_matches c then
+ Some "M22"
+ else if
List.mem c.c_date m20_dates
&& subset diffs [ Comm_identity_mismatch; Observed_identity_unresolved ]
&& m20_commemoration_matches c