aboutsummaryrefslogtreecommitdiff
path: root/test/test_fiuv_ordo.ml
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_fiuv_ordo.ml')
-rw-r--r--test/test_fiuv_ordo.ml77
1 files changed, 47 insertions, 30 deletions
diff --git a/test/test_fiuv_ordo.ml b/test/test_fiuv_ordo.ml
index 24eeed0..5c009a9 100644
--- a/test/test_fiuv_ordo.ml
+++ b/test/test_fiuv_ordo.ml
@@ -68,7 +68,7 @@ let sha256_of_file path =
| Some i -> String.sub line 0 i
| None -> Alcotest.failf "unexpected sha256sum output for %s: %S" path line)
-let fixture_sha256 = "a52cc4dae32ce4d07446c9daa86287cb99796f6584b3d571e3a3cbdc93fca396"
+let fixture_sha256 = "a744a2dbc7c8cf09590005e956c973f316209f3cf102b8035edadebf764110de"
let real_layer () =
let layer =
@@ -112,6 +112,12 @@ type ordo_row = {
gloria : bool option;
credo : bool option;
praef : string option;
+ alt_te_deum : bool option;
+ (** the "-VEL-" Cum-Sanctissima-alternative office's own Te Deum,
+ when this day prints one -- see tools/extract_fiuv_ordo.ml's own
+ [row.alt_te_deum] citation. Captured, not compared here: closing
+ F3 needed [te_deum] itself to stop reading it, not a new
+ colitur-side axis to check it against. *)
}
[@@deriving sexp]
@@ -361,57 +367,68 @@ let test_gloria_matches_or_is_explained () =
let test_te_deum_coverage () =
let ordo = ordo_rows () in
let no_te_deum = List.filter (fun o -> o.te_deum = None) ordo in
- Alcotest.(check int) "the unresolved-Te-Deum population matches this fixture's own measured figure" 127
+ Alcotest.(check int) "the unresolved-Te-Deum population matches this fixture's own measured figure" 133
(List.length no_te_deum)
let describe_te_deum_mismatch (o : ordo_row) (t : colitur_te_deum_row) =
Printf.sprintf "%s %S: colitur te_deum=%b, Ordo te_deum=%b (rank=%s commemoration=%b)" o.date o.title t.t_te_deum
(Option.get o.te_deum) (V.rank_to_string t.t_rank) t.t_has_commemoration
-(* F2 (every I-class and omissible vigil) and F4 (the three September
- Ember days) were BOTH found against the FIRST, buggy extraction (see
- the fixture's own provenance header, "RE-EXTRACTED" note, and
- {!Rite_ef.Rubrics_ef.te_deum}'s own 237(a) comment for the full
- account of the extractor bug and its fix) -- re-run against the
- corrected data, NEITHER fires any more: colitur's own answer already
- matched the CORRECTED Ordo on every one of those 7 dates, all along.
+(* F2 (every I-class and omissible vigil), F4 (the three September Ember
+ days) and NOW F3 (the privileged-Lenten/Passiontide-feria-plus-
+ commemoration shape) were ALL THREE found against a buggy extraction
+ (see the fixture's own provenance header, "FIX HISTORY" section, and
+ {!Rite_ef.Rubrics_ef.te_deum}'s own 237(a) comment for F2/F4's own
+ account) -- re-run against the corrected data, NONE of the three fires
+ any more.
+
+ F3 specifically was NEVER a Te Deum defect on either side: the six
+ dates print a complete SECOND office after a literal "-VEL-" ("or")
+ separator -- the same saint kept outright under the 2020 decree Cum
+ Sanctissima, with its OWN "Ad Mat. ... Te Deum" lessons -- and
+ tools/extract_fiuv_ordo.ml's own [extract_te_deum] used to scan the
+ WHOLE block unbounded, so on these six days (whose PRIMARY, strict-
+ 1962 office states no "Ad Mat." of its own at all) it silently read
+ the SECOND office's Te Deum instead. Fixed at the source
+ (tools/extract_fiuv_ordo.ml's own [split_at_alt_office]); the fixture
+ re-extracted from the SAME pdftotext dump. colitur's own answer
+ ([false], the primary office's own ferial Matins) was never wrong --
+ the OTHER side of the comparison was reading the wrong printed office.
+ [te_deum] now reads [None] (unresolved, not [false]) on these six
+ dates, because the PRIMARY office's own text states no "Ad Mat." at
+ all, so there is nothing to positively confirm either direction from
+ -- consistent with [te_deum]'s own documented meaning elsewhere in
+ this fixture.
+
+ NOTE, so a reader arriving here from data/ef/expected-divergences-lms.sexp's
+ own L5 does not draw the wrong conclusion: F3 never "contradicted" L5
+ in the first place, and its removal does not corroborate L5 either.
+ Both were the SAME underlying fact read two different ways -- L5's own
+ 16 LMS dates and these 6 FIUV dates are exactly the shape the 2020
+ decree Cum Sanctissima changes, and colitur, by CLAUDE.md's own binding
+ decision 2, models the 1962 core without it. See L5's own rewritten
+ entry for the full account, including the FIUV "-VEL-" dual printing
+ as the decisive evidence for BOTH files.
+
Removed rather than kept as dead code with an [expected 0] pin, the
same "an entry that stops firing is a real change, not silently
absorbed" discipline data/ef/expected-divergences-lms.sexp's own L1/L3
closures already establish -- see that file's own history for the
- precedent this follows.
-
- F3, the privileged-Lenten/Passiontide-feria-plus-commemoration shape
- L5 (data/ef/expected-divergences-lms.sexp) already found for Gloria,
- REMAINS: 6 instances, unaffected by the extractor fix (none of the six
- raw source lines used "sine Te Deum" at all -- confirmed directly
- against the pdftotext dump, see F3's own citation). CONTRADICTS L5,
- not corroborates it: FIUV's own [gloria] is [false] on all six dates
- (agreeing with colitur), while its [te_deum] is [true] on the same six
- -- see F3's own citation in data/ef/expected-divergences-fiuv.sexp for
- the full account of why Gloria and Te Deum diverge on the identical
- day. *)
-let is_f3_lenten_commemoration (_ : ordo_row) (t : colitur_te_deum_row) =
- t.t_has_commemoration && t.t_rank = V.Class3
+ precedent this follows. *)
let test_te_deum_matches_or_is_explained () =
let ordo = ordo_rows () in
let colitur = colitur_te_deum_rows () in
let unexplained = ref [] in
- let f3_count = ref 0 in
List.iter2
(fun (o : ordo_row) (t : colitur_te_deum_row) ->
if not (String.equal o.date t.t_date) then Alcotest.failf "misaligned: ordo %s vs colitur %s" o.date t.t_date;
match o.te_deum with
| None -> ()
- | Some otd ->
- if Bool.equal otd t.t_te_deum then ()
- else if is_f3_lenten_commemoration o t then incr f3_count
- else unexplained := describe_te_deum_mismatch o t :: !unexplained)
+ | Some otd -> if Bool.equal otd t.t_te_deum then () else unexplained := describe_te_deum_mismatch o t :: !unexplained)
ordo colitur;
Alcotest.(check (list string)) "every Te Deum mismatch is named in the allow-list -- none unexplained" []
- (List.rev !unexplained);
- Alcotest.(check int) "F3 (Lenten privileged feria + commemoration) count" 6 !f3_count
+ (List.rev !unexplained)
let suite =
( "fiuv-ordo",