aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/caldata/tridentine-calendar.ini8
-rw-r--r--internal/caldata/tridentine-lectionary.ini8
-rw-r--r--internal/calendar/oracle_ef_test.go59
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