aboutsummaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/ef/expected-divergences.sexp86
1 files changed, 33 insertions, 53 deletions
diff --git a/data/ef/expected-divergences.sexp b/data/ef/expected-divergences.sexp
index 2d51048..a733273 100644
--- a/data/ef/expected-divergences.sexp
+++ b/data/ef/expected-divergences.sexp
@@ -17,68 +17,48 @@
; Regenerate expected_rows only after re-adjudicating the change against the
; Missal/register -- never by re-running the comparator and copying its
; output back here (that would launder a regression into a new baseline).
+;
+; REFRESHED 2026-08-12 (task 2026-08-12-colitur-rg16a, branch ef-rebootstrap):
+; the fixture was regenerated from lectio's current HEAD (3b32c00), which has
+; independently fixed the seven EF calendar defects this file's own C2, C3,
+; C4, C5, C7, C9 (in part), C10 and C11 used to allow-list, plus lectio's
+; sanctoral generator fix that resolved C12. NINE entries -- C2, C3, C4, C5,
+; C7, C10, C11, C12, C13 -- are CLOSED (removed below, not re-adjudicated to
+; a different verdict): each stopped occurring entirely (0 of 16801 rows),
+; the same "REMOVED, not re-adjudicated" shape M17/M4/M6/M7/M9/M14 already
+; used in data/ef/expected-divergences-missalemeum.sexp. Every closed
+; citation is preserved in docs/research/rules-register.md's own closure
+; record (search "ef-rebootstrap fixture refresh" there), not deleted --
+; each was a real divergence, correctly adjudicated in colitur's favour at
+; the time, closed because the OTHER engine was fixed to agree, not because
+; colitur changed. C9's OLD shape ("Joseph observed on a Lent Sunday") is
+; part of that same closure; a DIFFERENT, narrower divergence involving the
+; same saint (Joseph's transfer colliding with the Annunciation's own fixed
+; "sedes propria") survived the refresh and is re-cited below as C14, a new
+; id, not folded back into C9 -- the two are different rules and conflating
+; them is exactly the "count proving cardinality where identity was
+; required" failure mode this project's own review process has caught
+; before. Three entries survive with their original citation, unchanged in
+; kind: C1 (368 rows, up from 361 -- see C1's own note), C6 (138 rows,
+; unchanged count, narrower shape -- see C6's own note) and C8 (31 rows,
+; wholly unchanged).
((id C1)
(citation "RG 72-73 (Nativity/Epiphany season boundary, Jan 1-13) + RG 119a (white through \"expletum tempus Epiphaniae\"); register §3c item 1")
(verdict colitur)
- (note "6-13 January is Christmastide in colitur, matching RG 72-73's explicit boundary at 13 January (corroborated independently by RG 119a's colour rule, §3b). lectio's efSeason switches to time-after-epiphany on 6 January. The season disagreement cascades into colour (green vs white) and, on 7-8 January specifically, into the ferial slug family name (colitur's ef-christmas-2-<weekday> vs lectio's ef-time-after-epiphany-1-<weekday> for the same two days). CORRECTED (ef-rebootstrap fix round 1, F2): expected_rows moved 368 -> 361, NOT because this shape changed, but because 7 rows that used to fit it (13 January in the 7 years it falls on a Sunday) now fit a DIFFERENT, wider diff shape and were moved to their own entry, C13, below -- see C13's own note. Re-derived independently (a Python cross-check reading data/ef/sanctoral.sexp's own regenerated civil-day output and the committed lectio fixture directly, replicating diff_fields/layer_c_reason's own logic outside the OCaml comparator, not by running the comparator and copying its count): 361.")
- (expected_rows 361))
- ((id C13)
- (citation "RG 16(a) (§6.0/§4, already implemented) firing on 13 January now that commemoration-of-the-baptism-of-the-lord is (subject Lord) -- ef-rebootstrap (2026-08-12): the source's own class field changed, not a colitur retag")
- (verdict colitur)
- (note "On the 7 years 13 January falls on a Sunday within 2005-2050 (2008, 2013, 2019, 2030, 2036, 2041, 2047 -- independently re-derived via `date -d <year>-01-13 +%A`, not copied from any prior figure), colitur now observes the Baptism of the Lord itself (RG16(a): a Feast of the Lord, II class, takes an impeded II-class Sunday's place outright) where it used to observe the generic Sunday slug -- the diff shape widens from {season;colour} (C1's own shape) to {season;slug;colour}, moving these 7 rows out of C1 and into this entry. IMPORTANT, so this is not mistaken for \"lectio disagrees on the merits\": data/ef/fixtures/lectio-ef-2005-2050.txt is a FROZEN snapshot that predates lectio's own equivalent fix to this exact entry's class field (the same staleness shape as C12 above) -- independently confirmed by building lectio's own cmd/lectio-ef-dump from its CURRENT source tree (read-only; ~/git/projects/lectio was not modified) and running it fresh for all 7 years: lectio's LIVE engine now agrees with colitur's slug/rank/colour on every one of the 7 dates exactly (`commemoration-of-the-baptism-of-the-lord class-2 white`, no trailing candidate on any of them), disagreeing only on SEASON -- the same, already-understood C1 divergence. This does NOT mean colitur's own answer is right against the Missal: it is not. docs/research/rules-register.md's own \"RG 112\" item records that missalemeum shows Holy Family observed with the Baptism fully DISPLACED under RG 112(a) (a mystery of the Lord excluding a commemoration of another mystery of the same Divine Person) on this exact collision, and colitur implements neither RG 112 nor a Holy Family office -- both explicitly out of scope for the task that produced this entry. This entry's own job is narrower: it explains a divergence from the COMMITTED FIXTURE, which is stale, not an unresolved disagreement between the two engines' current logic.")
- (expected_rows 7))
- ((id C2)
- (citation "RG 91 entry 6, §4 (\"Sundays of Advent, Lent, Passiontide, and Low Sunday\" -- I class, unqualified); extends register §3c item 4 (stated there for Advent only) to Lent on the same textual basis")
- (verdict colitur)
- (note "Advent II & IV and Lent I-III are I class in colitur, matching RG 91's own unqualified entry 6 (already confirmed for Passion Sunday, Palm Sunday, Low Sunday and Advent I, where lectio agrees). lectio's temporal_ef.go generic Sunday branch assigns Class2 and special-cases only Advent I, Passion/Palm/Low Sunday -- a lectio gap for the remaining five Sundays this entry covers.")
- (expected_rows 215))
- ((id C3)
- (citation "RG 91 entry 6, §4 (same I-class Sunday rule as C2) + RG 131 (rose indult, Gaudete/Laetare, \"in Officio et Missa diei dominici tantum\")")
- (verdict colitur)
- (note "Gaudete (Advent III) and Laetare (Lent IV): I class per C2's citation, plus the RG 131 rose indult. lectio has no Rose case in its EF colour function and zero rose rows in tridentine-calendar.ini -- Rose exists only on lectio's OF path -- so it prints violet for both Sundays.")
- (expected_rows 89))
- ((id C4)
- (citation "RG 91 entry 18 (\"II-class ferias ... Advent 17-23 Dec\"); register §3c item 2")
- (verdict colitur)
- (note "Advent ferias 17-23 December (excluding the Advent Ember days, already correct on both sides) are II class in colitur. lectio marks every Advent feria III class.")
- (expected_rows 140))
- ((id C5)
- (citation "RG 91 entry 18 (\"Ember days of Advent, Lent, September\", the same entry as C4); extends register §3c item 2 to the Lent set on the same textual basis lectio already gets right for Advent and September")
- (verdict colitur)
- (note "The Lent I Ember Wednesday/Friday/Saturday are II class with colitur's own ef-lent-ember-{wed,fri,sat} slugs. lectio implements the Advent and September Ember exceptions (matches colitur exactly, confirmed empty diff there) but not the Lent one, falling back to a plain ef-lent-1-<weekday> III-class feria -- a lectio gap not previously named in the register.")
- (expected_rows 128))
+ (note "6-13 January is Christmastide in colitur, matching RG 72-73's explicit boundary at 13 January (corroborated independently by RG 119a's colour rule, §3b). lectio's efSeason switches to time-after-epiphany on 6 January. The season disagreement cascades into colour (green vs white) and, on 7-8 January specifically, into the ferial slug family name (colitur's ef-christmas-2-<weekday> vs lectio's ef-time-after-epiphany-1-<weekday> for the same two days). REFRESHED (ef-rebootstrap fixture refresh, 2026-08-12): expected_rows moved 361 -> 368. NOT a new divergence -- the closed C13's own 7 rows (13 January in the 7 years it falls on a Sunday) fold back in here: lectio's fix wave independently fixed its own equivalent of the RG16(a) defect C13 used to allow-list, so on all 7 of those Sunday years lectio's slug now matches colitur's `commemoration-of-the-baptism-of-the-lord` too (not just rank/colour), leaving season as the ONLY residual difference on those rows -- squarely inside C1's own existing shape (diffs subset of [Season;Colour;Slug] with the Slug-diff escape clause unused). Re-derived independently (a Python cross-check reading colitur's own `day` CLI output for 2005-2050 and the refreshed lectio fixture directly, replicating diff_fields/layer_c_reason's own logic outside the OCaml comparator, then cross-checked against the OCaml comparator's own `test_layer_c_counts_match_citations` failure output before this entry's value was set -- not by running the comparator green and copying its number): 368.")
+ (expected_rows 368))
((id C6)
(citation "RG 91 entry 17 (\"days within the Octave of the Nativity\")")
(verdict colitur)
- (note "29-31 December (and any Sunday landing among them) are II class in colitur, with the ef-nativity-octave-day-{5,6,7} slugs. lectio treats them as plain class-4 ferias (ef-christmas-0-<weekday>), not recognising the Nativity octave's own entry.")
+ (note "29-31 December (and any Sunday landing among them) are II class in colitur, with the ef-nativity-octave-day-{5,6,7} slugs. REFRESHED (ef-rebootstrap fixture refresh, 2026-08-12): expected_rows is UNCHANGED at 138, but the SHAPE narrowed -- lectio's fix wave independently promoted 26-31 December to II class too (its own \"beyond the seven\" fix, RG 67-68), so the RANK component of this divergence is gone; every one of the 138 rows now differs ONLY in slug (lectio keeps its generic ef-christmas-0-<weekday> feria name; colitur's date-keyed ef-nativity-octave-day-N names are not adopted, since these are FIXED calendar dates within the octave, not a weekday-numbered family Layer A's own literal-pair table could safely absorb without re-entangling the two engines' differing office-identity conventions for this window -- see test_differential.ml's own norm_slug comment for why the analogous January case is handled there and this one deliberately is not). Re-derived the same way as C1 above (Python cross-check against the refreshed fixture and colitur's `day` CLI output, cross-checked against the OCaml comparator's own failure output): 138, exactly the prior count -- a coincidence of this being a pure renaming (identity/count both unchanged), not evidence the recount was skipped.")
(expected_rows 138))
- ((id C7)
- (citation "RG 91 entries 16 (II-class feast of the universal Church) vs 18 (II-class ferias, incl. Ember days) -- entry 16 outranks entry 18")
- (verdict colitur)
- (note "St Matthew (21 September, colliding with the September Ember Wednesday or Friday in some years) and St Thomas (21 December, colliding with the Advent Ember Friday in some years) are both II-class universal feasts and win the day per RG 91's own numeric ordering -- matching Rite_ef.Precedence_ef.band's already-reviewed entry 16/18 handling. lectio does not contest Ember days against sanctoral feasts at all and keeps the Ember office observed.")
- (expected_rows 34))
((id C8)
(citation "RG 87 (Minor Litanies/Rogations, Mon/Tue before Ascension); register §3c item 3")
(verdict colitur)
- (note "Rogation Monday and Tuesday exist as colitur's own ef-rogation-{monday,tuesday} slugs (violet) whenever no higher-ranked saint intervenes. lectio computes no Rogation days at all and shows the plain paschaltide-week-6 feria instead.")
+ (note "Rogation Monday and Tuesday exist as colitur's own ef-rogation-{monday,tuesday} slugs (violet) whenever no higher-ranked saint intervenes. lectio computes no Rogation days at all and shows the plain paschaltide-week-6 feria instead. REFRESHED (ef-rebootstrap fixture refresh, 2026-08-12): expected_rows UNCHANGED at 31 -- lectio's fix wave did not touch Rogation computation at all (not named in any of its seven defects), independently confirmed by re-deriving the count against the refreshed fixture (same Python cross-check as C1/C6, matched the OCaml comparator's own failure output before being set here).")
(expected_rows 31))
- ((id C9)
- (citation "RG 95 (translation is a right of I-class FEASTS only) + RG 91 entry 6, §4 (Sundays are a separate table row, not feasts) + RG 109(a) (\"of a Sunday\" is a privileged commemoration, presupposing the Sunday stays put) + RG 96 (the general translation walk) -- the same reasoning already fixed for the analogous impeded-Sunday defect in Precedence_ef (Task 9)")
- (verdict colitur)
- (note "St Joseph (19 March, I class) colliding with a Lent Sunday (I class per C2): colitur keeps the Sunday observed and transfers Joseph to the next free day (usually 20 March; in years the walk is congested enough to cross Easter, as far as 1 April -- 2008, 2035, 2046, independently pinned by this project's own transfer tests). lectio instead puts Joseph ON the Sunday, displacing the Lenten Sunday office RG 95 says cannot be displaced by a translated feast.")
- (expected_rows 15))
- ((id C10)
- (citation "RG 91 entry 3 (Sacred Heart, a Feast of the Lord, outranks entry 11 Precious Blood) + RG 96 (impeded I-class feast moves to the next day that is NOT I or II class)")
- (verdict colitur)
- (note "2011: Sacred Heart (Friday after the Corpus Christi octave) falls on 1 July and impedes the Precious Blood (also 1 July, I class but a lower RG 91 entry). RG 96's walk must skip 2 July (Visitation, II class) and 3 July (Sunday), landing on 4 July (Monday, a free class-4 feria). lectio instead lands Precious Blood on 2 July, illegitimately displacing the Visitation -- exactly what RG 96's \"not I or II class\" clause forbids.")
- (expected_rows 2))
- ((id C11)
- (citation "RG 128(b), primary-source-verified 2026-08-12 (Task 16): \"...a dominica in Septuagesima usque ad Vigiliam paschalem, exceptis: ... Missa sive Chrismatis sive in Cena Domini feria V Hebdomadae sanctae; ...\" -- violet runs Septuagesima to the Easter Vigil EXCEPT (among other things) the Mass of Holy Thursday, named as a whole-Mass exception")
- (verdict colitur)
- (note "Holy Thursday (\"ef-passiontide-2-thursday\") is white in colitur, per RG 128(b)'s explicit exception -- independently confirmed by the missalemeum oracle (Task 16 report), whose colour set for that day is white alone, unlike the surrounding Triduum days which include violet as an option. lectio has no such exception and prints Passiontide's base violet straight through Holy Thursday. Found via Task 16's oracle comparison, not the original lectio differential (lectio's own colour did not previously disagree, because colitur's own bug matched it) -- fixed in colitur, so this row records a NEW divergence from lectio's still-uncorrected violet, not a pre-existing one.")
- (expected_rows 46))
- ((id C12)
- (citation "RG 91 entry 24 (\"Festa III classis, in calendario Ecclesiae universae inscripta\") outranks entry 28 (\"feriae IV classis\") -- register §4's own Table of Precedence, unchanged by this task; only the underlying DATA changed, ef-rebootstrap (2026-08-12): 15 entries in data/ef/sanctoral.sexp were wrongly bootstrapped `rank = commemoration` (RG 91 gives a bare commemoration no table row at all, register §6.1) where the 1962 calendarium's own text gives each a class number instead -- primary-source-verified, all 15 falling 6 March-5 April (benedict 21 Mar, cyril-of-jerusalem 18 Mar, forty-holy-martyrs-of-sebaste 10 Mar, frances-rome 9 Mar, francis-of-paola 2 Apr, gabriel-the-archangel 24 Mar, gregory-the-great 12 Mar, isidore-of-seville 4 Apr, john-damascene 27 Mar, john-of-capistrano 28 Mar, john-of-god 8 Mar, patrick 17 Mar, sts-felicitas-perpetua 6 Mar, thomas-aquinas 7 Mar, vincent-ferrer 5 Apr). Corrected upstream in lectio's own generator and re-bootstrapped here (source SHA-256 1b303ef2...); the occurrence/precedence code that resolves entry 24 over entry 28 already existed and needed no change.")
+ ((id C14)
+ (citation "RG 95 (translation is a right of I-class feasts) + RG 96 (the general forward walk, \"the next following day that is not I or II class\") + RG 96's own Attamen (a) (\"festum Annuntiationis ... quando est transferendum post Pascha, transfertur, tamquam in sedem propriam, in feriam II post dominicam in albis\" -- the Annunciation's transferred target is its OWN PROPER SEAT, not a provisional landing spot subject to further re-ordering)")
(verdict colitur)
- (note "7 of the 15 corrected slugs fall on a date that lands inside a plain class-4 Paschaltide or Septuagesima feria somewhere in 2005-2050 (frances-rome, francis-of-paola, isidore-of-seville, john-of-god, sts-felicitas-perpetua, thomas-aquinas, vincent-ferrer -- 7 unique slugs, 14 rows total, CORRECTED fix round 1 (F5): this note previously said \"5 of the 15\" while listing all 7 and separately saying \"7 unique slugs\" -- it is 7, independently re-derived by grepping data/ef/sanctoral.sexp's own post-regeneration output against the committed lectio fixture directly, not by transcribing the comparator's own count): colitur now correctly observes the FEAST itself (e.g. `vincent-ferrer class-3 white`); lectio's fixture (frozen before lectio's own equivalent generator fix) still shows the class-4 feria observed with the SAME saint only as a trailing commemoration (e.g. `ef-easter-2-tuesday class-4 white +vincent-ferrer`) -- confirming the saint was already the correct candidate on both sides, and only the OCCURRENCE RESOLUTION differs, exactly as RG 91's own numeric table (24 < 28) requires. C12 was previously used, briefly, for an unrelated Purification-retag divergence that was reverted in the RG16(a) task (see test_differential.ml's own layer_c_reason comment) -- reused here since that earlier entry no longer exists.")
- (expected_rows 14))
+ (note "ef-rebootstrap fixture refresh (2026-08-12), replacing the closed C9's old 'Joseph on a Lent Sunday' shape: in 2008, 2035 and 2046, St Joseph's (19 March) RG 96 walk is congested enough by Passiontide/Holy Week/the Easter octave to cross Easter, landing on the Monday after Low Sunday -- exactly where the Annunciation (25 March), independently transferred under its own Attamen (a) exception, has already been assigned its \"sedes propria\". colitur's calendar.ml (place_transfers/compare_deferred) resolves the resulting same-band (RG 91 entry 11) tie between the two I-class feasts by slug order (\"annunciation...\" < \"joseph...\"), an engineering convention with no direct RG citation of its own (recorded honestly as such in calendar.ml's own comments and test_golden.ml's 2008 golden-pin comment) -- so the Annunciation keeps the Monday and Joseph's own walk continues one day further (1 April 2008; 3 April 2035 and 2046, since the Annunciation's own target there is 2 April), each a genuine free class-4 feria. lectio, by contrast, does NOT resolve this collision at all: its transferIfImpededEF walks each candidate independently with no awareness of a second contestant, so the Annunciation's own walk claims the Monday and Joseph is left with no transferred day anywhere -- merely tacked onto the Annunciation's own row as a trailing, never-admitted \"+joseph-spouse-of-the-bl-virgin-mary\" candidate (lectio's own commit 09a1444, \"calendar: record the RG 95 chained-transfer gap in the source\", states this outright: \"No functional change -- this collision is left unfixed, defensible against scope\"). RG 95 grants the right of translation to I-class feasts; Joseph has it and lectio's engine never exercises it for him here -- colitur giving him a real transferred day, somewhere, is the more textually faithful reading regardless of the harder sub-question below. OPEN SUB-QUESTION, recorded rather than silently resolved either way (docs/research/rules-register.md has the full account): whether Joseph, being impeded FIRST (19 March, six days before the Annunciation's own 25 March), should instead take priority for the Monday under RG 98's \"in paritate autem Officium prius impeditum praecedit\" (at equal table position, the office impeded first takes precedence) -- which would push the ANNUNCIATION to the later day instead. colitur's current slug-order tie-break was never checked against this specific reading; the Annunciation's own \"tamquam in sedem propriam\" wording is offered as the stronger textual argument for exempting it from an RG 97/98 queue contest altogether (it names a specific day as its own proper seat, not a provisional walk target), but this is this project's own reading of the primary text, not a settled point -- flagged as a genuine open item, not adjudicated with full confidence either direction. Independently re-derived (not copied from prose): `grep joseph-spouse-of-the-bl-virgin-mary` against both the refreshed fixture and colitur's own `day` CLI output for 2005-2050, filtered to rows with a real post-Layer-A/B diff -- exactly these 3 dates, cross-checked against the OCaml comparator's own failure output before this value was set.")
+ (expected_rows 3))