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.ml28
1 files changed, 26 insertions, 2 deletions
diff --git a/test/test_oracle.ml b/test/test_oracle.ml
index 370eec0..58ceb26 100644
--- a/test/test_oracle.ml
+++ b/test/test_oracle.ml
@@ -796,9 +796,32 @@ let m16_dates = [ "2026-03-27" ]
citation-count coincidence: RG 110's own text is unconditional ("in
Officio et Missa S. Petri semper fit commemoratio S. Pauli, ET
VICISSIM"), and the calendarium's own June table states the SAME
- pattern already built for the other two pairs, word for word. *)
+ pattern already built for the other two pairs, word for word.
+
+ IDENTITY-GATED, fix round 1 (coordinator finding F2): the predicate
+ below now also requires [c.c_commemorations] to be EXACTLY the single
+ entry [commemoration-of-st-peter] -- not merely that some [Comm_presence]
+ diff exists on these two dates. Proved necessary, not decorative: the
+ reviewer added a SECOND, fabricated `Add` directive on 30 June (a
+ `bogus-fabricated-companion` slug) to a scratch copy of
+ data/ef/adjustments.sexp and found the whole suite stayed green with the
+ pre-fix, presence-only predicate -- the exact C6/C14 failure mode (a
+ Layer-C-style predicate that pins a date and a diff SHAPE but not WHICH
+ candidate). This matters more here than for any other entry in this
+ file: `commemoration-of-st-peter` is corroborated by NEITHER oracle (it
+ rests on a scan reading alone, data/ef/adjustments.sexp's own citation),
+ so this allow-list predicate is the only place in the whole suite that
+ could assert what colitur actually emits here -- and, pre-fix, asserted
+ nothing about it. Mirrors C16's own identity guard
+ (`String.equal c.slug "ef-holy-name"`, test_differential.ml) at the
+ analogous decision point in this file. *)
let m19_dates = [ "2026-06-30"; "2027-06-30" ]
+let m19_commemoration_matches (c : colitur_row) =
+ match c.c_commemorations with
+ | [ (slug, _, _, _) ] -> String.equal slug "commemoration-of-st-peter"
+ | _ -> false
+
let layer_m_reason (c : colitur_row) (o : oracle_row) diffs =
if diffs = [] then None
(* M1's own subset widened (this task): colitur's observed day on both
@@ -850,7 +873,8 @@ let layer_m_reason (c : colitur_row) (o : oracle_row) diffs =
&& subset diffs [ Comm_identity_mismatch; Observed_identity_unresolved ]
then Some "M16"
else if diffs = [ Observed_identity_unresolved ] then Some "M18"
- else if List.mem c.c_date m19_dates && diffs = [ Comm_presence ] then Some "M19"
+ else if List.mem c.c_date m19_dates && diffs = [ Comm_presence ] && m19_commemoration_matches c then
+ Some "M19"
else None
(* ---------------------------------------------------------------------- *)