From 09f30b32bd5ad0895b23a13b63c1eb5a19184b1c Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 18 Aug 2026 17:06:28 +0200 Subject: feat(ef): the Masses of saints that come from a Common Nine saints have no proper Mass in the Missal. Its rubric at each one's own date names a Common -- "Missa Statuit, de Communi Confessoris Pontificis I loco", "Missa Iustus ... II loco", and so on -- and only the Oratio is proper. lectio has no Commons concept, so those days resolved no reading at all. Benedict, Frances of Rome, Gregory the Great, Isidore of Seville, Patrick, Perpetua & Felicity, Vincent Ferrer, Ubaldus and Didacus. The readings are written per saint rather than by adding a Commons abstraction. Each Common resolves to exactly one first/gospel pair for the saint that names it, so a table plus an assignment layer would buy indirection and nothing else here; if a future saint needs a Common's OTHER formulary, that is when the abstraction earns its place. They go into the generator's missalOverrides table like the rank and colour corrections, because missalemeum supplies these days with whatever it supplies them and a regeneration would otherwise leave nine saints mute. The table learned two new field names to carry them. Four are pinned in TestTridentineMissalOverrides. Citations are colitur's, verified there against both photographic scans and the rendered page images; its data/ef/commons.sexp header records the three-source method and the per-value evidence. --- scripts/gen-sanctoral-ef.go | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) (limited to 'scripts') diff --git a/scripts/gen-sanctoral-ef.go b/scripts/gen-sanctoral-ef.go index 39826fc..9990e37 100644 --- a/scripts/gen-sanctoral-ef.go +++ b/scripts/gen-sanctoral-ef.go @@ -334,6 +334,49 @@ var missalOverrides = []missalOverride{ `The rule's sole exception is the Ascension's vigil, INSIDE Paschaltide, ` + `which is white and is deliberately not listed here`}, + // Saints whose Mass comes from a COMMON. The Missal prints no proper for + // these; its rubric at each saint's own date names a Common and only the + // Oratio is proper, so the readings below are that Common's. Without them + // the day resolves no reading at all, or falls back to something unrelated. + // Verified by colitur against both photographic scans; see its + // data/ef/commons.sexp, whose header records the three-source method. + {"benedict", "first", `Ecclus 45:1-6`, + `Common of Abbots (Missa Os iusti) -- 21 March`}, + {"benedict", "gospel", `Matt 19:27-29`, + `Common of Abbots (Missa Os iusti) -- 21 March`}, + {"frances-rome", "first", `Prov 31:10-31`, + `Common of non-Virgins II (Missa Cognovi) -- 9 March`}, + {"frances-rome", "gospel", `Matt 13:44-52`, + `Common of non-Virgins II (Missa Cognovi) -- 9 March`}, + {"gregory-the-great", "first", `1 Pet 5:1-4, 10-11`, + `Common of Supreme Pontiffs (Missa Si diligis me) -- 12 March`}, + {"gregory-the-great", "gospel", `Matt 16:13-19`, + `Common of Supreme Pontiffs (Missa Si diligis me) -- 12 March`}, + {"isidore-of-seville", "first", `2 Tim 4:1-8`, + `Common of Doctors (Missa In medio) -- 4 April`}, + {"isidore-of-seville", "gospel", `Matt 5:13-19`, + `Common of Doctors (Missa In medio) -- 4 April`}, + {"patrick", "first", `Ecclus 44:16-27; 45:3-20`, + `Common of a Confessor Bishop I (Missa Statuit) -- 17 March`}, + {"patrick", "gospel", `Matt 25:14-23`, + `Common of a Confessor Bishop I (Missa Statuit) -- 17 March`}, + {"sts-felicitas-perpetua", "first", `Ecclus 51:1-8, 12`, + `Common of non-Virgins I (Missa Me exspectaverunt) -- 6 March`}, + {"sts-felicitas-perpetua", "gospel", `Matt 13:44-52`, + `Common of non-Virgins I (Missa Me exspectaverunt) -- 6 March`}, + {"vincent-ferrer", "first", `Ecclus 31:8-11`, + `Common of a Confessor not a Bishop I (Missa Os iusti) -- 5 April`}, + {"vincent-ferrer", "gospel", `Luke 12:35-40`, + `Common of a Confessor not a Bishop I (Missa Os iusti) -- 5 April`}, + {"ubaldus", "first", `Ecclus 44:16-27; 45:3-20`, + `Common of a Confessor Bishop I (Missa Statuit) -- 16 May`}, + {"ubaldus", "gospel", `Matt 25:14-23`, + `Common of a Confessor Bishop I (Missa Statuit) -- 16 May`}, + {"didacus", "first", `1 Cor 4:9-14`, + `Common of a Confessor not a Bishop II (Missa Iustus) -- 13 November`}, + {"didacus", "gospel", `Luke 12:32-34`, + `Common of a Confessor not a Bishop II (Missa Iustus) -- 13 November`}, + // 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. @@ -392,6 +435,15 @@ func applyMissalOverrides(entries map[string]entry) error { had, e.rank = string(e.rank), calendar.Rank(o.want) case "colour": had, e.colour = e.colour, o.want + // A saint with no proper Mass takes one from a Common. missalemeum + // gives these days whatever it gives them; the Missal's own rubric at + // the saint names a Common, and its readings are what belongs here. + case "first": + had, e.first = e.first, o.want + e.observed = true + case "gospel": + had, e.gospel = e.gospel, o.want + e.observed = true default: return fmt.Errorf("missal override for [%s]: unknown field %q", o.slug, o.field) } -- cgit v1.3