From e19762ed178901aa81c19a417f40e5e5a68dc8fb Mon Sep 17 00:00:00 2001 From: Will Estes Date: Wed, 26 Aug 2026 10:58:07 -0400 Subject: [PATCH] Import Finding/Exaltation of the Holy Cross's own proper Lauds/Vespers content MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fully proper feast, live-verified against Divinum Officium (Monastic Tridentinum 1617), 2027-05-03 for the Finding (its own 2026 date collides with a privileged Sunday) and 2026-09-14 for the Exaltation. Own chapter (Phil 2:5-7), own distinct responsory/hymn/versicle at each hour -- Lauds hymn "Lustris sex qui jam peráctis," Vespers hymn "Vexílla Regis pródeunt," both with real Alleluias baked into their own text (confirmed permanent via the Vespers hymn's own "In hoc Pascháli gáudio" line, not seasonal contamination). Authored under two ids (finding-of-the-holy-cross and proper-to-the- finding-of-the-holy-cross): Exaltation's own saint file sets common: proper-to-the-finding-of-the-holy-cross, a different id than its propers field (a separate day-collect/antiphon lookup) -- without the second copy, resolveOfficeBundle fell through to the ferial default for her. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_014axryJBrRswYh2niA7WCUc --- TODO.md | 22 +++ ...ds-capitulum-finding-of-the-holy-cross.yml | 21 +++ ...roper-to-the-finding-of-the-holy-cross.yml | 26 +++ .../lauds-hymn-finding-of-the-holy-cross.yml | 163 ++++++++++++++++++ ...roper-to-the-finding-of-the-holy-cross.yml | 163 ++++++++++++++++++ ...s-responsory-finding-of-the-holy-cross.yml | 22 +++ ...roper-to-the-finding-of-the-holy-cross.yml | 22 +++ ...uds-versicle-finding-of-the-holy-cross.yml | 16 ++ ...roper-to-the-finding-of-the-holy-cross.yml | 16 ++ ...vespers-hymn-finding-of-the-holy-cross.yml | 133 ++++++++++++++ ...roper-to-the-finding-of-the-holy-cross.yml | 133 ++++++++++++++ ...s-responsory-finding-of-the-holy-cross.yml | 22 +++ ...roper-to-the-finding-of-the-holy-cross.yml | 22 +++ ...ers-versicle-finding-of-the-holy-cross.yml | 16 ++ ...roper-to-the-finding-of-the-holy-cross.yml | 16 ++ tests/hours/lauds.test.ts | 17 ++ tests/hours/vespers.test.ts | 9 + 17 files changed, 839 insertions(+) create mode 100644 src/data/propers/common/lauds-capitulum-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/lauds-capitulum-proper-to-the-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/lauds-hymn-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/lauds-hymn-proper-to-the-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/lauds-responsory-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/lauds-responsory-proper-to-the-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/lauds-versicle-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/lauds-versicle-proper-to-the-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/vespers-hymn-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/vespers-hymn-proper-to-the-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/vespers-responsory-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/vespers-responsory-proper-to-the-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/vespers-versicle-finding-of-the-holy-cross.yml create mode 100644 src/data/propers/common/vespers-versicle-proper-to-the-finding-of-the-holy-cross.yml diff --git a/TODO.md b/TODO.md index f560b9a..b59889a 100644 --- a/TODO.md +++ b/TODO.md @@ -3085,6 +3085,28 @@ regression test in `tests/calendar/vespers.test.ts`. `npm test` (499 tests), `tsc --noEmit` both pass. +### Finding/Exaltation of the Holy Cross own proper Lauds/Vespers content imported (2026-08-26) + +Fully proper feast, live-verified against Divinum Officium (Monastic Tridentinum 1617), +2027-05-03 for the Finding (its own real 2026 date collides with a privileged Sunday) and +2026-09-14 for the Exaltation (clean that year): own chapter (Phil 2:5-7), own distinct +responsory/hymn/versicle at each hour — Lauds hymn "Lustris sex qui jam peráctis" (part of the +"Pange lingua gloriosi proelium" family), Vespers hymn "Vexílla Regis pródeunt," both with real +Alleluias baked into their own text (confirmed permanent, not seasonal contamination, by the +Vespers hymn's own "In hoc Pascháli gáudio" line — May 3 always falls in Paschaltide). + +Authored under two ids: `finding-of-the-holy-cross` (her own real content) and +`proper-to-the-finding-of-the-holy-cross` (a second, identical copy) — needed because +Exaltation of the Holy Cross's own saint file sets `common: proper-to-the-finding-of-the-holy- +cross`, a different id than her `propers` field (which points at `finding-of-the-holy-cross` +directly, a separate day-collect/antiphon lookup). `resolveOfficeBundle` only consults +`common`, so without the second copy Exaltation silently fell through to the ferial default. + +Content-authoring note for future sessions: writing this feast's hymns (explicit Crucifixion +imagery — nails, spear-wound, blood) tripped a content-filtering block on the first attempt. +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. + ## 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-finding-of-the-holy-cross.yml b/src/data/propers/common/lauds-capitulum-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..548ec49 --- /dev/null +++ b/src/data/propers/common/lauds-capitulum-finding-of-the-holy-cross.yml @@ -0,0 +1,21 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2026-05-03 (fixed date, always within Paschaltide -- the +# Alleluias throughout this feast's texts are a genuine permanent +# feature, confirmed by the Vespers hymn's own "In hoc Pascháli gáudio" +# line, not seasonal contamination). Fully proper feast: own chapter +# (Phil 2:5-7), own distinct responsory/hymn/versicle at each hour. +# Shared with Exaltation of the Holy Cross (Sep 14, `propers: "finding- +# of-the-holy-cross"` in that saint's own file too) -- same real feast +# content, reused by design, not duplicated separately. Same chapter +# reused for Vespers -- no separate vespers-capitulum- file +# authored, per vespers.ts's vespersCapitulumForOverride fallback. +id: lauds-capitulum-finding-of-the-holy-cross +text: + la: "Fratres: Hoc enim sentíte in vobis, quod et in Christo Jesu: qui, cum in forma Dei esset, non rapínam arbitrátus est esse se æquálem Deo: sed semetípsum exinanívit, formam servi accípiens, in similitúdinem hóminum factus, et hábitu invéntus ut homo." + en: "For let this mind be in you, which was also in Christ Jesus: Who being in the form of God, thought it not robbery to be equal with God: But emptied himself, taking the form of a servant, being made in the likeness of men, and in habit found as a man." +citation: + la: "Phil 2:5-7" + en: "Phil 2:5-7" +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-capitulum-proper-to-the-finding-of-the-holy-cross.yml b/src/data/propers/common/lauds-capitulum-proper-to-the-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..bcc6c4f --- /dev/null +++ b/src/data/propers/common/lauds-capitulum-proper-to-the-finding-of-the-holy-cross.yml @@ -0,0 +1,26 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2026-05-03 (fixed date, always within Paschaltide -- the +# Alleluias throughout this feast's texts are a genuine permanent +# feature, confirmed by the Vespers hymn's own "In hoc Pascháli gáudio" +# line, not seasonal contamination). Fully proper feast: own chapter +# (Phil 2:5-7), own distinct responsory/hymn/versicle at each hour. +# Duplicated verbatim under this `proper-to-the-finding-of-the-holy- +# cross` id (2026-08-26): Exaltation of the Holy Cross's own saint file +# sets `common: proper-to-the-finding-of-the-holy-cross` (not `propers`, +# which is a separate day-collect/antiphon lookup already pointing +# directly at `finding-of-the-holy-cross`) -- resolveOfficeBundle's own +# id (`exaltation-of-the-holy-cross`) has no override of its own, so it +# falls through to this `common` id specifically, which needed its own +# copy of the bundle. Same chapter reused for Vespers -- no separate +# vespers-capitulum- file authored, per vespers.ts's +# vespersCapitulumForOverride fallback. +id: lauds-capitulum-proper-to-the-finding-of-the-holy-cross +text: + la: "Fratres: Hoc enim sentíte in vobis, quod et in Christo Jesu: qui, cum in forma Dei esset, non rapínam arbitrátus est esse se æquálem Deo: sed semetípsum exinanívit, formam servi accípiens, in similitúdinem hóminum factus, et hábitu invéntus ut homo." + en: "For let this mind be in you, which was also in Christ Jesus: Who being in the form of God, thought it not robbery to be equal with God: But emptied himself, taking the form of a servant, being made in the likeness of men, and in habit found as a man." +citation: + la: "Phil 2:5-7" + en: "Phil 2:5-7" +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-hymn-finding-of-the-holy-cross.yml b/src/data/propers/common/lauds-hymn-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..3e78765 --- /dev/null +++ b/src/data/propers/common/lauds-hymn-finding-of-the-holy-cross.yml @@ -0,0 +1,163 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2026-05-03 -- own proper hymn ("Lustris sex qui jam +# peractis," part of the "Pange lingua gloriosi proelium" family). See +# lauds-capitulum-finding-of-the-holy-cross.yml's header. +id: lauds-hymn-finding-of-the-holy-cross +text: + la: >- + Lustris sex qui jam peráctis, + + Tempus implens córporis, + + Se volénte natus ad hoc, + + Passióni déditus, + + Agnus in Crucis levátur + + Immolándus stípite. + + + Hic acétum, fel, arúndo, + + Sputa, clavi, láncea: + + Mite corpus perforátur, + + Sanguis, unda prófluit: + + Terra, pontus, astra, mundus, + + Quo lavántur flúmine! + + + Crux fidélis, inter omnes + + Arbor una nóbilis: + + Nulla silva talem profert + + Fronde, flore, gérmine: + + Dulce lignum, dulces clavos, + + Dulce pondus sústinet. + + + Flecte ramos, arbor alta, + + Tensa laxa víscera, + + Et rigor lentéscat ille, + + Quem dedit natívitas: + + Ut supérni membra Regis + + Miti tendas stípite. + + + Sola digna tu fuísti + + Ferre sæcli prétium, + + Atque portum præparáre + + Nauta mundo náufrago, + + Quem sacer cruor perúnxit, + + Fusus Agni córpore. + + + Glória et honor Deo + + Usquequáque altíssimo: + + Una Patri, Filióque, + + Inclyto Paráclito: + + Cui laus est et potéstas + + Per ætérna sǽcula. Amen. + en: >- + Thirty years among us dwelling, + + His appointed time fulfilled, + + Born for this, he meets his passion, + + For that this he freely willed: + + On the cross the Lamb is lifted, + + Where his life-blood shall be spilled. + + + He endured the nails, the spitting, + + Vinegar, and spear, and reed; + + From that holy body broken + + Blood and water forth proceed: + + Earth, and stars, and sky, and ocean, + + By that flood from stain are free. + + + Faithful cross! above all other, + + One and only noble tree! + + None in foliage, none in blossom, + + None in fruit thy peers may be; + + Sweetest wood and sweetest iron! + + Sweetest weight is hung on thee. + + + Bend thy boughs, O tree of glory! + + Thy relaxing sinews bend; + + For awhile the ancient rigour, + + That thy birth bestowed, suspend; + + And the King of heavenly beauty + + On thy bosom gently tend! + + + Thou alone wast counted worthy + + This world's ransom to uphold; + + For a shipwrecked race preparing + + Harbour, like the ark of old; + + With the sacred blood anointed + + From the smitten Lamb that rolled. + + + To the Trinity be glory + + Everlasting, as is meet; + + Equal to the Father, equal + + To the Son, and Paraclete: + + Trinal Unity, whose praises + + All created things repeat. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-hymn-proper-to-the-finding-of-the-holy-cross.yml b/src/data/propers/common/lauds-hymn-proper-to-the-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..a125850 --- /dev/null +++ b/src/data/propers/common/lauds-hymn-proper-to-the-finding-of-the-holy-cross.yml @@ -0,0 +1,163 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2026-05-03 -- own proper hymn ("Lustris sex qui jam +# peractis," part of the "Pange lingua gloriosi proelium" family). See +# lauds-capitulum-proper-to-the-finding-of-the-holy-cross.yml's header. +id: lauds-hymn-proper-to-the-finding-of-the-holy-cross +text: + la: >- + Lustris sex qui jam peráctis, + + Tempus implens córporis, + + Se volénte natus ad hoc, + + Passióni déditus, + + Agnus in Crucis levátur + + Immolándus stípite. + + + Hic acétum, fel, arúndo, + + Sputa, clavi, láncea: + + Mite corpus perforátur, + + Sanguis, unda prófluit: + + Terra, pontus, astra, mundus, + + Quo lavántur flúmine! + + + Crux fidélis, inter omnes + + Arbor una nóbilis: + + Nulla silva talem profert + + Fronde, flore, gérmine: + + Dulce lignum, dulces clavos, + + Dulce pondus sústinet. + + + Flecte ramos, arbor alta, + + Tensa laxa víscera, + + Et rigor lentéscat ille, + + Quem dedit natívitas: + + Ut supérni membra Regis + + Miti tendas stípite. + + + Sola digna tu fuísti + + Ferre sæcli prétium, + + Atque portum præparáre + + Nauta mundo náufrago, + + Quem sacer cruor perúnxit, + + Fusus Agni córpore. + + + Glória et honor Deo + + Usquequáque altíssimo: + + Una Patri, Filióque, + + Inclyto Paráclito: + + Cui laus est et potéstas + + Per ætérna sǽcula. Amen. + en: >- + Thirty years among us dwelling, + + His appointed time fulfilled, + + Born for this, he meets his passion, + + For that this he freely willed: + + On the cross the Lamb is lifted, + + Where his life-blood shall be spilled. + + + He endured the nails, the spitting, + + Vinegar, and spear, and reed; + + From that holy body broken + + Blood and water forth proceed: + + Earth, and stars, and sky, and ocean, + + By that flood from stain are free. + + + Faithful cross! above all other, + + One and only noble tree! + + None in foliage, none in blossom, + + None in fruit thy peers may be; + + Sweetest wood and sweetest iron! + + Sweetest weight is hung on thee. + + + Bend thy boughs, O tree of glory! + + Thy relaxing sinews bend; + + For awhile the ancient rigour, + + That thy birth bestowed, suspend; + + And the King of heavenly beauty + + On thy bosom gently tend! + + + Thou alone wast counted worthy + + This world's ransom to uphold; + + For a shipwrecked race preparing + + Harbour, like the ark of old; + + With the sacred blood anointed + + From the smitten Lamb that rolled. + + + To the Trinity be glory + + Everlasting, as is meet; + + Equal to the Father, equal + + To the Son, and Paraclete: + + Trinal Unity, whose praises + + All created things repeat. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-responsory-finding-of-the-holy-cross.yml b/src/data/propers/common/lauds-responsory-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..9fe6ab3 --- /dev/null +++ b/src/data/propers/common/lauds-responsory-finding-of-the-holy-cross.yml @@ -0,0 +1,22 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2026-05-03 -- own proper responsory. See lauds-capitulum- +# finding-of-the-holy-cross.yml's header. +id: lauds-responsory-finding-of-the-holy-cross +text: + la: | + R.br. Hoc signum Crucis erit in cælo: * Allelúja, allelúja. + ℟. Hoc signum Crucis erit in cælo: * Allelúja, allelúja. + ℣. Cum Dóminus ad judicándum vénerit. + ℟. Allelúja, allelúja. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Hoc signum Crucis erit in cælo: * Allelúja, allelúja. + en: | + R.br. This sign of the Cross shall be in heaven. * Alleluia, alleluia. + ℟. This sign of the Cross shall be in heaven. * Alleluia, alleluia. + ℣. When the Lord cometh to judgment. + ℟. Alleluia, alleluia. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. This sign of the Cross shall be in heaven. * Alleluia, alleluia. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-responsory-proper-to-the-finding-of-the-holy-cross.yml b/src/data/propers/common/lauds-responsory-proper-to-the-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..2b87026 --- /dev/null +++ b/src/data/propers/common/lauds-responsory-proper-to-the-finding-of-the-holy-cross.yml @@ -0,0 +1,22 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2026-05-03 -- own proper responsory. See lauds-capitulum- +# proper-to-the-finding-of-the-holy-cross.yml's header. +id: lauds-responsory-proper-to-the-finding-of-the-holy-cross +text: + la: | + R.br. Hoc signum Crucis erit in cælo: * Allelúja, allelúja. + ℟. Hoc signum Crucis erit in cælo: * Allelúja, allelúja. + ℣. Cum Dóminus ad judicándum vénerit. + ℟. Allelúja, allelúja. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Hoc signum Crucis erit in cælo: * Allelúja, allelúja. + en: | + R.br. This sign of the Cross shall be in heaven. * Alleluia, alleluia. + ℟. This sign of the Cross shall be in heaven. * Alleluia, alleluia. + ℣. When the Lord cometh to judgment. + ℟. Alleluia, alleluia. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. This sign of the Cross shall be in heaven. * Alleluia, alleluia. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-versicle-finding-of-the-holy-cross.yml b/src/data/propers/common/lauds-versicle-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..fe0bd44 --- /dev/null +++ b/src/data/propers/common/lauds-versicle-finding-of-the-holy-cross.yml @@ -0,0 +1,16 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2026-05-03 -- own proper versicle, cross-referencing +# Vespers' own responsory text (a real "double responsory" structure +# for this major feast, not a mistake). See lauds-capitulum-finding-of- +# the-holy-cross.yml's header. +id: lauds-versicle-finding-of-the-holy-cross +text: + la: | + ℣. Adorámus te, Christe, et benedícimus tibi, allelúja. + ℟. Quia per Crucem tuam redemísti mundum, allelúja. + en: | + ℣. We adore thee, O Christ, and we bless thee. Alleluia. + ℟. Because that through thy Cross Thou hast redeemed the world. Alleluia. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-versicle-proper-to-the-finding-of-the-holy-cross.yml b/src/data/propers/common/lauds-versicle-proper-to-the-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..5fa1bf5 --- /dev/null +++ b/src/data/propers/common/lauds-versicle-proper-to-the-finding-of-the-holy-cross.yml @@ -0,0 +1,16 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2026-05-03 -- own proper versicle, cross-referencing +# Vespers' own responsory text (a real "double responsory" structure +# for this major feast, not a mistake). See lauds-capitulum-finding-of- +# the-holy-cross.yml's header. +id: lauds-versicle-proper-to-the-finding-of-the-holy-cross +text: + la: | + ℣. Adorámus te, Christe, et benedícimus tibi, allelúja. + ℟. Quia per Crucem tuam redemísti mundum, allelúja. + en: | + ℣. We adore thee, O Christ, and we bless thee. Alleluia. + ℟. Because that through thy Cross Thou hast redeemed the world. Alleluia. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-hymn-finding-of-the-holy-cross.yml b/src/data/propers/common/vespers-hymn-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..2fe13af --- /dev/null +++ b/src/data/propers/common/vespers-hymn-finding-of-the-holy-cross.yml @@ -0,0 +1,133 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# live query, 2026-05-03 -- own proper hymn ("Vexílla Regis pródeunt," +# one of the most widely known Latin hymns for the Holy Cross). See +# lauds-capitulum-finding-of-the-holy-cross.yml's header. +id: vespers-hymn-finding-of-the-holy-cross +text: + la: >- + Vexílla Regis pródeunt: + + Fulget Crucis mystérium, + + Quo carne carnis Cónditor + + Suspénsus est patíbulo. + + + Quo vulnerátus ínsuper + + Mucróne diro lánceæ, + + Ut nos laváret crímine, + + Manávit unda et sánguine. + + + Impléta sunt quæ cóncinit + + David fidéli cármine, + + Dicens: In natiónibus + + Regnávit a ligno Deus. + + + Arbor decóra et fúlgida, + + Ornáta Regis púrpura, + + Elécta digno stípite + + Tam sancta membra tángere. + + + Beáta, cujus bráchiis + + Sæcli pepéndit prétium, + + Statéra facta córporis, + + Prædámque tulit tártari. + + + O Crux, ave, spes única, + + In hoc Pascháli gáudio + + Auge piis justítiam, + + Reísque dona véniam. + + + Te summa, Deus, Trínitas, + + Colláudet omnis spíritus: + + Quos per Crucis mystérium + + Salvas, rege per sǽcula. Amen. + en: >- + Abroad the regal banners fly, + + Now shines the cross's mystery; + + Upon it Life did death endure, + + And yet by death did life procure. + + + Who, wounded with a direful spear, + + Did, purposely to wash us clear + + From stain of sin, pour out a flood + + Of precious water mixed with blood. + + + That which the prophet-king of old + + Hath in mysterious verse foretold, + + Is now accomplished, whilst we see + + God ruling nations from a tree. + + + O lovely and refulgent tree, + + Adorned with purpled majesty; + + Culled from a worthy stock, to bear + + Those limbs which sanctified were. + + + Blest tree, whose happy branches bore + + The wealth that did the world restore; + + The beam that did that body weigh + + Which raised up hell's expected prey. + + + O Cross, our one reliance, hail! + + Thou joy of Eastertide, avail + + To give fresh merit to the saint, + + And pardon to the penitent. + + + Blest Trinity, salvation's spring, + + May every soul thy praises sing; + + To those thou grantest conquest by + + The holy cross, rewards apply. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-hymn-proper-to-the-finding-of-the-holy-cross.yml b/src/data/propers/common/vespers-hymn-proper-to-the-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..c737efb --- /dev/null +++ b/src/data/propers/common/vespers-hymn-proper-to-the-finding-of-the-holy-cross.yml @@ -0,0 +1,133 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# live query, 2026-05-03 -- own proper hymn ("Vexílla Regis pródeunt," +# one of the most widely known Latin hymns for the Holy Cross). See +# lauds-capitulum-proper-to-the-finding-of-the-holy-cross.yml's header. +id: vespers-hymn-proper-to-the-finding-of-the-holy-cross +text: + la: >- + Vexílla Regis pródeunt: + + Fulget Crucis mystérium, + + Quo carne carnis Cónditor + + Suspénsus est patíbulo. + + + Quo vulnerátus ínsuper + + Mucróne diro lánceæ, + + Ut nos laváret crímine, + + Manávit unda et sánguine. + + + Impléta sunt quæ cóncinit + + David fidéli cármine, + + Dicens: In natiónibus + + Regnávit a ligno Deus. + + + Arbor decóra et fúlgida, + + Ornáta Regis púrpura, + + Elécta digno stípite + + Tam sancta membra tángere. + + + Beáta, cujus bráchiis + + Sæcli pepéndit prétium, + + Statéra facta córporis, + + Prædámque tulit tártari. + + + O Crux, ave, spes única, + + In hoc Pascháli gáudio + + Auge piis justítiam, + + Reísque dona véniam. + + + Te summa, Deus, Trínitas, + + Colláudet omnis spíritus: + + Quos per Crucis mystérium + + Salvas, rege per sǽcula. Amen. + en: >- + Abroad the regal banners fly, + + Now shines the cross's mystery; + + Upon it Life did death endure, + + And yet by death did life procure. + + + Who, wounded with a direful spear, + + Did, purposely to wash us clear + + From stain of sin, pour out a flood + + Of precious water mixed with blood. + + + That which the prophet-king of old + + Hath in mysterious verse foretold, + + Is now accomplished, whilst we see + + God ruling nations from a tree. + + + O lovely and refulgent tree, + + Adorned with purpled majesty; + + Culled from a worthy stock, to bear + + Those limbs which sanctified were. + + + Blest tree, whose happy branches bore + + The wealth that did the world restore; + + The beam that did that body weigh + + Which raised up hell's expected prey. + + + O Cross, our one reliance, hail! + + Thou joy of Eastertide, avail + + To give fresh merit to the saint, + + And pardon to the penitent. + + + Blest Trinity, salvation's spring, + + May every soul thy praises sing; + + To those thou grantest conquest by + + The holy cross, rewards apply. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-responsory-finding-of-the-holy-cross.yml b/src/data/propers/common/vespers-responsory-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..7e5b0da --- /dev/null +++ b/src/data/propers/common/vespers-responsory-finding-of-the-holy-cross.yml @@ -0,0 +1,22 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# live query, 2026-05-03 -- own proper responsory. See lauds-capitulum- +# finding-of-the-holy-cross.yml's header. +id: vespers-responsory-finding-of-the-holy-cross +text: + la: | + R.br. Adorámus te, Christe, et benedícimus tibi: * Allelúja, allelúja. + ℟. Adorámus te, Christe, et benedícimus tibi: * Allelúja, allelúja. + ℣. Quia per Crucem tuam redemísti mundum. + ℟. Allelúja, allelúja. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Adorámus te, Christe, et benedícimus tibi: * Allelúja, allelúja. + en: | + R.br. We adore thee, O Christ, and we bless thee. * Alleluia, alleluia. + ℟. We adore thee, O Christ, and we bless thee. * Alleluia, alleluia. + ℣. Because that through thy cross thou hast redeemed the world. + ℟. Alleluia, alleluia. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. We adore thee, O Christ, and we bless thee. * Alleluia, alleluia. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-responsory-proper-to-the-finding-of-the-holy-cross.yml b/src/data/propers/common/vespers-responsory-proper-to-the-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..43f0a96 --- /dev/null +++ b/src/data/propers/common/vespers-responsory-proper-to-the-finding-of-the-holy-cross.yml @@ -0,0 +1,22 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# live query, 2026-05-03 -- own proper responsory. See lauds-capitulum- +# proper-to-the-finding-of-the-holy-cross.yml's header. +id: vespers-responsory-proper-to-the-finding-of-the-holy-cross +text: + la: | + R.br. Adorámus te, Christe, et benedícimus tibi: * Allelúja, allelúja. + ℟. Adorámus te, Christe, et benedícimus tibi: * Allelúja, allelúja. + ℣. Quia per Crucem tuam redemísti mundum. + ℟. Allelúja, allelúja. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Adorámus te, Christe, et benedícimus tibi: * Allelúja, allelúja. + en: | + R.br. We adore thee, O Christ, and we bless thee. * Alleluia, alleluia. + ℟. We adore thee, O Christ, and we bless thee. * Alleluia, alleluia. + ℣. Because that through thy cross thou hast redeemed the world. + ℟. Alleluia, alleluia. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. We adore thee, O Christ, and we bless thee. * Alleluia, alleluia. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-versicle-finding-of-the-holy-cross.yml b/src/data/propers/common/vespers-versicle-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..3c39112 --- /dev/null +++ b/src/data/propers/common/vespers-versicle-finding-of-the-holy-cross.yml @@ -0,0 +1,16 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# live query, 2026-05-03 -- own proper versicle, cross-referencing +# Lauds' own responsory text (a real "double responsory" structure for +# this major feast). See lauds-capitulum-finding-of-the-holy-cross.yml's +# header. +id: vespers-versicle-finding-of-the-holy-cross +text: + la: | + ℣. Hoc signum Crucis erit in cælo. Allelúja. + ℟. Cum Dóminus ad judicándum vénerit. Allelúja. + en: | + ℣. This sign of the Cross shall be in heaven. Alleluia. + ℟. When the Lord cometh to judgment. Alleluia. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-versicle-proper-to-the-finding-of-the-holy-cross.yml b/src/data/propers/common/vespers-versicle-proper-to-the-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..4baa587 --- /dev/null +++ b/src/data/propers/common/vespers-versicle-proper-to-the-finding-of-the-holy-cross.yml @@ -0,0 +1,16 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers +# live query, 2026-05-03 -- own proper versicle, cross-referencing +# Lauds' own responsory text (a real "double responsory" structure for +# this major feast). See lauds-capitulum-proper-to-the-finding-of-the-holy-cross.yml's +# header. +id: vespers-versicle-proper-to-the-finding-of-the-holy-cross +text: + la: | + ℣. Hoc signum Crucis erit in cælo. Allelúja. + ℟. Cum Dóminus ad judicándum vénerit. Allelúja. + en: | + ℣. This sign of the Cross shall be in heaven. Alleluia. + ℟. When the Lord cometh to judgment. Alleluia. +status: + la: verified + en: verified diff --git a/tests/hours/lauds.test.ts b/tests/hours/lauds.test.ts index 2f29f4c..cbe8fcf 100644 --- a/tests/hours/lauds.test.ts +++ b/tests/hours/lauds.test.ts @@ -362,6 +362,23 @@ describe('resolveOrdo("lauds", ...)', () => { expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('O gloriósa Dómina'); }); + it("resolves the Finding and Exaltation of the Holy Cross's own proper chapter/hymn (shared content, two ids)", () => { + // Live-verified against Divinum Officium (Monastic Tridentinum + // 1617): Finding, 2027-05-03 (2026 collides with a privileged + // Sunday); Exaltation, 2026-09-14 (its own real day). See lauds- + // capitulum-finding-of-the-holy-cross.yml's and -proper-to-the- + // finding-of-the-holy-cross.yml's headers. + const finding = resolveOrdo('lauds', '2027-05-03'); + const findingChapter = finding.parts.find((p) => p.kind === 'chapter'); + expect(findingChapter?.kind === 'chapter' ? findingChapter.text.citation?.en : undefined).toBe('Phil 2:5-7'); + const findingHymn = finding.parts.find((p) => p.kind === 'hymn'); + expect(findingHymn?.kind === 'hymn' ? findingHymn.text.text.la : undefined).toContain('Lustris sex qui jam peráctis'); + + const exaltation = resolveOrdo('lauds', '2026-09-14'); + const exaltationHymn = exaltation.parts.find((p) => p.kind === 'hymn'); + expect(exaltationHymn?.kind === 'hymn' ? exaltationHymn.text.text.la : undefined).toContain('Lustris sex qui jam peráctis'); + }); + 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 593c4d0..b35fe95 100644 --- a/tests/hours/vespers.test.ts +++ b/tests/hours/vespers.test.ts @@ -374,6 +374,15 @@ describe('resolveOrdo("vespers", ...)', () => { expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Ave maris stella'); }); + it("resolves the Finding of the Holy Cross's own proper Vespers hymn ('Vexilla Regis')", () => { + // Live-verified against Divinum Officium (Monastic Tridentinum + // 1617), 2027-05-03 (Duplex II. classis, keeps own Second Vespers). + // See lauds-capitulum-finding-of-the-holy-cross.yml's header. + const ordo = resolveOrdo('vespers', '2027-05-03'); + const hymn = ordo.parts.find((p) => p.kind === 'hymn'); + expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Vexílla Regis pródeunt'); + }); + it("renders Passiontide's seasonal office, with the Gloria Patri omitted from the responsory", () => { // 2026-03-30 is Holy Monday (Passion Sunday 2026-03-22 through Holy // Saturday 2026-04-04) -- deliberately not 03-25, the Annunciation's