diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-15 04:48:59 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-15 04:48:59 +0200 |
| commit | 9947a28f3a40bd8ac36892dcf5aad59d9e6f847c (patch) | |
| tree | 0367842a8862a9bd7476bc06197276ab3cef9c54 /test/test_differential.ml | |
| parent | 96bf100a4de32bd5f3887ffdb15b59b8bbd0376b (diff) | |
| download | colitur-9947a28f3a40bd8ac36892dcf5aad59d9e6f847c.tar.gz colitur-9947a28f3a40bd8ac36892dcf5aad59d9e6f847c.zip | |
test(differential): fix round 3 -- two more Ember Saturdays, doc fixes
Two Ember Saturdays shipped an apostle's Mass verbatim from lectio's
own ini, the exact shape already found and fixed for Passion Tuesday
(C26): ef-advent-ember-sat carried St Thomas the Apostle's Mass (Eph
2:19-22 / John 20:24-29, 21 December) instead of the real "Sabbato
Quatuor Temporum Adventus" (2 Thess 2:1-8 / Luke 3:1-6); ef-september-
ember-sat carried St Matthew's Mass (Ezek 1:10-14 / Matt 9:9-13, 21
September) instead of the real "Sabbato Quatuor Temporum septembris"
(Heb 9:2-12 / Luke 13:6-17). Both verified against both primary-source
scans independently. Both readings are explicitly labelled "Lectio
Epistolae" in the Missal on both days, so neither needed the "last
lesson before the Gospel" convention Holy Wednesday/Good Friday relied
on -- a textual fact, not an editorial choice.
Fixed at the source in tools/bootstrap_lectionary.ml: colitur_keys
excludes both wrong ini sections; a new ember_saturday_corrections list
hand-authors the real citations. New allow-list entries C27/C28 (40
rows each, not the naive 46 -- traced to the identical 6 civil years
where 21 September and 21 December, always exactly 91 days apart, land
on a Saturday and the fixed saint's feast wins outright). Both values
pinned in test_lectionary.ml and mutation-tested.
Also: C25's per-weekday breakdown was mislabelled (right multiset,
rotated weekday labels) in both test_differential.ml and expected-
divergences.sexp -- corrected to Wednesday 6/Thursday 19/Friday
19/Saturday 13, and the claim that this split came directly from the
comparator's own output is narrowed to what's actually true (only the
total, 57, does). C26's scan2 citation range was extended to include
the Gospel (previously stopped after the Epistle).
lib/kernel/liturgical_day.mli's "citations always empty until Plan 4"
comment is now stale on this branch -- left untouched (Task 11's own
documentation pass), noted in the task report so it isn't lost.
dune test: 358 tests green; COLITUR_EXHAUSTIVE_SWEEP=1: 359 green.
Diffstat (limited to 'test/test_differential.ml')
| -rw-r--r-- | test/test_differential.ml | 65 |
1 files changed, 61 insertions, 4 deletions
diff --git a/test/test_differential.ml b/test/test_differential.ml index 998a8fa..655a054 100644 --- a/test/test_differential.ml +++ b/test/test_differential.ml @@ -840,6 +840,50 @@ let holy_week_slugs = entry). 43 + 3 = 46, the full domain, with no residue. *) let passion_tuesday_slug = "ef-passiontide-1-tuesday" +(* C27/C28 (task 8, fix round 3, coordinator review, Important): two more + Ember Saturdays shipping a saint's Mass verbatim from lectio's ini -- + the exact C26 shape, found by re-review after the fixes above had + already closed the shapes both this file's own reachability check and + the earlier rounds' fixes could catch. Both are multi-lesson Ember + Masses, but neither needed C23/C24's "last lesson before the Gospel" + CONVENTION: both readings are explicitly labelled "Lectio Epistolae" in + the Missal, exactly like Holy Saturday's own Epistle, distinct from the + several numbered prophecies that precede them -- a textual fact, not an + editorial choice (tools/bootstrap_lectionary.ml's own + [ember_saturday_corrections] comment has the full citations and both + scans' line references). + + - C27, [ef-advent-ember-sat] ("Sabbato Quatuor Temporum Adventus"): + 2 Thess 2:1-8 / Luke 3:1-6. lectio's own ini value (Eph 2:19-22 / + John 20:24-29) is St Thomas the Apostle's Mass (21 December). + - C28, [ef-september-ember-sat] ("Sabbato Quatuor Temporum + septembris"): Heb 9:2-12 / Luke 13:6-17. lectio's own ini value + (Ezek 1:10-14 / Matt 9:9-13) is St Matthew's Mass (21 September, the + calling of Matthew). + + Both genuinely observed offices, confirmed against the real resolver, + not assumed. Gated on the literal slug and [diffs] staying exactly + [First_f; Gospel_f] (identity already agrees -- season/slug/rank/colour + were never the problem, only the reading). Derived directly from the + OCaml comparator's own failure output, not hand-counted first and + cross-checked after: C27 40, C28 40 -- not 46, and both traced, not + merely accepted, to the IDENTICAL 6 civil years (2013, 2019, 2024, + 2030, 2041, 2047): 21 September and 21 December are always exactly 91 + days apart, an exact multiple of 7, so they fall on the SAME weekday + every year -- confirmed directly, not merely arithmetic (`date -d` + agrees for all six). In precisely these 6 years both fall on a + Saturday, so Matthew's and Thomas's own FIXED feast days coincide with + their respective Ember Saturday, and the SAINT wins outright (a real, + correct occurrence result, RG 91's own table -- both engines agree, so + these rows never reach C27/C28 at all). This is also the likely origin + of lectio's own wrong ini values in the first place: bootstrapped from + whichever single calendar year lectio's own generator was run against, + which happened to be one of these coincidence years, generalising a + real but YEAR-SPECIFIC coincidence into a permanent template value. 40 + + 6 = 46, the full domain, no residue. *) +let advent_ember_sat_slug = "ef-advent-ember-sat" +let september_ember_sat_slug = "ef-september-ember-sat" + (* C25 (task 8, fix round 1, coordinator review, Important 3(b)) -- [verdict open], the SAME RG 69 gap C6 above re-opened, one hop removed. RG 69 (docs/research/scan1.txt:625-631, word for word: "De dominica @@ -892,10 +936,21 @@ let passion_tuesday_slug = "ef-passiontide-1-tuesday" differ, not re-asserted as a proven arithmetic rule a third time. Gated on the literal 4-slug family and [diffs] staying exactly [First_f; Gospel_f] (identity already agrees -- this is a pure content - consequence). Derived directly from the OCaml - comparator's own failure output, not hand-counted first and cross- - checked after: 57 (19 + 19 + 13 + 6, Wednesday/Thursday/Friday/ - Saturday respectively). *) + consequence). + + CORRECTED, fix round 3 (coordinator review): the TOTAL, 57, comes + directly from the OCaml comparator's own failure output (its own + [expected_rows] pin, cross-checked against a full test run). The + PER-WEEKDAY split does not -- the comparator reports per-id totals + only, never a per-weekday breakdown -- so that finer split was + produced by a separate pass over the raw per-slug failure list, not + the comparator itself, and a prior version of this note wrongly + implied otherwise. That prior version also rotated the labels: it + read "19 + 19 + 13 + 6, Wednesday/Thursday/Friday/Saturday + respectively" (the right four numbers, the wrong weekday each was + attached to). Re-measured directly against the real resolver: + Wednesday 6, Thursday 19, Friday 19, Saturday 13 (6 + 19 + 19 + 13 = + 57, no residue). *) let rg69_one_hop_slugs = [ "ef-christmas-1-wednesday"; "ef-christmas-1-thursday"; "ef-christmas-1-friday"; "ef-christmas-1-saturday" ] @@ -1006,6 +1061,8 @@ let layer_c_reason (l : row) (c : row) diffs = else if List.mem c.slug lent_ember_slugs && diffs = [ First_f; Gospel_f ] then Some "C22" 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" + else if String.equal c.slug september_ember_sat_slug && diffs = [ First_f; Gospel_f ] then Some "C28" else None (* ---------------------------------------------------------------------- *) |
