aboutsummaryrefslogtreecommitdiff
path: root/data/ef
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-17 14:13:02 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-17 14:13:02 +0200
commit3565ebd1608a7d87e0d890f9953845efcfe743ca (patch)
tree6b2d056475b4f36d041e3ef1522ca7c7c11110ec /data/ef
parent5d236c75c557a7e9ed4a8a852b8089aca48b594e (diff)
downloadcolitur-3565ebd1608a7d87e0d890f9953845efcfe743ca.tar.gz
colitur-3565ebd1608a7d87e0d890f9953845efcfe743ca.zip
fix(lectionary): two Judith citations wrong in both engines
A live-missalemeum sweep over a full liturgical year (2028, 364 days) returned 333 matching and 31 differing days: 17 already-known or pure notation, 3 new. All three now adjudicated against the photographic scans of the 1962 Missal. The Assumption's Epistle reads "Iudith 13, 22-25; 15, 10" (scan1:35357). Both engines carried "Judith 13:22-25; 13:15; 13:10" -- a chapter carry-over defect that re-applied chapter 13 to the second citation and so invented two verses the Missal never cites. The Seven Sorrows reads "Iudith 13, 22 et 23-25" (scan1:36938, corroborated at 28468); both carried "Judith 13:22; 13:25", dropping the range. The third, St Monica, resolves the other way: the Missal gives 1 Timothy (scan2:32679, heading and incipit both legible; scan1:29524 agrees) where missalemeum serves the Common of Holy Women's Proverbs -- colitur is right, no change. Layer 3 could not have found either citation defect. colitur's data is bootstrapped from lectio, and lectio is the other side of that differential, so while both engines produced the identical wrong answer the comparison held it against itself and reported agreement -- the shared-lineage blindness CLAUDE.md names, now with a second live witness beside Holy Thursday's colour. Only an external oracle could see it, and only outside the committed fixture's own window. Fixed upstream in lectio, re-bootstrapped here (provenance SHA-256 moved to 54f6bfc5, verified against the source), fixture regenerated. The upstream fix inverted layer 3 from blind to load-bearing here: reverting the Assumption citation now reddens both layers, where before it would have reddened neither. Verified by mutation, both directions. Allow-lists: - C22 closed and removed (128 rows -> 0), not re-adjudicated -- the other engine was fixed to agree, the same shape as the C2-C5/C7/C9-C13/C21 closures. Its own note had already flagged the Lenten Ember dead-key bug for upstream; lectio now also fails its build on any unreachable lectionary key rather than serving a plausible wrong Mass. - M28 opened (3 rows, verdict colitur), pinning both sides' citation text rather than the date and diff shape alone, so a different divergence landing on the same date cannot be swallowed. - M8's gate widened, expected_rows unchanged at 2: 2027-08-15 carries both its cause and M28's, and one entry is admitted per day. It stays under M8, which now requires its own commemoration difference to be present and admits the citation difference only when it satisfies M28's two-sided predicate. Neither cause absorbs the other. layer_m_reason's oracle-row parameter, kept named since M2 closed for exactly such a future reader, is live again. Register: docs/research/rules-register.md section 6.6.
Diffstat (limited to 'data/ef')
-rw-r--r--data/ef/expected-divergences-missalemeum.sexp8
-rw-r--r--data/ef/expected-divergences.sexp24
-rw-r--r--data/ef/sanctoral.sexp8
3 files changed, 30 insertions, 10 deletions
diff --git a/data/ef/expected-divergences-missalemeum.sexp b/data/ef/expected-divergences-missalemeum.sexp
index b5374ab..90ffceb 100644
--- a/data/ef/expected-divergences-missalemeum.sexp
+++ b/data/ef/expected-divergences-missalemeum.sexp
@@ -196,8 +196,14 @@ WIDENED, Task 9 (branch ef-lectionary, layer-4 oracle): [First_mismatch]/[Gospel
((id M8)
(citation "RG 109(a) (\"of a Sunday\" is always privileged) + RG 111(a) (\"I class: none save one privileged\")")
(verdict colitur)
- (note "When a fixed I-class feast (All Saints 1 Nov; the Assumption 15 Aug) lands on an ordinary Sunday, the impeded Sunday IS the one privileged commemoration RG 111(a) admits -- already an established, independently-tested rule (test_precedence_ef.ml's RG95/RG109(a) row). missalemeum shows no commemoration at all on either occurrence in this window.")
+ (note "When a fixed I-class feast (All Saints 1 Nov; the Assumption 15 Aug) lands on an ordinary Sunday, the impeded Sunday IS the one privileged commemoration RG 111(a) admits -- already an established, independently-tested rule (test_precedence_ef.ml's RG95/RG109(a) row). missalemeum shows no commemoration at all on either occurrence in this window. WIDENED, Task 9 (branch ef-lectionary): one of this entry's two dates, 2027-08-15, now ALSO carries M28's Judith-citation divergence -- the Assumption falls on a Sunday that year, so BOTH causes land on the identical day, and the classifier admits one entry per day. That day stays here rather than moving to M28, because THIS entry's cause is the one that decides the day's own commemoration; the gate requires [Comm_presence] to be actually present and admits [First_mismatch] only when it is exactly M28's shape with both sides pinned (test_oracle.ml's own [judith_divergence]), so neither cause is silently absorbed into the other and a citation divergence of any other shape on either M8 date still escapes to unexplained. expected_rows is unchanged at 2 for that reason; M28 declares the remaining 3 dates.")
(expected_rows 2))
+
+ ((id M28)
+ (citation "MR1962 propers, primary-source-verified against the photographic scans (branch ef-lectionary, 2026-08-17): the Assumption at scan1.txt:35357, under \"IN ASSUMPTIONE BEATAE MARIAE VIRGINIS\" -- \"Iudith 13, 22-25; 15, 10\"; the Seven Sorrows at scan1.txt:36938, corroborated independently at scan1.txt:28468 -- \"Iudith 13, 22 et 23-25\".")
+ (verdict colitur)
+ (note "Two Judith citations both engines used to get wrong the same way, found by a live-missalemeum full-year sweep (2028 liturgical year) run this task, then adjudicated against the scans. lectio's generator emitted \"Judith 13:22-25; 13:15; 13:10\" for the Assumption -- a chapter carry-over defect, re-applying chapter 13 to the second citation's own \"15, 10\" and thereby INVENTING two verses -- and \"Judith 13:22; 13:25\" for the Seven Sorrows, dropping the \"et 23-\" range. colitur inherited both through its own bootstrap. This is the \"Holy Thursday was violet in both\" shared-lineage shape this project's CLAUDE.md names, and precisely why layer 3 could never have caught it: lectio IS the other side of that comparison, so the differential was structurally blind for as long as both engines agreed on the wrong answer. Fixed upstream in lectio and re-bootstrapped here; missalemeum still serves the defective form, so the divergence surfaces on layer 4 and is adjudicated colitur against the primary source. Gated on the literal date list AND on BOTH sides' citation text (test_oracle.ml's own [judith_divergence]) -- not merely the diff shape, which is the C6/C14 failure mode this file's header documents. 3 rows, not 4: the fourth affected date, 2027-08-15, is accounted under M8, which see.")
+ (expected_rows 3))
((id M10)
(citation "RG 109(e), unqualified text: \"de feriis Adventus, Quadragesimae et Passionis\" -- of the FERIAS of Advent (not \"the Advent ferias 17-23 December only\", which is RG 91 entry 18's separate OCCURRENCE-table dignity, not a RG 109 privilege restriction)")
(verdict colitur)
diff --git a/data/ef/expected-divergences.sexp b/data/ef/expected-divergences.sexp
index 836ebed..e0a3fed 100644
--- a/data/ef/expected-divergences.sexp
+++ b/data/ef/expected-divergences.sexp
@@ -145,11 +145,25 @@ CORRECTED, task 8 fix round 1 (coordinator review, Minor): this note previously
; gap) -- test_differential.ml's own layer_c_reason carries no C21
; predicate any more, the same discipline this file's own C2-C5/C7/
; C9-C13 closures already established.
- ((id C22)
- (citation "RG 91 entry 18, scan1.txt:772-775 word for word, for the RANK (\"18. Feriae II classis, nempe: ... et feriae Quatuor Temporum Adventus, Quadragesimae et mensis septembris\" -- the Lenten Ember days are II-class ferias); MR1962 \"De anno et eius partibus\", scan1.txt:2084-2089 word for word, for the DATE-ANCHOR (\"Quatuor Tempora celebrantur... post primam dominicam Quadragesimae...\" -- WHEN they fall, register ยง3a, the same citation Rite_ef.Temporal_ef's own [ember] carries). CORRECTED, fix round 2 (coordinator review, Minor): the previous version of this citation quoted the date-anchor TEXT but attributed it to RG 91 entry 18 -- the two are different sections of the Missal answering different questions (rank vs date), both real, now cited separately and correctly.")
- (verdict colitur)
- (note "task 8 fix round 1 (coordinator review, Critical 2): the Lenten Ember days (colitur's own `ef-lent-ember-{wed,fri,sat}`) are reachable for the first time this fix round -- tools/bootstrap_lectionary.ml's own [colitur_keys] comment has the full account of the dead-key bug this closes (lectio's own ini keys this data under the generic \"ef-lent-1-<weekday>\" family, unreachable under colitur's own spelling until renamed). lectio's own SLUG for these three days already matched colitur's (\"ef-lent-ember-wed\" etc, both engines -- confirmed no [Slug_f] in this entry's own rows), but lectio's own READING resolution has the IDENTICAL internal mismatch colitur's used to have: its own [caldata.Readings] never reaches its own Ember data either, so it still falls back to Lent I Sunday's own Mass (e.g. \"2 Cor. 6:1-10\"/\"Matt 4:1-11\") on every one of these dates, where colitur now correctly shows the Ember day's own proper (e.g. \"3 Kgs. 19:3-8\"/\"Matt 12:38-50\"). A genuine LECTIO bug, reported here for upstream, NOT patched in this task (the brief's own triage rule). This is exactly the \"Holy Thursday was violet in both\" shape this project's own CLAUDE.md already names: layer 3 was STRUCTURALLY BLIND to this the whole time colitur also had the bug, since both engines independently produced the identical wrong answer -- a real illustration of why a passing differential means less here than it looks, not merely a citation elsewhere in this file's own header. Gated on the literal 3-slug list and `diffs = [ First_f; Gospel_f ]` exactly (slug/rank/colour already agree). Derived directly from the OCaml comparator's own failure output, not hand-counted first and cross-checked after: 128 (43 + 43 + 42 -- a few of the 46-year population are impeded by a competing sanctoral feast each year, so the Ember office itself is not always the observed day).")
- (expected_rows 128))
+ ; C22 -- CLOSED, Task 9 (branch ef-lectionary, 2026-08-17), REMOVED not
+ ; re-adjudicated to a different verdict: it stopped occurring entirely
+ ; (0 of 16801 rows), the same shape this file's own C2-C5/C7/C9-C13/C21
+ ; closures already established, and for the same reason -- the OTHER
+ ; engine was fixed to agree, not colitur changed. The entry's own note
+ ; called this out explicitly at the time ("A genuine LECTIO bug, reported
+ ; here for upstream, NOT patched in this task"): lectio's own lectionary
+ ; keyed the three Lenten Ember days under the generic "ef-lent-1-<weekday>"
+ ; family while its calendar computed "ef-lent-ember-{wed,fri,sat}", so its
+ ; own [caldata.Readings] never reached them and it fell back to Lent I
+ ; Sunday's Mass. That is now fixed upstream (lectio v0.46.1, keys renamed,
+ ; plus a test there that fails the build on any unreachable lectionary key
+ ; rather than silently serving a plausible wrong Mass), and the fixture was
+ ; regenerated from it -- so both engines now show the Ember day's own
+ ; proper and there is nothing left to allow-list. The citation is preserved
+ ; in docs/research/rules-register.md's own closure record, not deleted: it
+ ; was a real divergence, correctly adjudicated in colitur's favour at the
+ ; time. test_differential.ml's own layer_c_reason carries no C22 predicate
+ ; any more.
((id C23)
(citation "Holy Monday (\"Feria II Hebdomadae sanctae, I classis\"): Isa 50:5-10 / John 12:1-9. Holy Tuesday (\"Feria III Hebdomadae sanctae, I classis\"): Jer 11:18-20 / the Passion according to Mark, 14:32-72; 15:1-46. Holy Wednesday (\"Feria IV Hebdomadae sanctae\"): Isa 53:1-12 (the SECOND of two peer lessons, see note) / the Passion according to Luke, 22:39-71; 23:1-53. Holy Thursday (\"Feria V in Cena Domini\"): 1 Cor 11:20-32 / John 13:1-15. Good Friday (\"Feria VI in Passione et Morte Domini\"): Ex 12:1-11 (the SECOND of two peer lessons) / the Passion according to John, 18:1-40; 19:1-42. Holy Saturday (Missa Vigiliae Paschalis' own Epistle+Gospel, explicitly labelled \"Lectio Epistolae\", distinct from its own preceding prophecies): Col 3:1-4 / Matt 28:1-7. All six: docs/research/scan1.txt AND scan2.txt, word for word, both scans independently (tools/bootstrap_lectionary.ml's own [holy_week_entries] comment has the exact line references)")
(verdict colitur)
diff --git a/data/ef/sanctoral.sexp b/data/ef/sanctoral.sexp
index 2ab2857..dd22754 100644
--- a/data/ef/sanctoral.sexp
+++ b/data/ef/sanctoral.sexp
@@ -4,8 +4,8 @@
; generator against a newer lectio and commit the diff instead.
;
; Source: ../lectio/internal/caldata/tridentine-calendar.ini
-; SHA-256: 1b303ef2bce8f5ab431c9228d04e6d44cc11d6c5d36a6a34f8565912d6d7d54a
-; Converted (UTC): 2026-08-14
+; SHA-256: 54f6bfc5a5866bf21b1e422366a4c73235a2896a2f98a6c2c95c63a81c1e8a7b
+; Converted (UTC): 2026-08-17
; 327 entries (223 feast, 104 commemoration-only). Regenerate with:
; eval $(opam env) && dune exec tools/bootstrap_sanctoral.exe -- ../lectio/internal/caldata/tridentine-calendar.ini data/ef/sanctoral.sexp
((id ef-universal) (name "EF (1962) universal sanctoral")
@@ -276,7 +276,7 @@
(pl "Wniebowzi\196\153cie N. M. P.")))
(rank Class1) (status Feast) (colour White) (subject Saint)
(citations
- (((part First) (reference "Judith 13:22-25; 13:15; 13:10"))
+ (((part First) (reference "Judith 13:22-25; 15:10"))
((part Gospel) (reference "Luke 1:41-50"))))
(layer ef-universal))))
((date (Fixed (month 5) (day 2)))
@@ -2556,7 +2556,7 @@
(pl "Siedmiu Bole\197\155ci N. M. P.")))
(rank Class2) (status Feast) (colour White) (subject Saint)
(citations
- (((part First) (reference "Judith 13:22; 13:25"))
+ (((part First) (reference "Judith 13:22; 13:23-25"))
((part Gospel) (reference "John 19:25-27"))))
(layer ef-universal))))
((date (Fixed (month 6) (day 20)))