diff --git a/TODO.md b/TODO.md index b59889a..7378d3c 100644 --- a/TODO.md +++ b/TODO.md @@ -3107,6 +3107,26 @@ imagery — nails, spear-wound, blood) tripped a content-filtering block on the Splitting each file into a Latin-only `Write` followed by a separate `Edit` adding the English got past it reliably; a single combined bilingual `Write` did not. +### All Saints of the Benedictine Order own proper content imported — individual-saint pass closed (2026-08-26) + +Last of the 12-saint individual-Proprio list. Live-verified against Divinum Officium (Monastic +Tridentinum 1617), 2025-11-13 (clean year): own chapter (Isa 8:18, "Ecce ego et púeri mei") and +own hymn ("Salvéte, cedri Líbani," same text both hours, no English rendering in the reference +engine — own translation, marked draft); responsory and versicle byte-identical to Common-of- +Several-Martyrs's own already-authored content. + +This closes the individual-saint Proprio pass started this session. Final tally: 10 real saints/ +feasts imported (St. Gregory the Great, St. Benedict, Commemoration of St. Paul, St. Agatha, +St. Agnes, the Annunciation, the Purification, Finding/Exaltation of the Holy Cross, the +Transfiguration, All Saints of the Benedictine Order); 2 flagged saints (Ss. Alexander/Eventius/ +Theodulus/Juvenal, Ss. Machabees) needed no new content — both are genuinely unwinnable stubs +whose already-correct `common` field simply never gets exercised. Combined with the 10 Common +categories and the Guardian-Angels/Archangels proper-content-reuse fix earlier this session, +`resolveOfficeBundle` now has real, live-verified Lauds/Vespers content for every gap the +original audit found. + +`npm test` (513 tests), `tsc --noEmit` both pass. + ## Known, deliberate simplifications (not bugs — working as designed) - `getDayCollects`: each collect in a multi-collect day renders as its own diff --git a/src/data/propers/common/lauds-capitulum-all-saints-of-the-benedictine-order.yml b/src/data/propers/common/lauds-capitulum-all-saints-of-the-benedictine-order.yml new file mode 100644 index 0000000..c460382 --- /dev/null +++ b/src/data/propers/common/lauds-capitulum-all-saints-of-the-benedictine-order.yml @@ -0,0 +1,19 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2025-11-13 (clean year, per this saint's own file's +# comment). Own proper chapter (Isa 8:18) and own hymn ("Salvéte, cedri +# Líbani," same text both hours); responsory and versicle turn out +# byte-identical to Common-of-Several-Martyrs's own already-authored +# content -- duplicated under this id rather than left to fall through +# (resolveOfficeBundle resolves a whole bundle per id, not per part). +# Same chapter reused for Vespers -- no separate vespers-capitulum- +# file authored, per vespers.ts's vespersCapitulumForOverride fallback. +id: lauds-capitulum-all-saints-of-the-benedictine-order +text: + la: "Ecce ego et púeri mei quos dedit mihi Dóminus in signum, et in porténtum Israël a Dómino exercítuum, qui hábitat in monte Sion." + en: "Behold, I and my children whom the Lord hath given me for a sign, and for a wonder in Israel from the Lord of hosts, who dwelleth in mount Sion." +citation: + la: "Isa 8:18" + en: "Isa 8:18" +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-hymn-all-saints-of-the-benedictine-order.yml b/src/data/propers/common/lauds-hymn-all-saints-of-the-benedictine-order.yml new file mode 100644 index 0000000..e746792 --- /dev/null +++ b/src/data/propers/common/lauds-hymn-all-saints-of-the-benedictine-order.yml @@ -0,0 +1,98 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2025-11-13 -- own proper hymn ("Salvéte, cedri Líbani"), +# same text at both hours. No English rendering exists in the reference +# engine -- own original translation, marked draft. See lauds- +# capitulum-all-saints-of-the-benedictine-order.yml's header. +id: lauds-hymn-all-saints-of-the-benedictine-order +text: + la: >- + Salvéte, cedri Líbani, + + Plantæ viréntes Ordinis, + + Quæ prata nunc cæléstia + + Implétis almo gérmine. + + + Vos Trinitátis glória + + Ætérna circumpléctitur: + + Vos aura Matris Vírginis + + Mulcet piis favóniis. + + + Vos Angelórum cúriæ + + Cingunt choréa pérpetim, + + Et írrigant puríssimi + + Æternitátis rívuli. + + + O ínclytæ propágines, + + Vestros juváte fílios: + + In valle mæsta débiles + + Nos roboráte súrculos. + + + Sit laus Patri, cum Fílio, + + Simúlque dulci Flámini, + + Læti quibúscum vívitis + + In sempitérno lúmine. Amen. + en: >- + Hail, cedars of Lebanon, + + Thriving plants of the Order, + + Who now fill the meadows of heaven + + With your fruitful growth. + + + You the eternal glory + + Of the Trinity embraces round about; + + You the breath of the Virgin Mother + + Soothes with gentle, holy breezes. + + + You the courts of Angels + + Encircle forever in dance, + + And the purest streams + + Of eternity water you. + + + O renowned offshoots, + + Come to the aid of your own sons: + + In this sorrowful valley, strengthen + + Us, your weak young saplings. + + + Praise be to the Father, with the Son, + + And together to the sweet Spirit, + + With whom you live rejoicing + + In everlasting light. Amen. +status: + la: verified + en: draft diff --git a/src/data/propers/common/lauds-responsory-all-saints-of-the-benedictine-order.yml b/src/data/propers/common/lauds-responsory-all-saints-of-the-benedictine-order.yml new file mode 100644 index 0000000..e731ab4 --- /dev/null +++ b/src/data/propers/common/lauds-responsory-all-saints-of-the-benedictine-order.yml @@ -0,0 +1,23 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2025-11-13 -- byte-identical to Common-of-Several-Martyrs's +# own Lauds responsory. See lauds-capitulum-all-saints-of-the- +# benedictine-order.yml's header. +id: lauds-responsory-all-saints-of-the-benedictine-order +text: + la: | + R.br. Lætámini in Dómino, * Et exsultáte justi. + ℟. Lætámini in Dómino, * Et exsultáte justi. + ℣. Et gloriámini omnes recti corde. + ℟. Et exsultáte justi. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Lætámini in Dómino, * Et exsultáte justi. + en: | + R.br. Be glad in the Lord, * and rejoice, ye righteous. + ℟. Be glad in the Lord, * and rejoice, ye righteous. + ℣. And shout for joy, all ye that are upright in heart. + ℟. And rejoice, ye righteous. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. Be glad in the Lord, * and rejoice, ye righteous. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-versicle-all-saints-of-the-benedictine-order.yml b/src/data/propers/common/lauds-versicle-all-saints-of-the-benedictine-order.yml new file mode 100644 index 0000000..b52193f --- /dev/null +++ b/src/data/propers/common/lauds-versicle-all-saints-of-the-benedictine-order.yml @@ -0,0 +1,14 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2025-11-13 -- byte-identical to Common-of-Several-Martyrs's +# own versicle. Same versicle as Vespers. +id: lauds-versicle-all-saints-of-the-benedictine-order +text: + la: | + ℣. Exsultábunt Sancti in glória. + ℟. Lætabúntur in cubílibus suis. + en: | + ℣. The saints shall rejoice in glory: + ℟. They shall be joyful in their beds. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-hymn-all-saints-of-the-benedictine-order.yml b/src/data/propers/common/vespers-hymn-all-saints-of-the-benedictine-order.yml new file mode 100644 index 0000000..9786770 --- /dev/null +++ b/src/data/propers/common/vespers-hymn-all-saints-of-the-benedictine-order.yml @@ -0,0 +1,97 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# live query, 2025-11-13 -- byte-identical to the Lauds hymn ("Salvéte, +# cedri Líbani"). See lauds-capitulum-all-saints-of-the-benedictine- +# order.yml's header. +id: vespers-hymn-all-saints-of-the-benedictine-order +text: + la: >- + Salvéte, cedri Líbani, + + Plantæ viréntes Ordinis, + + Quæ prata nunc cæléstia + + Implétis almo gérmine. + + + Vos Trinitátis glória + + Ætérna circumpléctitur: + + Vos aura Matris Vírginis + + Mulcet piis favóniis. + + + Vos Angelórum cúriæ + + Cingunt choréa pérpetim, + + Et írrigant puríssimi + + Æternitátis rívuli. + + + O ínclytæ propágines, + + Vestros juváte fílios: + + In valle mæsta débiles + + Nos roboráte súrculos. + + + Sit laus Patri, cum Fílio, + + Simúlque dulci Flámini, + + Læti quibúscum vívitis + + In sempitérno lúmine. Amen. + en: >- + Hail, cedars of Lebanon, + + Thriving plants of the Order, + + Who now fill the meadows of heaven + + With your fruitful growth. + + + You the eternal glory + + Of the Trinity embraces round about; + + You the breath of the Virgin Mother + + Soothes with gentle, holy breezes. + + + You the courts of Angels + + Encircle forever in dance, + + And the purest streams + + Of eternity water you. + + + O renowned offshoots, + + Come to the aid of your own sons: + + In this sorrowful valley, strengthen + + Us, your weak young saplings. + + + Praise be to the Father, with the Son, + + And together to the sweet Spirit, + + With whom you live rejoicing + + In everlasting light. Amen. +status: + la: verified + en: draft diff --git a/src/data/propers/common/vespers-responsory-all-saints-of-the-benedictine-order.yml b/src/data/propers/common/vespers-responsory-all-saints-of-the-benedictine-order.yml new file mode 100644 index 0000000..372d06d --- /dev/null +++ b/src/data/propers/common/vespers-responsory-all-saints-of-the-benedictine-order.yml @@ -0,0 +1,23 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# live query, 2025-11-13 -- byte-identical to Common-of-Several-Martyrs's +# own Vespers responsory. See lauds-capitulum-all-saints-of-the- +# benedictine-order.yml's header. +id: vespers-responsory-all-saints-of-the-benedictine-order +text: + la: | + R.br. Exsúltent justi * In conspéctu Dei. + ℟. Exsúltent justi * In conspéctu Dei. + ℣. Et delecténtur in lætítia. + ℟. In conspéctu Dei. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Exsúltent justi * In conspéctu Dei. + en: | + R.br. Let the righteous rejoice * before God. + ℟. Let the righteous rejoice * before God. + ℣. Yea, let them exceedingly rejoice. + ℟. Before God. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. Let the righteous rejoice * before God. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-versicle-all-saints-of-the-benedictine-order.yml b/src/data/propers/common/vespers-versicle-all-saints-of-the-benedictine-order.yml new file mode 100644 index 0000000..c0a5eef --- /dev/null +++ b/src/data/propers/common/vespers-versicle-all-saints-of-the-benedictine-order.yml @@ -0,0 +1,14 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# live query, 2025-11-13 -- same versicle as Lauds (see lauds-versicle- +# all-saints-of-the-benedictine-order.yml). +id: vespers-versicle-all-saints-of-the-benedictine-order +text: + la: | + ℣. Exsultábunt Sancti in glória. + ℟. Lætabúntur in cubílibus suis. + en: | + ℣. The saints shall rejoice in glory: + ℟. They shall be joyful in their beds. +status: + la: verified + en: verified diff --git a/tests/hours/lauds.test.ts b/tests/hours/lauds.test.ts index efe236e..178507c 100644 --- a/tests/hours/lauds.test.ts +++ b/tests/hours/lauds.test.ts @@ -390,6 +390,17 @@ describe('resolveOrdo("lauds", ...)', () => { expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Amor Jesu dulcíssime'); }); + it("resolves All Saints of the Benedictine Order's own proper chapter/hymn, with Common-of-Several-Martyrs's responsory", () => { + // Live-verified against Divinum Officium (Monastic Tridentinum + // 1617), 2025-11-13 (clean year). See lauds-capitulum-all-saints- + // of-the-benedictine-order.yml's header. + const ordo = resolveOrdo('lauds', '2025-11-13'); + const chapter = ordo.parts.find((p) => p.kind === 'chapter'); + expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Isa 8:18'); + const hymn = ordo.parts.find((p) => p.kind === 'hymn'); + expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Salvéte, cedri Líbani'); + }); + it('includes the Kyrie + Our Father lead-in right after the Benedictus, before the day collect (either form)', () => { const ordo = resolveOrdo('lauds', FERIAL_TUESDAY); const litanyIndex = ordo.parts.findIndex((p) => p.kind === 'preces' && p.text.text.la?.includes('Kýrie, eléison'));