diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-17 13:02:39 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-17 13:02:39 +0200 |
| commit | 5d236c75c557a7e9ed4a8a852b8089aca48b594e (patch) | |
| tree | 59686baed56d78eff5255e31e0f677ebe32d044d /test/test_oracle.ml | |
| parent | 8d1eb25a311e16ddb7bf89d2b21fb1ca0aa058a7 (diff) | |
| download | colitur-5d236c75c557a7e9ed4a8a852b8089aca48b594e.tar.gz colitur-5d236c75c557a7e9ed4a8a852b8089aca48b594e.zip | |
test(oracle): fix round 1 -- C30 disclosure, RG 17(a) misattribution, M26 shapes
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.
Diffstat (limited to 'test/test_oracle.ml')
| -rw-r--r-- | test/test_oracle.ml | 138 |
1 files changed, 85 insertions, 53 deletions
diff --git a/test/test_oracle.ml b/test/test_oracle.ml index 41d8a2e..1ad4b1f 100644 --- a/test/test_oracle.ml +++ b/test/test_oracle.ml @@ -234,9 +234,13 @@ let real_lectionary () = (* The Commons (data/ef/commons.sexp) travel the same caller-supplied seam as the lectionary above, and [~commons] is required rather than defaulted - so that no caller can silently run with none -- nothing in layers 3-5 - compares reading citations, so a rite quietly missing its Commons would - be invisible. Loaded here even where this file asserts nothing about + so that no caller can silently run with none. CORRECTED, fix round 1 + (coordinator review): this used to claim "nothing in layers 3-5 compares + reading citations" -- stale since Task 8 (layer 3) and this task itself + (layer 4, this file). Layer 5 (test_golden.ml's own [describe]) still + has no citation field at all, so it alone would still miss a rite + quietly missing its Commons; layers 3/4 compare citations directly and + would not. Loaded here even where this file asserts nothing about readings, so that the rite under test is the same one bin/main.ml assembles. *) let real_commons () = @@ -1161,57 +1165,85 @@ let m24_dates = [ "2026-04-01"; "2026-04-02"; "2027-03-24"; "2027-03-25" ] predicate already applies to a citation-vocabulary gap. *) let m25_dates = [ "2026-03-09"; "2026-03-24"; "2027-03-01"; "2027-03-16" ] -(* M26 -- Task 9: the large remaining population, one single root cause. - {!Rite_ef.Lectionary_ef.readings}'s own header comment already names - this LIMIT, not a rubric dispute this task settled: step 3 ("a feria - with no proper says the preceding SUNDAY's Mass") is colitur's only - fallback mechanism, and its own WARRANT is "lectio's own observed - behaviour... not a confirmed Missal citation" -- register's own - standing note. missalemeum's own ferial-Mass selection is more - granular than that single rule in (at least) three distinct ways this - task's own investigation found and confirmed against the primary - source, but did NOT build (a genuine, understood, ALREADY-DOCUMENTED - architecture gap, the SAME shape data/ef/expected-divergences.sexp's - own C6/C25 entries already carry for the sibling lectio differential, - and Task 6's own residual concern 4/5, "the BVM Saturday Office still - emits its feria's Mass... needs... a season-keyed selection among five - formularies" -- RG 309(a), "iuxta temporum diversitatem"): - (1) a rotating VOTIVE MASS OF THE BVM ("Missae de sanctae Mariae in - sabbato" I-V and their Time-after-Pentecost siblings, missalemeum's own - "II/III/V Mass of the B. V. M." titles) on an otherwise-unoccupied - feria, not only a Saturday -- 2026-01-03/2026-01-10/2027-01-02/ - 2027-01-09 are RG 78's own BVM SATURDAY Office specifically (Task 6's - own named open item; colitur's own step-3 fallback, not the votive - Mass, is what these four rows actually show -- 2026-01-03/2027-01-09 - are `ef-christmas-1-saturday`, C25's own unchanged population in the - sibling lectio differential; 2026-01-10/2027-01-02 are - `ef-christmas-2-saturday`); the rest of this entry's own population +(* M26 -- Task 9: the remaining population, one root cause, + TWO NAMEABLE SHAPES -- CORRECTED, fix round 1 (coordinator review, + Important 3): a prior version of this entry described three shapes, + the third an unexplained "23-row residue... not narrowed to a single + citable rule at all". That bucket was EMPTY -- every one of the 30 + dates classifies cleanly into one of the two shapes below; the + "residue" framing buried a real, nameable defect instead of recording + it. {!Rite_ef.Lectionary_ef.readings}'s own header comment already + names the underlying LIMIT, not a rubric dispute this task settled: + step 3 ("a feria with no proper says the preceding SUNDAY's Mass") is + colitur's only fallback mechanism, and its own WARRANT is "lectio's + own observed behaviour... not a confirmed Missal citation" -- + register's own standing note. missalemeum's own ferial-Mass selection + is more granular than that single rule in two distinct, CONFIRMED ways + (the same "needs a season-keyed selection mechanism, new behaviour not + new data" shape data/ef/expected-divergences.sexp's own C6/C25 entries + already carry for the sibling lectio differential, and Task 6's own + residual concern 4/5, "the BVM Saturday Office still emits its feria's + Mass... needs... a season-keyed selection among five formularies" -- + RG 309(a), "iuxta temporum diversitatem"): + + SHAPE 1 -- 21 rows: a rotating VOTIVE MASS OF THE BVM ("Missae de + sanctae Mariae in sabbato" I-V and their Time-after-Pentecost + siblings, missalemeum's own "II/III/V Mass of the B. V. M." titles) on + an otherwise-unoccupied feria, not only a Saturday -- 2026-01-03/ + 2026-01-10/2027-01-02/2027-01-09 are RG 78's own BVM SATURDAY Office + specifically (Task 6's own named open item; colitur's own step-3 + fallback, not the votive Mass, is what these four rows actually show + -- 2026-01-03/2027-01-09 are `ef-christmas-1-saturday`, C25's own + unchanged population in the sibling lectio differential; 2026-01-10/ + 2027-01-02 are `ef-christmas-2-saturday`); the other 17 of these 21 are ordinary weekday ferias in Time after Pentecost showing the SAME - votive-Mass title; - (2) a NAMED weekly formula distinct from the plain Sunday-repeat rule - for at least one week this task's own primary-source reading found by - accident while fixing a DIFFERENT gap (Holy Family's own week, - "Missa Dominicae Primae post Epiphaniam" -- built, tools/ - bootstrap_lectionary.ml's own [epiphanytide_opening_entries]) -- - 2026-06-02/03 and 2027-05-24 are the SAME shape for a different week - (the ferias between Trinity Sunday and Corpus Christi, "Missa - Dominicae I post Pentecosten", 1 John 4:8-21/Luke 6:36-42, visible in - the raw scan while researching Corpus Christi's own Mass -- see - docs/research/scan1.txt around line 21800 -- but NOT independently - verified as a general "every week has its own named formula" rule the - way the January window was, and NOT built here); - (3) later Time-after-Pentecost weeks whose own votive/ferial answer - this task's investigation did not narrow to a single citable rule at - all (2026-10-26 through 2026-11-28, 2027-11-03 through 2027-11-27). - ALL THREE are variations on the identical root limitation, not three - separate bugs, and none is safe to fix piecemeal inside this task's own - scope (extending layer 4 + triage) without the same real, dedicated, - TDD/mutation-tested unit of work C6/C25 and Task 6's own open item - already call for -- a season-keyed ferial/votive-Mass-selection - mechanism, new behaviour, not new data. Verdict open, the SAME fourth - verdict M15/M18 already establish for a genuine comparator/architecture - LIMIT, honestly counted rather than silently absorbed or left failing - without explanation. A literal date list, not a shape predicate (no + votive-Mass title (2026-02-14/06-20/06-27/07-04/07-11/08-01/10-31/ + 11-07/11-28; 2027-07-17/07-24/09-04/09-11/10-30/11-06/11-13/11-27). + + SHAPE 2 -- 9 rows, a SECOND, DIFFERENT and DISTINCT gap: ferias of a + week whose own Sunday was DISPLACED that year by a movable, named + temporal-cycle feast, where the Missal requires the DISPLACED + Sunday's own Mass to continue informing that week's ferias, but step 3 + walks back to the DISPLACING feast's citation instead (the SAME + Sunday's own OFFICE is displaced; its own reading is not). Two + witnessed instances, not a residue: (a) 2026-06-02/03 and 2027-05-24, + the ferias between Trinity Sunday and Corpus Christi -- the Missal + prints a named formula for exactly this week, "Missa Dominicae I post + Pentecosten" (1 Ioann. 4,8-21 / Luc. 6,36-42, docs/research/ + scan1.txt:21758-21830, found while researching Corpus Christi's own + Mass immediately following it) -- but colitur's step 3 walks back to + Trinity SUNDAY's own citation (Rom 11:33-36, the generic Time-after- + Pentecost fallback), not this named formula, since [ef-corpus-christi] + now correctly interrupts Trinity's own week at step 2 (this task's own + fix) and step 3's walkback from the Tuesday/Wednesday after it lands + one Sunday further back than the week actually calls for; (b) + 2026-10-26/27/29/30 and 2027-11-03/05, the ferias of the week Christ + the King (I class, movable, "Dominica ultima octobris") displaces -- + colitur's own citation on all six is LITERALLY Christ the King's own + Gospel (John 18:33-37, "Art thou a king?"), confirming step 3 walked + back to the DISPLACING feast, not the displaced ordinary Sunday; + missalemeum shows a different citation each row (the displaced + Sunday's own, varying by year). No Missal-propers rubric for Christ + the King's own week ferias was found the way Holy Name/Holy Family's + own each carry one (checked: no rubric text precedes Christ the + King's own Mass heading, scan1.txt:39140-39163, unlike the two + feasts C30/C31/C32 above document) -- this half is named from the + OBSERVED citation evidence itself (colitur's own value IS the + displacing feast's, missalemeum's is not), not from a located + propers rubric; the general mechanism (a week's own ferias follow its + OWN Sunday's temporal identity even when that Sunday is impeded that + year) is the same shape RG 69 already establishes for the Nativity + Octave (C6's own citation) and RG 96's own general transfer framework + assumes throughout, but no citation SPECIFIC to Christ the King's own + week was found or is claimed here. + + Neither shape is safe to fix inside this task's own scope (extending + layer 4 + triage) without the same real, dedicated, TDD/mutation-tested + unit of work C6/C25 and Task 6's own open item already call for. + Verdict open, the SAME fourth verdict M15/M18 already establish for a + genuine comparator/architecture LIMIT, honestly counted and NAMED + rather than silently absorbed, left failing, or buried in an + unexplained residue. A literal date list, not a shape predicate (no single structural signal -- unlike C17's own [subject = bvm] -- exists to distinguish this population from a genuinely new, unrelated citation bug on some other Time-after-Pentecost feria): the SAME |
