From 5d236c75c557a7e9ed4a8a852b8089aca48b594e Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Mon, 17 Aug 2026 13:02:39 +0200 Subject: test(oracle): fix round 1 -- C30 disclosure, RG 17(a) misattribution, M26 shapes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three Important findings from coordinator review of 8d1eb25, all fixed. 1. C30's own note claimed its 91-row population "is C25's OWN former population, before this task narrowed it" -- false. Independently re-derived against the real resolver (pre-fix vs post-fix binary) and the lectio fixture: only 44 of the 91 rows were ever in C25 (Wed 6/ Thu 19/Fri 19, matching C25's own fix-round-3 breakdown exactly); the other 47 (all of Monday/Tuesday, plus part of Wednesday/Friday) previously matched lectio outright -- both engines independently landing on the same wrong value -- and are newly allow-listed only because colitur is now right. Rewritten to the same "both engines silently agreed on the wrong answer" pattern C33/C34 already used. 2. "Diebus ferialibus" is not RG 17(a) -- RG 17(a) states only the day-identity privilege; the ferial-Mass rubrics are Mass-propers rubrics, a distinction the register's own §6.3 already drew before this task's first pass blurred it in code/allow-list comments. A further slip: C31/C32 called their own rubric "RG 17(a)'s own next/ third sentence" when it is a different rubric block ~230 lines away, in Holy Family's (not Holy Name's) own feast propers. Fixed the attribution chain throughout tools/bootstrap_lectionary.ml, data/ef/expected-divergences.sexp's C29-C34, and (gitignored, outside this commit) docs/research/rules-register.md -- closed the §6.3 park, added §6.5 recording all four citations with corrected attribution. Quotes and line numbers were already right; only the chain of custody to RG 17(a) was wrong. 3. M26's own 30 rows classify into two nameable shapes, not "three confirmed shapes" with an unexplained 23-row residue that was in fact empty: 21 rows are RG 78's own already-documented BVM votive-Mass gap; 9 rows are a second, distinct gap -- a week whose own Sunday was displaced by a movable named feast (Trinity->Corpus Christi, "Missa Dominicae I post Pentecosten"; Christ the King), where the Missal requires the displaced Sunday's own Mass to keep informing that week's ferias but step 3 walks back to the displacing feast's citation instead -- proven directly by colitur's own citation on the Christ- the-King rows being literally that feast's own Gospel. verdict open unchanged (not fixed here); the shape is now named instead of buried. Minors: section count corrected 1458->1456 (four places); "exactly one candidate, zero ambiguous" corrected to "correctness rests on ordering, not uniqueness" (2 of 1456 sections genuinely yield two candidates, Holy Saturday's own Lectio, both years); the stale "nothing in layers 3-5 compares citations" claim corrected (only layer 5 still doesn't); M18's note corrected (five new entries not six; ~18 of its remaining 352 rows only agree now because of this task's own fixes, not "already" before it); "five" corrected to "six" otherwise-unoccupied Saturdays in bootstrap_lectionary.ml; scan2 quotes softened where OCR-garbled. Also done outside the git-tracked files: the step-4 (Commons) coverage gap is now recorded in data/ef/expected-divergences-missalemeum.sexp's own header, not only the commit body and the (gitignored) report. dune test: 358 tests green. COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force: 359 tests green, 95.7s. --- tools/extract_missalemeum_oracle.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'tools/extract_missalemeum_oracle.py') diff --git a/tools/extract_missalemeum_oracle.py b/tools/extract_missalemeum_oracle.py index 4b010e2..1abc574 100644 --- a/tools/extract_missalemeum_oracle.py +++ b/tools/extract_missalemeum_oracle.py @@ -57,11 +57,20 @@ # under 40 characters that contains a chapter:verse-shaped digit pair # (`\d+\s*[:,.]\s*\d+`, matching all three separators actually used in # this source -- "Titus 2:11-15", "4 Kings, 5:1-15", "John 20. 19-31"). -# Verified exhaustively over the whole fixture (all 1 458 Lectio/ -# Evangelium sections across the 728 days that carry one): exactly one -# candidate per section, zero ambiguous, zero false positives from a -# longer rubric sentence. TWO days (Good Friday, both years -- the "Missa -# Praesanctificatorum" liturgy) have no "Lectio"/"Evangelium" section at +# Verified exhaustively over the whole fixture (all 1 456 Lectio/ +# Evangelium sections, 728 days x 2) -- CORRECTED, fix round 1 +# (coordinator review): this used to claim +# "exactly one candidate per section, zero ambiguous". WRONG: 2 of the +# 1 456 sections (Holy Saturday's own "Lectio", both years) yield TWO +# candidates, ['Col 3:1-4', 'Ps 117, 1'] -- the second is the Tractus +# verse that follows the real Epistle citation in the same paragraph, +# also matching the verse-shaped regex. The fixture is still correct on +# both rows (Col 3:1-4 IS the real citation) because [extract_citation] +# below returns candidates[0] and the real citation happens to come +# FIRST in the text -- correctness here rests on ORDERING, not +# uniqueness, and this header previously overclaimed the latter. TWO +# days (Good Friday, both years -- the "Missa Praesanctificatorum" +# liturgy) have no "Lectio"/"Evangelium" section at # all (a multi-lesson structure instead, "Lectiones"/"Passio", with no # single reading occupying the Epistle/Gospel slot this schema assumes, # the SAME shape colitur's own test_lectionary.ml records for its own -- cgit v1.3