From 897c274fd28402159ca6d45eedc1257b1ce98696 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 18 Aug 2026 17:35:53 +0200 Subject: test(differential): C14 and C15 closed -- only slug vocabulary remains lectio adopted the last two Missal corrections colitur argued: C14 3 -> 0 RG 96(a)/97/98. lectio resolved each impeded I-class feast's transfer independently, so in 2008, 2035 and 2046 St Joseph and the Annunciation both walked onto the Monday after Low Sunday and Joseph, losing there, was observed on no day of those years at all. It now resolves the year's transfers as a set: the Annunciation takes the Monday as its sedes propria, Joseph the Tuesday. C15 7 -> 0 The Holy Family propers' own 13-January rubric, "sine commemoratione Baptismatis D.N.I.C.". lectio kept the Baptism as the observed office on all seven such years in 2005-2050. Those were the last two BEHAVIOUR classes. What is left is C1 (138) and C6 (119), both pure slug vocabulary. Measured across the whole fixture, applying only the season normalisation the test already applies: 579 of 16801 days differ, and every one of them differs on the SLUG ALONE. Zero days differ on season, rank, colour, Epistle or Gospel. (The test's own norm_slug table already maps 322 of the 579; the 257 left are C1 and C6. The field profile is the same either way.) So the two engines now agree on every liturgically meaningful field on every day of 2005-2050. The residue is what the two projects call things -- ef-christmas-2-friday against ef-time-after-epiphany-1-friday for the same day, same Mass. Aligning it means renaming lectio's slugs, and those are keys: its lectionary, clectio's generated tables and any user overlay are built on them. Left as vocabulary rather than forced. Fixture refreshed against lectio e713da2; 13 rows changed, colitur agrees with all of them. 24 divergence classes at the start of this work, 2 now. --- data/ef/expected-divergences.sexp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'data') diff --git a/data/ef/expected-divergences.sexp b/data/ef/expected-divergences.sexp index 1bad0ca..d6cbc5b 100644 --- a/data/ef/expected-divergences.sexp +++ b/data/ef/expected-divergences.sexp @@ -94,16 +94,23 @@ Gated on the literal date window (month=12, day in {29,30,31}) AND colitur's own ; 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 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 "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. WIDENED, task 8 (branch ef-lectionary, citation comparison): [First_f]/[Gospel_f] joined the accepted diff set -- Joseph's own transferred office now carries his own proper (Ecclus 45:1-6/Matt 1:18-21, data/ef/adjustments.sexp), a natural continuation of the SAME identity divergence this entry already explains, not a second cause. Count unchanged: 3.") - (expected_rows 3)) - ((id C15) - (citation "RG 91 entry 14 (\"Festa Domini II classis, primum mobilia, deinde fixa\") + RG 17(b) (\"festum S. Familiae ... celebrandum dominica prima post Epiphaniam ... locum tenet dominicae occurrentis cum omnibus iuribus et privilegiis\") + RG 112(a) (\"Officium, Missa aut commemoratio de aliquo festo vel mysterio unius Divinae Personae excludit commemorationem ... de alio festo vel mysterio eiusdem Divinae personae\"), all scan-verified; register §6.0/§4") - (verdict colitur) - (note "ef-rg112-rg110 task: SPLIT OUT of C1's own blanket 6-13 January window, not a new kind of divergence -- the same discipline the now-closed C13 already established for this exact date (C1's own note above), applied again because building Holy Family reopened the identical shape C13 used to cover, for a different underlying reason. Before this task, colitur had no Holy Family office: on these seven dates (13 January when it is itself a Sunday -- 2008, 2013, 2019, 2030, 2036, 2041, 2047), colitur's generic Sunday fallback lost outright to the fixed Commemoration of the Baptism of the Lord (already subject Lord in the rebootstrapped data, RG16(a)'s existing mechanism), producing the SAME slug lectio's own tridentine-calendar.ini shows there (`commemoration-of-the-baptism-of-the-lord`) -- only Season differed, inside C1's own shape. Holy Family (RG 17(b)) now correctly outranks the fixed Baptism (RG 91 entry 14's own \"primum mobilia, deinde fixa\" -- {!Rite_ef.Precedence_ef.entry_14_movable_band}) and excludes it as a commemoration entirely (RG 112(a), directly confirmed by the Holy Family Mass propers' own more specific 13-January rubric, both photographic scans: \"Si festum S. Familiae occurrerit die 13 ianuarii, Missa dicitur de festo S. Familiae, sine commemoratione Baptismatis D.N.I.C., et sine commemoratione dominicae\"), so colitur's own slug on these 7 dates changes to `ef-time-after-epiphany-sunday-1` (Holy Family's own -- unchanged from the plain Sunday key it always carried, temporal_ef.ml's own comment on why) -- a genuine SLUG divergence against lectio, which has no Holy Family at all and still shows the fixed Baptism observed. Gated on the literal 7-date list AND colitur's own slug (the same identity guard C1/C6/C8/C14 already apply, fix round 1's own finding 1). Derived from the OCaml comparator's own failure output directly (test_layer_c_counts_match_citations), not by hand-counting first and cross-checking after: 7. WIDENED, task 8: [First_f]/[Gospel_f] joined the accepted diff set -- Holy Family's own proper (Col 3:12-17/Luke 2:42-52) now differs from the fixed Baptism's, which lectio still shows, for the identical reason this entry already names. Count unchanged: 7.") - (expected_rows 7)) + ; 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 + ; Annunciation both walked onto the Monday after Low Sunday and Joseph, losing + ; there, was observed on no day of those years at all. lectio now resolves the + ; year's transfers as a set (its new efTransferPlan): the Annunciation takes + ; the Monday as its sedes propria under RG 96(a) and Joseph takes the Tuesday. + ; colitur's reading was right and is unchanged; the citation above is the one + ; lectio adopted. Preserved in the register. + ; C15 -- CLOSED, REMOVED (2026-08-18): 0 of 16801 rows, was 7. lectio has + ; adopted the Holy Family Mass propers' own 13-January rubric -- "Si festum + ; S. Familiae occurrerit die 13 ianuarii, Missa dicitur de festo S. Familiae, + ; SINE COMMEMORATIONE Baptismatis D.N.I.C." -- so on 2008, 2013, 2019, 2030, + ; 2036, 2041 and 2047 it now observes the Holy Family and omits the Baptism + ; outright, as colitur already did. lectio already had the Holy Family Mass on + ; every other Sunday after Epiphany; 13 January was the one date it could not + ; reach. colitur unchanged. Preserved in the register. ; C16 -- CLOSED, REMOVED (2026-08-18): 0 of 16801 rows, was 20. lectio builds RG 17(a)'s own 2-January fallback now, so the years with no Sunday in the 2-5 January window have the Holy Name office instead of none. ; Citation preserved in docs/research/rules-register.md. ; C17 -- CLOSED, REMOVED (2026-08-18): 0 of 16801 rows, was 439 -- the -- cgit v1.3