aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/test_differential.ml23
-rw-r--r--test/test_lectionary_ef.ml29
-rw-r--r--test/test_oracle.ml8
3 files changed, 50 insertions, 10 deletions
diff --git a/test/test_differential.ml b/test/test_differential.ml
index eb83c0e..c9173d6 100644
--- a/test/test_differential.ml
+++ b/test/test_differential.ml
@@ -667,7 +667,22 @@ let is_bvm_saturday_row (c : row) diffs =
[season_colour] is already white, so a real bug there could slip
through unnoticed by colour alone) would be silently absorbed here
too. *)
- diffs = [ Colour_f ] && String.equal c.weekday "saturday" && String.equal c.rank "class-4"
+ (* WIDENED (2026-08-17): [First_f]/[Gospel_f] join [Colour_f], because the
+ CAUSE did not change, it grew. colitur builds RG 78's office (hence white
+ where lectio is green) and now also says RG 309(a)'s own Mass for it,
+ where lectio -- having no such office at all -- says the feria's. One
+ cause, one entry: splitting the colour from the citations would file two
+ ids against a single divergence.
+
+ At least one difference is required, not merely a subset, so this can
+ never match a day that agrees entirely. The colour difference is ABSENT
+ in Christmastide and Paschaltide (RG 119 already made those seasons
+ white), which is why those rows carry citations alone -- the
+ [c.colour = "white"] guard still holds there, being colitur's own value
+ either way. *)
+ subset diffs [ Colour_f; First_f; Gospel_f ]
+ && (List.mem Colour_f diffs || List.mem First_f diffs || List.mem Gospel_f diffs)
+ && String.equal c.weekday "saturday" && String.equal c.rank "class-4"
&& String.equal c.colour "white" && String.equal c.subject "bvm"
(* C19 (task 8, branch ef-lectionary): the Time-after-Epiphany WEEK-INDEX
@@ -1252,7 +1267,11 @@ let layer_c_reason (l : row) (c : row) diffs =
diffs = [ First_f; Gospel_f ] && String.equal l.first "-" && String.equal l.gospel "-"
&& List.mem c.slug lectio_no_reading_slugs
then Some "C20"
- else if List.mem c.slug rg69_one_hop_slugs && diffs = [ First_f; Gospel_f ] then Some "C25"
+ (* C25 -- CLOSED, BVM Saturday Mass (2026-08-17), predicate removed: 0 rows.
+ Its days are unoccupied IV-class Saturdays, so they carry RG 78's office
+ and now RG 309(a)'s Mass for it, which answers before step 3's walkback
+ is reached. They still differ from lectio, but for C17's cause, and are
+ filed there. See data/ef/expected-divergences.sexp's own closure note. *)
else if List.mem c.slug holy_week_slugs && diffs = [ First_f; Gospel_f ] then Some "C23"
else if String.equal c.slug passion_tuesday_slug && diffs = [ First_f; Gospel_f ] then Some "C26"
else if String.equal c.slug advent_ember_sat_slug && diffs = [ First_f; Gospel_f ] then Some "C27"
diff --git a/test/test_lectionary_ef.ml b/test/test_lectionary_ef.ml
index 3ed6987..a5a0f6e 100644
--- a/test/test_lectionary_ef.ml
+++ b/test/test_lectionary_ef.ml
@@ -180,8 +180,14 @@ let test_step3_advent_feria_resumes_sunday () =
only the Holy-Name-Sunday alias was wrong, not this citation itself). *)
let test_step3_christmas_feria_resumes_sunday () =
Alcotest.(check (list string))
- "Saturday of Holy Name week resumes the Nativity-Octave Sunday's Mass"
- [ "Gal 4:1-7"; "Luke 2:33-40" ]
+ (* SUPERSEDED, not merely re-pinned (BVM Saturday Mass, 2026-08-17): this
+ Saturday is an unoccupied IV-class Saturday, so it carries RG 78's own
+ office -- and now RG 309(a)'s Mass for it, which answers before step 3's
+ walkback is ever reached. The Nativity-Octave Sunday's Mass is no longer
+ what this day says, and should not be: the day's office is Our Lady's.
+ Mass II, "A Nativitate Domini usque ad Purificationem". *)
+ "Saturday of Holy Name week says the BVM Saturday Mass, not the Sunday's"
+ [ "Titus 3:4-7"; "Luke 2:15-20" ]
(refs (day 2026 1 3))
(* Fix round 1 (coordinator review, Important finding 1): the original test
@@ -328,8 +334,13 @@ let test_step1_proper_francis_of_paola () =
[sanctoral_office = true] and all 357 tests stayed green). *)
let test_step4_leaves_a_temporal_office_alone_on_shipped_data () =
Alcotest.(check (list string))
- "4 July 2026 (a BVM Saturday) keeps its ferial Mass"
- [ "1 Pet 3:8-15."; "Matt 5:20-24." ]
+ (* CORRECTED (BVM Saturday Mass, 2026-08-17). This pinned the GAP -- the
+ office was Our Lady's while the Mass stayed the feria's -- which was the
+ honest thing to assert while RG 309(a) was unimplemented. It is
+ implemented now, so the day says Mass V, "A festo Ss. Trinitatis usque
+ ad sabbatum ante dominicam I Adventus". *)
+ "4 July 2026 (a BVM Saturday) says the BVM Saturday Mass"
+ [ "Ecclus 24:14-16"; "Luke 11:27-28" ]
(refs (day 2026 7 4))
(* THE GUARD, pinned. The guard is a no-op on shipped data by design, so the
@@ -368,8 +379,14 @@ let test_step4_guard_refuses_a_common_assigned_to_a_ferial_slug () =
"the synthetic table really does resolve that ferial slug to a Common" true
(Lectionary_ef.commons_for ~commons:hostile ferial_slug <> None);
Alcotest.(check (list string))
- "4 July 2026 keeps its ferial Mass even so: step 4 refuses a temporal office"
- [ "1 Pet 3:8-15."; "Matt 5:20-24." ]
+ (* The point of this test is UNCHANGED and still worth asserting: step 4
+ (the Common route) must refuse a temporal-origin office, so a Commons
+ assignment cannot leak onto the BVM Saturday. What changed is only what
+ answers instead -- formerly the feria's Mass via step 2, now RG 309(a)'s
+ own via the BVM step. If step 4 ever did fire here it would produce a
+ Common's readings, which are neither of these. *)
+ "4 July 2026: step 4 still refuses a temporal office; the BVM Mass answers"
+ [ "Ecclus 24:14-16"; "Luke 11:27-28" ]
(refs (day_with ~commons:hostile 2026 7 4))
(* THE DATA ASSERTION, and the one that cannot drift: after Task 6, every
diff --git a/test/test_oracle.ml b/test/test_oracle.ml
index 0735cb6..e90a45a 100644
--- a/test/test_oracle.ml
+++ b/test/test_oracle.ml
@@ -1892,8 +1892,12 @@ let test_2038_class_counts () =
class is adjudicated elsewhere and merely RE-CONFIRMED here, in a year
entirely independent of the one those rulings were made in. *)
let expected =
- [ ("BVM-SATURDAY-MASS (M26 shape 1)", 13);
- ("CHRIST-THE-KING-WEEK (M26 shape 2b)", 2);
+ (* BVM-SATURDAY-MASS (M26 shape 1) is GONE from this list, not zeroed:
+ colitur now says RG 309(a) own Mass on the BVM Saturday office, so
+ those 13 days no longer differ at all. An id with no rows must not be
+ declared -- the count assertion rejects an unused one, which is what
+ keeps this list honest. *)
+ [ ("CHRIST-THE-KING-WEEK (M26 shape 2b)", 2);
("CHRISTMAS-MULTI-MASS (M27)", 1);
("COLOUR (M21)", 7);
("JUDITH (M28, register 6.6)", 2);