diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-18 15:39:48 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-18 15:39:48 +0200 |
| commit | 967e911728eefb85dc53065c73c5c5d4cdce6a59 (patch) | |
| tree | 70a25aba22fa038ba411e5e3323f5ab42d349047 /internal | |
| parent | 4b2e1a1e0d52cba62ab7f80aecf3506c323b47fd (diff) | |
| download | lectio-967e911728eefb85dc53065c73c5c5d4cdce6a59.tar.gz lectio-967e911728eefb85dc53065c73c5c5d4cdce6a59.zip | |
fix(ef): twelve RG 124 colours -- missalemeum has the rule inverted
RG 124, "De coloribus paramentorum", section C, both photographic scans word
for word: 124(b) gives red to "Sanctorum Apostolorum et Evangelistarum, in
eorum die natalicio, excepto festo S. Ioannis (27 decembris)", and 124(e) to
"Sanctorum Martyrum, quorum colitur aut martyrium". Red is for Apostles,
Evangelists and Martyrs. A Confessor, Doctor or non-martyr Virgin is white.
missalemeum has twelve of these INVERTED IN BOTH DIRECTIONS: ten confessors,
doctors and virgins in red (Ephrem, Julia of Falconieri, John Gualbert,
Camillus de Lellis, Jerome Emiliani, Martha, Alphonsus Liguori, Augustine,
Rose of Lima, John of San Fecundo), and two actual martyrs in white
(Apollinaris and Josaphat, both Bishop and Martyr). Both directions failing is
why this reads as one rule applied backwards rather than twelve separate
slips, and why they are corrected as a block.
Adjudicated by colitur against the scans -- its C18 carries the per-slug
reasoning and its M21 the oracle side, verdict colitur. Two of its fourteen,
conversion-of-st-paul and chair-of-st-peter, already agreed here.
Found by a full-year sweep comparing clectio's output against colitur day by
day, not by the patch tool that produced the earlier corrections. That tool
reads colitur's sanctoral.sexp directly and so misses everything in
adjustments.sexp, the overlay where all twenty of colitur's colour edits
actually live -- its SECOND structural blind spot, after temporal days.
All twelve go into the generator's missalOverrides table, so regeneration
preserves them, and into TestTridentineMissalOverrides, now sixteen pinned
fields. Mutation-tested in BOTH directions: reverting a martyr to white and a
confessor to red each redden the test with the rubric named. Pinning only one
direction would have let a careless "make them all white" fix pass ten of
twelve.
The oracle allow-list gains one entry covering the twelve dates in both years.
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/caldata/caldata_test.go | 17 | ||||
| -rw-r--r-- | internal/caldata/tridentine-calendar.ini | 24 | ||||
| -rw-r--r-- | internal/calendar/oracle_ef_test.go | 31 |
3 files changed, 60 insertions, 12 deletions
diff --git a/internal/caldata/caldata_test.go b/internal/caldata/caldata_test.go index c0e2d50..95bb7dc 100644 --- a/internal/caldata/caldata_test.go +++ b/internal/caldata/caldata_test.go @@ -434,6 +434,23 @@ func TestTridentineMissalOverrides(t *testing.T) { {"didacus", "rank", "class-3", "Missal calendarium: S. Didaci Conf., III classis"}, {"vigil-of-st-lawrence", "colour", "violet", "RG 128: III-class vigil outside Paschaltide"}, {"vigil-of-the-assumption", "colour", "violet", "RG 128: II-class vigil outside Paschaltide"}, + // RG 124: red is for Apostles, Evangelists and Martyrs. missalemeum has + // these inverted in BOTH directions -- confessors and virgins red, two + // actual martyrs white -- which is why both directions are pinned here. + // A fix that turned every one of them white would pass ten of these + // twelve and fail the two that matter. + {"alphonsus-liguori", "colour", "white", "RG 124: not a martyr, so white"}, + {"apollinaris", "colour", "red", "RG 124(e): Bishop and MARTYR, red"}, + {"augustine", "colour", "white", "RG 124: not a martyr, so white"}, + {"camillus-de-lellis", "colour", "white", "RG 124: not a martyr, so white"}, + {"ephrem-of-syria", "colour", "white", "RG 124: not a martyr, so white"}, + {"jerome-emiliani", "colour", "white", "RG 124: not a martyr, so white"}, + {"john-gualbert", "colour", "white", "RG 124: not a martyr, so white"}, + {"john-of-san-fecundo", "colour", "white", "RG 124: not a martyr, so white"}, + {"josaphat", "colour", "red", "RG 124(e): Bishop and MARTYR, red"}, + {"julia-of-falconieri", "colour", "white", "RG 124: not a martyr, so white"}, + {"martha", "colour", "white", "RG 124: not a martyr, so white"}, + {"rose-of-lima", "colour", "white", "RG 124: not a martyr, so white"}, } { rc, ok := l.Cels[c.slug] if !ok { diff --git a/internal/caldata/tridentine-calendar.ini b/internal/caldata/tridentine-calendar.ini index 51b931a..54c8aa2 100644 --- a/internal/caldata/tridentine-calendar.ini +++ b/internal/caldata/tridentine-calendar.ini @@ -1053,7 +1053,7 @@ name.pl = śś. Bazylidesa, Cyryna, Nabora i Nazariusza, Męczenników [john-of-san-fecundo] date = 06-12 rank = class-3 -colour = red +colour = white name.en = St. John of San Fecundo name.pl = św. Jana z Facundo, Wyznawcy reading.first = Sir 31:8-11 @@ -1096,7 +1096,7 @@ reading.gospel = Matt 25:14-23 [ephrem-of-syria] date = 06-18 rank = class-3 -colour = red +colour = white name.en = St. Ephrem of Syria name.pl = św. Efrema, Diakona, Wyznawcy i Doktora Kościoła reading.first = 2 Tim 4:1-8 @@ -1112,7 +1112,7 @@ name.pl = śś. Marka i Marcelina, Męczenników [julia-of-falconieri] date = 06-19 rank = class-3 -colour = red +colour = white name.en = St. Julia of Falconieri name.pl = św. Juliany Falconieri, Dziewicy reading.first = 2 Cor 10:17-18; 11:1-2 @@ -1294,7 +1294,7 @@ name.pl = św. Piusa I, Papieża i Męczennika [john-gualbert] date = 07-12 rank = class-3 -colour = red +colour = white name.en = St. John Gualbert name.pl = św. Jana Gwalberta, Opata reading.first = Ecclus 45:1-6 @@ -1342,7 +1342,7 @@ name.pl = św. Aleksego, Wyznawcy [camillus-de-lellis] date = 07-18 rank = class-3 -colour = red +colour = white name.en = Camillus de Lellis name.pl = św. Kamila de Lellis reading.first = 1 John 3:13-18. @@ -1367,7 +1367,7 @@ reading.gospel = Luke 10:1-9 [jerome-emiliani] date = 07-20 rank = class-3 -colour = red +colour = white name.en = St. Jerome Emiliani name.pl = św. Hieronima Emiliani, Wyznawcy reading.first = Isa 58:7-11 @@ -1408,7 +1408,7 @@ reading.gospel = Luke 7:36-50 [apollinaris] date = 07-23 rank = class-3 -colour = white +colour = red name.en = St. Apollinaris name.pl = św. Apolinarego, Biskupa i Męczennika reading.first = 1 Pet. 5:1-11 @@ -1479,7 +1479,7 @@ name.pl = śś. Feliksa, Symplicjusza, Faustyna i Beatryczy, Męczenników [martha] date = 07-29 rank = class-3 -colour = red +colour = white name.en = St. Martha name.pl = św. Marty, Dziewicy reading.first = 2 Cor 10:17-18; 11:1-2 @@ -1511,7 +1511,7 @@ name.pl = Siedmiu Braci Machabejskich, Męczenników [alphonsus-liguori] date = 08-02 rank = class-3 -colour = red +colour = white name.en = St. Alphonsus Liguori name.pl = św. Alfonsa Marii Liguori, Biskupa, Wyznawcy i Doktora Kościoła reading.first = 2 Tim. 2:1-7 @@ -1777,7 +1777,7 @@ reading.gospel = Matt 18:1-5 [augustine] date = 08-28 rank = class-3 -colour = red +colour = white name.en = St. Augustine name.pl = św. Augustyna, Biskupa, Wyznawcy i Doktora Kościoła reading.first = 2 Tim 4:1-8 @@ -1809,7 +1809,7 @@ name.pl = św. Sabiny, Męczennicy [rose-of-lima] date = 08-30 rank = class-3 -colour = red +colour = white name.en = St. Rose of Lima name.pl = św. Róży z Limy, Dziewicy reading.first = 2 Cor 10:17-18; 11:1-2 @@ -2435,7 +2435,7 @@ name.pl = św. Dydaka, Wyznawcy [josaphat] date = 11-14 rank = class-3 -colour = white +colour = red name.en = St. Josaphat name.pl = św. Jozafata, Biskupa i Męczennika reading.first = Heb 5:1-6 diff --git a/internal/calendar/oracle_ef_test.go b/internal/calendar/oracle_ef_test.go index 47983c9..b74d935 100644 --- a/internal/calendar/oracle_ef_test.go +++ b/internal/calendar/oracle_ef_test.go @@ -128,6 +128,37 @@ type efAllow struct { var efAllowList = []efAllow{ { + // RG 124, "De coloribus paramentorum", section C "De colore rubro", + // both photographic scans word for word: 124(b) gives red to + // "Sanctorum Apostolorum et Evangelistarum, in eorum die natalicio, + // excepto festo S. Ioannis (27 decembris)", and 124(e) to "Sanctorum + // Martyrum, quorum colitur aut martyrium". Red is for Apostles, + // Evangelists and Martyrs; a Confessor, Doctor or non-martyr Virgin is + // white. + // + // missalemeum has these INVERTED IN BOTH DIRECTIONS -- ten confessors + // and virgins in red, and two actual martyrs (Apollinaris and + // Josaphat, both Bishop and Martyr) in white. Both directions failing + // is why this is read as a systematic upstream error rather than a + // judgement call: a rule applied backwards, not a series of + // individual mistakes. + // + // colitur adjudicated the same fourteen slugs against the scans (its + // C18 carries the per-slug reasoning, its M21 the oracle side, verdict + // colitur). Twelve are corrected here; conversion-of-st-paul and + // chair-of-st-peter already agreed. + match: func(date string, day time.Time, o efOracleDay) bool { + switch date[5:] { + case "06-12", "06-18", "06-19", "07-12", "07-18", "07-20", + "07-23", "07-29", "08-02", "08-28", "08-30", "11-14": + return true + } + return false + }, + field: "colour", + reason: "RG 124: red is for Apostles, Evangelists and Martyrs; missalemeum has ten confessors/virgins red and two martyrs white, inverted in both directions (colitur C18/M21)", + }, + { // The 1962 Missal's own universal CALENDARIUM ranks both of these as // bare III-class feasts, with no commemoration rubric: "S. Ubaldi Ep. // et Conf., III classis" (16 May) and "S. Didaci Conf., III classis" |
