aboutsummaryrefslogtreecommitdiff
path: root/data/ef/expected-divergences.sexp
blob: 2d51048ad8bf4802e915a90ace82c5741150e425 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
; data/ef/expected-divergences.sexp -- Task 15's Layer C: the CITED allow-list
; for colitur's differential harness against lectio (test/test_differential.ml),
; 2005-2050. This is the only layer that may cover a difference in rank,
; colour, or which celebration is observed -- Layers A (vocabulary) and B
; (numbering) live in test_differential.ml's code because they normalise
; NAMES and INDICES only and never touch this file's territory.
;
; Each entry is a genuine liturgical disagreement between the two engines.
; [verdict] names which engine the register/Missal backs; every entry here
; is "colitur" -- an entry saying otherwise would mean "fix colitur", not
; "allow-list it" (task ruling). [expected_rows] is the exact row count this
; entry accounts for over the fixture's 2005-2050 span: a REGRESSION PIN, not
; documentation -- test_differential.ml asserts actual counts equal these
; exactly, so an unnoticed behaviour change here fails loudly instead of
; silently changing what the harness accepts.
;
; 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).
((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))
 ((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.")
 (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.")
 (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.")
 (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))