diff options
| -rw-r--r-- | internal/caldata/tridentine-calendar.ini | 8 | ||||
| -rw-r--r-- | internal/caldata/tridentine-lectionary.ini | 8 | ||||
| -rw-r--r-- | internal/calendar/oracle_ef_test.go | 59 |
3 files changed, 67 insertions, 8 deletions
diff --git a/internal/caldata/tridentine-calendar.ini b/internal/caldata/tridentine-calendar.ini index 746f783..e8f0797 100644 --- a/internal/caldata/tridentine-calendar.ini +++ b/internal/caldata/tridentine-calendar.ini @@ -810,7 +810,7 @@ reading.gospel = Matt 18:1-5 [ubaldus] date = 05-16 -rank = commemoration +rank = class-3 colour = white name.en = St. Ubaldus name.pl = św. Ubalda, Biskupa i Wyznawcy @@ -1573,7 +1573,7 @@ name.pl = św. Romana, Męczennika [vigil-of-st-lawrence] date = 08-09 rank = class-3 -colour = red +colour = violet name.en = Vigil of St. Lawrence name.pl = Wigilia św. Wawrzyńca, Męczennika reading.first = Ecclus 51:1-8, 12 @@ -1620,7 +1620,7 @@ name.en = St. Eusebius [vigil-of-the-assumption] date = 08-14 rank = class-2 -colour = white +colour = violet name.en = Vigil of the Assumption name.pl = Wigilia Wniebowzięcia N. M. P. reading.first = Sir 24:23-31 @@ -2399,7 +2399,7 @@ reading.gospel = Matt 16:13-19 [didacus] date = 11-13 -rank = commemoration +rank = class-3 colour = white name.en = St. Didacus name.pl = św. Dydaka, Wyznawcy diff --git a/internal/caldata/tridentine-lectionary.ini b/internal/caldata/tridentine-lectionary.ini index 1f8a9b9..ea896a2 100644 --- a/internal/caldata/tridentine-lectionary.ini +++ b/internal/caldata/tridentine-lectionary.ini @@ -22,8 +22,8 @@ first = Isa 11:1-5 gospel = Luke 1:39-47 [ef-advent-ember-sat] -first = Eph 2:19-22 -gospel = John 20:24-29 +first = 2 Thess 2:1-8 +gospel = Luke 3:1-6 [ef-advent-ember-wed] first = Isa 7:10-15 @@ -326,8 +326,8 @@ first = Osee 14:2-10 gospel = Luke 7:36-50 [ef-september-ember-sat] -first = Ezek 1:10-14 -gospel = Matt 9:9-13 +first = Heb 9:2-12 +gospel = Luke 13:6-17 [ef-september-ember-wed] first = 2 Esd. 8:1-10 diff --git a/internal/calendar/oracle_ef_test.go b/internal/calendar/oracle_ef_test.go index a2bb6a5..47983c9 100644 --- a/internal/calendar/oracle_ef_test.go +++ b/internal/calendar/oracle_ef_test.go @@ -128,6 +128,65 @@ type efAllow struct { var efAllowList = []efAllow{ { + // 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" + // (13 November). Each also has its own Mass entry in the Proprium, + // taking its readings from a Common with only its Oratio proper -- + // which a bare commemoration never has. missalemeum ranks both as + // commemorations, so on these dates it leaves the day unimpeded and + // shows a feria or the Saturday BVM Office; lectio now shows the feast. + // + // This entry MUST precede the BVM-Saturday entry below. When 16 May or + // 13 November falls on a Saturday, that entry's predicate (Saturday + + // an oracle title naming the B.V.M.) also matches, and would absorb + // this divergence under a reason that is no longer true of it -- it + // says "both engines agree only that the day is unimpeded", and the + // whole point here is that the day IS impeded, by a feast missalemeum + // does not rank as one. + // + // Found by auditing all 290 of colitur's fixed-date sanctoral entries + // against that calendarium; these two were the only status defects. + // colitur allow-list C38/M30, rules-register.md 6.25. + match: func(date string, day time.Time, o efOracleDay) bool { + md := date[5:] + return (md == "05-16" || md == "11-13") && + !strings.Contains(strings.ToLower(o.Title), "ubald") && + !strings.Contains(strings.ToLower(o.Title), "didac") + }, + field: "rank+colour", + reason: "Missal calendarium ranks St Ubaldus (16 May) and St Didacus (13 Nov) III classis, not commemorations; missalemeum keeps them as commemorations and so leaves the day unimpeded (colitur C38/M30)", + }, + { + // RG 128, "De colore violaceo": violet is used for vigils of II and III + // class outside Paschaltide. The Vigil of the Assumption (14 August, II + // class) and the Vigil of St Lawrence (9 August, III class) both + // qualify. missalemeum shows white and red respectively -- values + // lectio carried too, and colitur inherited from lectio, all three + // descending from Divinum Officium's data files. The rule's sole + // exception is named in the same place and is not either of these: the + // Ascension's vigil, the one II-class vigil INSIDE Paschaltide, which + // is white and is untouched. + // + // colitur allow-list C37/M29, rules-register.md 6.24. + // NOT on a Sunday. RG 33 omits a II/III-class vigil whenever its date + // falls on one, so lectio shows the Sunday and the divergence there is + // missalemeum's own RG 33 gap -- already allow-listed further down, + // with its own citation. Without this guard, 2026-08-09 (a Sunday whose + // oracle title still reads "Vigil of St. Lawrence") matches on the + // title alone and is stolen from that entry, reported under a colour + // rule that has nothing to do with it. Same failure this list's first + // entry exists to prevent, in the opposite direction. + match: func(date string, day time.Time, o efOracleDay) bool { + md := date[5:] + return (md == "08-09" || md == "08-14") && + day.Weekday() != time.Sunday && + strings.Contains(strings.ToLower(o.Title), "vigil") + }, + field: "colour", + reason: "RG 128: violet for vigils of II and III class outside Paschaltide; missalemeum shows white/red (colitur C37/M29)", + }, + { // RG 91 entry 27, "Officium sanctae Mariae in sabbato": the votive // BVM Office on an otherwise-unoccupied IV-class Saturday. Not built // in lectio (temporal_ef.go constructs only a bare ferial slug on |
