summaryrefslogtreecommitdiff
path: root/data/ef
diff options
context:
space:
mode:
Diffstat (limited to 'data/ef')
-rw-r--r--data/ef/expected-divergences-lms.sexp100
-rw-r--r--data/ef/expected-divergences.sexp15
2 files changed, 108 insertions, 7 deletions
diff --git a/data/ef/expected-divergences-lms.sexp b/data/ef/expected-divergences-lms.sexp
index d67e291..4cb5d2a 100644
--- a/data/ef/expected-divergences-lms.sexp
+++ b/data/ef/expected-divergences-lms.sexp
@@ -126,13 +126,99 @@
; per-year count is now known to vary (1-3 in the three years measured),
; not a flat "3 days/year".
-; L3 -- OPEN, colitur's OWN genuine gap, found extending this suite to the
-; 2023-2024 window (Witnesses task, 2026-08-22). Fired once: 2024-02-24.
-((id L3)
- (citation "The Missale Romanum's own CALENDARIUM table, February, footnote (docs/research/LT.txt:5011-5013, the Missal's printed calendar pages, not the numbered Rubricae Generales chapters): \"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, and the feast of St Matthias is kept on 25 February (not 24), with 24 and 25 February BOTH called \"the 6th kalends\"; St Gabriel of Our Lady of Sorrows (ordinarily 27 February) shifts to 28 February by the same rule. This bissextile shift is not RG-numbered -- it is a calendarium footnote, not a Rubricae Generales paragraph. SCAN-VERIFIED 2026-08-22 (coordinator), upgrading this entry's own earlier caveat that it rested on the transcription alone: the footnote IS present in the photographic scan at docs/research/scan2.txt:3050-3058, OCR-damaged but unmistakable -- \"In anno bi&sextili mensis februarius est dierum 29^ et festum S. Matthue celebra-tur die 2S februarii, ac festum S. Cabrielis a Virgine Perdolente die 28 februarii, et bis dicitur Sexto Kalen-\". The earlier search missed it because the OCR mangles both the saint (\"Matthue\", \"Cabrielis\") and the keyword (\"bi&sextili\"), so neither \"Matth\" nor \"bissext\" matches; it was found by searching for the undamaged phrase \"februarius est dierum\" instead. Transcription and scan agree, so the rule now rests on two witnesses of the SAME document rather than one -- still one document, which is why the citation says calendarium and not RG.")
- (verdict ordo)
- (note "colitur has NO bissextile-shift rule anywhere (grepped lib/rites/rite_ef/*.ml and data/ef/*.sexp for \"bissext\"/\"leap\": zero hits outside a code comment naming the saint, and the rules-register.md itself is silent on it too) -- St Matthias stays fixed at 24 February every year, leap or not. 2024 is a leap year: colitur's own [matthias] entry (Class2, an Apostle, RG91 entry 16 -- verified from the table itself to genuinely OUTRANK entry 18's privileged Ember-Saturday-of-Lent feria, so colitur's RANKING logic is not at fault here) WINS 24 February 2024 outright in colitur's output, correctly saying the Creed per RG475(e)'s Apostle clause. The Ordo shows no St Matthias anywhere near this date at all: 24 February 2024 is titled plainly \"EMBER SATURDAY of LENT\" (No Cr) and 25 February 2024 (a Sunday, 2nd Sunday in Lent, I class) is titled plainly \"2nd SUNDAY in LENT\" (Cr, but via RG475(a)'s own Sunday clause, not RG475(e)) -- consistent with Matthias having correctly MOVED to the 25th and then lost outright to the I-class Sunday there (RG91 entry 6 over entry 16), never even surviving as a commemoration (an I-class Sunday's own admission cap, RG111, is tight enough to exclude an ordinary II-class saint entirely -- the same shape already established for RG16(a)-adjacent cases elsewhere in this project). Both the 24th and 25th sides of the Ordo's silence are explained by ONE root cause (the missing shift), not two independent gaps -- a coherent, single-cause account, not a coincidence. BLAST RADIUS, roughly measured (a throwaway domain sweep, tools/probe_matthias.ml, run once for this task and not committed): of 2 041 leap years in 1583-9999, colitur observes [matthias] on 24 February in 1 650 of them -- an UPPER BOUND on how many years this gap could affect (some of those 1 650 years may see IDENTICAL final output either way, e.g. if Matthias would also win on the 25th against whatever competes there that year; a precise count needs the shift actually implemented, which is out of this task's own no-lib-changes scope). The Gabriel/27-28 February sibling shift is not witnessed by this fixture at all (no divergence on either date in this window) but is the same root cause and would need the same fix.")
- (expected_rows 1))
+; 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
diff --git a/data/ef/expected-divergences.sexp b/data/ef/expected-divergences.sexp
index 19ff2ef..632854c 100644
--- a/data/ef/expected-divergences.sexp
+++ b/data/ef/expected-divergences.sexp
@@ -116,6 +116,21 @@ 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))
+ ((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))
; 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