Author Common-of-a-Martyr(-Bishop) Lauds/Vespers chapter/responsory/hymn/versicle
Deploy / deploy (push) Successful in 1m18s
Deploy / deploy (push) Successful in 1m18s
St. Zephyrinus (Aug 26, common-of-a-martyr-bishop, Simplex) claims First Vespers over St. Louis's Aug 25, but that evening was showing the plain ferial hymn instead of a real Common-of-a-Martyr hymn: no content had been authored yet for this Common category's Lauds/Vespers bundle, so resolveOfficeBundle's chapter lookup came back missing and the whole bundle fell through to the ferial default. Live-verified against Divinum Officium (Monastic Tridentinum 1617) votive=C2b: chapter Jac 1:12, Lauds hymn "Martyr Dei, qui unicum," Vespers hymn "Deus tuorum militum," shared versicle "Justus ut palma florebit." Used the votive-office view rather than a real saint's own day for the same structural reason as the earlier Confessor-Not-Bishop fix: every real Common-of-a-Martyr-Bishop saint either has proper content of his own (St. Lawrence, St. Stephen) or never reaches the rank needed to keep his own Vespers (St. Zephyrinus, St. Callistus). Cross-checked votive=C2/C2a/ C2b/C2-1 all render identical text, so the same 7 files were duplicated under the plain common-of-a-martyr id too (St. Hadrian, St. Hermes, St. Fidelis of Sigmaringen). Updates one existing Vespers test whose date (2026-03-03) turned out to also anticipate St. Lucius I's First Vespers, previously masked by this same content gap; adds two new proof tests and a TODO.md entry. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014axryJBrRswYh2niA7WCUc
This commit is contained in:
@@ -2829,6 +2829,37 @@ categories in the "still open" list above have no Lauds/Vespers bundle authored
|
|||||||
same honest incremental-content gap, now on a mechanism that no longer silently drops to the
|
same honest incremental-content gap, now on a mechanism that no longer silently drops to the
|
||||||
ferial default for any rank.
|
ferial default for any rank.
|
||||||
|
|
||||||
|
### Common-of-a-Martyr(-Bishop) Lauds/Vespers bundle authored (2026-08-26)
|
||||||
|
|
||||||
|
**Bug flagged by the user, live**: St. Zephyrinus (Aug 26, `common-of-a-martyr-bishop`,
|
||||||
|
Simplex) claims First Vespers over St. Louis's Aug 25 (see `calendar/vespers.ts`'s
|
||||||
|
`hasFirstVespers`), but that evening's Vespers/Compline were showing the plain Tuesday ferial
|
||||||
|
hymn ("Cæli Deus sanctíssime") instead of a real Common-of-a-Martyr hymn — the same
|
||||||
|
rank-agnostic Common-fallback mechanism from the entry above, just with no content authored yet
|
||||||
|
for this category, so `resolveOfficeBundle` fell all the way through.
|
||||||
|
|
||||||
|
**Proof authored, next category in the "still open" list**: `common-of-a-martyr-bishop`'s full
|
||||||
|
Lauds bundle (chapter Jac 1:12, short responsory "Glória et honóre," hymn "Martyr Dei, qui
|
||||||
|
únicum," versicle "Justus ut palma florébit") and Vespers bundle (chapter reused from Lauds,
|
||||||
|
short responsory "Posuísti, Dómine," hymn "Deus tuórum mílitum," versicle same as Lauds's),
|
||||||
|
live-verified against Divinum Officium (Monastic Tridentinum 1617) `votive=C2b` — the
|
||||||
|
votive-office view was needed for the same structural reason as Confessor-Not-Bishop's own
|
||||||
|
Vespers bundle: every real Common-of-a-Martyr-Bishop saint on this app's calendar either has
|
||||||
|
proper content of his own (St. Lawrence, St. Stephen) or never reaches the rank needed to keep
|
||||||
|
his own evening (St. Zephyrinus and St. Callistus, Simplex and plain Duplex respectively — both
|
||||||
|
live-checked: Callistus's own real Vespers query resolved to "Vespera de Tempore occurente,"
|
||||||
|
i.e. his own Second Vespers is itself always lost, confirming this isn't just a Simplex-rank
|
||||||
|
quirk). Cross-checked `votive=C2`/`C2a`/`C2b`/`C2-1` all render byte-identical Vespers/Lauds
|
||||||
|
hymn text, confirming the earlier Matins-psalmody finding (`common-of-a-martyr-bishop` and
|
||||||
|
`common-of-a-martyr` share real content) extends to this bundle too — so the same 7 files were
|
||||||
|
duplicated verbatim under the plain `common-of-a-martyr` id as well (St. Hadrian, St. Hermes,
|
||||||
|
St. Fidelis of Sigmaringen), since `resolveOfficeBundle` has no alias mechanism the way the
|
||||||
|
Matins-psalmody category tier does.
|
||||||
|
|
||||||
|
`npm test` (479 tests), `tsc --noEmit` both pass. **Still open**: 9 Common categories remain
|
||||||
|
with no Lauds/Vespers bundle authored (Confessor, Confessor-Bishop, Virgin, Virgin-Martyr,
|
||||||
|
Doctor, Apostle, Several-Martyrs, Several-Confessors, Holy Woman/Widow).
|
||||||
|
|
||||||
## Known, deliberate simplifications (not bugs — working as designed)
|
## Known, deliberate simplifications (not bugs — working as designed)
|
||||||
|
|
||||||
- `getDayCollects`: each collect in a multi-collect day renders as its own
|
- `getDayCollects`: each collect in a multi-collect day renders as its own
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
|
||||||
|
# `votive=C2b` live query, 2026-08 -- used instead of a real saint's own
|
||||||
|
# day for the same reason recorded in vespers-hymn-common-of-a-martyr-
|
||||||
|
# bishop.yml's header (every real Common-of-a-Martyr-Bishop saint either
|
||||||
|
# has proper content of his own -- St. Lawrence, St. Stephen -- or never
|
||||||
|
# reaches the rank needed to keep his own hour un-outranked -- St.
|
||||||
|
# Zephyrinus, St. Callistus). Byte-identical to `votive=C2`/`C2a` (plain
|
||||||
|
# Common of a Martyr), confirming TODO.md's earlier finding that these
|
||||||
|
# categories share real content, not just their Matins psalmody. Same
|
||||||
|
# chapter reused for Vespers -- no separate vespers-capitulum-<id> file
|
||||||
|
# authored, per vespers.ts's vespersCapitulumForOverride fallback (see
|
||||||
|
# its own doc comment) -- same convention as Common-of-a-Confessor-Not-
|
||||||
|
# Bishop's identical Lauds/Vespers chapter.
|
||||||
|
id: lauds-capitulum-common-of-a-martyr-bishop
|
||||||
|
text:
|
||||||
|
la: "Beátus vir, qui suffert tentatiónem: quóniam cum probátus fúerit, accípiet corónam vitæ, quam repromísit Deus diligéntibus se."
|
||||||
|
en: "Blessed is the man that endureth temptation; for when he hath been proved, he shall receive a crown of life, which God hath promised to them that love him."
|
||||||
|
citation:
|
||||||
|
la: "Jac 1:12"
|
||||||
|
en: "Jas 1:12"
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
|
||||||
|
# `votive=C2` live query, 2026-08 -- used instead of a real saint's own
|
||||||
|
# day for the same reason recorded in vespers-hymn-common-of-a-martyr-
|
||||||
|
# bishop.yml's header (every real Common-of-a-Martyr-Bishop saint either
|
||||||
|
# has proper content of his own -- St. Lawrence, St. Stephen -- or never
|
||||||
|
# reaches the rank needed to keep his own hour un-outranked -- St.
|
||||||
|
# Zephyrinus, St. Callistus). Byte-identical to `votive=C2`/`C2a` (plain
|
||||||
|
# Common of a Martyr), confirming TODO.md's earlier finding that these
|
||||||
|
# categories share real content, not just their Matins psalmody. Same
|
||||||
|
# chapter reused for Vespers -- no separate vespers-capitulum-<id> file
|
||||||
|
# authored, per vespers.ts's vespersCapitulumForOverride fallback (see
|
||||||
|
# its own doc comment) -- same convention as Common-of-a-Confessor-Not-
|
||||||
|
# Bishop's identical Lauds/Vespers chapter.
|
||||||
|
id: lauds-capitulum-common-of-a-martyr
|
||||||
|
text:
|
||||||
|
la: "Beátus vir, qui suffert tentatiónem: quóniam cum probátus fúerit, accípiet corónam vitæ, quam repromísit Deus diligéntibus se."
|
||||||
|
en: "Blessed is the man that endureth temptation; for when he hath been proved, he shall receive a crown of life, which God hath promised to them that love him."
|
||||||
|
citation:
|
||||||
|
la: "Jac 1:12"
|
||||||
|
en: "Jas 1:12"
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
|
||||||
|
# `votive=C2b` live query, 2026-08 -- see lauds-capitulum-common-of-a-
|
||||||
|
# martyr-bishop.yml's header for why the votive-office view was used.
|
||||||
|
# "Martyr Dei, qui únicum" -- the classic Common-of-a-Martyr Lauds hymn,
|
||||||
|
# a single genuine recension (no Urban VIII variant text found for this
|
||||||
|
# one in the reference engine, unlike Iste Confessor's).
|
||||||
|
id: lauds-hymn-common-of-a-martyr-bishop
|
||||||
|
text:
|
||||||
|
la: >-
|
||||||
|
Martyr Dei, qui únicum
|
||||||
|
|
||||||
|
Patris sequéndo Fílium,
|
||||||
|
|
||||||
|
Victis triúmphas hóstibus,
|
||||||
|
|
||||||
|
Victor fruens cæléstibus.
|
||||||
|
|
||||||
|
|
||||||
|
Tui precátus múnere
|
||||||
|
|
||||||
|
Nostrum reátum dílue,
|
||||||
|
|
||||||
|
Arcens mali contágium,
|
||||||
|
|
||||||
|
Vitæ rémovens tǽdium.
|
||||||
|
|
||||||
|
|
||||||
|
Solúta sunt jam víncula
|
||||||
|
|
||||||
|
Tui sacráti córporis:
|
||||||
|
|
||||||
|
Nos solve vinclis sǽculi,
|
||||||
|
|
||||||
|
Amóre Fílii Dei.
|
||||||
|
|
||||||
|
|
||||||
|
Deo Patri sit glória,
|
||||||
|
|
||||||
|
Ejúsque soli Fílio,
|
||||||
|
|
||||||
|
Cum Spíritu Paráclito,
|
||||||
|
|
||||||
|
Et nunc, et in perpétuum. Amen.
|
||||||
|
en: >-
|
||||||
|
Martyr of God, whose strength was steeled
|
||||||
|
|
||||||
|
To follow close God's only Son,
|
||||||
|
|
||||||
|
Well didst thou brave thy battlefield,
|
||||||
|
|
||||||
|
And well thy heavenly bliss was won!
|
||||||
|
|
||||||
|
|
||||||
|
Now join thy prayers with ours, who pray
|
||||||
|
|
||||||
|
That God may pardon us and bless;
|
||||||
|
|
||||||
|
For prayer keeps evil's plague away,
|
||||||
|
|
||||||
|
And draws from life its weariness.
|
||||||
|
|
||||||
|
|
||||||
|
Long, long ago, were loosed the chains
|
||||||
|
|
||||||
|
That held thy body once in thrall;
|
||||||
|
|
||||||
|
For us how many a bond remains!
|
||||||
|
|
||||||
|
O love of God release us all.
|
||||||
|
|
||||||
|
|
||||||
|
All praise to God the Father be,
|
||||||
|
|
||||||
|
All praise to thee, Eternal Son;
|
||||||
|
|
||||||
|
All praise, O Holy Ghost, to thee,
|
||||||
|
|
||||||
|
While never-ending ages run. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
|
||||||
|
# `votive=C2` live query, 2026-08 -- see lauds-capitulum-common-of-a-
|
||||||
|
# martyr-bishop.yml's header for why the votive-office view was used.
|
||||||
|
# "Martyr Dei, qui únicum" -- the classic Common-of-a-Martyr Lauds hymn,
|
||||||
|
# a single genuine recension (no Urban VIII variant text found for this
|
||||||
|
# one in the reference engine, unlike Iste Confessor's).
|
||||||
|
id: lauds-hymn-common-of-a-martyr
|
||||||
|
text:
|
||||||
|
la: >-
|
||||||
|
Martyr Dei, qui únicum
|
||||||
|
|
||||||
|
Patris sequéndo Fílium,
|
||||||
|
|
||||||
|
Victis triúmphas hóstibus,
|
||||||
|
|
||||||
|
Victor fruens cæléstibus.
|
||||||
|
|
||||||
|
|
||||||
|
Tui precátus múnere
|
||||||
|
|
||||||
|
Nostrum reátum dílue,
|
||||||
|
|
||||||
|
Arcens mali contágium,
|
||||||
|
|
||||||
|
Vitæ rémovens tǽdium.
|
||||||
|
|
||||||
|
|
||||||
|
Solúta sunt jam víncula
|
||||||
|
|
||||||
|
Tui sacráti córporis:
|
||||||
|
|
||||||
|
Nos solve vinclis sǽculi,
|
||||||
|
|
||||||
|
Amóre Fílii Dei.
|
||||||
|
|
||||||
|
|
||||||
|
Deo Patri sit glória,
|
||||||
|
|
||||||
|
Ejúsque soli Fílio,
|
||||||
|
|
||||||
|
Cum Spíritu Paráclito,
|
||||||
|
|
||||||
|
Et nunc, et in perpétuum. Amen.
|
||||||
|
en: >-
|
||||||
|
Martyr of God, whose strength was steeled
|
||||||
|
|
||||||
|
To follow close God's only Son,
|
||||||
|
|
||||||
|
Well didst thou brave thy battlefield,
|
||||||
|
|
||||||
|
And well thy heavenly bliss was won!
|
||||||
|
|
||||||
|
|
||||||
|
Now join thy prayers with ours, who pray
|
||||||
|
|
||||||
|
That God may pardon us and bless;
|
||||||
|
|
||||||
|
For prayer keeps evil's plague away,
|
||||||
|
|
||||||
|
And draws from life its weariness.
|
||||||
|
|
||||||
|
|
||||||
|
Long, long ago, were loosed the chains
|
||||||
|
|
||||||
|
That held thy body once in thrall;
|
||||||
|
|
||||||
|
For us how many a bond remains!
|
||||||
|
|
||||||
|
O love of God release us all.
|
||||||
|
|
||||||
|
|
||||||
|
All praise to God the Father be,
|
||||||
|
|
||||||
|
All praise to thee, Eternal Son;
|
||||||
|
|
||||||
|
All praise, O Holy Ghost, to thee,
|
||||||
|
|
||||||
|
While never-ending ages run. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
|
||||||
|
# `votive=C2b` live query, 2026-08 -- see lauds-capitulum-common-of-a-
|
||||||
|
# martyr-bishop.yml's header for why the votive-office view was used.
|
||||||
|
id: lauds-responsory-common-of-a-martyr-bishop
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
R.br. Glória et honóre * Coronásti eum, Dómine.
|
||||||
|
℟. Glória et honóre * Coronásti eum, Dómine.
|
||||||
|
℣. Et constituísti eum super ópera mánuum tuárum.
|
||||||
|
℟. Coronásti eum, Dómine.
|
||||||
|
℣. Glória Patri, et Fílio, * et Spirítui Sancto.
|
||||||
|
℟. Glória et honóre * Coronásti eum, Dómine.
|
||||||
|
en: |
|
||||||
|
R.br. Thou hast crowned him * with glory and honour, O Lord.
|
||||||
|
℟. Thou hast crowned him * with glory and honour, O Lord.
|
||||||
|
℣. And madest him to have dominion over the works of thy hands.
|
||||||
|
℟. With glory and honour, O Lord.
|
||||||
|
℣. Glory be to the Father, and to the Son, * and to the Holy Ghost.
|
||||||
|
℟. Thou hast crowned him * with glory and honour, O Lord.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
|
||||||
|
# `votive=C2` live query, 2026-08 -- see lauds-capitulum-common-of-a-
|
||||||
|
# martyr-bishop.yml's header for why the votive-office view was used.
|
||||||
|
id: lauds-responsory-common-of-a-martyr
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
R.br. Glória et honóre * Coronásti eum, Dómine.
|
||||||
|
℟. Glória et honóre * Coronásti eum, Dómine.
|
||||||
|
℣. Et constituísti eum super ópera mánuum tuárum.
|
||||||
|
℟. Coronásti eum, Dómine.
|
||||||
|
℣. Glória Patri, et Fílio, * et Spirítui Sancto.
|
||||||
|
℟. Glória et honóre * Coronásti eum, Dómine.
|
||||||
|
en: |
|
||||||
|
R.br. Thou hast crowned him * with glory and honour, O Lord.
|
||||||
|
℟. Thou hast crowned him * with glory and honour, O Lord.
|
||||||
|
℣. And madest him to have dominion over the works of thy hands.
|
||||||
|
℟. With glory and honour, O Lord.
|
||||||
|
℣. Glory be to the Father, and to the Son, * and to the Holy Ghost.
|
||||||
|
℟. Thou hast crowned him * with glory and honour, O Lord.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
|
||||||
|
# `votive=C2b` live query, 2026-08 -- see lauds-capitulum-common-of-a-
|
||||||
|
# martyr-bishop.yml's header for why the votive-office view was used.
|
||||||
|
# Same versicle as Vespers -- see vespers-versicle-common-of-a-martyr-
|
||||||
|
# bishop.yml's header.
|
||||||
|
id: lauds-versicle-common-of-a-martyr-bishop
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
℣. Justus ut palma florébit.
|
||||||
|
℟. Sicut cedrus Líbani multiplicábitur.
|
||||||
|
en: |
|
||||||
|
℣. The righteous shall flourish like the palm-tree.
|
||||||
|
℟. He shall grow like a cedar in Lebanon.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
|
||||||
|
# `votive=C2` live query, 2026-08 -- see lauds-capitulum-common-of-a-
|
||||||
|
# martyr-bishop.yml's header for why the votive-office view was used.
|
||||||
|
# Same versicle as Vespers -- see vespers-versicle-common-of-a-martyr-
|
||||||
|
# bishop.yml's header.
|
||||||
|
id: lauds-versicle-common-of-a-martyr
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
℣. Justus ut palma florébit.
|
||||||
|
℟. Sicut cedrus Líbani multiplicábitur.
|
||||||
|
en: |
|
||||||
|
℣. The righteous shall flourish like the palm-tree.
|
||||||
|
℟. He shall grow like a cedar in Lebanon.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers
|
||||||
|
# `votive=C2b` live query, 2026-08 -- the classic "Deus tuórum mílitum"
|
||||||
|
# Common-of-a-Martyr Vespers hymn, previously entirely missing from this
|
||||||
|
# app (no `vespers-hymn-common-of-a-martyr-bishop.yml`/`-common-of-a-
|
||||||
|
# martyr.yml` at all), so any Vespers/Compline landing on an unauthored
|
||||||
|
# Common-of-a-Martyr(-Bishop) saint fell all the way through to the plain
|
||||||
|
# ferial default -- the gap this app's user flagged live, on St.
|
||||||
|
# Zephyrinus's own Aug 26/25 evening (see calendar/vespers.ts's First-
|
||||||
|
# Vespers-anticipation comments for that saint's own history). Bypasses
|
||||||
|
# calendar concurrence entirely, same reasoning as Common-of-a-Confessor-
|
||||||
|
# Not-Bishop's own Vespers file (see its header): no real Common-of-a-
|
||||||
|
# Martyr(-Bishop) saint's own Second Vespers is ever un-outranked on this
|
||||||
|
# app's merged calendar -- every real candidate either has proper content
|
||||||
|
# of his own (St. Lawrence, St. Stephen) or never reaches the rank needed
|
||||||
|
# to keep his own evening (St. Zephyrinus, St. Callistus both Simplex/
|
||||||
|
# plain Duplex). Byte-identical to `votive=C2`/`C2a` (plain Common of a
|
||||||
|
# Martyr), confirming TODO.md's earlier Matins-psalmody finding
|
||||||
|
# (`common-of-a-martyr-bishop` and `common-of-a-martyr` share real
|
||||||
|
# content) extends to this bundle too -- authored as two separate files
|
||||||
|
# rather than an alias redirect only because this bundle's lookup
|
||||||
|
# (`resolveOfficeBundle`) has no alias mechanism the way the Matins-
|
||||||
|
# psalmody category tier does.
|
||||||
|
id: vespers-hymn-common-of-a-martyr-bishop
|
||||||
|
text:
|
||||||
|
la: >-
|
||||||
|
Deus tuórum mílitum
|
||||||
|
|
||||||
|
Sors, et córona, prǽmium,
|
||||||
|
|
||||||
|
Laudes canéntes Mártyris
|
||||||
|
|
||||||
|
Absólve nexu críminis.
|
||||||
|
|
||||||
|
|
||||||
|
Hic nempe mundi gáudia,
|
||||||
|
|
||||||
|
Et blandiménta nóxia
|
||||||
|
|
||||||
|
Cadúca rite députans,
|
||||||
|
|
||||||
|
Pervénit ad cæléstia.
|
||||||
|
|
||||||
|
|
||||||
|
Pœnas cucúrrit fórtiter,
|
||||||
|
|
||||||
|
Et sústulit viríliter,
|
||||||
|
|
||||||
|
Pro te effúndens sánguinem,
|
||||||
|
|
||||||
|
Ætérna dona póssidet.
|
||||||
|
|
||||||
|
|
||||||
|
Ob hoc precátu súpplici
|
||||||
|
|
||||||
|
Te póscimus, piíssime;
|
||||||
|
|
||||||
|
In hoc triúmpho Mártyris
|
||||||
|
|
||||||
|
Dimítte noxam sérvulis.
|
||||||
|
|
||||||
|
|
||||||
|
Laus et perénnis glória
|
||||||
|
|
||||||
|
Deo Patri, et Fílio,
|
||||||
|
|
||||||
|
Sancto simul Paráclito,
|
||||||
|
|
||||||
|
In sempitérna sǽcula. Amen.
|
||||||
|
en: >-
|
||||||
|
O God, of those that fought thy fight,
|
||||||
|
|
||||||
|
Portion, and prize, and crown of light,
|
||||||
|
|
||||||
|
Break every bond of sin and shame
|
||||||
|
|
||||||
|
As now we praise thy martyr's name.
|
||||||
|
|
||||||
|
|
||||||
|
He recked not of the world's allure,
|
||||||
|
|
||||||
|
But sin and pomp of sin forswore:
|
||||||
|
|
||||||
|
Knew all their gall, and passed them by,
|
||||||
|
|
||||||
|
And reached the throne prepared on high.
|
||||||
|
|
||||||
|
|
||||||
|
Bravely the course of pain he ran,
|
||||||
|
|
||||||
|
And bare his torments as a man:
|
||||||
|
|
||||||
|
For love of thee his blood outpoured,
|
||||||
|
|
||||||
|
And thus obtained the great reward.
|
||||||
|
|
||||||
|
|
||||||
|
With humble voice and suppliant word
|
||||||
|
|
||||||
|
We pray thee therefore, holy Lord,
|
||||||
|
|
||||||
|
While we thy martyr's feast-day keep,
|
||||||
|
|
||||||
|
Forgive thy loved and erring sheep.
|
||||||
|
|
||||||
|
|
||||||
|
Glory and praise for aye be done
|
||||||
|
|
||||||
|
To God the Father, and the Son,
|
||||||
|
|
||||||
|
And Holy Ghost, who reign on high,
|
||||||
|
|
||||||
|
One God, to all eternity. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers
|
||||||
|
# `votive=C2` live query, 2026-08 -- the classic "Deus tuórum mílitum"
|
||||||
|
# Common-of-a-Martyr Vespers hymn, byte-identical to `votive=C2b` (Common
|
||||||
|
# of a Martyr Bishop) -- see vespers-hymn-common-of-a-martyr-bishop.yml's
|
||||||
|
# header for the fuller gap/sourcing writeup (the bug report that
|
||||||
|
# surfaced this, why the votive-office view was used instead of a real
|
||||||
|
# saint's day, and why this is a separate file rather than an alias
|
||||||
|
# redirect). Duplicated verbatim into this plain `common-of-a-martyr` id
|
||||||
|
# for St. Hadrian/St. Hermes/St. Fidelis of Sigmaringen, who use it
|
||||||
|
# directly (not the `-bishop` id).
|
||||||
|
id: vespers-hymn-common-of-a-martyr
|
||||||
|
text:
|
||||||
|
la: >-
|
||||||
|
Deus tuórum mílitum
|
||||||
|
|
||||||
|
Sors, et córona, prǽmium,
|
||||||
|
|
||||||
|
Laudes canéntes Mártyris
|
||||||
|
|
||||||
|
Absólve nexu críminis.
|
||||||
|
|
||||||
|
|
||||||
|
Hic nempe mundi gáudia,
|
||||||
|
|
||||||
|
Et blandiménta nóxia
|
||||||
|
|
||||||
|
Cadúca rite députans,
|
||||||
|
|
||||||
|
Pervénit ad cæléstia.
|
||||||
|
|
||||||
|
|
||||||
|
Pœnas cucúrrit fórtiter,
|
||||||
|
|
||||||
|
Et sústulit viríliter,
|
||||||
|
|
||||||
|
Pro te effúndens sánguinem,
|
||||||
|
|
||||||
|
Ætérna dona póssidet.
|
||||||
|
|
||||||
|
|
||||||
|
Ob hoc precátu súpplici
|
||||||
|
|
||||||
|
Te póscimus, piíssime;
|
||||||
|
|
||||||
|
In hoc triúmpho Mártyris
|
||||||
|
|
||||||
|
Dimítte noxam sérvulis.
|
||||||
|
|
||||||
|
|
||||||
|
Laus et perénnis glória
|
||||||
|
|
||||||
|
Deo Patri, et Fílio,
|
||||||
|
|
||||||
|
Sancto simul Paráclito,
|
||||||
|
|
||||||
|
In sempitérna sǽcula. Amen.
|
||||||
|
en: >-
|
||||||
|
O God, of those that fought thy fight,
|
||||||
|
|
||||||
|
Portion, and prize, and crown of light,
|
||||||
|
|
||||||
|
Break every bond of sin and shame
|
||||||
|
|
||||||
|
As now we praise thy martyr's name.
|
||||||
|
|
||||||
|
|
||||||
|
He recked not of the world's allure,
|
||||||
|
|
||||||
|
But sin and pomp of sin forswore:
|
||||||
|
|
||||||
|
Knew all their gall, and passed them by,
|
||||||
|
|
||||||
|
And reached the throne prepared on high.
|
||||||
|
|
||||||
|
|
||||||
|
Bravely the course of pain he ran,
|
||||||
|
|
||||||
|
And bare his torments as a man:
|
||||||
|
|
||||||
|
For love of thee his blood outpoured,
|
||||||
|
|
||||||
|
And thus obtained the great reward.
|
||||||
|
|
||||||
|
|
||||||
|
With humble voice and suppliant word
|
||||||
|
|
||||||
|
We pray thee therefore, holy Lord,
|
||||||
|
|
||||||
|
While we thy martyr's feast-day keep,
|
||||||
|
|
||||||
|
Forgive thy loved and erring sheep.
|
||||||
|
|
||||||
|
|
||||||
|
Glory and praise for aye be done
|
||||||
|
|
||||||
|
To God the Father, and the Son,
|
||||||
|
|
||||||
|
And Holy Ghost, who reign on high,
|
||||||
|
|
||||||
|
One God, to all eternity. Amen.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers
|
||||||
|
# `votive=C2b` live query, 2026-08 -- see vespers-hymn-common-of-a-martyr-
|
||||||
|
# bishop.yml's header for why the votive-office view was used instead of
|
||||||
|
# a real saint's own day.
|
||||||
|
id: vespers-responsory-common-of-a-martyr-bishop
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
R.br. Posuísti, Dómine, * Super caput ejus.
|
||||||
|
℟. Posuísti, Dómine, * Super caput ejus.
|
||||||
|
℣. Corónam de lápide pretióso.
|
||||||
|
℟. Super caput ejus.
|
||||||
|
℣. Glória Patri, et Fílio, * et Spirítui Sancto.
|
||||||
|
℟. Posuísti, Dómine, * Super caput ejus.
|
||||||
|
en: |
|
||||||
|
R.br. O Lord, Thou hast set * Upon his head.
|
||||||
|
℟. O Lord, Thou hast set * Upon his head.
|
||||||
|
℣. A Crown of precious stones.
|
||||||
|
℟. Upon his head.
|
||||||
|
℣. Glory be to the Father, and to the Son, * and to the Holy Ghost.
|
||||||
|
℟. O Lord, Thou hast set * Upon his head.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers
|
||||||
|
# `votive=C2` live query, 2026-08 -- see vespers-hymn-common-of-a-martyr-
|
||||||
|
# bishop.yml's header for why the votive-office view was used instead of
|
||||||
|
# a real saint's own day.
|
||||||
|
id: vespers-responsory-common-of-a-martyr
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
R.br. Posuísti, Dómine, * Super caput ejus.
|
||||||
|
℟. Posuísti, Dómine, * Super caput ejus.
|
||||||
|
℣. Corónam de lápide pretióso.
|
||||||
|
℟. Super caput ejus.
|
||||||
|
℣. Glória Patri, et Fílio, * et Spirítui Sancto.
|
||||||
|
℟. Posuísti, Dómine, * Super caput ejus.
|
||||||
|
en: |
|
||||||
|
R.br. O Lord, Thou hast set * Upon his head.
|
||||||
|
℟. O Lord, Thou hast set * Upon his head.
|
||||||
|
℣. A Crown of precious stones.
|
||||||
|
℟. Upon his head.
|
||||||
|
℣. Glory be to the Father, and to the Son, * and to the Holy Ghost.
|
||||||
|
℟. O Lord, Thou hast set * Upon his head.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers
|
||||||
|
# `votive=C2b` live query, 2026-08 -- same versicle as Lauds (see lauds-
|
||||||
|
# versicle-common-of-a-martyr-bishop.yml).
|
||||||
|
id: vespers-versicle-common-of-a-martyr-bishop
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
℣. Justus ut palma florébit.
|
||||||
|
℟. Sicut cedrus Líbani multiplicábitur.
|
||||||
|
en: |
|
||||||
|
℣. The righteous shall flourish like the palm-tree.
|
||||||
|
℟. He shall grow like a cedar in Lebanon.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers
|
||||||
|
# `votive=C2` live query, 2026-08 -- same versicle as Lauds (see lauds-
|
||||||
|
# versicle-common-of-a-martyr.yml).
|
||||||
|
id: vespers-versicle-common-of-a-martyr
|
||||||
|
text:
|
||||||
|
la: |
|
||||||
|
℣. Justus ut palma florébit.
|
||||||
|
℟. Sicut cedrus Líbani multiplicábitur.
|
||||||
|
en: |
|
||||||
|
℣. The righteous shall flourish like the palm-tree.
|
||||||
|
℟. He shall grow like a cedar in Lebanon.
|
||||||
|
status:
|
||||||
|
la: verified
|
||||||
|
en: verified
|
||||||
@@ -157,6 +157,19 @@ describe('resolveOrdo("lauds", ...)', () => {
|
|||||||
expect(canticle?.kind === 'canticle' ? canticle.antiphon?.text.la : undefined).toContain('In cratícula');
|
expect(canticle?.kind === 'canticle' ? canticle.antiphon?.text.la : undefined).toContain('In cratícula');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("uses Common-of-a-Martyr-Bishop's real office bundle on St. Zephyrinus's own day, not the ferial default", () => {
|
||||||
|
// St. Zephyrinus (Aug 26, Simplex, common-of-a-martyr-bishop) has no
|
||||||
|
// proper Lauds content of his own; before this Common's Lauds bundle
|
||||||
|
// was authored, the missing chapter made the whole bundle resolve to
|
||||||
|
// undefined and fall through to the plain ferial default -- see
|
||||||
|
// lauds-hymn-common-of-a-martyr-bishop.yml's header.
|
||||||
|
const ordo = resolveOrdo('lauds', '2026-08-26');
|
||||||
|
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
||||||
|
expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Jas 1:12');
|
||||||
|
const hymn = ordo.parts.find((p) => p.kind === 'hymn');
|
||||||
|
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Martyr Dei, qui únicum');
|
||||||
|
});
|
||||||
|
|
||||||
it('includes the Kyrie + Our Father lead-in right after the Benedictus, before the day collect (either form)', () => {
|
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 ordo = resolveOrdo('lauds', FERIAL_TUESDAY);
|
||||||
const litanyIndex = ordo.parts.findIndex((p) => p.kind === 'preces' && p.text.text.la?.includes('Kýrie, eléison'));
|
const litanyIndex = ordo.parts.findIndex((p) => p.kind === 'preces' && p.text.text.la?.includes('Kýrie, eléison'));
|
||||||
|
|||||||
@@ -198,14 +198,42 @@ describe('resolveOrdo("vespers", ...)', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("renders Lent's seasonal office", () => {
|
it("renders Lent's seasonal office", () => {
|
||||||
// 2026-03-03 is a Tuesday in Lent, before Passiontide.
|
// 2026-03-02 is a Monday in Lent, before Passiontide -- deliberately
|
||||||
const ordo = resolveOrdo('vespers', '2026-03-03');
|
// not 03-03, whose own evening (as of the Common-of-a-Martyr-Bishop
|
||||||
|
// office-bundle authoring below) now correctly anticipates St. Lucius
|
||||||
|
// I's First Vespers on 03-04 instead of falling through to this
|
||||||
|
// seasonal default; 03-02's own evening has no adjacent sanctoral
|
||||||
|
// saint at all, so it stays a clean plain-Lent proof.
|
||||||
|
const ordo = resolveOrdo('vespers', '2026-03-02');
|
||||||
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
||||||
expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Joel 2:17');
|
expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Joel 2:17');
|
||||||
const hymn = ordo.parts.find((p) => p.kind === 'hymn');
|
const hymn = ordo.parts.find((p) => p.kind === 'hymn');
|
||||||
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Audi, benígne Cónditor');
|
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Audi, benígne Cónditor');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("uses Common-of-a-Martyr-Bishop's real office bundle, not the ferial default, for a Simplex saint's First Vespers", () => {
|
||||||
|
// St. Zephyrinus (Aug 26, Simplex, common-of-a-martyr-bishop) claims
|
||||||
|
// First Vespers over St. Louis's Aug 25 -- see calendar/vespers.ts's
|
||||||
|
// hasFirstVespers comments. Before this Common's Lauds/Vespers bundle
|
||||||
|
// was authored, the missing chapter/hymn made the whole bundle
|
||||||
|
// resolve to undefined, silently falling through to the plain ferial
|
||||||
|
// default -- live-verified against Divinum Officium's `votive=C2b`
|
||||||
|
// view instead of a real saint's own day, same reasoning as Common-
|
||||||
|
// of-a-Confessor-Not-Bishop's own proof (see vespers-hymn-common-of-
|
||||||
|
// a-martyr-bishop.yml's header).
|
||||||
|
const ordo = resolveOrdo('vespers', '2026-08-25');
|
||||||
|
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
||||||
|
expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Jas 1:12');
|
||||||
|
const hymn = ordo.parts.find((p) => p.kind === 'hymn');
|
||||||
|
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Deus tuórum mílitum');
|
||||||
|
for (const part of ordo.parts) {
|
||||||
|
if (part.kind === 'chapter' || part.kind === 'responsory' || part.kind === 'hymn' || part.kind === 'versicle') {
|
||||||
|
expect(part.text.status.la).toBe('verified');
|
||||||
|
expect(part.text.status.en).toBe('verified');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
it("renders Passiontide's seasonal office, with the Gloria Patri omitted from the responsory", () => {
|
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
|
// 2026-03-25 is a Wednesday in Passiontide (Passion Sunday 2026-03-22
|
||||||
// through Holy Saturday 2026-04-04).
|
// through Holy Saturday 2026-04-04).
|
||||||
|
|||||||
Reference in New Issue
Block a user