aboutsummaryrefslogtreecommitdiff
path: root/data/ef/expected-divergences.sexp
diff options
context:
space:
mode:
Diffstat (limited to 'data/ef/expected-divergences.sexp')
-rw-r--r--data/ef/expected-divergences.sexp46
1 files changed, 39 insertions, 7 deletions
diff --git a/data/ef/expected-divergences.sexp b/data/ef/expected-divergences.sexp
index 19ff2ef..ca0d6a3 100644
--- a/data/ef/expected-divergences.sexp
+++ b/data/ef/expected-divergences.sexp
@@ -116,13 +116,45 @@ WHAT THIS ENTRY ALSO RESTS ON. Two things, neither of them a day-level witness.
Gated on lectio's own slug being one of the three vigils this clause can reach and colitur's not being a vigil -- identity on both sides, not a diff-set shape. The Assumption's and the Ascension's vigils are absent from that list because their I-class feasts always keep their own day: 0 occurrences across the whole domain, measured rather than assumed.")
(expected_rows 10))
- ; C8 -- CLOSED, REMOVED (2026-08-18): 0 of 16801 rows, was 26. lectio builds
- ; Rogation Monday and Tuesday now (RG 87, Easter+36/+37, violet under
- ; RG 128(d)). The Wednesday is NOT built there and deliberately so: Easter+38
- ; is the Ascension's Vigil, which wins the day, and the rubric asks for a
- ; commemoration -- a channel lectio's one-office-per-day temporal function
- ; does not have. That is the same reason this entry never covered the
- ; Wednesday either. Citation preserved in the register.
+ ((id C40)
+ (citation "The Missale Romanum's own CALENDARIUM table, February, footnote (docs/research/LT.txt:5011-5014, scan-corroborated docs/research/scan2.txt:3050-3058): \"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. Implemented in Rite_ef.Temporal_ef.bissextile_fixed_key, threaded through Colitur_kernel.Rite.t's new [fixed_key] field (bissextile-shift task, 2026-08-22). Not RG-numbered -- a calendarium footnote, not a Rubricae Generales paragraph.")
+ (verdict colitur)
+ (note "lectio builds no such shift at all: checked directly against the fixture, Matthias sits at 24 February and Gabriel of Our Lady of Sorrows at 27 February in EVERY ONE of the 11 leap years the 2005-2050 window covers (2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048), never moved. colitur now moves both, per the calendarium's own footnote, so every leap year in this window diverges on the two shifted civil days: colitur vacates 24/27 February (the saint moves away) and occupies 25/28 February instead (the saint newly appears there), while lectio keeps the pre-shift assignment throughout.
+
+19 Matthias rows + 2 Gabriel rows = 21, not the naive 11-years x 2-sides x 2-feasts = 44 ceiling: this comparator, BY DESIGN (see this file's own header), never compares commemorations -- only observed slug/rank/colour/citations -- so a side where the shifted saint has ZERO comparator-visible footprint, on both engines, whether pre- or post-shift, produces no row even though a real change happened underneath (the full-domain probe below, which DOES track commemorations, still counts it).
+
+MATTHIAS fires on both sides (24 vacated AND 25 occupied) in 8 of the 11 years; in the remaining 3 (2008, 2024, 2036) exactly one side is missing, and in every one of the three the missing side is a SUNDAY -- 2008-02-24 and 2036-02-24 (Matthias already loses outright to that Sunday whichever engine or shift-state is asked, so the vacated side shows no change); 2024-02-25 (the occupied side: colitur's post-shift Matthias loses outright to the 2nd Sunday of Lent, I class, with no commemoration surviving RG111's own tight cap -- Matthias's footprint there is genuinely zero, not merely uncompared). A Sunday's own observed slug is unaffected by this shift either way, so whichever side coincides with one contributes nothing comparator-visible; only the other, non-Sunday side shows the real new divergence. 2024-02-24 is L3's own original date (data/ef/expected-divergences-lms.sexp), now confirmed independently by a second, larger fixture.
+
+GABRIEL (Class3, weaker than Matthias's Class2/Apostle rank) fires in only 2 of the 11 years (2028 occupied, 2044 vacated) because in the other 9 his position is already dominated by a Class3-or-stronger competing office both before and after the shift, so his own presence is commemoration-only throughout -- invisible to this comparator on either side. He surfaces only where the position happens to be a plain, unprivileged Class4 feria weak enough for his own Class3 to win outright: 2028-02-28 (colitur: gabriel-of-our-lady-of-sorrows, Class3, White, beating ef-septuagesima-3-monday, Class4) and 2044-02-27 (lectio still shows gabriel there unmoved, Class3, White; colitur's post-shift 27th falls to RG78's own votive BVM-Saturday office instead, also White, hence the colour match but slug/rank/citation mismatch in that row). Every one of the 21 rows was read directly off the comparator's own failure output, not apportioned by hand.
+
+Diff shapes: most rows carry [Slug_f; Rank; Colour_f; First_f; Gospel_f] (the temporal office on one side and the saint's own Class2/3 proper on the other differ in rank too); a handful carry only [Slug_f; Colour_f; First_f; Gospel_f] where the competing temporal office happens to share Matthias's own Class2 (the privileged Lenten Ember Friday/Saturday, 2024 and 2040) or Gabriel's own White (a BVM Saturday, 2044-02-27's own vacated row). Season never differs on any of the 21 -- both sides stay in whichever season that Sunday-relative week already put them in, regardless of which fixed entry, if any, sits on the day.
+
+BLAST RADIUS, MEASURED, full 1583-9999 domain (not merely this fixture's 2005-2050 window): 6 983 liturgical days change, zero unclassified, across all 2 041 leap years in the domain -- see data/ef/expected-divergences-lms.sexp's own now-closed L3 entry for the full figures (this entry's own 21-row 2005-2050 population is the expected subset of that domain-wide count landing inside the fixture's own window: 11 leap years x up to 2 new rows each, minus the three already-explained overlaps above).")
+ (expected_rows 21))
+ ((id C41)
+ (citation "The Missale Romanum's own Proprium de Tempore carries an explicit marginal rubric immediately after the Ascension's own Mass propers, before \"Dominica post Ascensionem\" begins (scan1.txt:20749-20754, both scans corroborate): \"Diebus a feria VI post Ascensionem usque ad feriam VI ante vigiliam Pentecostes inclusive, dicitur Missa de festo Ascensionis, cum Gloria et praefatione de Ascensione, sine Credo et Communicantes proprio\" -- on the days from the Friday after the Ascension until the Friday before the Vigil of Pentecost inclusive, the Mass OF THE FEAST OF THE ASCENSION is said. Corroborated by RG 490(b) (LT.txt:3981-3985), which assigns the Ascension preface \"tamquam de Tempore\" to every Mass in that same window lacking a proper preface -- consistent only if the Mass repeated is the Ascension's own, not a numbered Sunday's. Witnessed directly: the LMS Ordo prints \"Mass of the Ascension\" literally across all three fixture windows (data/ef/expected-divergences-lms.sexp's own L2, closed by this entry) on every affected day of BOTH weeks, and the FIUV Ordo's own [praef] field independently reads \"Ascensionis\" on the two analogous 2025-2026 dates its title labels by week rather than by formulary. Implemented in data/ef/lectionary.sexp's [ascension_week_entries] (tools/bootstrap_lectionary.ml), celebrant-rubrics-phase1 Bug 2, 2026-08-22.")
+ (verdict colitur)
+ (note "lectio has no equivalent rubric: it walks the six affected ferias back to the nearest preceding Sunday's Mass (5th Sunday after Easter for [ef-easter-6-friday], Dominica post Ascensionem for the five [ef-easter-7-*] weekdays), the SAME wrong answer colitur used to give before this fix. Both sides agree on slug, season (Layer A normalises colitur's [paschaltide] and lectio's [easter] as the same vocabulary), rank and colour throughout -- only the citation text differs, so every row carries [First_f; Gospel_f] alone.
+
+MEASURED (test_differential.ml's own [classify], 2005-2050 fixture, run directly): 95 rows, all six slugs represented, zero unclassified. Population varies year to year (0-3 of the six slugs fire per year) because most years have a real sanctoral feast occupying one or more of the six candidate civil dates -- the same reason data/ef/expected-divergences-lms.sexp's own L2 found only 1-3 affected days per its own one-year fixture windows, now confirmed at scale across the full 46-year differential window.
+
+The window's two Saturdays (Easter+41, Easter+48) never reach this entry: Easter+48 is the Vigil of Pentecost, a named day with its own Mass, outside the rubric's own upper bound; Easter+41 is an ordinary Class4 Saturday, so RG 78's votive Office of Our Lady on Saturday intercepts it before the lectionary lookup this entry's own fix touches is ever reached (readings' own step ordering) -- confirmed directly: no row in the 95 carries [ef-easter-6-saturday] or [ef-easter-7-saturday].
+
+BLAST RADIUS, MEASURED (full 1583-9999 sweep, in-process against {!Colitur_kernel.Calendar.year}, throwaway probe, not committed): 16 350 days total, split ef-easter-6-friday 2 562, ef-easter-7-monday 2 618, ef-easter-7-tuesday 2 744, ef-easter-7-wednesday 2 776, ef-easter-7-thursday 2 781, ef-easter-7-friday 2 869 -- every one resolved via step 2's Own_slug, zero anomalies, and the window's two Saturdays confirmed to contribute zero Own_slug hits via this cause across the whole domain (RG 78's votive Office of Our Lady always intercepts first), corroborating the code-level reasoning above by direct sweep rather than inspection alone.")
+ (expected_rows 95))
+ ((id C8)
+ (citation "RG 119 (Caput XVIII, \"De Colore Paramentorum\"): white is used \"in Officio et Missa de Tempore ... a Missa Vigiliae paschalis usque ad Missam vigiliae Pentecostes exclusive\" -- the de-Tempore Office and Mass are white from the Paschal Vigil Mass until the Pentecost Vigil Mass exclusive, and Rogation Monday/Tuesday (Easter+36/+37) sit inside that window. RG 128's own exhaustive four-case list for violet (Advent I-Christmas Eve; Septuagesima-Paschal Vigil; the September Ember ferias; vigils of II/III class OUTSIDE Paschaltide) never names Rogation days. RG 88 (\"de Litaniis minoribus nihil fit in Officio, sed tantum in Missa\"): the violet belongs to the Rogation MASS/procession, a distinct votive text this engine does not model, not to the day's own Office. Fixed in Rite_ef.Temporal_ef.temporal's Rogation branch, celebrant-rubrics-phase1 Bug 1, 2026-08-22 -- see that branch's own citation and data/ef/expected-divergences-lms.sexp's now-closed L6 entry, which is what surfaced it (LMS Ordo 2023-2024, 2024-05-06, \"FERIA IV Cl W\").")
+ (verdict colitur)
+ (note "REOPENED (2026-08-22, celebrant-rubrics-phase1, Bug 1 fix). Previously CLOSED, REMOVED (2026-08-18): 0 of 16801 rows, was 26, with this note, PRESERVED VERBATIM because it contains a misattribution now corrected rather than silently dropped: \"lectio builds Rogation Monday and Tuesday now (RG 87, Easter+36/+37, violet under RG 128(d)). The Wednesday is NOT built there and deliberately so: Easter+38 is the Ascension's Vigil, which wins the day, and the rubric asks for a commemoration -- a channel lectio's one-office-per-day temporal function does not have. That is the same reason this entry never covered the Wednesday either. Citation preserved in the register.\"
+
+THE MISATTRIBUTION: \"violet under RG 128(d)\" is wrong. RG 128(d) governs vigils of II/III class OUTSIDE Paschaltide; Rogation Monday/Tuesday are neither vigils nor outside Paschaltide. Checked against docs/research/rules-register.md (gitignored, local) while researching Bug 1: no claim of an RG 128(d) basis for Rogation colour exists there -- the misattribution was confined to this file's own closure note. It traces to Rite_ef.Temporal_ef.temporal's own Rogation branch, which hardcoded [Colour.Violet] with NO citation at all before this fix; whoever wrote this entry's closure note in 2026-08-18 apparently backfilled a plausible-looking but wrong citation for behaviour that was never actually cited in the code it described.
+
+WHY THIS REOPENS RATHER THAN STAYS CLOSED: the entry closed in 2026-08-18 because lectio, independently, ALSO computes these two days violet -- not because either engine's violet was ever verified against the Missal. Both engines shared the same uncited assumption, so the comparator saw agreement and the entry went to zero. Bug 1 corrected COLITUR's side to white (RG 119); lectio's own violet is unchanged (a sibling project, out of this repo, not modified here). The comparator now disagrees again, on the same 26 rows, for the OPPOSITE reason: previously colitur was wrong and lectio was wrong the same way; now colitur is right and lectio still carries the old, uncited assumption forward -- consistent with CLAUDE.md's own \"colitur vs missalemeum\" base-rate note for a different lineage, applied here to lectio directly: a fresh divergence is not presumptively colitur's fault once colitur has just been corrected FROM the shared error.
+
+MEASURED (test_differential.ml's own [classify], 2005-2050 fixture, DEBUGC8 probe run and reverted): exactly 26 rows, all with diffs=[Colour_f] alone -- season and slug already agree (lectio's own [easter]/colitur's [paschaltide] season labels are Layer A vocabulary synonyms, not a diff), and on every row lectio=violet, colitur=white. Dates: 2005-05-03, 2006-05-22/23, 2007-05-14, 2011-05-30, 2012-05-14, 2013-05-06, 2016-05-03, 2017-05-22/23, 2018-05-08, 2022-05-23/24, 2024-05-06, 2027-05-03, 2028-05-22/23, 2029-05-08, 2032-05-03, 2033-05-23/24, 2040-05-08, 2044-05-23/24, 2047-05-21, 2049-05-24. Fewer than the 2-per-year x 23-year x ~2 ceiling because a competing sanctoral feast impedes the Rogation office outright in some years on one or both of the two days (unchanged by this fix, gated on colitur's own [rogation-monday]/[rogation-tuesday] slug in [layer_c_reason] the same as before). The Wednesday remains absent from this entry for the same reason the pre-2026-08-18 and post-2026-08-18 notes both already gave: Easter+38 is the Ascension Vigil (RG 91 entry 21), which outranks the Rogation Wednesday commemoration outright on colitur's side, and lectio has no Rogation-Wednesday concept at all to compare against regardless.
+
+Gated on [(String.equal c.slug \"ef-rogation-monday\" || String.equal c.slug \"ef-rogation-tuesday\") && subset diffs [ Season; Slug_f; Colour_f ]] in [layer_c_reason] -- unchanged code, present since before this entry's 2026-08-18 closure and never removed; only the sexp record was removed when the count hit zero, per this file's own \"closed = 0 rows, not code deleted\" convention.")
+ (expected_rows 26))
; C14 -- CLOSED, REMOVED (2026-08-18): 0 of 16801 rows, was 3. lectio has
; adopted RG 96(a)/97/98. Its transferIfImpededEF resolved each impeded
; I-class feast independently, so in 2008, 2035 and 2046 St Joseph and the