From 7d3b5ec831a60e8b63466251d63b2bd564acba2b Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Wed, 12 Aug 2026 13:32:13 +0200 Subject: fix(rite-ef,kernel): follow the oracle on the Purification; admit reads the day's own Sunday-ness, not observed Fix round 1 review, two findings landed together because each golden pin's correctness depends on both. CRITICAL (item 1): reverts this branch's own first-pass retag of the Purification (2 February) from Lord back to Bvm -> Lord. The calendarium titles it 'B. Mariae Virg.', but missalemeum -- this project's designated EF oracle -- treats it as taking an occurring II-class Sunday's place outright, commemorations empty, exactly RG16(a)'s own festum Domini treatment (2020-02-02, 2014-02-02, independently fetched). Control, 2019-09-08 (the Nativity of the BVM, an ordinary Marian feast, on a Sunday): the Sunday observed, the feast merely commemorated -- the opposite pattern, proving the Purification's own oracle treatment is deliberate, not a gap. RG16(a) alone, on the untouched data, would have matched the oracle character for character; retagging Bvm is what moved colitur away from it on 1200 domain-wide days. The user has ruled: follow the oracle. Genuine primary-text counter-evidence (RG120(b), the colour rule grouping 2 February under 'B. Mariae Virg.', a category separate from 'Domini') is recorded in the register, not discarded -- a different project could reasonably rule the other way on the same evidence. most-holy-name-of-mary stays retagged Bvm; that one was never disputed. Removes the now-unneeded C12 lectio allow-list entry (data/ef/ expected-divergences.sexp, test_differential.ml): with the Purification Lord again, colitur matches lectio's own class = lord on every affected date, no divergence to allow-list. IMPORTANT (item 2): Precedence.rules.admit gains a ~temporal parameter -- a genuine kernel signature change, unlike RG16(a) itself. RG111(b)'s own Sunday rank floor ('one commemoration, namely of a II-class feast') used to be detected by reading observed's own slug for a Sunday marker, which silently assumed observed IS the day's temporal-cycle office. RG16(a) breaks that assumption on purpose: a Feast of the Lord standing in for an impeded Sunday 'cum omnibus iuribus et privilegiis' keeps the day a dominica II classis for RG111(b) too, even though the FEAST, not the Sunday, is observed. Before this fix an unrelated saint (Pope Sixtus II et al., 6 August, Class3) was wrongly admitted into the freed slot on every one of 1178 domain-wide days. Oracle-confirmed directly: 2023-08-06 (a Sunday) shows him displaced, commemorations empty; 2026-08-06 (an ordinary Thursday) shows him admitted -- being a Sunday is exactly what excludes him. admit now reads Sunday-ness off ~temporal (the day's own temporal-cycle candidate, passed through from Precedence.resolve unchanged) instead of observed. Validate's own admission fixed-point invariant updated to pass the same real temporal candidate through. Both golden pins in test_golden.ml were promoted from actual colitur day output without independently consulting the rubric or the oracle first -- a real defect the review caught. Re-derived from both before re-pinning: 2028-08-06 and 2025-02-02 now pin comms=[], no commemoration at all, matching missalemeum exactly in both cases. --- data/ef/adjustments.sexp | 71 +++++++++++++++++++++------------------ data/ef/expected-divergences.sexp | 5 --- 2 files changed, 38 insertions(+), 38 deletions(-) (limited to 'data/ef') diff --git a/data/ef/adjustments.sexp b/data/ef/adjustments.sexp index 7d61170..05ee401 100644 --- a/data/ef/adjustments.sexp +++ b/data/ef/adjustments.sexp @@ -11,41 +11,46 @@ ; removal (Overlay.apply's own diagnostic fires if this slug is ever absent, ; e.g. after a re-bootstrap that renames it), not a silent drop. ; -; RG16(a) task (docs/research/rules-register.md §6.0): corrects two of -; data/ef/sanctoral.sexp's six `(subject Lord)` entries, both inherited -; unchecked from lectio's own `class = lord` field (tridentine-calendar.ini) -; -- confirmed WRONG against the calendarium itself, which names both a -; feast of the BLESSED VIRGIN, not of the Lord: -; - `purification-of-the-blessed-virgin-mary` (2 Feb): calendarium line -; "IN PURIFICATIONE B. MARIAE VIRG., II classis" -- "B. Mariae Virg." is -; the Missal's own Purification-of-Mary title, not "D. N. I. C." (the -; formula the genuinely Lord-tagged entries carry, e.g. 6 Aug -; "IN TRANSFIGURATIONE D. N. I. C." or 1 Jul "PRETIOSISSIMI SANGUINIS -; D. N. I. C."). -; - `most-holy-name-of-mary` (12 Sep): calendarium line "Sanctissimi -; Nominis Mariae, III classis" -- "Nominis Mariae", the Name of MARY, -; not of the Lord. -; Corrected as an Edit directive, not a hand-edit of data/ef/sanctoral.sexp -; itself: that file's own header says "do not hand-edit... re-run the -; generator and commit the diff instead", and its provenance SHA-256 covers -; a straight, byte-faithful conversion of lectio's INI -- an edit belongs in -; THIS file, the project's own existing mechanism for a correction over the -; bootstrap (the [Suppress] directive above sets exactly this precedent). -; The base sanctoral.sexp stays a faithful mirror of lectio (so a future -; re-bootstrap cannot silently re-introduce the error unnoticed: this Edit -; keeps applying regardless, and [Overlay.apply]'s own diagnostic fires -; loudly if the slug it targets is ever renamed or removed upstream). +; RG16(a) task (docs/research/rules-register.md §6.0): corrects one of +; data/ef/sanctoral.sexp's six `(subject Lord)` entries, inherited unchecked +; from lectio's own `class = lord` field (tridentine-calendar.ini) -- +; `most-holy-name-of-mary` (12 Sep): calendarium line "Sanctissimi Nominis +; Mariae, III classis" -- "Nominis Mariae", the Name of MARY, not of the +; Lord, with no counter-evidence found anywhere (the "D. N. I. C." formula +; the genuinely Lord-tagged entries carry, e.g. 6 Aug "IN TRANSFIGURATIONE +; D. N. I. C.", is simply absent here, and nothing else in the calendarium +; suggests otherwise). This tag has no behavioural effect either way today +; ({!Precedence_ef.band}'s entry 14, the only place [subject] is tested for +; a II-class candidate, requires [Class2]; this entry is [Class3]) -- kept +; for the data's own accuracy, not because anything currently reads it. ; -; The other four `(subject Lord)` entries were verified against the same -; calendarium and left untouched (all task-report-cited): 1 Jul "PRETIOSISSIMI -; SANGUINIS D. N. I. C., I classis"; 6 Aug "IN TRANSFIGURATIONE D. N. I. C., -; II classis"; 14 Sep "IN EXALTATIONE S. CRUCIS, II classis" (the Cross as -; the instrument of Christ's own Passion, not a canonised person -- the -; traditional "feast of the Lord" reading, {!Subject.t} having no separate -; category for it); 9 Nov "IN DEDICATIONE ARCHIBASILICAE SANCTISSIMI -; SALVATORIS, II classis" ("of the Most Holy SAVIOUR", i.e. Christ). +; The tag [Bvm] itself carries no further systematic meaning in this +; codebase beyond "not Lord" -- after this correction it exists on exactly +; this one entry, while every other Marian feast (the Assumption, the +; Immaculate Conception, the Nativity of the BVM, ...) stays `(subject +; Saint)`. Nothing reads [Bvm] specifically; {!Subject.t}'s four-way split +; is not fully exercised by this codebase's own logic, only [Lord] is. +; +; RG16(a) task, fix round 1 (CRITICAL finding, reverted): a companion Edit +; here previously also retagged `purification-of-the-blessed-virgin-mary` +; (2 Feb) to [Bvm], on the same calendarium-title argument ("B. Mariae +; Virg.", not "D. N. I. C."). REVERTED -- the user has ruled: follow the +; oracle. missalemeum (this project's designated EF oracle) treats the +; Purification as taking an occurring II-class Sunday's place OUTRIGHT, with +; NO commemoration of the Sunday (`2020-02-02`, `2014-02-02`: title +; "Purification of the Blessed Virgin Mary", `"commemorations": []`), +; exactly RG 16(a)'s own "festum Domini" treatment -- and NOT the treatment +; it gives an ordinary Marian feast on a Sunday (`2019-09-08`, the Nativity +; of the BVM: title "XIII Sunday after Pentecost", the FEAST demoted to a +; commemoration, the Sunday observed -- the opposite pattern). Genuine +; primary-text counter-evidence for the Marian reading remains on record +; (RG 120(b): the white-colour rule groups 2 February under "B. Mariae +; Virg.", a SEPARATE category from "Domini" -- register §6.0 quotes it in +; full), so the calendarium TITLE and the oracle's BEHAVIOUR disagree here; +; the user's ruling resolves that disagreement in the oracle's favour for +; this codebase's own purposes, not by declaring the calendarium argument +; wrong. See register §6.0 for the full account of both sides. ((id ef-adjustments) (directives ((Suppress vigil-of-christmas) - (Edit purification-of-the-blessed-virgin-mary ((Set_subject Bvm))) (Edit most-holy-name-of-mary ((Set_subject Bvm)))))) diff --git a/data/ef/expected-divergences.sexp b/data/ef/expected-divergences.sexp index d6161c2..c8d863d 100644 --- a/data/ef/expected-divergences.sexp +++ b/data/ef/expected-divergences.sexp @@ -72,8 +72,3 @@ (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 "Calendarium (docs/research/1962-06-23,_SS_Ioannes_XXIII,_Missale_Romanum,_LT.pdf), 2 February row: \"IN PURIFICATIONE B. MARIAE VIRG., II classis\" -- \"of the Purification of the Blessed VIRGIN MARY\", not \"D. N. I. C.\" (the formula the calendarium uses for the project's other five genuine Lord-subject entries, e.g. 6 Aug \"IN TRANSFIGURATIONE D. N. I. C.\"); combined with RG 16(a) (register §6.0, Caput III \"De Dominicis\": a Feast of the LORD, I or II class, takes an occurring II-class Sunday's own place -- a BVM feast does not)") - (verdict colitur) - (note "The Purification (2 February) is a feast of the Blessed Virgin Mary, not of the Lord -- data/ef/sanctoral.sexp inherited lectio's own unchecked `class = lord` field; data/ef/adjustments.sexp retags it `Bvm` (RG16(a) task, this task's own report), so it no longer bands at RG 91 entry 14 (Feasts of the Lord, II class) and no longer outranks an occurring II-class Sunday. On the six 2 Februaries in this fixture's 2005-2050 span that fall on a Sunday, colitur now observes the Sunday and commemorates the Purification (RG 109(a)/RG 111(b), an ordinary II-class-Sunday commemoration); lectio still tags the entry `lord` and so still observes the Purification outright, displacing the Sunday. expected_rows is not transcribed from a comparator run: 2 February falls on a Sunday in exactly six years of 2005-2050 -- 2014, 2020, 2025, 2031, 2042, 2048 -- independently verified with `date -d -02-02 +%A` (glibc, the same cross-check discipline test_golden.ml's own header requires), one row each.") - (expected_rows 6)) -- cgit v1.3