From 25fedcaf3044828333ba15b232fdc7c7f84970e5 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Wed, 12 Aug 2026 17:49:11 +0200 Subject: data(ef): re-bootstrap sanctoral.sexp from the corrected lectio source Regenerated via tools/bootstrap_sanctoral.ml against lectio's tridentine-calendar.ini (SHA-256 6a25e634... -> 1b303ef2...), whose own generator was independently fixed in a concurrent session. 327 entries (223 feast, 104 commemoration-only), up from 322 (208/114): - 15 entries wrongly bootstrapped `rank = commemoration` are now `class-3` (a real III-class Feast) -- all 6 March-5 April, all primary-source-verified against the calendarium (register's own "Commemoration-only entries' inferred STATUS" item). - 5 new entries: agnes-secundo (28 Jan), boniface-martyr (14 May), eusebius-confessor (14 Aug), evaristus (26 Oct), theodore (9 Nov) -- all Commemoration_only, all primary-source-verified (register's "Four confirmed sanctoral DATA GAPS" item + expected-divergences-missalemeum .sexp's former M4/M6/M7/M9/M14). - commemoration-of-the-baptism-of-the-lord (13 Jan) is now `(subject Lord)` (the source's own `class` field, not a colitur overlay); most-holy-name-of-mary (12 Sep) no longer carries `class = lord` at all (the source dropped it), so the bootstrap default (Subject.Saint) is now correct there without help from adjustments.sexp's own Edit. test_sanctoral_ef.ml's pinned counts (327/104/12 Class1) are re-derived directly from the source INI (`grep -c '^\['`, `grep '^rank' | sort | uniq -c`), not transcribed from a bootstrap-tool or `colitur day` run. data/ef/adjustments.sexp and the differential/oracle allow-lists still need updating for the consequences of this regeneration -- follow-up commits. --- data/ef/sanctoral.sexp | 95 ++++++++++++++++++++++++++++++----------------- test/test_sanctoral_ef.ml | 16 +++++++- 2 files changed, 74 insertions(+), 37 deletions(-) diff --git a/data/ef/sanctoral.sexp b/data/ef/sanctoral.sexp index 1ff9577..dadac36 100644 --- a/data/ef/sanctoral.sexp +++ b/data/ef/sanctoral.sexp @@ -4,9 +4,9 @@ ; generator against a newer lectio and commit the diff instead. ; ; Source: ../lectio/internal/caldata/tridentine-calendar.ini -; SHA-256: 6a25e6349cae576a10b27c2cdddbfa35905753d4b1e0bc19463dc848f65b94a8 -; Converted (UTC): 2026-08-11 -; 322 entries (208 feast, 114 commemoration-only). Regenerate with: +; SHA-256: 1b303ef2bce8f5ab431c9228d04e6d44cc11d6c5d36a6a34f8565912d6d7d54a +; Converted (UTC): 2026-08-12 +; 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") (entries @@ -34,6 +34,11 @@ (pl "\197\155w. Agnieszki, Dziewicy i M\196\153czennicy"))) (rank Class3) (status Feast) (colour Red) (subject Saint) (citations ()) (layer ef-universal)))) + ((date (Fixed (month 1) (day 28))) + (cel + ((slug agnes-secundo) (names ((en "St. Agnes"))) (rank Class3) + (status Commemoration_only) (colour Red) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 11) (day 15))) (cel ((slug albert-the-great) @@ -292,8 +297,8 @@ (cel ((slug benedict) (names ((en "St. Benedict") (pl "\197\155w. Benedykta, Opata"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 8) (day 20))) (cel ((slug bernard-of-clairvaux) @@ -337,6 +342,11 @@ (pl "\197\155w. Bonifacego, Biskupa i M\196\153czennika"))) (rank Class3) (status Feast) (colour Red) (subject Saint) (citations ()) (layer ef-universal)))) + ((date (Fixed (month 5) (day 14))) + (cel + ((slug boniface-martyr) (names ((en "St. Boniface"))) (rank Class3) + (status Commemoration_only) (colour Red) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 10) (day 8))) (cel ((slug bridget-of-sweden) @@ -480,7 +490,7 @@ (names ((en "Commemoration of the Baptism of the Lord") (pl "Wspomnienie Chrztu Pa\197\132skiego"))) - (rank Class2) (status Feast) (colour White) (subject Saint) + (rank Class2) (status Feast) (colour White) (subject Lord) (citations ()) (layer ef-universal)))) ((date (Fixed (month 1) (day 25))) (cel @@ -516,8 +526,8 @@ ((en "St. Cyril of Jerusalem") (pl "\197\155w. Cyryla Jerozolimskiego, Biskupa, Wyznawcy i Doktora Ko\197\155cio\197\130a"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 12) (day 11))) (cel ((slug damasus-i) @@ -655,6 +665,16 @@ (pl "\197\155w. Euzebiusza, Biskupa i M\196\153czennika"))) (rank Class3) (status Feast) (colour Red) (subject Saint) (citations ()) (layer ef-universal)))) + ((date (Fixed (month 8) (day 14))) + (cel + ((slug eusebius-confessor) (names ((en "St. Eusebius"))) + (rank Class3) (status Commemoration_only) (colour Red) + (subject Saint) (citations ()) (layer ef-universal)))) + ((date (Fixed (month 10) (day 26))) + (cel + ((slug evaristus) (names ((en "St. Evaristus"))) (rank Class3) + (status Commemoration_only) (colour Red) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 9) (day 14))) (cel ((slug exaltation-of-the-holy-cross) @@ -721,8 +741,8 @@ ((en "Forty Holy Martyrs of Sebaste") (pl "\197\155\197\155. Czterdziestu M\196\153czennik\195\179w"))) - (rank Class3) (status Commemoration_only) (colour Red) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour Red) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 11) (day 8))) (cel ((slug four-holy-crowned-martyrs) @@ -738,8 +758,8 @@ (names ((en "St. Frances Rome") (pl "\197\155w. Franciszki Rzymianki, Wdowy"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 10) (day 10))) (cel ((slug francis-borgia) @@ -779,8 +799,8 @@ (names ((en "St. Francis of Paola") (pl "\197\155w. Franciszka z Pauli, Wyznawcy"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 12) (day 3))) (cel ((slug francis-xavier) @@ -803,8 +823,8 @@ (names ((en "St. Gabriel the Archangel") (pl "\197\155w. Gabriela Archanio\197\130a"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 4) (day 23))) (cel ((slug george) @@ -868,8 +888,8 @@ ((en "St. Gregory the Great") (pl "\197\155w. Grzegorza Wielkiego, Papie\197\188a, Wyznawcy i Doktora Ko\197\155cio\197\130a"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 11) (day 17))) (cel ((slug gregory-the-wonderworker) @@ -1034,8 +1054,8 @@ ((en "St. Isidore of Seville") (pl "\197\155w. Izydora, Biskupa, Wyznawcy i Doktora Ko\197\155cio\197\130a"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 7) (day 25))) (cel ((slug james-the-greater) @@ -1126,8 +1146,8 @@ ((en "St. John Damascene") (pl "\197\155w. Jana Damasce\197\132skiego, Wyznawcy i Doktora Ko\197\155cio\197\130a"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 8) (day 19))) (cel ((slug john-eudes) @@ -1173,16 +1193,16 @@ (names ((en "St. John of Capistrano") (pl "\197\155w. Jana Kapistrana, Wyznawcy"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 3) (day 8))) (cel ((slug john-of-god) (names ((en "St. John of God") (pl "\197\155w. Jana Bo\197\188ego, Wyznawcy"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 2) (day 8))) (cel ((slug john-of-matha) @@ -1526,7 +1546,7 @@ (names ((en "Most Holy Name of Mary") (pl "Naj\197\155wi\196\153tszego Imienia Maryi"))) - (rank Class3) (status Feast) (colour White) (subject Lord) + (rank Class3) (status Feast) (colour White) (subject Saint) (citations ()) (layer ef-universal)))) ((date (Fixed (month 7) (day 12))) (cel @@ -1640,8 +1660,8 @@ (names ((en "St. Patrick") (pl "\197\155w. Patryka, Biskupa i Wyznawcy"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 2) (day 22))) (cel ((slug paul) @@ -2200,8 +2220,8 @@ ((en "Sts. Felicitas & Perpetua") (pl "\197\155\197\155. Perpetui i Felicyty, M\196\153czennic"))) - (rank Class3) (status Commemoration_only) (colour Red) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour Red) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 8) (day 30))) (cel ((slug sts-felix-and-adauctus) @@ -2420,6 +2440,11 @@ (pl "\197\155w. Tekli, Dziewicy i M\196\153czennicy"))) (rank Class3) (status Commemoration_only) (colour Red) (subject Saint) (citations ()) (layer ef-universal)))) + ((date (Fixed (month 11) (day 9))) + (cel + ((slug theodore) (names ((en "St. Theodore"))) (rank Class3) + (status Commemoration_only) (colour Red) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 10) (day 3))) (cel ((slug theresa-of-the-infant-jesus) @@ -2442,8 +2467,8 @@ ((en "St. Thomas Aquinas") (pl "\197\155w. Tomasza z Akwinu, Wyznawcy i Doktora Ko\197\155cio\197\130a"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 12) (day 29))) (cel ((slug thomas-becket) @@ -2591,8 +2616,8 @@ (names ((en "St. Vincent Ferrer") (pl "\197\155w. Wincentego Fereriusza, Wyznawcy"))) - (rank Class3) (status Commemoration_only) (colour White) - (subject Saint) (citations ()) (layer ef-universal)))) + (rank Class3) (status Feast) (colour White) (subject Saint) + (citations ()) (layer ef-universal)))) ((date (Fixed (month 7) (day 2))) (cel ((slug visitation-of-the-blessed-virgin-mary) diff --git a/test/test_sanctoral_ef.ml b/test/test_sanctoral_ef.ml index 8fb178f..24ed972 100644 --- a/test/test_sanctoral_ef.ml +++ b/test/test_sanctoral_ef.ml @@ -28,13 +28,25 @@ let load () = let mkdate m d = match DS.fixed ~month:m ~day:d with Ok t -> t | Error e -> failwith e +(* Counts re-derived 2026-08-12 (ef-rebootstrap) against the regenerated + source INI directly (`grep -c '^\['` minus the [layer] header itself; + `grep '^rank' | sort | uniq -c`) -- NOT copied from a `colitur day`/ + bootstrap-tool run, per this project's own "derive the new value, don't + transcribe it from output" pinning discipline. The source's SHA-256 moved + 6a25e634... -> 1b303ef2..., correcting: 15 entries wrongly `rank = + commemoration` that are really class-3 feasts (322 -> 327's own feast/ + comm split moves 15 the other way before the net +5 below); 5 entries + newly present (agnes-secundo, boniface-martyr, eusebius-confessor, + evaristus, theodore -- all Commemoration_only), so 322 + 5 = 327 and + 114 - 15 + 5 = 104. Class1 count (12) is untouched by this regeneration -- + none of the 20 changed/added entries is Class1. *) let test_load_and_counts () = let l = load () in - Alcotest.(check int) "322 entries" 322 (List.length l.L.entries); + Alcotest.(check int) "327 entries" 327 (List.length l.L.entries); let commemoration_only = List.filter (fun e -> e.L.cel.Cel.status = Cel.Commemoration_only) l.L.entries in - Alcotest.(check int) "114 Commemoration_only" 114 (List.length commemoration_only); + Alcotest.(check int) "104 Commemoration_only" 104 (List.length commemoration_only); let class1 = List.filter (fun e -> e.L.cel.Cel.rank = V.Class1) l.L.entries in Alcotest.(check int) "12 Class1" 12 (List.length class1); let temporal_subjects = List.filter (fun e -> e.L.cel.Cel.subject = Sub.Temporal) l.L.entries in -- cgit v1.3