aboutsummaryrefslogtreecommitdiff
path: root/data/ef/adjustments.sexp
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 11:19:19 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 11:19:19 +0200
commitee5c81e70adcd2ce6cecc57da4c416d482c187ca (patch)
tree45b5d7951bae89b0720d876a2abfddc82627e78c /data/ef/adjustments.sexp
parentb5dcdd8d4048295cfbdf1606f4cafd39b3c433e6 (diff)
downloadcolitur-ee5c81e70adcd2ce6cecc57da4c416d482c187ca.tar.gz
colitur-ee5c81e70adcd2ce6cecc57da4c416d482c187ca.zip
precedence(ef): RG 110, the inseparable Peter/Paul commemoration
RG 110 (Caput XIV): "In Officio et Missa S. Petri semper fit commemoratio S. Pauli, et vicissim... pro unica habeantur" -- in the Office and Mass of either Peter or Paul, a commemoration of the other is always made, uncapped by RG 111's own admission count. Both photographic scans, full text including sub-clause (c) (a separate trigger this register previously had not transcribed: the same rule also fires when one Apostle's oration is admitted merely as an ordinary/privileged commemoration, not only when it is the day's own office). Three real pairs in the 1962 calendar, all confirmed on both scans: 25 January (conversion-of-st-paul + peter), 22 February (chair-of-st-peter + paul), 30 June (in-commemoratione-sancti-pauli-apostoli + a new commemoration-of-st-peter). The first two already existed as ordinary sanctoral candidates but were wired into RG 111's ordinary, capped admission contest instead of this rule's own uncapped one -- the defect this closes. 30 June had no companion at all: a genuine gap in lectio's own source data (confirmed directly against tridentine-calendar.ini) and in missalemeum's own oracle output for both fixture years, not only a colitur bootstrap miss, so colitur is now uniquely correct on this date among the three engines compared. Added via data/ef/adjustments.sexp's own Add directive, the architecture's existing extension point for exactly this shape of gap, since data/ef/sanctoral.sexp is generated and lectio must not be touched. Precedence_ef.admit gained rg110_additions/rg110_companion_slug, layered on after admit's own four ordinarily-capped branches decide their normal result: checks both the observed candidate and every already-admitted candidate against the three-pair lookup and prepends any companion found, uncapped and additional, never competing for RG 111's own slot. Measured full blast radius (1583-9999, pre-change binary from git archive at 59fbda8 vs the fixed binary, 3,074,246 days each side, 14,627 differing days, all four predicted shapes, zero unclassified): 3,619 Holy Name fallback days (previous commit), 3,533 days Paul was wrongly excluded from Chair of St Peter's own day by a competing privileged feria, 593 days Chair of St Peter itself was admitted only as an ordinary commemoration with Paul entirely absent, and 6,882 days the new 30 June companion is added. The 3,533+593 figure supersedes an earlier, narrower 852-day estimate that measured only the delta between two older code commits, not the rule's full scope. The lectio differential needed no change: it does not compare commemorations at all, and this fix never touches season, slug, rank, or colour. The missalemeum oracle allow-list needed three changes: M12 removed (22 February 2027 no longer diverges in commemoration count), M15's date list gained 2027-02-22 (now reaching identity comparison for the first time, where it lands on that entry's own pre-existing, unrelated limit -- one of the two commemorations is temporal-origin and unnamed), and a new M19 for the 30 June gap. Mutation-tested, both halves separately: disabling the admit-level addition reddens the two new unit tests, the oracle's own M12-shaped checks, and an existing golden pin (updated to expect the Paul companion); removing only the 30 June data entry reddens solely the oracle's new M19 count, confirming the code and data halves are independently load-bearing.
Diffstat (limited to 'data/ef/adjustments.sexp')
-rw-r--r--data/ef/adjustments.sexp50
1 files changed, 49 insertions, 1 deletions
diff --git a/data/ef/adjustments.sexp b/data/ef/adjustments.sexp
index e33b4eb..1451b40 100644
--- a/data/ef/adjustments.sexp
+++ b/data/ef/adjustments.sexp
@@ -120,8 +120,56 @@
; `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))))))
+ (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))))))))
+