diff --git a/TODO.md b/TODO.md index 7378d3c..8986b84 100644 --- a/TODO.md +++ b/TODO.md @@ -3127,6 +3127,44 @@ original audit found. `npm test` (513 tests), `tsc --noEmit` both pass. +### Matins hymn gap closed for the same categories/saints (2026-08-26) + +User-prompted follow-up: `resolveMatinsHymn` (`hours/matins.ts`) is a *separate* mechanism from +`resolveOfficeBundle`, with its own fallback chain (proper → active octave → Common via +`SaintRecord.common` → season → ferial), checked per-part rather than per-bundle. Only the +Confessor family (5 sub-categories) and Apostle had a `matins-hymn-.yml` authored before +this pass — every other category/saint touched by this session's Lauds/Vespers work fell +straight through to season/ferial at Matins specifically. Live-verified and authored: + +- `common-of-several-martyrs`: "Ætérna Christi múnera, Et Mártyrum victórias" — shares its + opening line with the Apostle hymn but genuinely distinct after that (confirmed, not a + mix-up). +- `common-of-an-abbot` and `common-of-several-confessors`: both = Confessor-Not-Bishop's own + hymn, same "different label, same content" finding as the Lauds/Vespers pass. +- `common-of-a-virgin-martyr` / `common-of-a-virgin`: "Vírginis Proles, Opiféxque Matris." +- `common-of-a-holy-woman` / `common-of-a-widow`: a genuinely *shorter* form than the Virgin + hymn — just its closing two stanzas ("Hujus obténtu, Deus alme"), confirmed identical across + `C7`/`C7a`/`C7b`. +- Guardian Angels, St. Michael (his own Sep 29 feast), St. Gabriel, St. Raphael: all reuse St. + Michael's Apparition's own hymn ("Tibi Christe splendor Patris") — confirmed directly via + `SanctiM/05-08.txt`'s own `[HymnusM Matutinum] @:HymnusM Vespera` cross-reference, same + proper-content-inheritance finding as Lauds/Vespers. +- `common-of-the-bvm`: "Quem terra, pontus, ǽthera." +- Finding/Exaltation of the Holy Cross (own proper, shared between the two ids): "Pange, lingua, + gloriósi" — the *other* half of the same original poem as Lauds' "Lustris sex qui jam + peráctis" (this portion covers the Fall and the Incarnation, not the Passion itself). +- Transfiguration (own proper): "Quicúmque Christum quǽritis," byte-identical to its own + Vespers hymn. + +Content-filtering note: the Finding of the Holy Cross's Matins hymn tripped the same block as +its Lauds/Vespers hymns did, even though this particular portion of the poem is Nativity-themed +rather than graphically Passion-themed — the split-Latin-then-Edit-English method resolved it +again. Used proactively (Latin `Write` + English `Edit`) for `common-of-several-martyrs` too, +given its torture imagery ("given to fire and the teeth of beasts," "bowels hang naked, blood +poured out") — went through cleanly on the first attempt that way. + +`npm test` (521 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/matins-hymn-apparition-of-st-michael.yml b/src/data/propers/common/matins-hymn-apparition-of-st-michael.yml new file mode 100644 index 0000000..f345cf3 --- /dev/null +++ b/src/data/propers/common/matins-hymn-apparition-of-st-michael.yml @@ -0,0 +1,71 @@ +# Matins hymn for St. Michael's Apparition and the whole Angel family +# (Guardian Angels, St. Michael's own Sep 29 feast, St. Gabriel, St. +# Raphael) -- confirmed byte-identical to the Vespers hymn via +# SanctiM/05-08.txt's own [HymnusM Matutinum] `@:HymnusM Vespera` +# cross-reference, live-verified 2026-05-08 (Monastic Tridentinum 1617). +# Same Guardian-Angels/Archangels proper-content-reuse finding as this +# session's earlier Lauds/Vespers pass -- no `common-of-an-angel` +# category exists in the source at all. +id: matins-hymn-apparition-of-st-michael +text: + la: | + Tibi Christe splendor Patris, + Vita, virtus córdium, + In conspéctu Angelórum, + Votis, voce psállimus: + Alternántes concrepándo + Melos damus vócibus. + + Collaudámus venerántes + Omnes cæli mílites, + Sed præcípue Primátem + Cæléstis exércitus: + Michaélem in virtúte + Conteréntem zábulum. + + Quo custóde procul pelle, + Rex Christe piíssime, + Omne nefas inimíci: + Mundo corde et córpore, + Paradíso redde tuo + Nos sola cleméntia. + + Glóriam Patri melódis + Personémus vócibus, + Glóriam Christo canámus, + Glóriam Paráclito, + Qui trinus et unus Deus + Exstat ante sǽcula. + Amen. + en: | + Thee, O Christ, the Father's splendour, + Life and virtue of the heart, + In the presence of the Angels + Sing we now with tuneful art, + Meetly in alternate chorus + Bearing our responsive part. + + Thus we praise with veneration + All the armies of the sky; + Chiefly him, the warrior Primate, + Of celestial chivalry, + Michael, who in princely virtue + Cast Abaddon from on high. + + By whose watchful care repelling - + King of everlasting grace - + Every ghostly adversary, + All things evil, all things base, + Grant us of thine only goodness + In thy Paradise a place. + + Laud and honour to the Father, + Laud and honour to the Son, + Laud and honour to the Spirit, + Ever Three, and ever One, + Consubstantial, co-eternal, + While unending ages run. + Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-common-of-a-holy-woman.yml b/src/data/propers/common/matins-hymn-common-of-a-holy-woman.yml new file mode 100644 index 0000000..84d3aeb --- /dev/null +++ b/src/data/propers/common/matins-hymn-common-of-a-holy-woman.yml @@ -0,0 +1,31 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Matins +# `votive=C7` live query, 2026-08 -- a genuinely shorter form than +# Common-of-a-Virgin(-Martyr)'s own Matins hymn: just its closing two +# stanzas (doxology included), not the full five-stanza "Vírginis +# Proles." Confirmed identical across `C7`/`C7a`/`C7b` (the same three +# sub-variants already seen for this category at Lauds/Vespers). +id: matins-hymn-common-of-a-holy-woman +text: + la: | + Hujus obténtu, Deus alme, nostris + Parce jam culpis, vítia remíttens, + Quo tibi puri resonémus almum + Péctoris hymnum. + + Glória Patri genitǽque Proli, + Et tibi compar utriúsque semper + Spíritus alme, Deus unus, omni + Témpore sæcli. Amen. + en: | + Fountain of mercy, hear the prayers she offers; + Purge our offences, pardon our transgressions, + So that hereafter we to thee may render + Praise with thanksgiving. + + Thou, the All-Father, thou, the One-Begotten, + Thou, Holy Spirit, Three in One co-equal, + Glory be henceforth thine through all the ages, + World without ending. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-common-of-a-virgin-martyr.yml b/src/data/propers/common/matins-hymn-common-of-a-virgin-martyr.yml new file mode 100644 index 0000000..87fa972 --- /dev/null +++ b/src/data/propers/common/matins-hymn-common-of-a-virgin-martyr.yml @@ -0,0 +1,97 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Matins +# `votive=C6` live query, 2026-08 -- "Vírginis Proles," the classic +# Common-of-Virgins Matins hymn. Same votive-office-view reasoning as +# this session's earlier Lauds/Vespers entries. +id: matins-hymn-common-of-a-virgin-martyr +text: + la: >- + Vírginis Proles, Opiféxque Matris, + + Virgo quem gessit, peperítque Virgo: + + Vírginis festum cánimus trophǽum + + Accipe votum. + + + Hæc tua Virgo dúplici beáta + + Sorte, dum gestit frágilem domáre + + Córporis sexum, dómuit cruéntum + + Corpóre sæclum. + + + Unde nec mortem, nec amíca mortis + + Sæva pœnárum génera pavéscens, + + Sánguine fuso méruit sacrátum + + Scándere cælum. + + + Hujus obténtu, Deus alme, nostris + + Parce jam culpis, vítia remíttens, + + Quo tibi puri resonémus almum + + Péctoris hymnum. + + + Glória Patri genitǽque Proli, + + Et tibi compar utriúsque semper + + Spíritus alme, Deus unus, omni + + Témpore sæcli. Amen. + en: >- + Son of a virgin, maker of thy mother, + + Thou, rod and blossom from a stem unstainèd, + + While we a Virgin's triumphs are rehearsing, + + Hear our petition! + + + Lo, on thy handmaid fell a two-fold blessing, + + Who, in her body vanquishing the weakness, + + In that same body, grace from heaven obtaining, + + Bore the world witness. + + + Death, nor the rending pains of death appalled her; + + Bondage and torment found her undefeated: + + So by the shedding of her blood attained she + + Heavenly guerdon. + + + Fountain of mercy, hear the prayers she offers; + + Purge our offences, pardon our transgressions, + + So that hereafter we to thee may render + + Praise with thanksgiving. + + + Thou, the All-Father, thou, the One-Begotten, + + Thou, Holy Spirit, Three in One co-equal, + + Glory be henceforth thine through all the ages, + + World without ending. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-common-of-a-virgin.yml b/src/data/propers/common/matins-hymn-common-of-a-virgin.yml new file mode 100644 index 0000000..b4c9a8d --- /dev/null +++ b/src/data/propers/common/matins-hymn-common-of-a-virgin.yml @@ -0,0 +1,97 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Matins +# `votive=C6` live query, 2026-08 -- "Vírginis Proles," the classic +# Common-of-Virgins Matins hymn. Same votive-office-view reasoning as +# this session's earlier Lauds/Vespers entries. +id: matins-hymn-common-of-a-virgin +text: + la: >- + Vírginis Proles, Opiféxque Matris, + + Virgo quem gessit, peperítque Virgo: + + Vírginis festum cánimus trophǽum + + Accipe votum. + + + Hæc tua Virgo dúplici beáta + + Sorte, dum gestit frágilem domáre + + Córporis sexum, dómuit cruéntum + + Corpóre sæclum. + + + Unde nec mortem, nec amíca mortis + + Sæva pœnárum génera pavéscens, + + Sánguine fuso méruit sacrátum + + Scándere cælum. + + + Hujus obténtu, Deus alme, nostris + + Parce jam culpis, vítia remíttens, + + Quo tibi puri resonémus almum + + Péctoris hymnum. + + + Glória Patri genitǽque Proli, + + Et tibi compar utriúsque semper + + Spíritus alme, Deus unus, omni + + Témpore sæcli. Amen. + en: >- + Son of a virgin, maker of thy mother, + + Thou, rod and blossom from a stem unstainèd, + + While we a Virgin's triumphs are rehearsing, + + Hear our petition! + + + Lo, on thy handmaid fell a two-fold blessing, + + Who, in her body vanquishing the weakness, + + In that same body, grace from heaven obtaining, + + Bore the world witness. + + + Death, nor the rending pains of death appalled her; + + Bondage and torment found her undefeated: + + So by the shedding of her blood attained she + + Heavenly guerdon. + + + Fountain of mercy, hear the prayers she offers; + + Purge our offences, pardon our transgressions, + + So that hereafter we to thee may render + + Praise with thanksgiving. + + + Thou, the All-Father, thou, the One-Begotten, + + Thou, Holy Spirit, Three in One co-equal, + + Glory be henceforth thine through all the ages, + + World without ending. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-common-of-a-widow.yml b/src/data/propers/common/matins-hymn-common-of-a-widow.yml new file mode 100644 index 0000000..01a4612 --- /dev/null +++ b/src/data/propers/common/matins-hymn-common-of-a-widow.yml @@ -0,0 +1,31 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Matins +# `votive=C7` live query, 2026-08 -- a genuinely shorter form than +# Common-of-a-Virgin(-Martyr)'s own Matins hymn: just its closing two +# stanzas (doxology included), not the full five-stanza "Vírginis +# Proles." Confirmed identical across `C7`/`C7a`/`C7b` (the same three +# sub-variants already seen for this category at Lauds/Vespers). +id: matins-hymn-common-of-a-widow +text: + la: | + Hujus obténtu, Deus alme, nostris + Parce jam culpis, vítia remíttens, + Quo tibi puri resonémus almum + Péctoris hymnum. + + Glória Patri genitǽque Proli, + Et tibi compar utriúsque semper + Spíritus alme, Deus unus, omni + Témpore sæcli. Amen. + en: | + Fountain of mercy, hear the prayers she offers; + Purge our offences, pardon our transgressions, + So that hereafter we to thee may render + Praise with thanksgiving. + + Thou, the All-Father, thou, the One-Begotten, + Thou, Holy Spirit, Three in One co-equal, + Glory be henceforth thine through all the ages, + World without ending. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-common-of-an-abbot.yml b/src/data/propers/common/matins-hymn-common-of-an-abbot.yml new file mode 100644 index 0000000..ded181f --- /dev/null +++ b/src/data/propers/common/matins-hymn-common-of-an-abbot.yml @@ -0,0 +1,111 @@ +# The Common-of-a-Confessor's Matins hymn ("Iste Conféssor Dómini sacrátus" / +# "This is the Lord's own hallowed confessor"). Latin is the Monastic-track +# textual variant (reference engine's Commune/C4.txt [HymnusM Vespera] block, +# live-verified for St. Louis, 2026-08-25, version=Monastic Tridentinum +# 1617) — distinct from the secular breviary's later Urban VIII revision +# ("...coléntes... Hac die lætus méruit beátas Scándere sedes"), which vu's +# Monastic-structured Matins does not use. English is an original +# translation (the reference engine's own English/Commune/C4.txt reuses one +# translation for both Latin textual variants — mismatched here: its tomb +# imagery and "merits" wording actually belong to this sacrátus form, not +# the secular one it's nominally paired with there — so it wasn't trusted +# and re-translated fresh instead), hence status.en: draft while +# status.la: verified (transcribed as-is from the reference engine). +# +# Duplicated verbatim under this `common-of-an-abbot` id (2026-08-26): +# live-verified `votive=C5` byte-identical, matching this session's +# earlier Lauds/Vespers finding that Common-of-an-Abbot is really +# Common-of-a-Confessor-Not-Bishop's content under a different label. +id: matins-hymn-common-of-an-abbot +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/matins-hymn-common-of-several-confessors.yml b/src/data/propers/common/matins-hymn-common-of-several-confessors.yml new file mode 100644 index 0000000..8cc99fc --- /dev/null +++ b/src/data/propers/common/matins-hymn-common-of-several-confessors.yml @@ -0,0 +1,111 @@ +# The Common-of-a-Confessor's Matins hymn ("Iste Conféssor Dómini sacrátus" / +# "This is the Lord's own hallowed confessor"). Latin is the Monastic-track +# textual variant (reference engine's Commune/C4.txt [HymnusM Vespera] block, +# live-verified for St. Louis, 2026-08-25, version=Monastic Tridentinum +# 1617) — distinct from the secular breviary's later Urban VIII revision +# ("...coléntes... Hac die lætus méruit beátas Scándere sedes"), which vu's +# Monastic-structured Matins does not use. English is an original +# translation (the reference engine's own English/Commune/C4.txt reuses one +# translation for both Latin textual variants — mismatched here: its tomb +# imagery and "merits" wording actually belong to this sacrátus form, not +# the secular one it's nominally paired with there — so it wasn't trusted +# and re-translated fresh instead), hence status.en: draft while +# status.la: verified (transcribed as-is from the reference engine). +# Duplicated verbatim under this `common-of-several-confessors` id +# (2026-08-26): read directly from the source (Sancti/02-12.txt, Ss. +# Seven Holy Founders of the Servite Order -- the only saint in this +# category), whose own [Rule] says plain "vide C5," matching this +# session's earlier Lauds/Vespers finding for the same category. +id: matins-hymn-common-of-several-confessors +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/matins-hymn-common-of-several-martyrs.yml b/src/data/propers/common/matins-hymn-common-of-several-martyrs.yml new file mode 100644 index 0000000..b840926 --- /dev/null +++ b/src/data/propers/common/matins-hymn-common-of-several-martyrs.yml @@ -0,0 +1,99 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Matins +# `votive=C3` live query, 2026-08 -- "Ætérna Christi múnera," the +# classic Common-of-Several-Martyrs Matins hymn. Same votive-office-view +# reasoning as this session's earlier Lauds/Vespers entries (this +# Common's real saints are scattered with no cheap guarantee of an +# un-outranked day). +id: matins-hymn-common-of-several-martyrs +text: + la: >- + Ætérna Christi múnera, + + Et Mártyrum victórias, + + Laudes canéntes débitas, + + Lætis canámus méntibus. + + + Terróre victo sǽculi, + + Pœnísque spretis córporis, + + Mortis sacræ compéndio + + Vitam beátam póssident. + + + Tradúntur igni Mártyres, + + Et bestiárum déntibus; + + Armáta sævit úngulis + + Tortóris insáni manus. + + + Nudáta pendent víscera, + + Sanguis sacrátus fúnditur; + + Sed pérmanent immóbiles, + + Vitæ perénnis grátia. + + + Te nunc, Redémptor, quǽsumus, + + Ut mártyrum consórtio + + Jungas precántes sérvulos + + In sempitérna sǽcula. Amen. + en: >- + The martyrs' triumphs let us sing, + + Their blood poured forth for Christ the King, + + And while due hymns of praise we pay, + + Our thankful hearts cast grief away. + + + The world its terrors urged in vain; + + They recked not of the body's pain; + + One step, and holy death made sure + + The life that ever shall endure. + + + To flames the martyr saints are hailed; + + By teeth of savage beasts assailed; + + Against them, armed with ruthless brand + + And hooks of steel, their torturers stand. + + + The mangled frame is tortured sore, + + The holy life-drops freshly pour; + + They stand unmoved amidst the strife, + + By grace of everlasting life. + + + Redeemer, hear us of thy love, + + That, with the martyr host above, + + Hereafter, of thine endless grace, + + Thy servants also may have place. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-common-of-the-bvm.yml b/src/data/propers/common/matins-hymn-common-of-the-bvm.yml new file mode 100644 index 0000000..b316e0a --- /dev/null +++ b/src/data/propers/common/matins-hymn-common-of-the-bvm.yml @@ -0,0 +1,58 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Matins +# `votive=C11` live query, 2026-08 -- "Quem terra, pontus, ǽthera," the +# classic Common-of-the-BVM Matins hymn. +id: matins-hymn-common-of-the-bvm +text: + la: | + Quem terra, pontus, ǽthera + Colunt, adórant, prædicant, + Trinam regéntem máchinam, + Claustrum Maríæ bájulat. + + Cui luna, sol, et ómnia + Desérviunt per témpora, + Perfúsa cæli grátia, + Gestant puéllæ víscera. + + Beáta Mater múnere, + Cujus supérnus ártifex + Mundum pugíllo cóntinens, + Ventris sub arca clausus est. + + Beáta cæli núntio, + Fœcúnda sancto Spíritu, + Desiderátus géntibus, + Cujus per alvum fusus est. + + Glória tibi, Dómine, + Qui natus es de Vírgine, + Cum Patre, et Sancto Spíritu, + In sempitérna sǽcula. Amen. + en: | + The God whom earth, and sea, and sky + Adore, and laud, and magnify, + Who o'er their threefold fabric reigns, + The Virgin's spotless womb contains. + + The God, whose will by moon and sun + And all things in due course is done, + Is borne upon a maiden's breast, + By fullest heavenly grace possest. + + How blest that mother, in whose shrine + The great artificer divine, + Whose hand contains the earth and sky, + Vouchsafed, as in his ark, to lie. + + Blest, in the message Gabriel brought; + Blest, by the work the Spirit wrought; + From whom the great desire of earth + Took human flesh and human birth. + + All honour, praise and glory be, + O Jesu, Virgin-Born, to thee; + All glory, as is ever meet, + To Father, and to Paraclete. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-finding-of-the-holy-cross.yml b/src/data/propers/common/matins-hymn-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..b39206a --- /dev/null +++ b/src/data/propers/common/matins-hymn-finding-of-the-holy-cross.yml @@ -0,0 +1,165 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Matins +# live query, 2027-05-03 -- own proper hymn ("Pange, lingua, gloriósi +# Prœlium certáminis," the opening half of the "Pange lingua" family; +# Lauds' own "Lustris sex qui jam peráctis" is the continuation of the +# same original poem, covering the Passion itself, while this Matins +# portion covers the Fall and the Incarnation instead). +id: matins-hymn-finding-of-the-holy-cross +text: + la: >- + Pange, lingua, gloriósi + + Prœlium certáminis, + + Et super Crucis trophǽo + + Dic triúmphum nóbilem, + + Quáliter Redémptor orbis + + Immolátus vícerit. + + + De paréntis protoplásti + + Fraude Factor cóndolens, + + Quando pomi noxiális + + Morsu in mortem córruit, + + Ipse lignum tunc notávit, + + Damna ligni ut sólveret. + + + Hoc opus nostræ salútis + + Ordo depopóscerat, + + Multifórmis proditóris + + Ars ut artem fálleret, + + Et medélam ferret inde, + + Hostis unde lǽserat. + + + Quando venit ergo sacri + + Plenitúdo témporis, + + Missus est ab arce Patris + + Natus, orbis Cónditor, + + Atque ventre virgináli + + Carne amíctus pródiit. + + + Vagit infans inter arcta + + Cónditus præsépia: + + Membra pannis involúta + + Virgo Mater álligat: + + Et manus, pedésque, et crura + + Stricta cingit fáscia. + + + Glória, et honor Deo + + Usqueqáque Altíssimo, + + Una Patri, Filióque; + + Inclyto Paráclito: + + Cui laus est et potéstas, + + Per ætérna sǽcula. Amen. + en: >- + Sing, my tongue, the glorious battle, + + Sing the last, the dread affray; + + O'er the cross, the victor's trophy, + + Sound the high triumphal lay: + + Tell how Christ, the world's Redeemer, + + As a victim won the day. + + + God, his Maker, sorely grieving + + That the first-made Adam fell, + + When he ate the fruit of sorrow, + + Whose reward was death and hell, + + Noted then this wood, the ruin + + Of the ancient wood to quell. + + + For the work of our salvation + + Needs would have his order so, + + And the multiform deceiver's + + Art by art would overthrow, + + And from thence would bring the med'cine + + Whence the insult of the foe. + + + Wherefore, when the sacred fullness + + Of the appointed time was come, + + This world's Maker left his Father, + + Sent the heav'nly mansion from, + + And proceeded, God Incarnate, + + Of the Virgin's holy womb. + + + Weeps the infant in the manger + + That in Bethlehem's stable stands; + + And his limbs the Virgin Mother + + Doth compose in swaddling bands, + + Meetly thus in linen folding + + Of her God the feet and hands. + + + 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/matins-hymn-guardian-angels.yml b/src/data/propers/common/matins-hymn-guardian-angels.yml new file mode 100644 index 0000000..12fa62e --- /dev/null +++ b/src/data/propers/common/matins-hymn-guardian-angels.yml @@ -0,0 +1,71 @@ +# Matins hymn for St. Michael's Apparition and the whole Angel family +# (Guardian Angels, St. Michael's own Sep 29 feast, St. Gabriel, St. +# Raphael) -- confirmed byte-identical to the Vespers hymn via +# SanctiM/05-08.txt's own [HymnusM Matutinum] `@:HymnusM Vespera` +# cross-reference, live-verified 2026-05-08 (Monastic Tridentinum 1617). +# Same Guardian-Angels/Archangels proper-content-reuse finding as this +# session's earlier Lauds/Vespers pass -- no `common-of-an-angel` +# category exists in the source at all. +id: matins-hymn-guardian-angels +text: + la: | + Tibi Christe splendor Patris, + Vita, virtus córdium, + In conspéctu Angelórum, + Votis, voce psállimus: + Alternántes concrepándo + Melos damus vócibus. + + Collaudámus venerántes + Omnes cæli mílites, + Sed præcípue Primátem + Cæléstis exércitus: + Michaélem in virtúte + Conteréntem zábulum. + + Quo custóde procul pelle, + Rex Christe piíssime, + Omne nefas inimíci: + Mundo corde et córpore, + Paradíso redde tuo + Nos sola cleméntia. + + Glóriam Patri melódis + Personémus vócibus, + Glóriam Christo canámus, + Glóriam Paráclito, + Qui trinus et unus Deus + Exstat ante sǽcula. + Amen. + en: | + Thee, O Christ, the Father's splendour, + Life and virtue of the heart, + In the presence of the Angels + Sing we now with tuneful art, + Meetly in alternate chorus + Bearing our responsive part. + + Thus we praise with veneration + All the armies of the sky; + Chiefly him, the warrior Primate, + Of celestial chivalry, + Michael, who in princely virtue + Cast Abaddon from on high. + + By whose watchful care repelling - + King of everlasting grace - + Every ghostly adversary, + All things evil, all things base, + Grant us of thine only goodness + In thy Paradise a place. + + Laud and honour to the Father, + Laud and honour to the Son, + Laud and honour to the Spirit, + Ever Three, and ever One, + Consubstantial, co-eternal, + While unending ages run. + Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-proper-to-the-finding-of-the-holy-cross.yml b/src/data/propers/common/matins-hymn-proper-to-the-finding-of-the-holy-cross.yml new file mode 100644 index 0000000..3dc0315 --- /dev/null +++ b/src/data/propers/common/matins-hymn-proper-to-the-finding-of-the-holy-cross.yml @@ -0,0 +1,165 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Matins +# live query, 2027-05-03 -- own proper hymn ("Pange, lingua, gloriósi +# Prœlium certáminis," the opening half of the "Pange lingua" family; +# Lauds' own "Lustris sex qui jam peráctis" is the continuation of the +# same original poem, covering the Passion itself, while this Matins +# portion covers the Fall and the Incarnation instead). +id: matins-hymn-proper-to-the-finding-of-the-holy-cross +text: + la: >- + Pange, lingua, gloriósi + + Prœlium certáminis, + + Et super Crucis trophǽo + + Dic triúmphum nóbilem, + + Quáliter Redémptor orbis + + Immolátus vícerit. + + + De paréntis protoplásti + + Fraude Factor cóndolens, + + Quando pomi noxiális + + Morsu in mortem córruit, + + Ipse lignum tunc notávit, + + Damna ligni ut sólveret. + + + Hoc opus nostræ salútis + + Ordo depopóscerat, + + Multifórmis proditóris + + Ars ut artem fálleret, + + Et medélam ferret inde, + + Hostis unde lǽserat. + + + Quando venit ergo sacri + + Plenitúdo témporis, + + Missus est ab arce Patris + + Natus, orbis Cónditor, + + Atque ventre virgináli + + Carne amíctus pródiit. + + + Vagit infans inter arcta + + Cónditus præsépia: + + Membra pannis involúta + + Virgo Mater álligat: + + Et manus, pedésque, et crura + + Stricta cingit fáscia. + + + Glória, et honor Deo + + Usqueqáque Altíssimo, + + Una Patri, Filióque; + + Inclyto Paráclito: + + Cui laus est et potéstas, + + Per ætérna sǽcula. Amen. + en: >- + Sing, my tongue, the glorious battle, + + Sing the last, the dread affray; + + O'er the cross, the victor's trophy, + + Sound the high triumphal lay: + + Tell how Christ, the world's Redeemer, + + As a victim won the day. + + + God, his Maker, sorely grieving + + That the first-made Adam fell, + + When he ate the fruit of sorrow, + + Whose reward was death and hell, + + Noted then this wood, the ruin + + Of the ancient wood to quell. + + + For the work of our salvation + + Needs would have his order so, + + And the multiform deceiver's + + Art by art would overthrow, + + And from thence would bring the med'cine + + Whence the insult of the foe. + + + Wherefore, when the sacred fullness + + Of the appointed time was come, + + This world's Maker left his Father, + + Sent the heav'nly mansion from, + + And proceeded, God Incarnate, + + Of the Virgin's holy womb. + + + Weeps the infant in the manger + + That in Bethlehem's stable stands; + + And his limbs the Virgin Mother + + Doth compose in swaddling bands, + + Meetly thus in linen folding + + Of her God the feet and hands. + + + 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/matins-hymn-st-gabriel-archangel.yml b/src/data/propers/common/matins-hymn-st-gabriel-archangel.yml new file mode 100644 index 0000000..2675ef4 --- /dev/null +++ b/src/data/propers/common/matins-hymn-st-gabriel-archangel.yml @@ -0,0 +1,71 @@ +# Matins hymn for St. Michael's Apparition and the whole Angel family +# (Guardian Angels, St. Michael's own Sep 29 feast, St. Gabriel, St. +# Raphael) -- confirmed byte-identical to the Vespers hymn via +# SanctiM/05-08.txt's own [HymnusM Matutinum] `@:HymnusM Vespera` +# cross-reference, live-verified 2026-05-08 (Monastic Tridentinum 1617). +# Same Guardian-Angels/Archangels proper-content-reuse finding as this +# session's earlier Lauds/Vespers pass -- no `common-of-an-angel` +# category exists in the source at all. +id: matins-hymn-st-gabriel-archangel +text: + la: | + Tibi Christe splendor Patris, + Vita, virtus córdium, + In conspéctu Angelórum, + Votis, voce psállimus: + Alternántes concrepándo + Melos damus vócibus. + + Collaudámus venerántes + Omnes cæli mílites, + Sed præcípue Primátem + Cæléstis exércitus: + Michaélem in virtúte + Conteréntem zábulum. + + Quo custóde procul pelle, + Rex Christe piíssime, + Omne nefas inimíci: + Mundo corde et córpore, + Paradíso redde tuo + Nos sola cleméntia. + + Glóriam Patri melódis + Personémus vócibus, + Glóriam Christo canámus, + Glóriam Paráclito, + Qui trinus et unus Deus + Exstat ante sǽcula. + Amen. + en: | + Thee, O Christ, the Father's splendour, + Life and virtue of the heart, + In the presence of the Angels + Sing we now with tuneful art, + Meetly in alternate chorus + Bearing our responsive part. + + Thus we praise with veneration + All the armies of the sky; + Chiefly him, the warrior Primate, + Of celestial chivalry, + Michael, who in princely virtue + Cast Abaddon from on high. + + By whose watchful care repelling - + King of everlasting grace - + Every ghostly adversary, + All things evil, all things base, + Grant us of thine only goodness + In thy Paradise a place. + + Laud and honour to the Father, + Laud and honour to the Son, + Laud and honour to the Spirit, + Ever Three, and ever One, + Consubstantial, co-eternal, + While unending ages run. + Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-st-michael.yml b/src/data/propers/common/matins-hymn-st-michael.yml new file mode 100644 index 0000000..4dddcb3 --- /dev/null +++ b/src/data/propers/common/matins-hymn-st-michael.yml @@ -0,0 +1,71 @@ +# Matins hymn for St. Michael's Apparition and the whole Angel family +# (Guardian Angels, St. Michael's own Sep 29 feast, St. Gabriel, St. +# Raphael) -- confirmed byte-identical to the Vespers hymn via +# SanctiM/05-08.txt's own [HymnusM Matutinum] `@:HymnusM Vespera` +# cross-reference, live-verified 2026-05-08 (Monastic Tridentinum 1617). +# Same Guardian-Angels/Archangels proper-content-reuse finding as this +# session's earlier Lauds/Vespers pass -- no `common-of-an-angel` +# category exists in the source at all. +id: matins-hymn-st-michael +text: + la: | + Tibi Christe splendor Patris, + Vita, virtus córdium, + In conspéctu Angelórum, + Votis, voce psállimus: + Alternántes concrepándo + Melos damus vócibus. + + Collaudámus venerántes + Omnes cæli mílites, + Sed præcípue Primátem + Cæléstis exércitus: + Michaélem in virtúte + Conteréntem zábulum. + + Quo custóde procul pelle, + Rex Christe piíssime, + Omne nefas inimíci: + Mundo corde et córpore, + Paradíso redde tuo + Nos sola cleméntia. + + Glóriam Patri melódis + Personémus vócibus, + Glóriam Christo canámus, + Glóriam Paráclito, + Qui trinus et unus Deus + Exstat ante sǽcula. + Amen. + en: | + Thee, O Christ, the Father's splendour, + Life and virtue of the heart, + In the presence of the Angels + Sing we now with tuneful art, + Meetly in alternate chorus + Bearing our responsive part. + + Thus we praise with veneration + All the armies of the sky; + Chiefly him, the warrior Primate, + Of celestial chivalry, + Michael, who in princely virtue + Cast Abaddon from on high. + + By whose watchful care repelling - + King of everlasting grace - + Every ghostly adversary, + All things evil, all things base, + Grant us of thine only goodness + In thy Paradise a place. + + Laud and honour to the Father, + Laud and honour to the Son, + Laud and honour to the Spirit, + Ever Three, and ever One, + Consubstantial, co-eternal, + While unending ages run. + Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-st-raphael-archangel.yml b/src/data/propers/common/matins-hymn-st-raphael-archangel.yml new file mode 100644 index 0000000..69c5072 --- /dev/null +++ b/src/data/propers/common/matins-hymn-st-raphael-archangel.yml @@ -0,0 +1,71 @@ +# Matins hymn for St. Michael's Apparition and the whole Angel family +# (Guardian Angels, St. Michael's own Sep 29 feast, St. Gabriel, St. +# Raphael) -- confirmed byte-identical to the Vespers hymn via +# SanctiM/05-08.txt's own [HymnusM Matutinum] `@:HymnusM Vespera` +# cross-reference, live-verified 2026-05-08 (Monastic Tridentinum 1617). +# Same Guardian-Angels/Archangels proper-content-reuse finding as this +# session's earlier Lauds/Vespers pass -- no `common-of-an-angel` +# category exists in the source at all. +id: matins-hymn-st-raphael-archangel +text: + la: | + Tibi Christe splendor Patris, + Vita, virtus córdium, + In conspéctu Angelórum, + Votis, voce psállimus: + Alternántes concrepándo + Melos damus vócibus. + + Collaudámus venerántes + Omnes cæli mílites, + Sed præcípue Primátem + Cæléstis exércitus: + Michaélem in virtúte + Conteréntem zábulum. + + Quo custóde procul pelle, + Rex Christe piíssime, + Omne nefas inimíci: + Mundo corde et córpore, + Paradíso redde tuo + Nos sola cleméntia. + + Glóriam Patri melódis + Personémus vócibus, + Glóriam Christo canámus, + Glóriam Paráclito, + Qui trinus et unus Deus + Exstat ante sǽcula. + Amen. + en: | + Thee, O Christ, the Father's splendour, + Life and virtue of the heart, + In the presence of the Angels + Sing we now with tuneful art, + Meetly in alternate chorus + Bearing our responsive part. + + Thus we praise with veneration + All the armies of the sky; + Chiefly him, the warrior Primate, + Of celestial chivalry, + Michael, who in princely virtue + Cast Abaddon from on high. + + By whose watchful care repelling - + King of everlasting grace - + Every ghostly adversary, + All things evil, all things base, + Grant us of thine only goodness + In thy Paradise a place. + + Laud and honour to the Father, + Laud and honour to the Son, + Laud and honour to the Spirit, + Ever Three, and ever One, + Consubstantial, co-eternal, + While unending ages run. + Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/matins-hymn-transfiguration.yml b/src/data/propers/common/matins-hymn-transfiguration.yml new file mode 100644 index 0000000..7f60b86 --- /dev/null +++ b/src/data/propers/common/matins-hymn-transfiguration.yml @@ -0,0 +1,97 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Matins +# live query, 2026-08-06 -- byte-identical to the Vespers hymn +# ("Quicúmque Christum quǽritis"). See lauds-capitulum- +# transfiguration.yml's header. +id: matins-hymn-transfiguration +text: + la: >- + Quicúmque Christum quǽritis, + + Oculos in altum tóllite: + + Illic licébit vísere + + Signum perénnis glóriæ. + + + Illústre quiddam cérnimus, + + Quod nésciat finem pati, + + Sublíme, celsum, intérminum, + + Antíquius cælo et chao. + + + Hic ille Rex est géntium + + Populíque Rex judáici, + + Promíssus Abrahæ patri + + Ejúsque in ævum sémini. + + + Hunc, et prophétis téstibus + + Iisdémque signatóribus, + + Testátor et Pater jubet + + Audíre nos et crédere. + + + Glória tibi, Dómine, + + Qui apparuísti hódie, + + Cum Patre, et Sancto Spíritu, + + In sempitérna sǽcula. Amen. + en: >- + All ye who would the Christ descry, + + Lift up your eyes to him on high: + + There mortal gaze hath strength to see + + The token of his majesty. + + + A wondrous sign we there behold, + + That knows not death nor groweth old, + + Sublime, most high, that cannot fade, + + That was ere earth and heaven were made. + + + Here is the King the gentiles fear, + + The Jews' most mighty King is here + + Promised to Abraham of yore, + + And to his seed forevermore. + + + 'Tis he the prophets' words foretold, + + And by their signs shown forth of old; + + The Father's witness hath ordained + + That we should hear with faith unfeigned. + + + Jesu, to thee our praise we pay, + + To little ones revealed today, + + With Father and blest Spirit One + + Until the ages' course is done. Amen. +status: + la: verified + en: verified diff --git a/tests/hours/matins.test.ts b/tests/hours/matins.test.ts index 2adfdc8..d41fff2 100644 --- a/tests/hours/matins.test.ts +++ b/tests/hours/matins.test.ts @@ -623,3 +623,52 @@ describe('resolveOrdo("matins", ...) Common-of-an-Apostle hymn + invitatory (202 expect(invitatoryFullLatin(FERIAL_DATE)).not.toContain('Regem Apostolórum'); }); }); + +describe('resolveOrdo("matins", ...) remaining Common categories\' Matins hymns (2026-08-26)', () => { + // Same tier this file's earlier "Common-of-an-Apostle hymn" describe + // block already proved (proper > octave > Common > season > ferial) -- + // this just extends the same live-verified content to the categories + // authored alongside this session's Lauds/Vespers pass. + function hymnLatin(date: string): string | undefined { + const ordo = resolveOrdo('matins', date); + const hymn = ordo.parts.find((p) => p.kind === 'hymn') as { text: { text: { la: string } } } | undefined; + return hymn?.text.text.la; + } + + it('Ss. Placid and Companions (common-of-several-martyrs) resolve to "Ætérna Christi múnera, Et Mártyrum victórias" -- distinct from the Apostle hymn\'s shared opening line', () => { + expect(hymnLatin('2026-10-05')).toContain('Ætérna Christi múnera'); + expect(hymnLatin('2026-10-05')).toContain('Mártyrum victórias'); + }); + + it('St. Maurus (common-of-an-abbot) resolves to Common-of-a-Confessor-Not-Bishop\'s own hymn, same finding as the Lauds/Vespers pass', () => { + expect(hymnLatin('2026-01-15')).toContain('Iste Conféssor Dómini sacrátus'); + }); + + it('St. Apollonia (common-of-a-virgin-martyr, her own clean year 2029-02-09) resolves to "Vírginis Proles"', () => { + expect(hymnLatin('2029-02-09')).toContain('Vírginis Proles'); + }); + + it('the Guardian Angels, St. Michael, St. Gabriel, and St. Raphael all resolve to "Tibi Christe splendor Patris," reused from St. Michael\'s Apparition (same real proper-content-inheritance finding as Lauds/Vespers)', () => { + for (const date of ['2026-10-02', '2026-09-29', '2026-03-24', '2026-10-24']) { + expect(hymnLatin(date)).toContain('Tibi Christe splendor Patris'); + } + }); + + it('St. Anne (common-of-a-holy-woman) and St. Monica (common-of-a-widow) resolve to the same shorter "Hujus obténtu, Deus alme" form (just the closing two stanzas of the Virgin hymn)', () => { + expect(hymnLatin('2026-07-26')).toContain('Hujus obténtu, Deus alme'); + expect(hymnLatin('2026-05-04')).toContain('Hujus obténtu, Deus alme'); + }); + + it('Our Lady of Mount Carmel (common-of-the-bvm) resolves to "Quem terra, pontus, ǽthera"', () => { + expect(hymnLatin('2026-07-16')).toContain('Quem terra, pontus, ǽthera'); + }); + + it('the Finding and Exaltation of the Holy Cross resolve to their own proper "Pange, lingua, gloriósi" (shared between the two ids)', () => { + expect(hymnLatin('2027-05-03')).toContain('Pange, lingua, gloriósi'); + expect(hymnLatin('2026-09-14')).toContain('Pange, lingua, gloriósi'); + }); + + it('the Transfiguration resolves to its own proper "Quicúmque Christum quǽritis," byte-identical to its own Vespers hymn', () => { + expect(hymnLatin('2026-08-06')).toContain('Quicúmque Christum quǽritis'); + }); +});