From 751594d35d21a2abfff7c8685e7a18fbfa000578 Mon Sep 17 00:00:00 2001 From: Will Estes Date: Wed, 26 Aug 2026 08:19:23 -0400 Subject: [PATCH] Author Common-of-a-Confessor-Doctor and Common-of-an-Apostle Lauds/Vespers bundles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit common-of-a-confessor-doctor (4 saints) is another "same content, different id" case: live-verified votive=C4a byte-identical to plain votive=C4 (Common-of-a-Confessor-Bishop), so duplicated verbatim rather than authored fresh, matching the already-existing matins-hymn-common- of-a-confessor-doctor.yml precedent. common-of-an-apostle (3 saints/feasts) is genuinely distinct: chapter Eph 2:19-20, hymn "Exsúltet cælum láudibus" (byte-identical Lauds/ Vespers), shared versicle "Annuntiavérunt ópera Dei." Also duplicated under the separate common-of-apostles (plural) id used by the Octave of Ss. Peter and Paul. Proofs: St. John Damascene (own day) + St. Robert Bellarmine (First Vespers) for Confessor-Doctor; Commemoration of St. Paul (own day) + the Beheading of St. John the Baptist (First Vespers) for Apostle. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_014axryJBrRswYh2niA7WCUc --- TODO.md | 23 ++++ ...capitulum-common-of-a-confessor-doctor.yml | 21 ++++ .../lauds-capitulum-common-of-an-apostle.yml | 19 +++ .../lauds-capitulum-common-of-apostles.yml | 19 +++ ...auds-hymn-common-of-a-confessor-doctor.yml | 101 +++++++++++++++ .../lauds-hymn-common-of-an-apostle.yml | 117 ++++++++++++++++++ .../common/lauds-hymn-common-of-apostles.yml | 117 ++++++++++++++++++ ...esponsory-common-of-a-confessor-doctor.yml | 22 ++++ .../lauds-responsory-common-of-an-apostle.yml | 22 ++++ .../lauds-responsory-common-of-apostles.yml | 22 ++++ ...-versicle-common-of-a-confessor-doctor.yml | 14 +++ .../lauds-versicle-common-of-an-apostle.yml | 14 +++ .../lauds-versicle-common-of-apostles.yml | 14 +++ ...pers-hymn-common-of-a-confessor-doctor.yml | 107 ++++++++++++++++ .../vespers-hymn-common-of-an-apostle.yml | 115 +++++++++++++++++ .../vespers-hymn-common-of-apostles.yml | 115 +++++++++++++++++ ...esponsory-common-of-a-confessor-doctor.yml | 22 ++++ ...espers-responsory-common-of-an-apostle.yml | 22 ++++ .../vespers-responsory-common-of-apostles.yml | 22 ++++ ...-versicle-common-of-a-confessor-doctor.yml | 14 +++ .../vespers-versicle-common-of-an-apostle.yml | 14 +++ .../vespers-versicle-common-of-apostles.yml | 14 +++ tests/hours/lauds.test.ts | 21 ++++ tests/hours/vespers.test.ts | 23 ++++ 24 files changed, 1014 insertions(+) create mode 100644 src/data/propers/common/lauds-capitulum-common-of-a-confessor-doctor.yml create mode 100644 src/data/propers/common/lauds-capitulum-common-of-an-apostle.yml create mode 100644 src/data/propers/common/lauds-capitulum-common-of-apostles.yml create mode 100644 src/data/propers/common/lauds-hymn-common-of-a-confessor-doctor.yml create mode 100644 src/data/propers/common/lauds-hymn-common-of-an-apostle.yml create mode 100644 src/data/propers/common/lauds-hymn-common-of-apostles.yml create mode 100644 src/data/propers/common/lauds-responsory-common-of-a-confessor-doctor.yml create mode 100644 src/data/propers/common/lauds-responsory-common-of-an-apostle.yml create mode 100644 src/data/propers/common/lauds-responsory-common-of-apostles.yml create mode 100644 src/data/propers/common/lauds-versicle-common-of-a-confessor-doctor.yml create mode 100644 src/data/propers/common/lauds-versicle-common-of-an-apostle.yml create mode 100644 src/data/propers/common/lauds-versicle-common-of-apostles.yml create mode 100644 src/data/propers/common/vespers-hymn-common-of-a-confessor-doctor.yml create mode 100644 src/data/propers/common/vespers-hymn-common-of-an-apostle.yml create mode 100644 src/data/propers/common/vespers-hymn-common-of-apostles.yml create mode 100644 src/data/propers/common/vespers-responsory-common-of-a-confessor-doctor.yml create mode 100644 src/data/propers/common/vespers-responsory-common-of-an-apostle.yml create mode 100644 src/data/propers/common/vespers-responsory-common-of-apostles.yml create mode 100644 src/data/propers/common/vespers-versicle-common-of-a-confessor-doctor.yml create mode 100644 src/data/propers/common/vespers-versicle-common-of-an-apostle.yml create mode 100644 src/data/propers/common/vespers-versicle-common-of-apostles.yml diff --git a/TODO.md b/TODO.md index c1d4e9b..505e231 100644 --- a/TODO.md +++ b/TODO.md @@ -2961,6 +2961,29 @@ Matha wins outright that year) for Lauds, St. Praxedes's real First-Vespers anti (Doctor, Apostle, Several-Confessors, Holy Woman/Widow — Holy Woman and Widow may or may not turn out to be the same real category as each other; not yet checked). +### Common-of-a-Confessor-Doctor and Common-of-an-Apostle Lauds/Vespers bundles authored (2026-08-26) + +Two more categories in one pass. `common-of-a-confessor-doctor` (4 saints: St. Albert the +Great, St. John Damascene, St. Peter Canisius, St. Robert Bellarmine) is another "same content, +different id" case like Confessor/Abbot: live-verified `votive=C4a` byte-identical to plain +`votive=C4` (Common-of-a-Confessor-Bishop), so duplicated verbatim rather than authored fresh — +matches the already-existing `matins-hymn-common-of-a-confessor-doctor.yml` precedent. + +`common-of-an-apostle` (3 saints/feasts: Commemoration of St. Paul, Beheading of St. John the +Baptist, Dedication of the Basilicas of Ss. Peter and Paul) is genuinely distinct, own real +content: chapter Eph 2:19-20 ("Fratres: Jam non estis hóspites"), hymn "Exsúltet cælum +láudibus" (byte-identical Lauds/Vespers), shared versicle "Annuntiavérunt ópera Dei." Also +duplicated under the separate `common-of-apostles` (plural) id used by the Octave of Ss. Peter +and Paul, matching the existing minor-hour precedent for that id pair too. + +Proofs: St. John Damascene (own day) and St. Robert Bellarmine (First Vespers) for Confessor- +Doctor; Commemoration of St. Paul (own day) and the Beheading of St. John the Baptist (First +Vespers) for Apostle. + +`npm test` (492 tests), `tsc --noEmit` both pass. **Still open**: 2 Common categories remain +(Several-Confessors — 1 saint, Ss. Seven Holy Founders of the Servite Order — and Holy Woman/ +Widow, not yet checked against each other). + ## 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-common-of-a-confessor-doctor.yml b/src/data/propers/common/lauds-capitulum-common-of-a-confessor-doctor.yml new file mode 100644 index 0000000..911a8ab --- /dev/null +++ b/src/data/propers/common/lauds-capitulum-common-of-a-confessor-doctor.yml @@ -0,0 +1,21 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C4a` ("Confessoris Pontificis" Doctor variant) live query, +# 2026-08 -- byte-identical to plain `votive=C4` (Common-of-a-Confessor- +# Bishop), so duplicated verbatim under this `common-of-a-confessor- +# doctor` id rather than an alias redirect, same reasoning as common-of- +# a-confessor's own header -- matches the already-existing `matins-hymn- +# common-of-a-confessor-doctor.yml` precedent. Same votive-office-view +# reasoning as vespers-hymn-common-of-a-martyr-bishop.yml's header. Same +# chapter reused +# for Vespers -- no separate vespers-capitulum- file authored, per +# vespers.ts's vespersCapitulumForOverride fallback. +id: lauds-capitulum-common-of-a-confessor-doctor +text: + la: "Ecce sacérdos magnus, qui in diébus suis plácuit Deo, et invéntus est justus: et in témpore iracúndiæ factus est reconciliátio." + en: "Behold an high priest, who in his days pleased God, and was found righteous, and in the time of wrath he was made a propitiation." +citation: + la: "Sir 44:16-17" + en: "Sir 44:16-17" +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-capitulum-common-of-an-apostle.yml b/src/data/propers/common/lauds-capitulum-common-of-an-apostle.yml new file mode 100644 index 0000000..9d3092c --- /dev/null +++ b/src/data/propers/common/lauds-capitulum-common-of-an-apostle.yml @@ -0,0 +1,19 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C1` live query, 2026-08 -- same votive-office-view reasoning as +# vespers-hymn-common-of-a-martyr-bishop.yml's header (real saints in +# this small category -- Commemoration of St. Paul, Beheading of St. +# John the Baptist, Dedication of the Basilicas of Ss. Peter and Paul -- +# have their own distinct standing and no clean un-outranked day to +# sample from). Same chapter reused for Vespers -- no separate vespers- +# capitulum- file authored, per vespers.ts's vespersCapitulumForOverride +# fallback. +id: lauds-capitulum-common-of-an-apostle +text: + la: "Fratres: Jam non estis hóspites et ádvenæ: sed estis cives Sanctórum et doméstici Dei: superædificáti super fundaméntum Apostolórum, et Prophetárum, ipso summo angulári lápide Christo Jesu." + en: "Brothers: Now therefore you are no more strangers and foreigners; but you are fellow citizens with the saints, and the domestics of God, built upon the foundation of the apostles and prophets, Jesus Christ himself being the chief corner stone." +citation: + la: "Eph 2:19-20" + en: "Eph 2:19-20" +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-capitulum-common-of-apostles.yml b/src/data/propers/common/lauds-capitulum-common-of-apostles.yml new file mode 100644 index 0000000..55476e4 --- /dev/null +++ b/src/data/propers/common/lauds-capitulum-common-of-apostles.yml @@ -0,0 +1,19 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C1` live query, 2026-08 -- same votive-office-view reasoning as +# vespers-hymn-common-of-a-martyr-bishop.yml's header (real saints in +# this small category -- Commemoration of St. Paul, Beheading of St. +# John the Baptist, Dedication of the Basilicas of Ss. Peter and Paul -- +# have their own distinct standing and no clean un-outranked day to +# sample from). Same chapter reused for Vespers -- no separate vespers- +# capitulum- file authored, per vespers.ts's vespersCapitulumForOverride +# fallback. +id: lauds-capitulum-common-of-apostles +text: + la: "Fratres: Jam non estis hóspites et ádvenæ: sed estis cives Sanctórum et doméstici Dei: superædificáti super fundaméntum Apostolórum, et Prophetárum, ipso summo angulári lápide Christo Jesu." + en: "Brothers: Now therefore you are no more strangers and foreigners; but you are fellow citizens with the saints, and the domestics of God, built upon the foundation of the apostles and prophets, Jesus Christ himself being the chief corner stone." +citation: + la: "Eph 2:19-20" + en: "Eph 2:19-20" +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-hymn-common-of-a-confessor-doctor.yml b/src/data/propers/common/lauds-hymn-common-of-a-confessor-doctor.yml new file mode 100644 index 0000000..4b59f0b --- /dev/null +++ b/src/data/propers/common/lauds-hymn-common-of-a-confessor-doctor.yml @@ -0,0 +1,101 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C4` live query, 2026-08 -- see lauds-capitulum-common-of-a- +# confessor-bishop.yml's header for why the votive-office view was used. +# "Jesu Redémptor ómnium" -- a genuinely distinct Lauds hymn from Common- +# of-a-Confessor-Not-Bishop's own "Jesu coróna célsior" (TODO.md's own +# earlier finding, from the votive-office naming: C4 = "Confessoris +# Pontificis," C5 = "Confessoris non Pontificis," two real separate +# categories, not a naming coincidence). +id: lauds-hymn-common-of-a-confessor-doctor +text: + la: >- + Jesu Redémptor ómnium, + + Perpes coróna Prǽsulum, + + In hac die cleméntius + + Nostris favéto précibus. + + + Tui sacri qua nóminis + + Conféssor almus cláruit: + + Hujus celébrat ánnua + + Devóta plebs solémnia. + + + Qui rite mundi gáudia + + Hujus cadúca réspuens, + + Cum Ángelis cæléstibus + + Lætus potítur prǽmiis. + + + Hujus benígnus ánnue + + Nobis sequi vestígia: + + Hujus precátu, sérvulis + + Dimítte noxam críminis. + + + Sit Christe, Rex piíssime, + + Tibi, Patríque glória, + + Cum Spíritu Paráclito, + + Et nunc, et in perpétuum. Amen. + en: >- + Jesu, the world's Redeemer, O hear; + + thy bishops' fadeless crown, draw near: + + Accept with gentlest love today + + The prayers and praises that we pay. + + + The meek confessor of thy name + + Today attained a glorious fame; + + Whose yearly feast, in solemn state, + + Thy faithful people celebrate. + + + The world and all its boasted good, + + As vain and passing, he eschewed; + + And therefore with angelic bands, + + In endless joy forever stands. + + + Grant then that we, most gracious God, + + May follow in the steps he trod: + + And, at his prayer, thy servants free + + From stain of all iniquity. + + + To thee, O Christ, our loving King, + + All glory, praise, and thanks we bring: + + All glory, as is ever meet, + + To Father and to Paraclete. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-hymn-common-of-an-apostle.yml b/src/data/propers/common/lauds-hymn-common-of-an-apostle.yml new file mode 100644 index 0000000..f54b0fb --- /dev/null +++ b/src/data/propers/common/lauds-hymn-common-of-an-apostle.yml @@ -0,0 +1,117 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C1` live query, 2026-08 -- see lauds-capitulum-common-of-an- +# apostle.yml's header for why the votive-office view was used. +# "Exsúltet cælum láudibus" -- the classic Common-of-Apostles hymn, same +# text both hours here, a single genuine recension found in the +# reference engine. +id: lauds-hymn-common-of-an-apostle +text: + la: >- + Exsúltet cælum láudibus, + + Resúltet terra gáudiis: + + Apostolórum glóriam + + Sacra canunt solémnia. + + + Vos sæcli justi júdices, + + Et vera mundi lúmina, + + Votis precámur córdium, + + Audíte preces súpplicum. + + + Qui cælum verbo cláuditis, + + Serásque ejus sólvitis: + + Nos a peccátis ómnibus + + Sólvite jussu, quǽsumus. + + + Quorum præcépto súbditur, + + Salus, et languor ómnium: + + Sanáte ægros móribus, + + Nos reddéntes virtútibus. + + + Ut, cum Judex advénerit + + Christus in fine sǽculi, + + Nos sempitérni gáudii + + Fáciat esse cómpotes. + + + Deo Patri sit glória, + + Ejúsque soli Fílio, + + Cum Spíritu Paráclito, + + Et nunc, et in perpétuum. Amen. + en: >- + Now let the earth with joy resound, + + And heaven the chant re-echo round; + + Nor heaven nor earth too high can raise + + The great Apostles' glorious praise. + + + O ye who, throned in glory dread, + + Shall judge the living and the dead, + + Lights of the world forevermore! + + To you the suppliant prayer we pour. + + + Ye close the sacred gates on high; + + At your command apart they fly: + + Oh! loose for us the guilty chain + + We strive to break, and strive in vain. + + + Sickness and health your voice obey; + + At your command they go or stay: + + From sin's disease our souls restore; + + In good confirm us more and more. + + + So when the world is at its end, + + And Christ to judgement shall descend, + + May we be called those joys to see + + Prepared from all eternity. + + + Praise to the Father, with the Son, + + And Holy Spirit, Three in One; + + As ever was in ages past, + + And so shall be while ages last. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-hymn-common-of-apostles.yml b/src/data/propers/common/lauds-hymn-common-of-apostles.yml new file mode 100644 index 0000000..5467c58 --- /dev/null +++ b/src/data/propers/common/lauds-hymn-common-of-apostles.yml @@ -0,0 +1,117 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C1` live query, 2026-08 -- see lauds-capitulum-common-of-an- +# apostle.yml's header for why the votive-office view was used. +# "Exsúltet cælum láudibus" -- the classic Common-of-Apostles hymn, same +# text both hours here, a single genuine recension found in the +# reference engine. +id: lauds-hymn-common-of-apostles +text: + la: >- + Exsúltet cælum láudibus, + + Resúltet terra gáudiis: + + Apostolórum glóriam + + Sacra canunt solémnia. + + + Vos sæcli justi júdices, + + Et vera mundi lúmina, + + Votis precámur córdium, + + Audíte preces súpplicum. + + + Qui cælum verbo cláuditis, + + Serásque ejus sólvitis: + + Nos a peccátis ómnibus + + Sólvite jussu, quǽsumus. + + + Quorum præcépto súbditur, + + Salus, et languor ómnium: + + Sanáte ægros móribus, + + Nos reddéntes virtútibus. + + + Ut, cum Judex advénerit + + Christus in fine sǽculi, + + Nos sempitérni gáudii + + Fáciat esse cómpotes. + + + Deo Patri sit glória, + + Ejúsque soli Fílio, + + Cum Spíritu Paráclito, + + Et nunc, et in perpétuum. Amen. + en: >- + Now let the earth with joy resound, + + And heaven the chant re-echo round; + + Nor heaven nor earth too high can raise + + The great Apostles' glorious praise. + + + O ye who, throned in glory dread, + + Shall judge the living and the dead, + + Lights of the world forevermore! + + To you the suppliant prayer we pour. + + + Ye close the sacred gates on high; + + At your command apart they fly: + + Oh! loose for us the guilty chain + + We strive to break, and strive in vain. + + + Sickness and health your voice obey; + + At your command they go or stay: + + From sin's disease our souls restore; + + In good confirm us more and more. + + + So when the world is at its end, + + And Christ to judgement shall descend, + + May we be called those joys to see + + Prepared from all eternity. + + + Praise to the Father, with the Son, + + And Holy Spirit, Three in One; + + As ever was in ages past, + + And so shall be while ages last. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-responsory-common-of-a-confessor-doctor.yml b/src/data/propers/common/lauds-responsory-common-of-a-confessor-doctor.yml new file mode 100644 index 0000000..922917a --- /dev/null +++ b/src/data/propers/common/lauds-responsory-common-of-a-confessor-doctor.yml @@ -0,0 +1,22 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C4` live query, 2026-08 -- see lauds-capitulum-common-of-a- +# confessor-bishop.yml's header for why the votive-office view was used. +id: lauds-responsory-common-of-a-confessor-doctor +text: + la: | + R.br. Amávit eum Dóminus, * Et ornávit eum. + ℟. Amávit eum Dóminus, * Et ornávit eum. + ℣. Stolam glóriæ índuit eum. + ℟. Et ornávit eum. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Amávit eum Dóminus, * Et ornávit eum. + en: | + R.br. The Lord loved him, * and beautified him. + ℟. The Lord loved him, * and beautified him. + ℣. He clothed him with a robe of glory. + ℟. And beautified him. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. The Lord loved him, * and beautified him. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-responsory-common-of-an-apostle.yml b/src/data/propers/common/lauds-responsory-common-of-an-apostle.yml new file mode 100644 index 0000000..36fd86d --- /dev/null +++ b/src/data/propers/common/lauds-responsory-common-of-an-apostle.yml @@ -0,0 +1,22 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C1` live query, 2026-08 -- see lauds-capitulum-common-of-an- +# apostle.yml's header for why the votive-office view was used. +id: lauds-responsory-common-of-an-apostle +text: + la: | + R.br. In omnem terram * Exívit sonus eórum. + ℟. In omnem terram * Exívit sonus eórum. + ℣. Et in fines orbis terræ verba eórum. + ℟. Exívit sonus eórum. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. In omnem terram * Exívit sonus eórum. + en: | + R.br. Their sound hath gone * forth into all the earth. + ℟. Their sound hath gone * forth into all the earth. + ℣. And their words unto the ends of the world. + ℟. Forth into all the earth. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. Their sound hath gone * forth into all the earth. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-responsory-common-of-apostles.yml b/src/data/propers/common/lauds-responsory-common-of-apostles.yml new file mode 100644 index 0000000..b057b9a --- /dev/null +++ b/src/data/propers/common/lauds-responsory-common-of-apostles.yml @@ -0,0 +1,22 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C1` live query, 2026-08 -- see lauds-capitulum-common-of-an- +# apostle.yml's header for why the votive-office view was used. +id: lauds-responsory-common-of-apostles +text: + la: | + R.br. In omnem terram * Exívit sonus eórum. + ℟. In omnem terram * Exívit sonus eórum. + ℣. Et in fines orbis terræ verba eórum. + ℟. Exívit sonus eórum. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. In omnem terram * Exívit sonus eórum. + en: | + R.br. Their sound hath gone * forth into all the earth. + ℟. Their sound hath gone * forth into all the earth. + ℣. And their words unto the ends of the world. + ℟. Forth into all the earth. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. Their sound hath gone * forth into all the earth. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-versicle-common-of-a-confessor-doctor.yml b/src/data/propers/common/lauds-versicle-common-of-a-confessor-doctor.yml new file mode 100644 index 0000000..ea632f7 --- /dev/null +++ b/src/data/propers/common/lauds-versicle-common-of-a-confessor-doctor.yml @@ -0,0 +1,14 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C4` live query, 2026-08 -- same versicle as Vespers (see +# vespers-versicle-common-of-a-confessor-doctor.yml). +id: lauds-versicle-common-of-a-confessor-doctor +text: + la: | + ℣. Justum dedúxit Dóminus per vias rectas. + ℟. Et osténdit illi regnum Dei. + en: | + ℣. The Lord guided the just in right paths. + ℟. And showed him the kingdom of God. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-versicle-common-of-an-apostle.yml b/src/data/propers/common/lauds-versicle-common-of-an-apostle.yml new file mode 100644 index 0000000..86de23d --- /dev/null +++ b/src/data/propers/common/lauds-versicle-common-of-an-apostle.yml @@ -0,0 +1,14 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C1` live query, 2026-08 -- see lauds-capitulum-common-of-an- +# apostle.yml's header for why the votive-office view was used. +id: lauds-versicle-common-of-an-apostle +text: + la: | + ℣. Annuntiavérunt ópera Dei. + ℟. Et facta ejus intellexérunt. + en: | + ℣. They declared the works of God. + ℟. And understood his doings. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-versicle-common-of-apostles.yml b/src/data/propers/common/lauds-versicle-common-of-apostles.yml new file mode 100644 index 0000000..4bcc17f --- /dev/null +++ b/src/data/propers/common/lauds-versicle-common-of-apostles.yml @@ -0,0 +1,14 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# `votive=C1` live query, 2026-08 -- see lauds-capitulum-common-of-an- +# apostle.yml's header for why the votive-office view was used. +id: lauds-versicle-common-of-apostles +text: + la: | + ℣. Annuntiavérunt ópera Dei. + ℟. Et facta ejus intellexérunt. + en: | + ℣. They declared the works of God. + ℟. And understood his doings. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-hymn-common-of-a-confessor-doctor.yml b/src/data/propers/common/vespers-hymn-common-of-a-confessor-doctor.yml new file mode 100644 index 0000000..cc0837a --- /dev/null +++ b/src/data/propers/common/vespers-hymn-common-of-a-confessor-doctor.yml @@ -0,0 +1,107 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# `votive=C4` live query, 2026-08 -- byte-identical Latin to Common-of-a- +# Confessor-Not-Bishop's own Vespers hymn ("Iste Conféssor Dómini +# sacrátus," the Monastic-track pre-Urban VIII recension -- see that +# file's own header for the textual-variant note). A real, confirmed +# overlap, not a copy-paste mistake: the reference engine's C4 (Confessor +# Bishop) and C5 (Confessor Not Bishop) votive views render the identical +# Vespers hymn text, even though their Lauds hymns, chapters, and +# responsories all genuinely differ (see lauds-hymn-common-of-a- +# confessor-bishop.yml's header). Latin and English (an original +# translation, not the reference engine's own, for the same reason +# recorded in the Confessor-Not-Bishop file) reused verbatim from +# vespers-hymn-common-of-a-confessor-not-bishop.yml rather than +# re-translated, for consistency across the two categories that share it. +id: vespers-hymn-common-of-a-confessor-doctor +text: + la: >- + Iste Conféssor Dómini sacrátus, + + Festa plebs cujus celébrat per orbem, + + Hódie lætus méruit secréta + + Scándere cæli. + + + Qui pius, prudens, húmilis, pudícus, + + Sóbrius, castus fuit et quiétus, + + Vita dum præsens vegetávit ejus + + Córporis artus. + + + Ob sacrum cujus túmulum frequénter + + Membra languéntum modo sanitáti, + + Quólibet morbo fúerint graváta, + + Restituúntur. + + + Unde nunc noster chorus in honórem + + Ipsius, hymnum canit hunc libénter: + + Ut piis ejus méritis juvémur + + Omne per ævum. + + + Sit salus illi, decus atque virtus, + + Qui supra cæli résidens cacúmen, + + Tótius mundi máchinam gubérnat + + Trinus et unus. Amen. + en: >- + This is the Lord's own hallowed confessor, + + Whose feast today the nations round are keeping; + + Joyful, he merited this day to enter + + Heaven's hid glory. + + + Dutiful, prudent, humble, chaste, he flourished, + + Sober and quiet, pure in all his living, + + While in his body yet the breath of this life + + Quickened his members. + + + Often at his consecrated tomb, the + + Limbs of those worn by long and grievous sickness, + + Whatsoever ill had laid them low, are + + Wholly restored. + + + Therefore our choir today, in glad thanksgiving, + + Sings in his honor this our joyful anthem: + + That by his merits, freely won through goodness, + + We may be aided. + + + Praise be to Him, all honor, might, dominion, + + Who from the height of heaven's throne is reigning, + + Governing all the fabric of creation, + + Three and yet One. Amen. +status: + la: verified + en: draft diff --git a/src/data/propers/common/vespers-hymn-common-of-an-apostle.yml b/src/data/propers/common/vespers-hymn-common-of-an-apostle.yml new file mode 100644 index 0000000..0de75b9 --- /dev/null +++ b/src/data/propers/common/vespers-hymn-common-of-an-apostle.yml @@ -0,0 +1,115 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# `votive=C1` live query, 2026-08 -- byte-identical to the Lauds hymn +# ("Exsúltet cælum láudibus") -- see lauds-capitulum-common-of-an- +# apostle.yml's header for the fuller gap/sourcing writeup. +id: vespers-hymn-common-of-an-apostle +text: + la: >- + Exsúltet cælum láudibus, + + Resúltet terra gáudiis: + + Apostolórum glóriam + + Sacra canunt solémnia. + + + Vos sæcli justi júdices, + + Et vera mundi lúmina, + + Votis precámur córdium, + + Audíte preces súpplicum. + + + Qui cælum verbo cláuditis, + + Serásque ejus sólvitis: + + Nos a peccátis ómnibus + + Sólvite jussu, quǽsumus. + + + Quorum præcépto súbditur, + + Salus, et languor ómnium: + + Sanáte ægros móribus, + + Nos reddéntes virtútibus. + + + Ut, cum Judex advénerit + + Christus in fine sǽculi, + + Nos sempitérni gáudii + + Fáciat esse cómpotes. + + + Deo Patri sit glória, + + Ejúsque soli Fílio, + + Cum Spíritu Paráclito, + + Et nunc, et in perpétuum. Amen. + en: >- + Now let the earth with joy resound, + + And heaven the chant re-echo round; + + Nor heaven nor earth too high can raise + + The great Apostles' glorious praise. + + + O ye who, throned in glory dread, + + Shall judge the living and the dead, + + Lights of the world forevermore! + + To you the suppliant prayer we pour. + + + Ye close the sacred gates on high; + + At your command apart they fly: + + Oh! loose for us the guilty chain + + We strive to break, and strive in vain. + + + Sickness and health your voice obey; + + At your command they go or stay: + + From sin's disease our souls restore; + + In good confirm us more and more. + + + So when the world is at its end, + + And Christ to judgement shall descend, + + May we be called those joys to see + + Prepared from all eternity. + + + Praise to the Father, with the Son, + + And Holy Spirit, Three in One; + + As ever was in ages past, + + And so shall be while ages last. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-hymn-common-of-apostles.yml b/src/data/propers/common/vespers-hymn-common-of-apostles.yml new file mode 100644 index 0000000..037e0cb --- /dev/null +++ b/src/data/propers/common/vespers-hymn-common-of-apostles.yml @@ -0,0 +1,115 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# `votive=C1` live query, 2026-08 -- byte-identical to the Lauds hymn +# ("Exsúltet cælum láudibus") -- see lauds-capitulum-common-of-an- +# apostle.yml's header for the fuller gap/sourcing writeup. +id: vespers-hymn-common-of-apostles +text: + la: >- + Exsúltet cælum láudibus, + + Resúltet terra gáudiis: + + Apostolórum glóriam + + Sacra canunt solémnia. + + + Vos sæcli justi júdices, + + Et vera mundi lúmina, + + Votis precámur córdium, + + Audíte preces súpplicum. + + + Qui cælum verbo cláuditis, + + Serásque ejus sólvitis: + + Nos a peccátis ómnibus + + Sólvite jussu, quǽsumus. + + + Quorum præcépto súbditur, + + Salus, et languor ómnium: + + Sanáte ægros móribus, + + Nos reddéntes virtútibus. + + + Ut, cum Judex advénerit + + Christus in fine sǽculi, + + Nos sempitérni gáudii + + Fáciat esse cómpotes. + + + Deo Patri sit glória, + + Ejúsque soli Fílio, + + Cum Spíritu Paráclito, + + Et nunc, et in perpétuum. Amen. + en: >- + Now let the earth with joy resound, + + And heaven the chant re-echo round; + + Nor heaven nor earth too high can raise + + The great Apostles' glorious praise. + + + O ye who, throned in glory dread, + + Shall judge the living and the dead, + + Lights of the world forevermore! + + To you the suppliant prayer we pour. + + + Ye close the sacred gates on high; + + At your command apart they fly: + + Oh! loose for us the guilty chain + + We strive to break, and strive in vain. + + + Sickness and health your voice obey; + + At your command they go or stay: + + From sin's disease our souls restore; + + In good confirm us more and more. + + + So when the world is at its end, + + And Christ to judgement shall descend, + + May we be called those joys to see + + Prepared from all eternity. + + + Praise to the Father, with the Son, + + And Holy Spirit, Three in One; + + As ever was in ages past, + + And so shall be while ages last. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-responsory-common-of-a-confessor-doctor.yml b/src/data/propers/common/vespers-responsory-common-of-a-confessor-doctor.yml new file mode 100644 index 0000000..d8d95d0 --- /dev/null +++ b/src/data/propers/common/vespers-responsory-common-of-a-confessor-doctor.yml @@ -0,0 +1,22 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# `votive=C4` live query, 2026-08 -- see lauds-capitulum-common-of-a- +# confessor-bishop.yml's header for why the votive-office view was used. +id: vespers-responsory-common-of-a-confessor-doctor +text: + la: | + R.br. Elégit eum Dóminus * Sacerdótem sibi. + ℟. Elégit eum Dóminus * Sacerdótem sibi. + ℣. Ad sacrificándum ei hóstiam laudis. + ℟. Sacerdótem sibi. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Elégit eum Dóminus * Sacerdótem sibi. + en: | + R.br. The Lord hath chosen him * for a Priest unto Himself. + ℟. The Lord hath chosen him * for a Priest unto Himself. + ℣. To offer up unto Him the sacrifice of praise. + ℟. For a Priest unto Himself. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. The Lord hath chosen him * for a Priest unto Himself. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-responsory-common-of-an-apostle.yml b/src/data/propers/common/vespers-responsory-common-of-an-apostle.yml new file mode 100644 index 0000000..a2bb798 --- /dev/null +++ b/src/data/propers/common/vespers-responsory-common-of-an-apostle.yml @@ -0,0 +1,22 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# `votive=C1` live query, 2026-08 -- see lauds-capitulum-common-of-an- +# apostle.yml's header for why the votive-office view was used. +id: vespers-responsory-common-of-an-apostle +text: + la: | + R.br. Constítues eos príncipes * Super omnem terram. + ℟. Constítues eos príncipes * Super omnem terram. + ℣. Mémores erunt nóminis tui, Dómine. + ℟. Super omnem terram. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Constítues eos príncipes * Super omnem terram. + en: | + R.br. Thou shalt make them princes * over all the earth. + ℟. Thou shalt make them princes * over all the earth. + ℣. They shall remember thy name, O Lord. + ℟. All over the earth. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. Thou shalt make them princes * over all the earth. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-responsory-common-of-apostles.yml b/src/data/propers/common/vespers-responsory-common-of-apostles.yml new file mode 100644 index 0000000..3e29e4d --- /dev/null +++ b/src/data/propers/common/vespers-responsory-common-of-apostles.yml @@ -0,0 +1,22 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# `votive=C1` live query, 2026-08 -- see lauds-capitulum-common-of-an- +# apostle.yml's header for why the votive-office view was used. +id: vespers-responsory-common-of-apostles +text: + la: | + R.br. Constítues eos príncipes * Super omnem terram. + ℟. Constítues eos príncipes * Super omnem terram. + ℣. Mémores erunt nóminis tui, Dómine. + ℟. Super omnem terram. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Constítues eos príncipes * Super omnem terram. + en: | + R.br. Thou shalt make them princes * over all the earth. + ℟. Thou shalt make them princes * over all the earth. + ℣. They shall remember thy name, O Lord. + ℟. All over the earth. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. Thou shalt make them princes * over all the earth. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-versicle-common-of-a-confessor-doctor.yml b/src/data/propers/common/vespers-versicle-common-of-a-confessor-doctor.yml new file mode 100644 index 0000000..d18287d --- /dev/null +++ b/src/data/propers/common/vespers-versicle-common-of-a-confessor-doctor.yml @@ -0,0 +1,14 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# `votive=C4` live query, 2026-08 -- same versicle as Lauds (see lauds- +# versicle-common-of-a-confessor-doctor.yml). +id: vespers-versicle-common-of-a-confessor-doctor +text: + la: | + ℣. Justum dedúxit Dóminus per vias rectas. + ℟. Et osténdit illi regnum Dei. + en: | + ℣. The Lord guided the just in right paths. + ℟. And showed him the kingdom of God. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-versicle-common-of-an-apostle.yml b/src/data/propers/common/vespers-versicle-common-of-an-apostle.yml new file mode 100644 index 0000000..f426ae0 --- /dev/null +++ b/src/data/propers/common/vespers-versicle-common-of-an-apostle.yml @@ -0,0 +1,14 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# `votive=C1` live query, 2026-08 -- same versicle as Lauds (see lauds- +# versicle-common-of-an-apostle.yml). +id: vespers-versicle-common-of-an-apostle +text: + la: | + ℣. Annuntiavérunt ópera Dei. + ℟. Et facta ejus intellexérunt. + en: | + ℣. They declared the works of God. + ℟. And understood his doings. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-versicle-common-of-apostles.yml b/src/data/propers/common/vespers-versicle-common-of-apostles.yml new file mode 100644 index 0000000..dedc6b4 --- /dev/null +++ b/src/data/propers/common/vespers-versicle-common-of-apostles.yml @@ -0,0 +1,14 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# `votive=C1` live query, 2026-08 -- same versicle as Lauds (see lauds- +# versicle-common-of-apostles.yml). +id: vespers-versicle-common-of-apostles +text: + la: | + ℣. Annuntiavérunt ópera Dei. + ℟. Et facta ejus intellexérunt. + en: | + ℣. They declared the works of God. + ℟. And understood his doings. +status: + la: verified + en: verified diff --git a/tests/hours/lauds.test.ts b/tests/hours/lauds.test.ts index 6aad256..144786c 100644 --- a/tests/hours/lauds.test.ts +++ b/tests/hours/lauds.test.ts @@ -212,6 +212,27 @@ describe('resolveOrdo("lauds", ...)', () => { expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Jesu, coróna Vírginum'); }); + it("uses common-of-a-confessor-doctor's real office bundle on St. John Damascene's own day", () => { + // Live-verified 2026-08-26 to be Common-of-a-Confessor-Bishop's own + // content -- see lauds-capitulum-common-of-a-confessor-doctor.yml's + // header. + const ordo = resolveOrdo('lauds', '2026-03-27'); + const chapter = ordo.parts.find((p) => p.kind === 'chapter'); + expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Sir 44:16-17'); + const hymn = ordo.parts.find((p) => p.kind === 'hymn'); + expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Jesu Redémptor ómnium'); + }); + + it("uses common-of-an-apostle's real office bundle on the Commemoration of St. Paul's own day", () => { + // Live-verified against Divinum Officium (Monastic Tridentinum 1617) + // votive=C1 -- see lauds-capitulum-common-of-an-apostle.yml's header. + const ordo = resolveOrdo('lauds', '2026-06-30'); + const chapter = ordo.parts.find((p) => p.kind === 'chapter'); + expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Eph 2:19-20'); + const hymn = ordo.parts.find((p) => p.kind === 'hymn'); + expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Exsúltet cælum láudibus'); + }); + 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')); diff --git a/tests/hours/vespers.test.ts b/tests/hours/vespers.test.ts index 3efe7ce..37ae1ec 100644 --- a/tests/hours/vespers.test.ts +++ b/tests/hours/vespers.test.ts @@ -299,6 +299,29 @@ describe('resolveOrdo("vespers", ...)', () => { expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Jesu, coróna Vírginum'); }); + it("uses common-of-a-confessor-doctor's real office bundle for St. Robert Bellarmine's First Vespers", () => { + // St. Robert Bellarmine (May 13, Duplex, common-of-a-confessor- + // doctor -- live-verified 2026-08-26 to be Common-of-a-Confessor- + // Bishop's own content, see lauds-capitulum-common-of-a-confessor- + // doctor.yml's header) claims First Vespers over May 12's own + // evening. + const ordo = resolveOrdo('vespers', '2026-05-12'); + const chapter = ordo.parts.find((p) => p.kind === 'chapter'); + expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Sir 44:16-17'); + const hymn = ordo.parts.find((p) => p.kind === 'hymn'); + expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Iste Conféssor Dómini sacrátus'); + }); + + it("uses common-of-an-apostle's real office bundle for the Beheading of St. John the Baptist's First Vespers", () => { + // Live-verified against Divinum Officium (Monastic Tridentinum 1617) + // votive=C1 -- see vespers-hymn-common-of-an-apostle.yml's header. + const ordo = resolveOrdo('vespers', '2026-08-28'); + const chapter = ordo.parts.find((p) => p.kind === 'chapter'); + expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Eph 2:19-20'); + const hymn = ordo.parts.find((p) => p.kind === 'hymn'); + expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Exsúltet cælum láudibus'); + }); + it("renders Passiontide's seasonal office, with the Gloria Patri omitted from the responsory", () => { // 2026-03-25 is a Wednesday in Passiontide (Passion Sunday 2026-03-22 // through Holy Saturday 2026-04-04).