From 0e1a1fe08e54b717a7a5c67e34a75ba886a01c3d Mon Sep 17 00:00:00 2001 From: Will Estes Date: Wed, 26 Aug 2026 08:24:01 -0400 Subject: [PATCH] Author Common-of-a-Holy-Woman and Common-of-a-Widow Lauds/Vespers bundles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both genuinely distinct from Virgin(-Martyr) -- different chapter Prov 31:10-11 "Mulíerem fortem," different hymn "Fortem viríli péctore" -- but share that category's exact responsory pattern and versicle byte-for-byte in both hours. Live-verified via St. Anne's own real day (Jul 26). St. Monica's real day (May 4) confirms common-of-a-widow shares the identical content with common-of-a-holy-woman, so the same 7 files were duplicated under that id too -- first content authored for either category at all. Proof: St. Anne's and St. Monica's own days for Lauds, St. Margaret of Scotland's real First-Vespers anticipation (Jun 9 -> 10) for Vespers. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_014axryJBrRswYh2niA7WCUc --- TODO.md | 17 ++++ ...lauds-capitulum-common-of-a-holy-woman.yml | 25 +++++ .../lauds-capitulum-common-of-a-widow.yml | 25 +++++ .../lauds-hymn-common-of-a-holy-woman.yml | 97 +++++++++++++++++++ .../common/lauds-hymn-common-of-a-widow.yml | 97 +++++++++++++++++++ ...auds-responsory-common-of-a-holy-woman.yml | 23 +++++ .../lauds-responsory-common-of-a-widow.yml | 23 +++++ .../lauds-versicle-common-of-a-holy-woman.yml | 15 +++ .../lauds-versicle-common-of-a-widow.yml | 15 +++ .../vespers-hymn-common-of-a-holy-woman.yml | 97 +++++++++++++++++++ .../common/vespers-hymn-common-of-a-widow.yml | 97 +++++++++++++++++++ ...pers-responsory-common-of-a-holy-woman.yml | 23 +++++ .../vespers-responsory-common-of-a-widow.yml | 23 +++++ ...espers-versicle-common-of-a-holy-woman.yml | 14 +++ .../vespers-versicle-common-of-a-widow.yml | 14 +++ tests/hours/lauds.test.ts | 14 +++ tests/hours/vespers.test.ts | 12 +++ 17 files changed, 631 insertions(+) create mode 100644 src/data/propers/common/lauds-capitulum-common-of-a-holy-woman.yml create mode 100644 src/data/propers/common/lauds-capitulum-common-of-a-widow.yml create mode 100644 src/data/propers/common/lauds-hymn-common-of-a-holy-woman.yml create mode 100644 src/data/propers/common/lauds-hymn-common-of-a-widow.yml create mode 100644 src/data/propers/common/lauds-responsory-common-of-a-holy-woman.yml create mode 100644 src/data/propers/common/lauds-responsory-common-of-a-widow.yml create mode 100644 src/data/propers/common/lauds-versicle-common-of-a-holy-woman.yml create mode 100644 src/data/propers/common/lauds-versicle-common-of-a-widow.yml create mode 100644 src/data/propers/common/vespers-hymn-common-of-a-holy-woman.yml create mode 100644 src/data/propers/common/vespers-hymn-common-of-a-widow.yml create mode 100644 src/data/propers/common/vespers-responsory-common-of-a-holy-woman.yml create mode 100644 src/data/propers/common/vespers-responsory-common-of-a-widow.yml create mode 100644 src/data/propers/common/vespers-versicle-common-of-a-holy-woman.yml create mode 100644 src/data/propers/common/vespers-versicle-common-of-a-widow.yml diff --git a/TODO.md b/TODO.md index 505e231..aae6ea7 100644 --- a/TODO.md +++ b/TODO.md @@ -2984,6 +2984,23 @@ Vespers) for Apostle. (Several-Confessors — 1 saint, Ss. Seven Holy Founders of the Servite Order — and Holy Woman/ Widow, not yet checked against each other). +### Common-of-a-Holy-Woman and Common-of-a-Widow Lauds/Vespers bundles authored (2026-08-26) + +Both categories genuinely distinct from Virgin(-Martyr) (different chapter Prov 31:10-11 +"Mulíerem fortem," different hymn "Fortem viríli péctore") but share that category's exact +responsory pattern and versicle byte-for-byte in both hours — live-verified via St. Anne's own +real day (Jul 26). Also live-verified St. Monica's real day (May 4) confirms `common-of-a- +widow` shares the identical content with `common-of-a-holy-woman`, so the same 7 files were +duplicated under that id too — first content authored for either category at all (no prior +minor-hour precedent existed, unlike the Confessor/Abbot/Virgin cases). Proof: St. Anne's and +St. Monica's own days for Lauds, St. Margaret of Scotland's real First-Vespers anticipation +(Jun 9 → 10) for Vespers. + +`npm test` (494 tests), `tsc --noEmit` both pass. **Still open**: 1 Common category remains — +Several-Confessors (Ss. Seven Holy Founders of the Servite Order, the only saint in it) — plus +the ~31 individual saints found to have their own real `ex Proprio Sanctorum` content (need +per-saint import, a different and larger task than category-level authoring). + ## 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-holy-woman.yml b/src/data/propers/common/lauds-capitulum-common-of-a-holy-woman.yml new file mode 100644 index 0000000..2f1519d --- /dev/null +++ b/src/data/propers/common/lauds-capitulum-common-of-a-holy-woman.yml @@ -0,0 +1,25 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds, +# St. Anne's own real day (2026-07-26, clean/un-outranked) -- genuinely +# distinct from Common-of-a-Virgin(-Martyr): different chapter and hymn, +# though the responsory pattern and versicle are byte-identical to that +# category's own (see lauds-responsory-common-of-a-holy-woman.yml and +# lauds-versicle-common-of-a-holy-woman.yml). Same chapter reused for +# Vespers -- no separate vespers-capitulum- file authored, per +# vespers.ts's vespersCapitulumForOverride fallback. +# +# Also live-verified (St. Monica, May 4) that `common-of-a-widow`'s real +# content is identical to this -- duplicated verbatim under that id too, +# same no-alias-mechanism reasoning as `common-of-a-confessor`'s own +# header. `minorHoursCommon` for both categories' saints already points +# to `common-of-a-virgin` (a separate, established choice for the minor +# hours specifically, not touched here). +id: lauds-capitulum-common-of-a-holy-woman +text: + la: "Mulíerem fortem quis invéniet? Procul et de últimis fínibus prétium ejus. Confídit in ea cor viri sui, et spóliis non indigébit." + en: "Who shall find a valiant woman? Far and from the uttermost coasts is the price of her. The heart of her husband trusteth in her, and he shall have no need of spoils." +citation: + la: "Prov 31:10-11" + en: "Prov 31:10-11" +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-capitulum-common-of-a-widow.yml b/src/data/propers/common/lauds-capitulum-common-of-a-widow.yml new file mode 100644 index 0000000..5234439 --- /dev/null +++ b/src/data/propers/common/lauds-capitulum-common-of-a-widow.yml @@ -0,0 +1,25 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds, +# St. Anne's own real day (2026-07-26, clean/un-outranked) -- genuinely +# distinct from Common-of-a-Virgin(-Martyr): different chapter and hymn, +# though the responsory pattern and versicle are byte-identical to that +# category's own (see lauds-responsory-common-of-a-widow.yml and +# lauds-versicle-common-of-a-widow.yml). Same chapter reused for +# Vespers -- no separate vespers-capitulum- file authored, per +# vespers.ts's vespersCapitulumForOverride fallback. +# +# Also live-verified (St. Monica, May 4) that `common-of-a-widow`'s real +# content is identical to this -- duplicated verbatim under that id too, +# same no-alias-mechanism reasoning as `common-of-a-confessor`'s own +# header. `minorHoursCommon` for both categories' saints already points +# to `common-of-a-virgin` (a separate, established choice for the minor +# hours specifically, not touched here). +id: lauds-capitulum-common-of-a-widow +text: + la: "Mulíerem fortem quis invéniet? Procul et de últimis fínibus prétium ejus. Confídit in ea cor viri sui, et spóliis non indigébit." + en: "Who shall find a valiant woman? Far and from the uttermost coasts is the price of her. The heart of her husband trusteth in her, and he shall have no need of spoils." +citation: + la: "Prov 31:10-11" + en: "Prov 31:10-11" +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-hymn-common-of-a-holy-woman.yml b/src/data/propers/common/lauds-hymn-common-of-a-holy-woman.yml new file mode 100644 index 0000000..9d65960 --- /dev/null +++ b/src/data/propers/common/lauds-hymn-common-of-a-holy-woman.yml @@ -0,0 +1,97 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds, +# St. Anne's own real day (2026-07-26) -- see lauds-capitulum-common-of- +# a-holy-woman.yml's header. "Fortem viríli péctore" -- the classic +# Common-of-a-Holy-Woman hymn, same text both hours here. +id: lauds-hymn-common-of-a-holy-woman +text: + la: >- + Fortem viríli péctore + + Laudémus omnes féminam, + + Quæ sanctitátis glória + + Ubíque fulget ínclita. + + + Hæc Christi amóre sáucia, + + Dum mundi amórem nóxium + + Horréscit, ad cæléstia + + Iter perégit árduum. + + + Carnem domans jejúniis, + + Dulcíque mentem pábulo + + Oratiónis nútriens, + + Cæli potítur gáudiis. + + + Rex Christe, virtus fórtium, + + Qui magna solus éfficis, + + Hujus precátu, quǽsumus, + + Audi benígnus súpplices. + + + Deo Patri sit glória, + + Ejúsque soli Fílio, + + Cum Spíritu Paráclito, + + Nunc, et per omne sǽculum. Amen. + en: >- + High let us all our voices raise + + In that heroic woman's praise + + Whose name, with saintly glory bright, + + Shines in the starry realms of light. + + + Filled with a pure celestial glow, + + She spurned all love of things below; + + And heedless here on earth to stay, + + Climbed to the skies her toilsome way. + + + With fasts her body she subdued, + + But filled her soul with prayer's sweet food: + + In other worlds she tastes the bliss + + For which she left the joys of this. + + + O Christ, the strength of all the strong; + + To whom our holiest deeds belong! + + Through her prevailing prayers on high, + + In mercy hear thy people's cry! + + + To God the Father, with the Son, + + And Holy Spirit, Three in One, + + Be glory while the ages flow, + + From all above, and all below. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-hymn-common-of-a-widow.yml b/src/data/propers/common/lauds-hymn-common-of-a-widow.yml new file mode 100644 index 0000000..0a6f94a --- /dev/null +++ b/src/data/propers/common/lauds-hymn-common-of-a-widow.yml @@ -0,0 +1,97 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds, +# St. Anne's own real day (2026-07-26) -- see lauds-capitulum-common-of- +# a-holy-woman.yml's header. "Fortem viríli péctore" -- the classic +# Common-of-a-Holy-Woman hymn, same text both hours here. +id: lauds-hymn-common-of-a-widow +text: + la: >- + Fortem viríli péctore + + Laudémus omnes féminam, + + Quæ sanctitátis glória + + Ubíque fulget ínclita. + + + Hæc Christi amóre sáucia, + + Dum mundi amórem nóxium + + Horréscit, ad cæléstia + + Iter perégit árduum. + + + Carnem domans jejúniis, + + Dulcíque mentem pábulo + + Oratiónis nútriens, + + Cæli potítur gáudiis. + + + Rex Christe, virtus fórtium, + + Qui magna solus éfficis, + + Hujus precátu, quǽsumus, + + Audi benígnus súpplices. + + + Deo Patri sit glória, + + Ejúsque soli Fílio, + + Cum Spíritu Paráclito, + + Nunc, et per omne sǽculum. Amen. + en: >- + High let us all our voices raise + + In that heroic woman's praise + + Whose name, with saintly glory bright, + + Shines in the starry realms of light. + + + Filled with a pure celestial glow, + + She spurned all love of things below; + + And heedless here on earth to stay, + + Climbed to the skies her toilsome way. + + + With fasts her body she subdued, + + But filled her soul with prayer's sweet food: + + In other worlds she tastes the bliss + + For which she left the joys of this. + + + O Christ, the strength of all the strong; + + To whom our holiest deeds belong! + + Through her prevailing prayers on high, + + In mercy hear thy people's cry! + + + To God the Father, with the Son, + + And Holy Spirit, Three in One, + + Be glory while the ages flow, + + From all above, and all below. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-responsory-common-of-a-holy-woman.yml b/src/data/propers/common/lauds-responsory-common-of-a-holy-woman.yml new file mode 100644 index 0000000..077d532 --- /dev/null +++ b/src/data/propers/common/lauds-responsory-common-of-a-holy-woman.yml @@ -0,0 +1,23 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds, +# St. Anne's own real day (2026-07-26) -- byte-identical to Common-of-a- +# Virgin(-Martyr)'s own Lauds responsory, see lauds-capitulum-common-of- +# a-holy-woman.yml's header. +id: lauds-responsory-common-of-a-holy-woman +text: + la: | + R.br. Spécie tua * Et pulchritúdine tua. + ℟. Spécie tua * Et pulchritúdine tua. + ℣. Inténde, próspere procéde, et regna. + ℟. Et pulchritúdine tua. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Spécie tua * Et pulchritúdine tua. + en: | + R.br. In thy comeliness * and in thy beauty. + ℟. In thy comeliness * and in thy beauty. + ℣. Go forward, fare prosperously, and reign. + ℟. In thy beauty. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. In thy comeliness * and in thy beauty. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-responsory-common-of-a-widow.yml b/src/data/propers/common/lauds-responsory-common-of-a-widow.yml new file mode 100644 index 0000000..9cd2baa --- /dev/null +++ b/src/data/propers/common/lauds-responsory-common-of-a-widow.yml @@ -0,0 +1,23 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds, +# St. Anne's own real day (2026-07-26) -- byte-identical to Common-of-a- +# Virgin(-Martyr)'s own Lauds responsory, see lauds-capitulum-common-of- +# a-holy-woman.yml's header. +id: lauds-responsory-common-of-a-widow +text: + la: | + R.br. Spécie tua * Et pulchritúdine tua. + ℟. Spécie tua * Et pulchritúdine tua. + ℣. Inténde, próspere procéde, et regna. + ℟. Et pulchritúdine tua. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Spécie tua * Et pulchritúdine tua. + en: | + R.br. In thy comeliness * and in thy beauty. + ℟. In thy comeliness * and in thy beauty. + ℣. Go forward, fare prosperously, and reign. + ℟. In thy beauty. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. In thy comeliness * and in thy beauty. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-versicle-common-of-a-holy-woman.yml b/src/data/propers/common/lauds-versicle-common-of-a-holy-woman.yml new file mode 100644 index 0000000..d52c541 --- /dev/null +++ b/src/data/propers/common/lauds-versicle-common-of-a-holy-woman.yml @@ -0,0 +1,15 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds, +# St. Anne's own real day (2026-07-26) -- byte-identical to Common-of-a- +# Virgin(-Martyr)'s own versicle -- see vespers-versicle-common-of-a- +# holy-woman.yml's header. +id: lauds-versicle-common-of-a-holy-woman +text: + la: | + ℣. Diffúsa est grátia in lábiis tuis. + ℟. Proptérea benedíxit te Deus in ætérnum. + en: | + ℣. Grace is poured into thy lips. + ℟. Therefore God hath blessed thee for ever. +status: + la: verified + en: verified diff --git a/src/data/propers/common/lauds-versicle-common-of-a-widow.yml b/src/data/propers/common/lauds-versicle-common-of-a-widow.yml new file mode 100644 index 0000000..a7d97a1 --- /dev/null +++ b/src/data/propers/common/lauds-versicle-common-of-a-widow.yml @@ -0,0 +1,15 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds, +# St. Anne's own real day (2026-07-26) -- byte-identical to Common-of-a- +# Virgin(-Martyr)'s own versicle -- see vespers-versicle-common-of-a- +# holy-woman.yml's header. +id: lauds-versicle-common-of-a-widow +text: + la: | + ℣. Diffúsa est grátia in lábiis tuis. + ℟. Proptérea benedíxit te Deus in ætérnum. + en: | + ℣. Grace is poured into thy lips. + ℟. Therefore God hath blessed thee for ever. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-hymn-common-of-a-holy-woman.yml b/src/data/propers/common/vespers-hymn-common-of-a-holy-woman.yml new file mode 100644 index 0000000..e9f8037 --- /dev/null +++ b/src/data/propers/common/vespers-hymn-common-of-a-holy-woman.yml @@ -0,0 +1,97 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers, +# St. Anne's own real day (2026-07-26) -- byte-identical to the Lauds +# hymn ("Fortem viríli péctore") -- see lauds-capitulum-common-of-a-holy- +# woman.yml's header for the fuller gap/sourcing writeup. +id: vespers-hymn-common-of-a-holy-woman +text: + la: >- + Fortem viríli péctore + + Laudémus omnes féminam, + + Quæ sanctitátis glória + + Ubíque fulget ínclita. + + + Hæc Christi amóre sáucia, + + Dum mundi amórem nóxium + + Horréscit, ad cæléstia + + Iter perégit árduum. + + + Carnem domans jejúniis, + + Dulcíque mentem pábulo + + Oratiónis nútriens, + + Cæli potítur gáudiis. + + + Rex Christe, virtus fórtium, + + Qui magna solus éfficis, + + Hujus precátu, quǽsumus, + + Audi benígnus súpplices. + + + Deo Patri sit glória, + + Ejúsque soli Fílio, + + Cum Spíritu Paráclito, + + Nunc, et per omne sǽculum. Amen. + en: >- + High let us all our voices raise + + In that heroic woman's praise + + Whose name, with saintly glory bright, + + Shines in the starry realms of light. + + + Filled with a pure celestial glow, + + She spurned all love of things below; + + And heedless here on earth to stay, + + Climbed to the skies her toilsome way. + + + With fasts her body she subdued, + + But filled her soul with prayer's sweet food: + + In other worlds she tastes the bliss + + For which she left the joys of this. + + + O Christ, the strength of all the strong; + + To whom our holiest deeds belong! + + Through her prevailing prayers on high, + + In mercy hear thy people's cry! + + + To God the Father, with the Son, + + And Holy Spirit, Three in One, + + Be glory while the ages flow, + + From all above, and all below. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-hymn-common-of-a-widow.yml b/src/data/propers/common/vespers-hymn-common-of-a-widow.yml new file mode 100644 index 0000000..e972e70 --- /dev/null +++ b/src/data/propers/common/vespers-hymn-common-of-a-widow.yml @@ -0,0 +1,97 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers, +# St. Anne's own real day (2026-07-26) -- byte-identical to the Lauds +# hymn ("Fortem viríli péctore") -- see lauds-capitulum-common-of-a-holy- +# woman.yml's header for the fuller gap/sourcing writeup. +id: vespers-hymn-common-of-a-widow +text: + la: >- + Fortem viríli péctore + + Laudémus omnes féminam, + + Quæ sanctitátis glória + + Ubíque fulget ínclita. + + + Hæc Christi amóre sáucia, + + Dum mundi amórem nóxium + + Horréscit, ad cæléstia + + Iter perégit árduum. + + + Carnem domans jejúniis, + + Dulcíque mentem pábulo + + Oratiónis nútriens, + + Cæli potítur gáudiis. + + + Rex Christe, virtus fórtium, + + Qui magna solus éfficis, + + Hujus precátu, quǽsumus, + + Audi benígnus súpplices. + + + Deo Patri sit glória, + + Ejúsque soli Fílio, + + Cum Spíritu Paráclito, + + Nunc, et per omne sǽculum. Amen. + en: >- + High let us all our voices raise + + In that heroic woman's praise + + Whose name, with saintly glory bright, + + Shines in the starry realms of light. + + + Filled with a pure celestial glow, + + She spurned all love of things below; + + And heedless here on earth to stay, + + Climbed to the skies her toilsome way. + + + With fasts her body she subdued, + + But filled her soul with prayer's sweet food: + + In other worlds she tastes the bliss + + For which she left the joys of this. + + + O Christ, the strength of all the strong; + + To whom our holiest deeds belong! + + Through her prevailing prayers on high, + + In mercy hear thy people's cry! + + + To God the Father, with the Son, + + And Holy Spirit, Three in One, + + Be glory while the ages flow, + + From all above, and all below. Amen. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-responsory-common-of-a-holy-woman.yml b/src/data/propers/common/vespers-responsory-common-of-a-holy-woman.yml new file mode 100644 index 0000000..ffff7b3 --- /dev/null +++ b/src/data/propers/common/vespers-responsory-common-of-a-holy-woman.yml @@ -0,0 +1,23 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers, +# St. Anne's own real day (2026-07-26) -- byte-identical to Common-of-a- +# Virgin(-Martyr)'s own Vespers responsory, see lauds-capitulum-common- +# of-a-holy-woman.yml's header. +id: vespers-responsory-common-of-a-holy-woman +text: + la: | + R.br. Adjuvábit eam * Deus vultu suo. + ℟. Adjuvábit eam * Deus vultu suo. + ℣. Deus in médio ejus, non commovébitur. + ℟. Deus vultu suo. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Adjuvábit eam * Deus vultu suo. + en: | + R.br. God shall help her * with His countenance. + ℟. God shall help her * with His countenance. + ℣. God is in the midst of her, she shall not be moved. + ℟. With His countenance. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. God shall help her * with His countenance. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-responsory-common-of-a-widow.yml b/src/data/propers/common/vespers-responsory-common-of-a-widow.yml new file mode 100644 index 0000000..dea4eb4 --- /dev/null +++ b/src/data/propers/common/vespers-responsory-common-of-a-widow.yml @@ -0,0 +1,23 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers, +# St. Anne's own real day (2026-07-26) -- byte-identical to Common-of-a- +# Virgin(-Martyr)'s own Vespers responsory, see lauds-capitulum-common- +# of-a-holy-woman.yml's header. +id: vespers-responsory-common-of-a-widow +text: + la: | + R.br. Adjuvábit eam * Deus vultu suo. + ℟. Adjuvábit eam * Deus vultu suo. + ℣. Deus in médio ejus, non commovébitur. + ℟. Deus vultu suo. + ℣. Glória Patri, et Fílio, * et Spirítui Sancto. + ℟. Adjuvábit eam * Deus vultu suo. + en: | + R.br. God shall help her * with His countenance. + ℟. God shall help her * with His countenance. + ℣. God is in the midst of her, she shall not be moved. + ℟. With His countenance. + ℣. Glory be to the Father, and to the Son, * and to the Holy Ghost. + ℟. God shall help her * with His countenance. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-versicle-common-of-a-holy-woman.yml b/src/data/propers/common/vespers-versicle-common-of-a-holy-woman.yml new file mode 100644 index 0000000..c962a21 --- /dev/null +++ b/src/data/propers/common/vespers-versicle-common-of-a-holy-woman.yml @@ -0,0 +1,14 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers, +# St. Anne's own real day (2026-07-26) -- same versicle as Lauds (see +# lauds-versicle-common-of-a-holy-woman.yml). +id: vespers-versicle-common-of-a-holy-woman +text: + la: | + ℣. Diffúsa est grátia in lábiis tuis. + ℟. Proptérea benedíxit te Deus in ætérnum. + en: | + ℣. Grace is poured into thy lips. + ℟. Therefore God hath blessed thee for ever. +status: + la: verified + en: verified diff --git a/src/data/propers/common/vespers-versicle-common-of-a-widow.yml b/src/data/propers/common/vespers-versicle-common-of-a-widow.yml new file mode 100644 index 0000000..3b08989 --- /dev/null +++ b/src/data/propers/common/vespers-versicle-common-of-a-widow.yml @@ -0,0 +1,14 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers, +# St. Anne's own real day (2026-07-26) -- same versicle as Lauds (see +# lauds-versicle-common-of-a-widow.yml). +id: vespers-versicle-common-of-a-widow +text: + la: | + ℣. Diffúsa est grátia in lábiis tuis. + ℟. Proptérea benedíxit te Deus in ætérnum. + en: | + ℣. Grace is poured into thy lips. + ℟. Therefore God hath blessed thee for ever. +status: + la: verified + en: verified diff --git a/tests/hours/lauds.test.ts b/tests/hours/lauds.test.ts index 144786c..f3178fc 100644 --- a/tests/hours/lauds.test.ts +++ b/tests/hours/lauds.test.ts @@ -233,6 +233,20 @@ describe('resolveOrdo("lauds", ...)', () => { expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Exsúltet cælum láudibus'); }); + it("uses common-of-a-holy-woman's real office bundle on St. Anne's own day, and common-of-a-widow's identical bundle on St. Monica's", () => { + // Live-verified against Divinum Officium (Monastic Tridentinum 1617) + // that the two categories share real content -- see lauds-capitulum- + // common-of-a-holy-woman.yml's header. + const anne = resolveOrdo('lauds', '2026-07-26'); + const monica = resolveOrdo('lauds', '2026-05-04'); + for (const ordo of [anne, monica]) { + const chapter = ordo.parts.find((p) => p.kind === 'chapter'); + expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Prov 31:10-11'); + const hymn = ordo.parts.find((p) => p.kind === 'hymn'); + expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Fortem viríli péctore'); + } + }); + 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 37ae1ec..6caf7de 100644 --- a/tests/hours/vespers.test.ts +++ b/tests/hours/vespers.test.ts @@ -322,6 +322,18 @@ describe('resolveOrdo("vespers", ...)', () => { expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Exsúltet cælum láudibus'); }); + it("uses common-of-a-widow's real office bundle for St. Margaret of Scotland's First Vespers", () => { + // St. Margaret of Scotland (Jun 10, Semiduplex, common-of-a-widow -- + // live-verified 2026-08-26 to be real content identical to Common- + // of-a-Holy-Woman's, see lauds-capitulum-common-of-a-holy-woman.yml's + // header) claims First Vespers over Jun 9's own evening. + const ordo = resolveOrdo('vespers', '2026-06-09'); + const chapter = ordo.parts.find((p) => p.kind === 'chapter'); + expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Prov 31:10-11'); + const hymn = ordo.parts.find((p) => p.kind === 'hymn'); + expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Fortem viríli péctore'); + }); + 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).