; 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). ; L5/L6 (Phase 2, 2026-08-22) extended the comparison to a second axis, ; Gloria (RG431-432) -- both fire in more than one window, at DIFFERENT ; counts per window, so both are prose-only (L2's own precedent), not ; machine-checked [id] records; see each for the real enforcement site. ; ; 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)) ; L5 -- OPEN, colitur's own gap, found extending this suite to the Gloria ; axis (celebrant-rubrics-phase1 Phase 2, 2026-08-22). NOT an active ; machine-checked [id] entry -- same reasoning L2 above gives: the count ; varies window to window (5 in 2023-2024, 5 in 2024-2025, 6 in ; 2025-2026), so a single static [expected_rows] cannot check it. The REAL ; enforcement is test_lms_ordo.ml's own [is_l5_lenten_commemoration] ; predicate plus [make_suite]'s own ~expected_gloria_l5 parameter, ; asserted per window directly. ; ; SHAPE, identical in all 16 instances found (5+5+6, zero exceptions): ; a privileged Lenten or Passiontide feria (Class3, violet -- RG25, ; {!Rite_ef.Temporal_ef.ferial_rank}) whose own office is impeded and ; carries EXACTLY ONE commemoration, of a Class3 saint colitur's own ; precedence engine (independently validated, layers 3-5) correctly ; reduces to a mere commemoration. colitur's [gloria] reads [false] (the ; day is a plain ferial office by every test [Rite_ef.Rubrics_ef.te_deum] ; runs -- no Sunday, no vigil, no octave, [named] = [None], [subject] = ; [Temporal]); the Ordo reads [true] in every one of the 16 instances. ; ; CITATION (docs/research/LT.txt:2359-2361, "V - De Missis festivis", ; quoted in rubrics_ef.ml's own [gloria] header in full): "302. Sensu ; autem latiore, dicuntur quoque Missae de festo: ... b) Missa de ; commemoratione in Officio diei occurrente" -- in the WIDER sense, a Mass ; "of a commemoration occurring in the day's own Office" is ALSO called a ; "Missa festiva" -- and RG431(b): "Hymnus Gloria in excelsis dicitur ... ; in Missis festivis de quibus n. 302" -- such a Mass says the Gloria. ; Textually, this appears to be EXACTLY the shape found: the day's own ; ferial Office, carrying a commemoration, is elevated to "festive" status ; for the Gloria specifically. ; ; WHY NOT FIXED HERE: n.303(b), the very next paragraph (LT.txt:2359-2367, ; same quote in rubrics_ef.ml), qualifies n.302(b)'s own Masses: "dici ; potest tantum si occurrit dies liturgicus IV classis" -- CAN ONLY BE ; SAID if the liturgical day occurring is IV class. Every instance found ; here is a Class3 PRIVILEGED FERIA (RG25), not IV class, which reads as a ; textual CONTRADICTION of the empirical finding rather than a ; confirmation of it -- unresolved without n.304 onward (not in this ; project's sources), which may clarify that 301-303 govern which Mass a ; priest may freely CHOOSE among several options in one church on one day ; (a dimension colitur does not model -- see [gloria]'s own SCOPE NOTE), ; a different question from \"does THE Mass actually said, once ; determined, say the Gloria\" (431(b)'s own question). Implementing this ; also has a real architectural cost this task's own instructions ; explicitly avoided: [Rite_ef.Rubrics_ef.gloria] would need a FOURTH ; parameter, the day's own {!Colitur_kernel.Liturgical_day.t.commemorations} ; -- a kernel [Rite.t.gloria] signature change, the same shape RG16(a)'s ; own [admit] fix needed a [~temporal] parameter for, and squarely out of ; a task briefed to \"follow exactly how creed was wired -- same seam\". ; Left OPEN, not guessed into a possibly-wrong rule. Recommended for a ; follow-on task, ideally alongside Phase 3's Preface work (RG483 governs ; a DIFFERENT, but textually adjacent, commemoration-vs-Mass-part ; question, so the two may share the same kernel signature widening). ; ; UPDATE (same task, after wiring the FIUV Ordo's own Gloria and Te Deum ; axes, test_fiuv_ordo.ml): this paragraph previously said FIUV's own ; [gloria] axis was not compared at all. It now is, and the result ; WEAKENS this entry's own case rather than strengthening it: FIUV's own ; [gloria] is [false] on all six of these exact dates in its window -- ; AGREEING WITH COLITUR, DIRECTLY CONTRADICTING the LMS Ordo's [true] ; above. So this is not \"colitur has a corroborated gap\", it is \"two ; independent Ordos disagree with EACH OTHER on Gloria for this shape, ; and colitur happens to agree with the universal one, not the diocesan ; one\". What FIUV's OWN Te Deum axis DOES show for the identical six ; dates: [true] -- Te Deum, unlike Gloria, genuinely IS said at Matins on ; these days (data/ef/expected-divergences-fiuv.sexp's own F3), a real, ; single-witness finding that this entry's own n.302(b)/431(b) citation ; may in fact belong to the DIVINE OFFICE, not the MASS -- which would ; mean L5 itself is answering the wrong question, not merely open. ; Genuinely uncertain which of the two Mass-Gloria witnesses (LMS or ; FIUV) is right for this shape; left OPEN, not adjudicated either way, ; for a follow-on task with more primary-source access than this one ; had. ; L6 -- OPEN, root-caused to a DIFFERENT, PRE-EXISTING bug this Gloria ; comparison merely surfaced, not a Gloria defect itself. Fired once, ; 2023-2024 only (2024-05-06, Rogation Monday) -- absent from the other ; two windows because Rogation Monday/Tuesday is impeded by a real ; sanctoral feast in both of them, so the office's own colour never ; reaches [observed] there. Same non-machine-checked-count reasoning as L5 ; above (count 1/0/0); enforced by test_lms_ordo.ml's own ; [is_l6_rogation_colour] predicate and [make_suite]'s own ; ~expected_gloria_l6 parameter. ; ; {!Rite_ef.Temporal_ef.temporal}'s own Rogation Monday/Tuesday branch ; hardcodes [~colour:Colour.Violet] with NO RG citation at all (verified ; by reading the branch directly, temporal_ef.ml, the Rogation comment ; block). The Ordo shows 2024-05-06 as \"FERIA IV Cl W †\" (white), ; borrowing \"Mass of 5th Sunday after Easter\" (matching colitur's own ; [Mass_formulary.Preceding_sunday] resolution for the identical date) -- ; consistent with RG88 (Caput X, \"De Litaniis maioribus et minoribus\"): ; \"De Litaniis minoribus nihil fit in Officio, sed tantum in Missa\" -- ; nothing changes in the OFFICE for the Minor Litanies, only the Mass ; TEXT is proper, which reads as the Office's own colour (Paschaltide, ; white) staying unchanged, the violet belonging only to the PROCESSION ; that precedes the Mass -- the same PER-ACTION colour nuance this ; project already documents as unmodelled for Palm Sunday's palm ; procession and Good Friday's Communion rite (temporal_ef.ml's own RG126/ ; RG128 citations), not a new kind of gap. ; ; NOT FIXED HERE: out of this task's own scope (Gloria/Te Deum, not the ; temporal cycle's colour assignment), and a real fix needs its own ; measured blast radius across 1583-9999 (every Rogation Monday/Tuesday ; not impeded by a stronger feast) plus a re-check against the ; differential/oracle layers, which already treat Rogation days as ; correctly violet on whatever data they compare against -- a ; cross-layer question, not a one-line patch. Recommended as a follow-on ; task's own first item.")