From 3c770951011d2fd4911cd98793683bef69ac2d27 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 18 Aug 2026 16:51:45 +0200 Subject: test(differential): seven classes closed -- agreement 93.9% to 97.1% lectio gained the Passiontide week split and thirteen lectionary entries. C23 230 -> 0 Holy Week's own six Masses C32 99 -> 0 C35 60 -> 0 the first weeks after Epiphany and Pentecost (RG 299) C33 46 -> 0 Corpus Christi C34 46 -> 0 the Sacred Heart C26 43 -> 0 Passion Tuesday C19 7 -> 0 the Holy Family week-index residue C1 75 -> 40 C31 63 -> 98 GREW The Passiontide split is the one that carried most of this. efWeek had no Passiontide case, so both weeks numbered 0 and every day of Holy Week took the slug of its Passion-week namesake -- one set of readings for two weeks with entirely different Masses. Good Friday was reading Passion Friday's. C31 growing is the same bookkeeping as C1's earlier growth and is recorded in its own note: C32 and C35 closed, and rows that carried several causes now carry only this one. Nothing new disagrees. 17 classes -> 10, 1019 rows -> 488, agreement 93.9% -> 97.1%. What remains is almost entirely NAMING rather than disagreement: C6 (119) is colitur's ef-nativity-octave-day-N against lectio's ef-christmas-N-weekday on days where both now read the same Mass, and C1 (40) is the same shape in the January window. --- test/test_differential.ml | 53 +---------------------------------------------- 1 file changed, 1 insertion(+), 52 deletions(-) (limited to 'test/test_differential.ml') diff --git a/test/test_differential.ml b/test/test_differential.ml index d7a5297..49d0395 100644 --- a/test/test_differential.ml +++ b/test/test_differential.ml @@ -164,7 +164,7 @@ let allow_list_path = "../data/ef/expected-divergences.sexp" deliberately, after re-running the exact command the provenance note names -- never by copying the actual value back in to make a mismatch pass, which would defeat the point of pinning it at all. *) -let fixture_sha256 = "d4501592818c4f1a4adb983b02e7b42c6f5c385de60963800dd4ab6151cca4a8" +let fixture_sha256 = "d42d53f5b73bd7cf0129f5f839c7d7d87955256a2c2061afd085d8747de290d6" (* Same technique tools/bootstrap_sanctoral.ml already uses for this exact purpose (that file's own comment: shelling out to the system's @@ -1211,11 +1211,6 @@ let layer_c_reason (l : row) (c : row) diffs = white where lectio (which builds no such office) is green -- C17's own shape, landing on the same day as this one. [First_f] is REQUIRED, so a colour-only Saturday still falls to C17 and cannot be absorbed here. *) - else if - List.mem c.slug trinity_week_slugs - && subset diffs [ First_f; Gospel_f; Colour_f ] - && List.mem First_f diffs - then Some "C35" else if (* C31 -- Task 9: the SAME rubric's own next sentence, "diebus ferialibus a 7 ad 12 ianuarii ante dominicam I post Epiphaniam... @@ -1242,50 +1237,6 @@ let layer_c_reason (l : row) (c : row) diffs = then Some "C31" else if is_bvm_saturday_row c diffs then Some "C17" else if diffs = [ Colour_f ] && List.mem c.slug audit_colour_corrected_slugs then Some "C18" - else if - List.mem (year_of_date l.date) epiphany_week_shift_years_2005_2050 - && starts_with ~prefix:"ef-time-after-epiphany-" c.slug - && subset diffs [ Colour_f; First_f; Gospel_f ] - then Some "C19" - else if - (* C32 -- Task 9: "Missa Dominicae Primae post Epiphaniam", Holy - Family's own week, the five non-Saturday weekdays. Checked AFTER - C19 deliberately: C19's own 7 "week shift" years already explain - this same slug family's own citation divergence there (a - DIFFERENT root cause, the week-numbering offset, not this task's - own fix) -- this entry must not re-claim those rows under a - citation-content reason C19 already owns, so its own population is - exactly the OTHER (non-shift-year) civil dates. A SUBSET guard, - the same reason as C31 immediately above: unlike C29/C30, THIS - slug family's own civil dates already carried a bare - Season/Colour_f divergence before this task (SAME slug on both - sides here, unlike C31 -- lectio's own season boundary alone, - RG 72-73 vs Epiphany), previously absorbed by C1's own generic - 6-13 January window (no [Slug_f] involved, so C1's own - [jan_6_13_slug] gate was never even reached). First_f/Gospel_f now - join that existing divergence -- ONE of the two, the same reason - as C31's own note. [_with_saturday]: this family's own Saturday IS - reachable by a step-3 walk landing on [ef-holy-name-sunday] - (unlike [ef-christmas-1-saturday]'s own walk, which structurally - cannot reach that far forward -- confirmed, not assumed, by the - pinned test_lectionary_ef.ml case for that one slug). *) - subset diffs [ Season; Colour_f; First_f; Gospel_f ] - && (List.mem First_f diffs || List.mem Gospel_f diffs) - && List.mem c.slug time_after_epiphany_1_weekday_slugs_with_saturday - then Some "C32" - else if - (* C33/C34 -- Task 9: two major movable feasts of the Lord that had NO - lectionary entry at all before this task (tools/ - bootstrap_lectionary.ml's own [movable_feast_entries]) -- lectio has - none either, so colitur and lectio used to independently fall back - to the SAME preceding-Sunday (Trinity's own) citation and silently - agree on the wrong answer, the "Holy Thursday violet in both" shape - CLAUDE.md's own validation-layers section names. Two ids, not one: - distinct feasts, distinct citations, the same discipline C33/C34's - neighbours already apply. *) - diffs = [ First_f; Gospel_f ] && String.equal c.slug "ef-corpus-christi" - then Some "C33" - else if diffs = [ First_f; Gospel_f ] && String.equal c.slug "ef-sacred-heart" then Some "C34" else if diffs = [ First_f; Gospel_f ] && String.equal l.first "-" && String.equal l.gospel "-" && List.mem c.slug lectio_no_reading_slugs @@ -1296,8 +1247,6 @@ let layer_c_reason (l : row) (c : row) diffs = 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 promoted_feast_slugs && diffs = [ First_f; Gospel_f ] then Some "C38" - 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 None (* ---------------------------------------------------------------------- *) -- cgit v1.3