From b0ff86ae552b90613be21c52433f4180deba7758 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Sat, 15 Aug 2026 03:40:19 +0200 Subject: test(differential): fix round 1 -- Holy Week, Lent Ember, RG 69 Two Critical findings, both real: Holy Week (including the entire Sacred Triduum) was reading Passion Week's Masses -- the original colitur_keys widened lectio's single, conflated ini section into both weeks instead of Passion week alone. Narrowed to Passion week only; Holy Week's own four cleanest days (Monday, Tuesday, Thursday, Saturday) are hand-authored directly from the Missal, verified twice against both scans (C23); Holy Wednesday and Good Friday are genuinely multi-lesson liturgies with no single Epistle slot and are deliberately left unanswered, not guessed (C24). The Lenten Ember days were still dead keys: Temporal_ef computes ef-lent-ember-{wed,fri,sat}, lectio's ini names the same data ef-lent-1-{wednesday,friday,saturday}, and colitur_keys never translated it -- both engines independently fell through to the same wrong ferial answer, so even the differential stayed green (C22, a genuine lectio bug recorded for upstream). Fixed the instance and the class: colitur_keys gained the rename, and tools/bootstrap_lectionary.ml gained assert_reachable, sweeping Rite_ef.Temporal_ef.temporal at generation time so a translation table entry naming a slug colitur never computes dies loudly instead of shipping silently, plus an informational log of every real slug with no entry at all. C21 ("colitur's step 3 cannot reach a correct answer for the fixed Christmastide slugs") is retired, superseded rather than merely patched: the Nativity-Octave days now have their own direct Missal formulary (Tit. 3,4-7/Luc. 2,15-20, "Diebus infra octavam Nativitatis Domini"), resolved at step 2, not step 3 at all. That surfaced a real RG 69 gap underneath it: a Sunday landing 26-31 December should keep its own Office, not the fixed weekday placeholder, which Temporal_ef does not currently distinguish. C6's verdict is re-opened (open, not colitur) for the 19 of its 138 rows where this applies directly, and a new entry C25 (57 rows) records the same gap propagating one hop further through step 3 into Holy Name week. Both are out of this task's own scope -- a behaviour change to a shared, multi-round-reviewed kernel-adjacent function -- and recorded, not fixed, per the coordinator's own instruction. C6's own note is rewritten in full rather than layered with another correction; C18's stale trailing count is fixed to match its own pin; the Vigil-misapplication risk flagged as a Minor closed itself once the Nativity-Octave fix landed, confirmed by inspection rather than assumed. dune test: 358/358. COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force: 359/359. --- data/ef/lectionary.sexp | 62 ++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 27 deletions(-) (limited to 'data/ef/lectionary.sexp') diff --git a/data/ef/lectionary.sexp b/data/ef/lectionary.sexp index 41504c1..75b6ad4 100644 --- a/data/ef/lectionary.sexp +++ b/data/ef/lectionary.sexp @@ -1,15 +1,20 @@ ; data/ef/lectionary.sexp -- EF (1962) temporal lectionary (Epistle + ; Gospel citations, never scripture text), bootstrapped from lectio. ; Generator: tools/bootstrap_lectionary.ml -- do not hand-edit; re-run the -; generator against a newer lectio and commit the diff instead. +; generator against a newer lectio and commit the diff instead. Every +; emitted key is asserted, at generation time, to be a slug +; Rite_ef.Temporal_ef actually computes (see this generator's own +; [assert_reachable]) -- a dead key cannot ship silently again. ; ; Source: ../lectio/internal/caldata/tridentine-lectionary.ini ; SHA-256: fde533289fb620fea33386b0a3e733ada3c1d01f10a36d8a7f5a2b500c92740e -; 128 entries (119 ini sections translated/widened into colitur's own +; 129 entries (119 ini sections translated/widened into colitur's own ; Temporal_ef vocabulary via [colitur_keys]; 1 hand-authored from a -; second source file [vigil_entries]; 1 derived from an already- +; second source file [vigil_entries]; 4 hand-authored directly from +; the Missal [holy_week_entries]; 3 hand-authored directly from the +; Missal [nativity_octave_entries]; 1 derived from an already- ; translated entry above rather than re-typed [derived_entries] -- -; see this generator's own comments on all three). Regenerate with: +; see this generator's own comments on all five). Regenerate with: ; eval $(opam env) && dune exec tools/bootstrap_lectionary.exe -- ../lectio/internal/caldata/tridentine-lectionary.ini data/ef/lectionary.sexp ((ef-advent-2-monday (((part First) (reference "Rom 15:4-13")) @@ -128,24 +133,15 @@ (ef-holy-name-sunday (((part First) (reference "Gal 4:1-7")) ((part Gospel) (reference "Luke 2:33-40")))) - (ef-lent-1-friday - (((part First) (reference "Ezech 18:20-28")) - ((part Gospel) (reference "John 5:1-15")))) (ef-lent-1-monday (((part First) (reference "Ezech 34:11-16")) ((part Gospel) (reference "Matt 25:31-46")))) - (ef-lent-1-saturday - (((part First) (reference "1 Thess. 5:14-23")) - ((part Gospel) (reference "Matt 17:1-9")))) (ef-lent-1-thursday (((part First) (reference "Ezech 18:1-9")) ((part Gospel) (reference "Matt 15:21-28")))) (ef-lent-1-tuesday (((part First) (reference "Isa 55:6-11")) ((part Gospel) (reference "Matt 21:10-17")))) - (ef-lent-1-wednesday - (((part First) (reference "3 Kgs. 19:3-8")) - ((part Gospel) (reference "Matt 12:38-50")))) (ef-lent-2-friday (((part First) (reference "Gen 37:6-22")) ((part Gospel) (reference "Matt 21:33-46")))) @@ -209,6 +205,15 @@ (ef-lent-after-ashes-thursday (((part First) (reference "Isa 38:1-6")) ((part Gospel) (reference "Matt 8:5-13")))) + (ef-lent-ember-fri + (((part First) (reference "Ezech 18:20-28")) + ((part Gospel) (reference "John 5:1-15")))) + (ef-lent-ember-sat + (((part First) (reference "1 Thess. 5:14-23")) + ((part Gospel) (reference "Matt 17:1-9")))) + (ef-lent-ember-wed + (((part First) (reference "3 Kgs. 19:3-8")) + ((part Gospel) (reference "Matt 12:38-50")))) (ef-lent-sunday-1 (((part First) (reference "2 Cor. 6:1-10")) ((part Gospel) (reference "Matt 4:1-11")))) @@ -227,6 +232,15 @@ (ef-nativity (((part First) (reference "Heb 1:1-12")) ((part Gospel) (reference "John 1:1-14")))) + (ef-nativity-octave-day-5 + (((part First) (reference "Tit. 3, 4-7")) + ((part Gospel) (reference "Luc. 2, 15-20")))) + (ef-nativity-octave-day-6 + (((part First) (reference "Tit. 3, 4-7")) + ((part Gospel) (reference "Luc. 2, 15-20")))) + (ef-nativity-octave-day-7 + (((part First) (reference "Tit. 3, 4-7")) + ((part Gospel) (reference "Luc. 2, 15-20")))) (ef-nativity-vigil (((part First) (reference "Rom 1:1-6")) ((part Gospel) (reference "Matt 1:18-21")))) @@ -254,24 +268,18 @@ (ef-passiontide-1-wednesday (((part First) (reference "Lev 19:1-2, 11-19, 25")) ((part Gospel) (reference "John 10:22-38")))) - (ef-passiontide-2-friday - (((part First) (reference "Jer 17:13-18")) - ((part Gospel) (reference "John 11:47-54")))) (ef-passiontide-2-monday - (((part First) (reference "Jonas 3:1-10")) - ((part Gospel) (reference "John 7:32-39")))) + (((part First) (reference "Isai. 50, 5-10")) + ((part Gospel) (reference "Io. 12, 1-9")))) (ef-passiontide-2-saturday - (((part First) (reference "Jer 18:18-23")) - ((part Gospel) (reference "John 12:10-36")))) + (((part First) (reference "Col. 3, 1-4")) + ((part Gospel) (reference "Matt. 28, 1-7")))) (ef-passiontide-2-thursday - (((part First) (reference "Dan 3:25, 34-45.")) - ((part Gospel) (reference "Luke 7:36-50")))) + (((part First) (reference "1 Cor. 11, 20-32")) + ((part Gospel) (reference "Io. 13, 1-15")))) (ef-passiontide-2-tuesday - (((part First) (reference "Jer 11:18-20")) - ((part Gospel) (reference "Mark 14:32-72; 15, 1-46")))) - (ef-passiontide-2-wednesday - (((part First) (reference "Lev 19:1-2, 11-19, 25")) - ((part Gospel) (reference "John 10:22-38")))) + (((part First) (reference "Ier. 11, 18-20")) + ((part Gospel) (reference "Mark 14, 32-72; 15, 1-46")))) (ef-pentecost (((part First) (reference "Acts 2:1-11.")) ((part Gospel) (reference "John 14:23-31.")))) -- cgit v1.3