; data/ef/expected-divergences-lms.sexp -- Task 6 (2026-08-21-colitur- ; celebrant-rubrics-phase1)'s cited allow-list for the LMS Ordo comparison ; (test/test_lms_ordo.ml). Extended by the Witnesses task (2026-08-22, ; same phase) from the single 2024-2025 window (2024-11-27..2025-12-31) ; to three: 2023-2024 (2023-12-01..2024-12-31) and 2025-2026 ; (2025-11-28..2026-12-31) joined it. L3/L4 below fired only in the ; 2023-2024 window -- neither recurs in the other two, a fact worth ; keeping visible rather than merging away (see [expected_rows] on each). ; ; A SEPARATE file from data/ef/expected-divergences.sexp (the lectio ; allow-list) and data/ef/expected-divergences-missalemeum.sexp (the ; missalemeum/Divinum-Officium-lineage allow-list): this Ordo is a THIRD, ; independent lineage (a printed England & Wales diocesan book, ISBN ; 9781739209636, compiled directly from the 1962 Missal/1960 rubrics -- ; never passed through Divinum Officium, missalemeum or lectio), so its ; own divergences are kept apart rather than tangled into either existing ; file's own provenance. ; ; [verdict] names which side this task's own primary-source research ; backs, the SAME convention the missalemeum file's own header states: ; not always "colitur". ; ; L1 -- CLOSED, FIXED (whole-branch review finding 1, 2026-08-22): was ; 2025-11-03 (All Souls' Day, transferred from 2 November, a Sunday that ; year). colitur used to say the Creed IS said (true) on rank alone ; (475(b), Class1) where the Ordo, correctly, says it is not: "Mon 3 ALL ; SOULS' DAY I Cl B / No Gl Sequence No Cr Pr of the Dead No Blessing". ; ; This entry's own PREVIOUS text argued the divergence could not be fixed ; without a signature change, because [creed]'s inputs (temporal/observed/ ; date) have no notion of "this Mass is a Requiem". That argument was ; wrong: {!Colour.Black} is used by exactly TWO celebrations in the whole ; engine (verified by grepping every [colour Black]/[Colour.Black] site in ; lib/ and data/) -- [commemoration-of-all-souls] (data/ef/sanctoral.sexp) ; and Good Friday (temporal_ef.ml, already [false] via the RG 23(b) feria ; exclusion regardless of colour, and has no Mass at all in the ; 1955-restored Holy Week) -- so on every day this engine can construct, ; [colour = Black] if and only if the Mass is a Requiem: a citable ; implication (RG 117 assigns black to Masses of the dead) on THIS DATA, ; not a heuristic guess. [Rite_ef.Rubrics_ef.creed] now reads ; [observed.colour] as RG 476(f)'s own guard, positioned ahead of 475(b)'s ; rank branch; see rubrics_ef.ml's own header and the guard's own comment ; for the full account, and test_rubrics_ef.ml's ; [test_colour_black_population_is_exactly_two] for the test that fails ; loudly the day a third [Colour.Black] celebration is ever added, so this ; proxy cannot silently rot. ; ; BLAST RADIUS, measured (full 1583-9999 sweep of {!Colitur_kernel. ; Calendar.year}, grouped by [observed]'s own slug): 8 416 days changed ; from [true] to [false], every one [commemoration-of-all-souls] (missing ; from exactly 1 of the 8 417 domain years -- a boundary-year transfer ; effect at 1583/9999, not a third population member: see the "know what ; each layer cannot see"-style caveats elsewhere in this project for other ; instances of the same edge). A further 8 416 [Colour.Black] days are ; Good Friday ([ef-passiontide-2-friday]), unchanged by this fix (already ; [false] before it, via the earlier feria exclusion) -- confirmed ; [creed_true_among_black = 0] after the fix, over the WHOLE domain, not ; merely the fixture's own 2024-2025 window. ; ; `colitur day`/`colitur readings` are unaffected (neither prints [creed]); ; `colitur rubrics` output changes on exactly the 8 416 days above. ; L2 -- OPEN, colitur's own gap, found while building L1's fix (whole- ; branch review finding 2, 2026-08-22). NOT an active entry in this ; file's own machine-checked sense (no code loads or cross-checks an ; "L2" id anywhere -- this file's own [allow_entry] machinery is scoped ; to the CREED axis, {!test_lms_ordo.test_creed_matches_or_is_explained} ; alone; a second, unrelated axis reusing the same id-lookup mechanism ; would let one test's "declared but never fired" check spuriously trip ; on the other axis's own entry). Recorded here as prose only, the same ; discipline this file's own closed L1 note above and ; expected-divergences.sexp's own closed C-entries already use for a ; citation worth preserving without a live parser hook -- the REAL ; enforcement is test_lms_ordo.ml's own [test_formulary_override_matches], ; which asserts this population is exactly 3 days directly. ; ; Strengthening test_lms_ordo.ml's formulary-override check from PRESENCE ; to the actual STRING (this same finding 2) surfaced a real, separate ; defect in step 3 of the reading chain ({!Rite_ef.Lectionary_ef. ; readings}), independent of the Creed axis above. Three real days in the ; fixture window -- 2025-05-30 (Friday), 2025-06-02 (Monday), 2025-06-03 ; (Tuesday), all between Ascension Thursday and the following Sunday -- ; have no proper of their own and fall to {!Colitur_kernel. ; Mass_formulary.Preceding_sunday}. colitur resumes the nearest CALENDAR ; Sunday (the "5th"/"6th Sunday after Easter", Paschaltide's own week ; 6/7), but the Missal, and the Ordo, keep saying ASCENSION'S OWN Mass ; through this stretch instead: "Mass of the Ascension" on all three ; days, never a numbered-Sunday title. Step 3 has no notion of "inside ; Ascension's own after-feast period" -- it always resumes the nearest ; preceding Sunday, numbered or not. ; ; STRUCTURAL, not a fixture artefact: the Ascension is a fixed Easter+39 ; (a Thursday inside Paschaltide week 6), so every feria whose own ; Preceding_sunday fallback would otherwise resolve to week 6 or 7 falls ; in this same stretch, every year -- this is not a coincidence of ; 2024-2025 alone, though only this fixture's own window has been checked ; against a real Ordo. ; ; NOT FIXED in this task: fixing it means teaching step 3, or the ; lectionary data, about Ascension's own after-feast period -- the same ; shape as the Christmastide "infra octavam Nativitatis" entries ; data/ef/lectionary.sexp already carries directly rather than resolving ; through this fallback -- a lectionary-data change out of a fix round's ; own scope. test/test_lms_ordo.ml's own [is_after_ascension] excludes ; this population from the general mapping (bounded ABOVE by Pentecost, ; not merely "later than Ascension" -- see its own citation, corrected ; during the Witnesses task after a first version manufactured 8 false ; failures by matching any later date in the same civil year), and ; [test_formulary_override_matches] asserts its exact size per window. ; ; CORRECTED (Witnesses task, 2026-08-22): this note previously said "exactly ; 3 real days" as though that were a universal count. Extending the ; comparison to 2023-2024 and 2025-2026 showed it is not -- the population ; depends on which OTHER days that particular year's Ascension-adjacent ; week happen to have their own competing propers (a saint, a vigil), so ; it varies year to year: 3 in 2024-2025, 1 in 2023-2024 (only 30 May 2024 ; -- Rogation Monday, 6 May 2024, is BEFORE Ascension and correctly resumes ; the ordinary "5th Sunday after Easter" instead, once the exclusion's own ; date comparison was corrected to test "after Ascension AND before ; Pentecost" rather than "week 6 or 7"), 2 in 2025-2026. All three counts ; measured directly, all showing "Mass of the Ascension", none unexplained. ; ; Domain-wide count: unmeasured -- "which feria is inside Ascension's own ; after-feast period" is not a distinct predicate anywhere in this ; codebase to sweep on. Structurally recurs every year, though the exact ; per-year count is now known to vary (1-3 in the three years measured), ; not a flat "3 days/year". ; L3 -- CLOSED, FIXED (bissextile-shift task, 2026-08-22; NOT an active ; sexp record any more, same convention L1 above established -- removed ; from [test_allow_list_ids_are_exactly_l3_l4]'s own expected set, which ; now names L4 alone). Was OPEN, colitur's OWN genuine gap, found ; extending this suite to the 2023-2024 window (Witnesses task, ; 2026-08-22), firing once: 2024-02-24. ; ; Citation, preserved verbatim: the Missale Romanum's own CALENDARIUM ; table, February, footnote (docs/research/LT.txt:5011-5013, scan- ; corroborated docs/research/scan2.txt:3050-3058, OCR-damaged to ; "bi&sextili"/"Matthue"/"Cabrielis" but unmistakable against the ; undamaged transcription): "In anno bissextili mensis februarius est ; dierum 29, et festum S. Matthiae celebratur die 25 februarii, ac festum ; S. Gabrielis a Virgine perdolente 28 februarii, et bis dicitur sexto ; calendas, id est die 24 et die 25" -- in a leap year February has 29 ; days, St Matthias is kept on 25 February (not 24), St Gabriel of Our ; Lady of Sorrows on 28 February (not 27), and the sixth kalends of March ; is said twice. Not RG-numbered -- a calendarium footnote, not a ; Rubricae Generales paragraph. ; ; FIXED: {!Rite_ef.Temporal_ef.bissextile_fixed_key}, threaded through ; {!Colitur_kernel.Rite.t}'s new [fixed_key] field (read only by ; {!Colitur_kernel.Layer.on_date}'s FIXED half, so the kernel stays ; rite-agnostic -- a rite that supplies nothing behaves exactly as ; before). Implemented as the rubric's own MECHANISM (every fixed entry ; from 24 through 28 February shifts one civil day later in a leap year, ; 24 February itself carrying no fixed entry that year), not as "move ; these two named saints": the two are indistinguishable on shipped data ; (nothing else is fixed in that window) and diverge only for a future ; [--overlay] entry in the same range, which the mechanism reading covers ; and a two-saints special case would not. ; ; 2024-02-24/25 now MATCH the Ordo: colitur's Creed follows the same ; Matthias-vacates-24/loses-outright-on-the-Sunday-25th path the note ; below already inferred from the Ordo's own titles, and the LMS ; 2023-2024 suite's Creed and formulary-override checks are both green ; (the formulary bucket's own [expected_proper] constant dropped 182->181 ; for this window: 24 February is now the Ember Saturday's own Own_slug- ; sourced proper, not Matthias's Proper-sourced one, leaving the counted ; population rather than changing which slug's proper it is). ; ; BLAST RADIUS, MEASURED (full 1583-9999 sweep, {!Colitur_kernel.Calendar. ; year} run twice per civil year -- once with the real [fixed_key], once ; with it forced to the identity default -- every changed liturgical day ; diffed on observed slug/rank/colour/subject/commemorations; throwaway ; probe, tools/probe_bissextile.ml, run for this task and not committed, ; same precedent as tools/probe_matthias.ml above): ; ; - ALL 2 041 leap years in the domain show at least one visible ; Matthias-related change, and separately all 2 041 show at least one ; Gabriel-related change -- every leap year in 1583-9999 is touched. ; - 6 983 individual liturgical days change domain-wide, ZERO ; unclassified: exactly four shapes, all the same mechanism -- ; Matthias vacates 24 February (1 803 years) and newly appears on 25 ; February (1 811 years); Gabriel vacates 27 February (1 699 years) ; and newly appears on 28 February (1 670 years). "Vacates"/"appears" ; covers BOTH observed-outright and commemorated-only presence, not ; observed alone -- RG 111's admission cap can relegate the shifted ; saint to a bare commemoration rather than the day's own office, and ; a classifier that only watched [observed] undercounted by roughly a ; tenth on a first pass (found and corrected before this note was ; written: the OBSERVED-outright figures alone, tracked separately ; for direct comparison against this entry's own prior estimate ; below, are 1 677 for Matthias and 571 for Gabriel). ; - THIS ENTRY'S OWN PRIOR ESTIMATE, checked: "of 2 041 leap years, ; colitur observes matthias on 24 February in 1 650 of them" is ; confirmed close but not exact against the real, precisely-measured ; figure on the SAME (observed-outright-only) definition -- 1 677, a ; 2% difference consistent with the prior probe's own "roughly ; measured" caveat, not a sign either probe was wrong in kind. The ; prior estimate's own further caveat -- "some of those years may see ; identical final output either way" -- is also confirmed real but ; small: 1 677 (narrow, observed-only) vs 1 803 (broad, observed-or- ; commemorated) for the SAME 24-February-vacated population shows the ; narrow definition undercounts genuine visible impact rather than ; overcounting it, because a saint who only lost outright pre-fix ; (never observed, never commemorated, invisible either way) is ; absent from BOTH counts and was never the source of the gap between ; them. ; - Gabriel's own sibling shift, unwitnessed by this fixture's own ; 2023-2024 window (no divergence fired on either 27 or 28 February ; 2024 -- 2024's own competing office there does not expose it), is ; the identical mechanism and closes with the same fix; its own ; measured figures are recorded above for the first time, this entry ; having previously had no estimate for it at all. ; ; The differential (lectio, layer 3) gained a new cited entry for its own ; 2005-2050 window, data/ef/expected-divergences.sexp's C40 -- lectio ; implements no such shift either (confirmed directly against the ; fixture: Matthias/Gabriel sit at their PRE-shift dates in every one of ; the 11 leap years that window covers), so every leap year in it now ; diverges on the two shifted days, 21 rows total. See C40's own note for ; the row-by-row account. ; L4 -- OPEN, adjudicated FOR colitur (a defensible primary-source reading, ; not a fix confirmed against the Ordo -- the Ordo's own contrary reading is ; also textually arguable, see below). Fired once: 2023-12-24. ((id L4) (citation "RG 30(a) (Caput V, De Vigiliis, docs/research/LT.txt:959-961): \"vigilia Nativitatis Domini quae, IN OCCURRENTIA, locum tenet dominicae IV Adventus, de qua, proinde, NULLA FIT COMMEMORATIO\" -- the Vigil of the Nativity, when it occurs [on a Sunday], TAKES THE PLACE of the 4th Sunday of Advent, of which, accordingly, no commemoration is made -- the identical \"locum tenet ... nulla fit commemoratio\" shape RG16(a) uses for a Feast of the Lord occurring on a II-class Sunday, which colitur already implements and which RG475(a) explicitly extends the Creed to (\"in qualibet dominica, etsi eius Officium alicui festo locum cedat\").") (verdict open) (note "2023-12-24 (the 4th Sunday of Advent AND Christmas Eve, a genuinely rare coincidence -- roughly 1 year in 7 -- absent from both the 2024-2025 and 2025-2026 windows, where Christmas Eve falls on a Tuesday and a Wednesday respectively). colitur says the Creed IS said (true), reading [temporal]'s own weekday (Sunday) per RG475(a)'s clause, positioned ahead of the vigil-exclusion check in {!Rite_ef.Rubrics_ef.creed} -- unconditionally, the same way it already does for RG16(a)'s Feast-of-the-Lord case. The Ordo says \"No Gl No Cr\" for this date. ADJUDICATED FOR COLITUR, not merely left open by default: RG30(a)'s own \"locum tenet ... nulla fit commemoratio\" language is textually closer to RG16(a) (which colitur already treats as Creed-preserving) than to an ordinary vigil superseding a Sunday -- the Vigil does not merely WIN THE DAY, it takes the SUNDAY'S OWN IDENTITY, the same shape RG475(a) was written to reach. The COUNTER-reading is real and not dismissed here: RG475(a)'s own text says \"locum cedat ... festo\" (gives way to a FEAST), and RG35 (Caput VI) classifies feria/vigilia/festum as three distinct liturgical-day categories -- a strict textual reading could confine 475(a)'s override to FEAST-displacement only, leaving a VIGIL-displaced Sunday to fall through to the general vigil exclusion (476, via RG33's own \"a vigil is a distinct category\" reasoning already coded elsewhere in {!Rite_ef.Rubrics_ef.creed}). Left OPEN rather than closed on this task's own authority: adjudicating scripture-grade primary-source questions is out of scope for a witness-wiring task, and the two readings are both defensible. Not fixable inside this task's own no-lib-changes constraint regardless of which reading eventually wins.") (expected_rows 1))