From 96bf100a4de32bd5f3887ffdb15b59b8bbd0376b Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Sat, 15 Aug 2026 04:16:24 +0200 Subject: test(differential): fix round 2 -- Good Friday, Passion Tuesday, stale header Critical, and worse than what it replaced: removing a lectionary key does not mean "no reading" to Lectionary_ef.readings -- it means step 3 silently resumes the preceding Sunday. Good Friday, which has no Mass at all, was emitting Palm Sunday's own Epistle and Passion narrative every year; Holy Wednesday had the same defect. Fixed by authoring both days fully: the Gospel was always unambiguous and is now always authored; the Epistle uses the same "last lesson before the Gospel" convention this file's own Lenten Ember Wednesday entry already established for an identical two-peer-lesson shape, applied for consistency rather than invented to close this gap. C24 is retired, folded into a widened C23 covering all six Holy Week days. Important: Passion Tuesday was shipping Holy Tuesday's Mass, a defect the previous round's own footnote had found and left unrecorded. Fixed at the source -- colitur_keys now excludes lectio's own (wrong) ini section for this one weekday rather than translating it; a new passion_tuesday_entry hand-authors the real Missal citation (Dan 14:27, 28-42 / John 7:1-13, both scans). New entry C26 records the resulting divergence, 43 of 46 years, traced (not merely counted) to three years where a competing I-class feast impedes the day entirely. Important: the allow-list header was stale one level up, still naming and restating the diagnosis of an id (C21) retired in the previous round. Rewritten in full rather than layered with another correction. Minors: all three Lent Ember values now pinned (only Wednesday was before); C22's citation corrected to attribute the date-anchor text and the rank text to their own separate sources; assert_reachable's own comment no longer overclaims what it can catch; C25's falsified reasoning replaced with the directly observed fact (a first replacement derivation was itself found wrong on a second reading and is recorded as rejected, not silently discarded); hand-authored citations standardised to English book names with a colon, matching this file's own dominant convention, with one stated exception where a value must stay byte-identical to lectio's own data rather than be reformatted. dune test: 358/358. COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force: 359/359. --- test/test_lectionary.ml | 96 +++++++++++++++++++++++++++++-------------------- 1 file changed, 58 insertions(+), 38 deletions(-) (limited to 'test/test_lectionary.ml') diff --git a/test/test_lectionary.ml b/test/test_lectionary.ml index 8fcf8e9..e88f103 100644 --- a/test/test_lectionary.ml +++ b/test/test_lectionary.ml @@ -84,21 +84,25 @@ let test_ef_data_file_loads () = (* 119 lectio ini sections, translated/widened/renamed into colitur's own Temporal_ef vocabulary, PLUS hand-authored/derived entries (tools/bootstrap_lectionary.ml's own [colitur_keys]/ - [vigil_entries]/[holy_week_entries]/[nativity_octave_entries]/ - [derived_entries] comments have the full account, task 8, branch - ef-lectionary, fix round 1): "ef-christmas-sunday-0" widens into - itself PLUS "ef-holy-name-sunday" (+1); the six Passiontide/Lent- - Ember sections translate/rename 1:1 (no count change: Passiontide - no longer widens into two colitur keys since fix round 1's - Critical 1 correction, and the three Lent Ember sections rename - rather than widen); one hand-authored entry sourced from lectio's - SANCTORAL calendar, not this lectionary ini ([ef-nativity-vigil], - +1); four hand-authored directly from the Missal, Holy Week - (+4); three hand-authored directly from the Missal, the fixed - Nativity-Octave days (+3); one entry derived from an - already-translated one rather than re-typed ([ef-holy-name], +1). - 119 + 1 + 1 + 4 + 3 + 1 = 129. *) - Alcotest.(check int) "entry count" 129 + [vigil_entries]/[holy_week_entries]/[passion_tuesday_entry]/ + [nativity_octave_entries]/[derived_entries] comments have the full + account, task 8, branch ef-lectionary, fix rounds 1-2): + "ef-christmas-sunday-0" widens into itself PLUS "ef-holy-name- + sunday" (+1); the three Lent Ember sections rename 1:1 (no count + change); "ef-passiontide-0-tuesday" is EXCLUDED (fix round 2, + Important -- it is Holy Tuesday's data, not Passion Tuesday's, + -1); the other five Passiontide sections rename 1:1 (no count + change); one hand-authored entry sourced from lectio's SANCTORAL + calendar, not this lectionary ini ([ef-nativity-vigil], +1); SIX + hand-authored directly from the Missal, all of Holy Week (+6, + fix round 2 -- Wednesday and Friday added, the first pass's + Critical bug); ONE hand-authored directly from the Missal, + Passion Tuesday's own real citation (+1, fix round 2); three + hand-authored directly from the Missal, the fixed Nativity-Octave + days (+3); one entry derived from an already-translated one + rather than re-typed ([ef-holy-name], +1). + 119 + 1 - 1 + 1 + 6 + 1 + 3 + 1 = 131. *) + Alcotest.(check int) "entry count" 131 (List.length (Lectionary.entries l)); (match Lectionary.find l (slug "ef-lent-1-monday") with | Some [ a; b ] -> @@ -127,40 +131,56 @@ let test_ef_data_file_loads () = check_entry "ef-pentecost-ember-sat" "Rom 5:1-5." "Luke 4:38-44."; (* Critical 2 fix (coordinator review round 1): the Lenten Ember days, previously dead keys under lectio's own "ef-lent-1-" - naming -- now reachable under colitur's own slugs. *) + naming -- now reachable under colitur's own slugs. Minor, fix + round 2 (coordinator review): all THREE are pinned, not just + Wednesday -- a mutation on Friday's or Saturday's own value used + to leave the whole suite green. *) check_entry "ef-lent-ember-wed" "3 Kgs. 19:3-8" "Matt 12:38-50"; + check_entry "ef-lent-ember-fri" "Ezech 18:20-28" "John 5:1-15"; + check_entry "ef-lent-ember-sat" "1 Thess. 5:14-23" "Matt 17:1-9"; (* Passiontide widens into Passion week ONLY now (Critical 1 fix) -- "ef-passiontide-1-monday" keeps lectio's own citation; "ef-passiontide-2-monday" (Holy Monday) is Missal-sourced, - DIFFERENT text, hand-authored in [holy_week_entries]. *) + DIFFERENT text, hand-authored in [holy_week_entries]. Fix round 2 + (Important): "ef-passiontide-1-tuesday" no longer carries lectio's + own (wrong -- Holy Tuesday's) ini value; it is hand-authored from + the Missal's own real Passion Tuesday Mass, [passion_tuesday_entry]. *) check_entry "ef-passiontide-1-monday" "Jonas 3:1-10" "John 7:32-39"; - check_entry "ef-passiontide-2-monday" "Isai. 50, 5-10" "Io. 12, 1-9"; - check_entry "ef-passiontide-2-tuesday" "Ier. 11, 18-20" "Mark 14, 32-72; 15, 1-46"; - check_entry "ef-passiontide-2-thursday" "1 Cor. 11, 20-32" "Io. 13, 1-15"; - check_entry "ef-passiontide-2-saturday" "Col. 3, 1-4" "Matt. 28, 1-7"; + check_entry "ef-passiontide-1-tuesday" "Dan 14:27, 28-42" "John 7:1-13"; + check_entry "ef-passiontide-2-monday" "Isa 50:5-10" "John 12:1-9"; + (* Gospel punctuation ("15, 1-46") intentionally kept as lectio's own + ini already has it -- see bootstrap_lectionary.ml's own + [holy_week_entries] comment on this one entry. *) + check_entry "ef-passiontide-2-tuesday" "Jer 11:18-20" "Mark 14:32-72; 15, 1-46"; + (* Critical fix, round 2: Wednesday and Good Friday were left entirely + absent by the first pass, which meant step 3 quietly resumed the + preceding Sunday's Mass there (Good Friday emitting PALM SUNDAY's + Epistle and Passion) -- the FIRST pass's own reasoning ("neither + day has a single Epistle") was right about the First slot alone; + the Gospel is always unambiguous and is now always authored, and + First uses the SAME "last lesson before the Gospel" convention + this file's own Lenten Ember Wednesday entry above already uses + for an identical two-lesson shape. *) + check_entry "ef-passiontide-2-wednesday" "Isa 53:1-12" "Luke 22:39-71; 23:1-53"; + check_entry "ef-passiontide-2-thursday" "1 Cor 11:20-32" "John 13:1-15"; + check_entry "ef-passiontide-2-friday" "Ex 12:1-11" "John 18:1-40; 19:1-42"; + check_entry "ef-passiontide-2-saturday" "Col 3:1-4" "Matt 28:1-7"; (* Important 3(a) fix (coordinator review round 1): the fixed Nativity-Octave days now carry their own direct Missal formulary ("Diebus infra octavam Nativitatis Domini"), not Holy Name Sunday's (a first guess, measured wrong, reverted -- see [nativity_octave_entries]'s own comment). *) - check_entry "ef-nativity-octave-day-5" "Tit. 3, 4-7" "Luc. 2, 15-20"; - check_entry "ef-nativity-octave-day-6" "Tit. 3, 4-7" "Luc. 2, 15-20"; - check_entry "ef-nativity-octave-day-7" "Tit. 3, 4-7" "Luc. 2, 15-20"; - (* These three MUST stay absent -- Holy Wednesday and Good Friday are - deliberately not hand-authored (multi-lesson liturgies, no single - Epistle slot; see [holy_week_entries]'s own comment for why), and - Lent's OWN "ef-lent-1-wednesday/friday/saturday" keys must not + check_entry "ef-nativity-octave-day-5" "Titus 3:4-7" "Luke 2:15-20"; + check_entry "ef-nativity-octave-day-6" "Titus 3:4-7" "Luke 2:15-20"; + check_entry "ef-nativity-octave-day-7" "Titus 3:4-7" "Luke 2:15-20"; + (* Lent's OWN "ef-lent-1-wednesday/friday/saturday" keys must not reappear once renamed away (colitur never computes them as its - own slug at all). A regression net for those decisions, not - merely documentation of them. *) - let check_absent name = - match Lectionary.find l (slug name) with - | None -> () - | Some _ -> Alcotest.fail (name ^ ": must stay absent -- see bootstrap_lectionary.ml") - in - check_absent "ef-passiontide-2-wednesday"; - check_absent "ef-passiontide-2-friday"; - check_absent "ef-lent-1-wednesday" + own slug at all) -- a regression net for that decision, not + merely documentation of it. *) + match Lectionary.find l (slug "ef-lent-1-wednesday") with + | None -> () + | Some _ -> + Alcotest.fail "ef-lent-1-wednesday: must stay absent -- see bootstrap_lectionary.ml" let suite = [ ("find present", `Quick, test_find_present); -- cgit v1.3