From 4df03d2f2e0e1da70ffc3d069c6e49a7edd21b31 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Wed, 12 Aug 2026 17:49:24 +0200 Subject: data(ef): document why adjustments.sexp's directives survive the re-bootstrap Neither of adjustments.sexp's two directives is a no-op after the regeneration, and neither is removed -- reasoned through deliberately rather than deleted on sight, per Overlay.apply's own documented diagnostic behaviour (Edit has no "already correct" case; it unconditionally folds every field_edit over the current value when the slug is present, no diagnostic either way). `Edit most-holy-name-of-mary (Set_subject Bvm)`: the base bootstrap no longer needs this correction (the source dropped `class = lord` for this slug, so the default is already Subject.Saint), but the overlay still forces `Saint -> Bvm`. Kept for two reasons: data precision (the calendarium's "Sanctissimi Nominis Mariae" title still argues for Bvm over the generic Saint default, independent of what lectio's class field says) and as a regression guard (Set_subject is unconditional, so it would also correct a future re-introduction of `class = lord` for this slug, the one subject value RG16(a) behaviourally reads). `Suppress vigil-of-christmas`: re-verified, not assumed -- the slug is still present, unchanged, in both the regenerated source and the regenerated sanctoral.sexp, so the directive still fires its ordinary slug-present path. test_rite_ef.ml's own comment on the overlay-in-effect test previously claimed the base file carries `subject Lord` for most-holy-name-of-mary, which the regeneration made false; corrected in place rather than left stale, per this project's own discipline around wrong claims. --- test/test_rite_ef.ml | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'test/test_rite_ef.ml') diff --git a/test/test_rite_ef.ml b/test/test_rite_ef.ml index 84dc060..45aa918 100644 --- a/test/test_rite_ef.ml +++ b/test/test_rite_ef.ml @@ -88,14 +88,22 @@ let test_vigil_of_christmas_suppressed () = appears_anywhere (* RG16(a) task (register ยง6.0 + the sanctoral subject audit, this task's - own report). data/ef/sanctoral.sexp is left untouched (still a faithful - mirror of lectio, subject `Lord` for every entry below except - `most-holy-name-of-mary` -- see test_sanctoral_ef.ml's own "explicit - class = lord" spot-check, which loads that file WITHOUT applying this - overlay and still passes); the one real correction lives entirely in - data/ef/adjustments.sexp's single remaining [Edit] directive, the same - mechanism [test_vigil_of_christmas_suppressed] above already proves for - a sibling bootstrap defect. + own report). data/ef/sanctoral.sexp is a faithful mirror of lectio, not + hand-patched (see test_sanctoral_ef.ml's own "explicit class = lord" + spot-check, which loads that file WITHOUT applying this overlay and + still passes) -- the one live correction, `most-holy-name-of-mary` -> + `Bvm`, lives entirely in data/ef/adjustments.sexp's [Edit] directive. + + CORRECTED, ef-rebootstrap (2026-08-12): this comment previously said the + base file itself carries `subject Lord` for `most-holy-name-of-mary`, + which this overlay then corrects. That stopped being true the moment + lectio's own generator was fixed (source SHA-256 1b303ef2...): the + regenerated INI dropped `class = lord` for that slug outright, so the + base bootstrap now already produces `Saint`, and this overlay's [Edit] + forces `Saint -> Bvm` instead of `Lord -> Bvm` -- same final answer, + different starting point. See adjustments.sexp's own "ef-rebootstrap" + note for why the directive is kept anyway (data precision + a + regression guard against `class = lord` being reintroduced upstream). CORRECTED, fix round 1 (CRITICAL finding, item 1): this test used to also assert `purification-of-the-blessed-virgin-mary` was retagged -- cgit v1.3 From d6968a3f380a32e7aeba2b7b658ae69df675da29 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Wed, 12 Aug 2026 18:26:01 +0200 Subject: data(ef): fix round 1 (F3) -- eusebius-confessor is white, not lectio's red data/ef/sanctoral.sexp bootstraps colour=red for this new entry (14 Aug), inherited from lectio's own ini; missalemeum's fixture independently tags it :r too -- two non-primary witnesses agreeing with each other, not with the Missal, the exact "trap" this project's own transcription-audit task already named once. Checked directly against the scan (missale-romanum-1962.pdf), not taken on a reviewer's transcription: the 14 August proper reads "S. Eusebii Conf. / Commemoratio / Missa Iustus, ut in festo S. Pauli primi Eremitae, die 15 ianuarii" -- Conf. (Confessor, not Martyr), borrowing the SAME Mass 15 January's own Paul the First Hermit uses, a Confessor's Common, white in both engines' own data for THAT entry. Every other Confessor/Abbot commemoration in lectio's own data is white (maur-abbot, giles, remigius, didacus, ubaldus, hilarion, sabbas, silvester, alexis); Eusebius Confessor is the one exception, with no textual support found for it. No behavioural impact today (Commemoration_only entries are never the printed observed colour under the current pipeline), fixed via the overlay mechanism since sanctoral.sexp is generated and the source is upstream. New test proves it through the real pipeline, the same discipline already applied to the subject retags. --- data/ef/adjustments.sexp | 29 ++++++++++++++++++++++++++++- test/test_rite_ef.ml | 26 ++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) (limited to 'test/test_rite_ef.ml') diff --git a/data/ef/adjustments.sexp b/data/ef/adjustments.sexp index 68ab590..e33b4eb 100644 --- a/data/ef/adjustments.sexp +++ b/data/ef/adjustments.sexp @@ -94,7 +94,34 @@ ; {!Overlay.apply}'s [Suppress] branch still fires its ordinary ; slug-present path (no diagnostic) exactly as before. Nothing about this ; regeneration touched the reason this directive exists; kept unchanged. +; +; `Edit eusebius-confessor` -- NEW (ef-rebootstrap fix round 1, F3): this +; new entry's own bootstrapped colour, `Red`, is a LECTIO DATA DEFECT, +; found by checking the primary scan directly rather than trusting lectio's +; ini or missalemeum's own `:r` colour tag, which agree with each other but +; not with the Missal -- exactly the "two non-primary witnesses agreeing +; against the primary text" trap this project's own transcription-audit +; task already named once. `missale-romanum-1962.pdf`, 14 August, the +; commemoration's own proper: *"Eodem die 14 augusti / S. Eusebii Conf. / +; Commemoratio / Missa Iustus, ut in festo S. Pauli primi Eremitae, die 15 +; ianuarii..."* -- "Conf." (Confessor, not Martyr), and the borrowed Mass +; "Iustus" is the SAME Mass 15 January's own St Paul the First Hermit uses +; -- a Confessor, white in both lectio's own data and colitur's +; (`paul-the-first-hermit`, `data/ef/sanctoral.sexp`) -- for the Common of +; Confessors. Corroborated negatively: lectio gives WHITE to every other +; Confessor/Abbot commemoration in its own data (`maur-abbot`, `giles`, +; `remigius`, `didacus`, `ubaldus`, `hilarion`, `sabbas`, `silvester`, +; `alexis`) -- Eusebius Confessor is the one exception, with no textual +; support found for it. No behavioural impact today (`Commemoration_only` +; entries are never the OBSERVED celebration, so this colour is never +; printed by the current pipeline -- but `Record`/rendering will read it +; the moment a template does), fixed for the data's own accuracy via the +; SAME overlay mechanism as the other two directives, since +; `data/ef/sanctoral.sexp` is generated and the source is upstream. Logged +; as a lectio-side generator/data defect in docs/research/rules-register.md +; for a future generator fix, not merely patched here silently. ((id ef-adjustments) (directives ((Suppress vigil-of-christmas) - (Edit most-holy-name-of-mary ((Set_subject Bvm)))))) + (Edit most-holy-name-of-mary ((Set_subject Bvm))) + (Edit eusebius-confessor ((Set_colour White)))))) diff --git a/test/test_rite_ef.ml b/test/test_rite_ef.ml index 45aa918..9a1e6d5 100644 --- a/test/test_rite_ef.ml +++ b/test/test_rite_ef.ml @@ -142,6 +142,30 @@ let test_rg16a_subject_retag_in_effect () = "Dedication of the Archbasilica of the Most Holy Saviour stays Lord -- audit, not touched" true (subject_of "dedication-of-the-archbasilica-of-our-holy-savior" = Subject.Lord) +(* ef-rebootstrap fix round 1, F3: eusebius-confessor (14 Aug, one of the 5 + entries this re-bootstrap added) is bootstrapped `Red` -- a lectio data + defect (both lectio's own ini and missalemeum's `:r` colour tag agree + with each other, not with the Missal). `missale-romanum-1962.pdf`'s own + proper for the day, verified directly against the scan (not transcribed + from a reviewer's reading): "S. Eusebii Conf. / Commemoratio / Missa + Iustus, ut in festo S. Pauli primi Eremitae..." -- a CONFESSOR ("Conf."), + borrowing the SAME Mass 15 January's own Paul the First Hermit uses, a + white Confessor's Common in both engines' own data. Fixed via + adjustments.sexp's new Edit directive -- proven here through the real + pipeline, the same discipline [test_rg16a_subject_retag_in_effect] above + already applies to the subject retags, so a typo'd slug or a reverted + directive fails a test rather than only silently changing unread data. *) +let test_eusebius_confessor_colour_corrected () = + let layer = real_layer () in + match Layer.find layer (Slug.of_string_exn "eusebius-confessor") with + | None -> Alcotest.fail "slug eusebius-confessor not found in the overlaid layer" + | Some e -> + Alcotest.(check bool) + "Eusebius Confessor is White (RG's own Common of Confessors, via the borrowed Mass \"Iustus\"), not \ + lectio's bootstrapped Red" + true + (e.Layer.cel.Cel.colour = Colour.White) + (* Coordinator review, finding 2, reproduced through the project's OWN extension path (an overlay), the same way the reviewer found it: adding an I-class feast on 25 December (competing against, and losing to, the @@ -351,6 +375,8 @@ let suite = test_vigil_of_christmas_suppressed; Alcotest.test_case "RG16(a) task: the two subject retags are in effect, the other four untouched" `Quick test_rg16a_subject_retag_in_effect; + Alcotest.test_case "ef-rebootstrap fix round 1 (F3): eusebius-confessor is White, not lectio's Red" `Quick + test_eusebius_confessor_colour_corrected; Alcotest.test_case "RG96 search does not raise at the domain ceiling (real data)" `Quick test_transfer_search_does_not_raise_at_domain_ceiling; Alcotest.test_case "no transfer ever lands inside [Easter, Easter+7], 2005-2050" `Quick -- cgit v1.3