; data/ef/adjustments.sexp -- hand-authored overlay over data/ef/sanctoral.sexp ; (Task 11). NOT generated by tools/bootstrap_sanctoral.ml -- edit directly. ; ; Suppresses `vigil-of-christmas` (24 Dec, data/ef/sanctoral.sexp, lectio's ; own bootstrapped entry): it is the SAME celebration as colitur's temporal ; cycle's own `ef-nativity-vigil` (rite_ef/temporal_ef.ml's [named], also 24 ; Dec, RG 91 entry 5), not a second, distinct one. Once the sanctoral layer ; is live, that date would otherwise carry two candidates for one feast. ; Recorded as an Overlay directive rather than filtered out of the bootstrap ; or special-cased in code, per the task brief -- an auditable, diagnosable ; 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 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 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. ; ; ef-rebootstrap (2026-08-12): both directives re-examined against the ; regenerated source (tridentine-calendar.ini, SHA-256 1b303ef2...), which ; independently fixed several of the same defects this file was written to ; patch. Neither directive was removed -- reasoning below, per the task's ; own instruction to decide deliberately rather than delete on sight. ; ; `Edit most-holy-name-of-mary` -- the base bootstrap no longer needs this ; correction: the regenerated INI's own `[most-holy-name-of-mary]` section ; has DROPPED its `class = lord` field entirely (confirmed by direct grep ; against the source), so `tools/bootstrap_sanctoral.ml`'s `parse_subject` ; now falls through to its own default, `Subject.Saint` -- not `Lord` -- ; before this overlay ever runs. Checked what {!Overlay.apply}'s [Edit] ; actually does with a directive whose target slug is present but whose ; field is no longer wrong, rather than assuming: [Edit] has no notion of ; "already correct" -- it looks up the slug, and if found (as this one ; still is) unconditionally folds every field_edit over the current value, ; firing NO diagnostic either way (overlay.ml's [apply_directive], the ; [Edit] branch: the only diagnostic is "slug not present", never "already ; matches"). So this is not a no-op: it still forces `Saint -> Bvm` on ; every run, identically to before, just starting from a different base ; value than it used to. Decision: KEEP, for two independent reasons, not ; one -- (1) DATA PRECISION, unaffected by the base bootstrap's own fix: ; the calendarium's "Sanctissimi Nominis Mariae" title names Mary ; specifically, so [Bvm] remains the more accurate tag than the generic ; [Saint] default, on the same textual grounds as the original entry ; above, regardless of what lectio's own `class` field happens to say this ; week. (2) REGRESSION DEFENCE: because [Set_subject] is unconditional, it ; also now stands as a guard against `class = lord` ever being ; RE-introduced for this slug by a future lectio regeneration -- the ; overlay would still force the result away from [Lord] (the one subject ; value {!Precedence_ef.band}'s RG 16(a) branch behaviourally reads), ; rather than silently letting a re-introduced bootstrap defect through. ; Removing the directive now would trade a currently-harmless redundancy ; for the loss of that guard. ; ; `Suppress vigil-of-christmas` -- re-verified, not assumed: `[vigil-of- ; christmas]` (24 Dec) is still present, unchanged, in both the ; regenerated INI and the regenerated `data/ef/sanctoral.sexp` (still the ; same duplicate of `rite_ef/temporal_ef.ml`'s own `ef-nativity-vigil` ; this directive was written to remove), so `Layer.mem` still finds it and ; {!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. ; ; `Add commemoration-of-st-peter` -- NEW (ef-holyname-rg110 task, RG 110). ; A genuine DATA GAP in lectio's own source, not merely a colitur bootstrap ; miss: `~/git/projects/lectio/internal/caldata/tridentine-calendar.ini` has ; no 30 June entry for this at all (checked directly, `grep -n '30 June'` ; equivalent), so there is nothing for `tools/bootstrap_sanctoral.ml` to ; have picked up even correctly. RG 110's own text (docs/research/rules- ; register.md §4, Caput XIV): "In Officio et Missa S. Petri semper fit ; commemoratio S. Pauli, ET VICISSIM" -- in the Office and Mass of EITHER ; Peter or Paul, a commemoration of the OTHER is always made -- confirmed a ; THIRD time by the calendarium's own June table, BOTH photographic scans, ; word for word: "In Commemoratione S. Pauli Ap., III classis. / ; Commemoratio S. Petri Ap." -- exactly the SAME pattern already present in ; the base bootstrap for the other two RG 110 pairs (25 January's ; `conversion-of-st-paul` + `peter`; 22 February's `chair-of-st-peter` + ; `paul`), just missing here. `Precedence_ef.admit`'s own RG 110 mechanism ; (precedence_ef.ml) looks this slug up by name whenever ; `in-commemoratione-sancti-pauli-apostoli` is the day's own observed office ; -- a distinct slug from `peter` (25 January), because `peter` is already a ; DIFFERENT dated entry and this codebase's slugs are date-canonical, one ; date per slug (design spec §3.2). Class3/Commemoration_only/Saint, the ; SAME shape as `peter`/`paul`'s own two entries; names copied verbatim from ; `peter`'s own entry (the identical saint, the identical commemoration ; text, on a second date) -- NOT independently sourced from a missalemeum ; title (missalemeum shows no commemoration on this date at all, checked ; directly against its own fixture rows for both 2026 and 2027: neither ; year's `In Commemoratione Sancti Pauli Apostoli` row carries any ; commemoration -- missalemeum has the SAME gap this directive closes, ; verdict colitur in data/ef/expected-divergences-missalemeum.sexp's own ; M19). Colour Red: no primary-source pin for this specific field (a ; "Commemoratio" line's own colour is not independently stated by the ; calendarium the way a full feast's class-and-colour line is -- the same ; honestly-flagged inference shape this file's own `romanus`/`eusebius- ; confessor` history already documents elsewhere in this project), chosen to ; match `paul`'s own entry (RG 117's ordinary apostle/martyr colour) and the ; host day's own Red -- inert either way today (Commemoration_only entries ; are never the OBSERVED celebration, so this colour is never printed by the ; current pipeline, the same note `Edit eusebius-confessor` above makes for ; its own colour field). ((id ef-adjustments) (directives ((Suppress vigil-of-christmas) (Edit most-holy-name-of-mary ((Set_subject Bvm))) (Edit eusebius-confessor ((Set_colour White))) (Add ((date (Fixed (month 6) (day 30))) (cel ((slug commemoration-of-st-peter) (names ((en "St. Peter") (pl "\197\155w. Piotra, Aposto\197\130a"))) (rank Class3) (status Commemoration_only) (colour Red) (subject Saint) (citations ()) (layer ef-universal))))))))