diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_differential.ml | 23 | ||||
| -rw-r--r-- | test/test_lectionary_ef.ml | 29 | ||||
| -rw-r--r-- | test/test_oracle.ml | 8 |
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); |
