Author Benedictus antiphons for the remaining 26 propers:null saints
Deploy / deploy (push) Successful in 57s

Completes the 94-saint batch's Benedictus-antiphon coverage. A saint
with a genuine proper collect doesn't imply a genuine proper antiphon,
same finding as St. Martin of Tours's mixed proper/shared split from
the original 29-saint pass: of the 26, 15 are genuinely unwinnable
stubs (already documented from the collects pass -- always
commemorated, never the day's own title, so nothing to live-query) and
left honestly missing, matching St. Frances of Rome/St. Bibiana's
precedent from the original 109-saint pass; 7 of the remaining 11
turned out to render byte-identical to an already-authored Common
category (benedictusCommon wired directly, no new content) -- including
Ss. Dionysius and Companions, whose own `common` field says
common-of-a-martyr-bishop but whose live-verified minor-hour text
actually matches common-of-several-martyrs, another case (like Chair of
St. Peter earlier) where the two fields genuinely diverge. The other 4
have real unique text of their own: All Saints of the Benedictine
Order, St. Agnes (secunda), St. Benedict (no English in the source,
translated and marked draft, same gap as St. Scholastica's), and the
Vigil of St. John the Baptist (deliberately echoing the Benedictus
canticle's own opening words).

P/T/S/N for these 26 not attempted here -- a further layer on top, same
as how the original 109 got Benedictus antiphons long before their own
later, separate P/T/S/N pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-13 09:14:05 -04:00
parent ffaa797940
commit 9faa7168bc
13 changed files with 155 additions and 6 deletions
+48 -6
View File
@@ -386,6 +386,45 @@ the original 109-saint pass (own `[Ant 1]`/live-rendered text, not a
shared Common), since a saint with a genuine proper collect usually has shared Common), since a saint with a genuine proper collect usually has
a genuine proper antiphon too. Not yet started. a genuine proper antiphon too. Not yet started.
### The other 26 propers-set saints' Benedictus antiphons — done (2026-08)
Turned out **most of these don't have unique antiphon text either**
a genuine proper collect doesn't imply a genuine proper antiphon, same
finding as St. Martin of Tours's mixed proper-antiphon/shared-chapter
split from the original 29-saint pass. Live-queried Lauds
(`prayLaudes`) for each of the 26, same title-verified method as the
Common-category batch above.
**15 of the 26 are genuinely unwinnable stubs** (already documented as
such from the collects pass — always commemorated, never the day's own
title, so nothing to query) — same "honestly missing" treatment as St.
Frances of Rome/St. Bibiana in the original 109-saint pass, not
guessed at.
**Of the 11 that do win outright**, 7 turned out to share existing
Common-category text — `benedictusCommon` wired directly to the already-
authored files from the section above, no new content needed: Ss.
Dionysius and Companions, Ss. Felix and Adauctus, Ss. Maurice and
Companions, Ss. Tryphon and Companions (`common-of-several-martyrs`,
despite Dionysius's own `common` field saying `common-of-a-martyr-
bishop` — another case, like Chair of St. Peter earlier, where the two
fields genuinely diverge), St. Chrysogonus and St. Donatus
(`common-of-a-martyr`), the Vigil of St. Lawrence (`common-of-a-vigil`).
The remaining 4 have real, unique proper text — new
`{id}-antiphon.yml` files: All Saints of the Benedictine Order ("Vos
qui reliquístis ómnia..."), St. Agnes (secunda) ("Ecce, quod
concupívi..."), St. Benedict ("Sanctíssime Conféssor Dómini..." — no
English in the source, same gap as St. Scholastica's, translated and
marked `draft`), and the Vigil of St. John the Baptist ("Eréxit nobis
* Dóminus cornu salútis..." — deliberately echoing the Benedictus
canticle's own opening words, fitting for the Vigil of the saint whose
father, Zechariah, first spoke that canticle).
P/T/S/N for these 26 not attempted in this pass — a further layer on
top, same as how the original 109 got Benedictus antiphons long before
their own later, separate P/T/S/N pass (duplex-majus+ subset only).
### Christmas-Octave Sunday content — done (2026-08) ### Christmas-Octave Sunday content — done (2026-08)
Was: only the Benedictus antiphon existed for `christmas-octave-sunday` Was: only the Benedictus antiphon existed for `christmas-octave-sunday`
@@ -720,12 +759,15 @@ pass has now been checked against a live Monastic query; most needed
correction (confirmed Roman-rite sourced), a handful already matched. correction (confirmed Roman-rite sourced), a handful already matched.
- **All ~52 temporal entries: done, including `christmas-octave-sunday`** - **All ~52 temporal entries: done, including `christmas-octave-sunday`**
(see the section above for method and its own correction). (see the section above for method and its own correction).
- **94 `propers: null` saints: done (2026-08)** — see the dedicated section - **94 `propers: null` saints: done (2026-08)** — see the dedicated
below for the collect-authoring pass and the era-specific-calendar section below for the collect-authoring pass and the era-specific-
discovery it took to do reliably. Benedictus antiphon + P/T/S/N: done calendar discovery it took to do reliably. Benedictus antiphon: done
for the 66 that draw from a shared Common (own dedicated section for all 94 (own dedicated sections below) — 66 via a shared Common; of
below); the other 26 (own proper collect, from the same batch) still the other 26 (own proper collect), 15 are genuinely unwinnable stubs
need their own individually-authored Benedictus antiphon, not started. left honestly missing, 7 share an existing Common, and 4 have real
unique text. P/T/S/N: done for the 66-saint batch; the 26 propers-set
saints' own P/T/S/N not yet attempted, a further layer on top (see
that section's own note).
### Bug found and fixed while pulling christmas-octave-sunday's antiphon ### Bug found and fixed while pulling christmas-octave-sunday's antiphon
@@ -10,3 +10,10 @@ name: "St. Dionysius, Bishop, and Companions, Martyrs"
rank: semiduplex rank: semiduplex
common: common-of-a-martyr-bishop common: common-of-a-martyr-bishop
propers: "ss-dionysius-and-companions" propers: "ss-dionysius-and-companions"
# Benedictus antiphon live-verified (2026-08, Lauds query, 2025-10-09,
# winner outright) as byte-identical to common-of-several-martyrs's own
# ("Vestri capílli cápitis...") -- despite `common` above saying
# martyr-*bishop*, not several-martyrs; the two fields aren't always the
# same category (see calendar/feasts.ts's SaintRecord.benedictusCommon
# doc comment).
benedictusCommon: common-of-several-martyrs
@@ -14,3 +14,6 @@ name: "Ss. Felix and Adauctus, Martyrs"
rank: simplex rank: simplex
common: common-of-several-martyrs common: common-of-several-martyrs
propers: "ss-felix-and-adauctus" propers: "ss-felix-and-adauctus"
# Benedictus antiphon live-verified (2026-08, Lauds query, 2025-08-30, winner
# outright) as byte-identical to common-of-several-martyrs.yml's own.
benedictusCommon: common-of-several-martyrs
@@ -11,3 +11,6 @@ name: "Ss. Maurice and Companions, Martyrs"
rank: simplex rank: simplex
common: common-of-several-martyrs common: common-of-several-martyrs
propers: "ss-maurice-and-companions" propers: "ss-maurice-and-companions"
# Benedictus antiphon live-verified (2026-08, Lauds query, 2025-09-22, winner
# outright) as byte-identical to common-of-several-martyrs.yml's own.
benedictusCommon: common-of-several-martyrs
@@ -9,3 +9,6 @@ name: "Ss. Tryphon, Respicius, and Nympha, Martyrs"
rank: simplex rank: simplex
common: common-of-several-martyrs common: common-of-several-martyrs
propers: "ss-tryphon-and-companions" propers: "ss-tryphon-and-companions"
# Benedictus antiphon live-verified (2026-08, Lauds query, 2025-11-10, winner
# outright) as byte-identical to common-of-several-martyrs.yml's own.
benedictusCommon: common-of-several-martyrs
@@ -14,3 +14,6 @@ name: "St. Chrysogonus, Martyr"
rank: simplex rank: simplex
common: common-of-a-martyr common: common-of-a-martyr
propers: "st-chrysogonus" propers: "st-chrysogonus"
# Benedictus antiphon live-verified (2026-08, Lauds query, 2027-11-24, winner
# outright) as byte-identical to common-of-a-martyr.yml's own.
benedictusCommon: common-of-a-martyr
+3
View File
@@ -20,3 +20,6 @@ name: "St. Donatus, Bishop and Martyr"
rank: simplex rank: simplex
common: common-of-a-martyr-bishop common: common-of-a-martyr-bishop
propers: "st-donatus" propers: "st-donatus"
# Benedictus antiphon live-verified (2026-08, Lauds query, 2026-08-07, winner
# outright) as byte-identical to common-of-a-martyr.yml's own.
benedictusCommon: common-of-a-martyr
@@ -8,3 +8,6 @@ name: "Vigil of St. Lawrence"
rank: vigil rank: vigil
common: common-of-a-vigil common: common-of-a-vigil
propers: "vigil-of-st-lawrence" propers: "vigil-of-st-lawrence"
# Benedictus antiphon live-verified (2026-08, Lauds query, 2025-08-09, winner
# outright) as byte-identical to common-of-a-vigil.yml's own.
benedictusCommon: common-of-a-vigil
@@ -0,0 +1,15 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
# live query (2025-11-13, winner outright) -- the Benedictus antiphon.
# Own proper text, not shared with any other saint on this app's
# calendar. No embedded "*": this feast is Duplex II. classis (double-
# or-higher), so its own query shows the antiphon in full at both open
# and close with no separate incipit marker, and there's no lower-rank
# saint sharing this text to reconstruct the split from (same situation
# as benedictus-antiphon-common-of-a-dedication.yml).
id: all-saints-of-the-benedictine-order-antiphon
text:
la: "Vos qui reliquístis ómnia, et secúti estis me, céntuplum accipiétis, et vitam ætérnam possidébitis."
en: "You who left all and follow me, you will receive hundredfolds, and you will have eternal life."
status:
la: verified
en: verified
@@ -0,0 +1,11 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
# live query (2026-01-28, winner outright) -- the Benedictus antiphon.
# Own proper text (her second, "secundo" commemoration, distinct from
# St. Agnes's own Jan 21 feast).
id: st-agnes-secunda-antiphon
text:
la: "Ecce, quod concupívi, * jam vídeo: quod sperávi, jam téneo: ipsi sum juncta in cælis, quem in terris pósita, tota devotióne diléxi."
en: "Behold, now I see that * which I have desired; now I possess that for which I have hoped; now am I united in heaven to Him Whom I loved with my whole heart upon earth."
status:
la: verified
en: verified
@@ -0,0 +1,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
# live query (2025-03-21, winner outright) -- the Benedictus antiphon.
# The source's own English page didn't render a translation (silently
# duplicated the Latin, same gap as st-scholastica-antiphon.yml);
# translated here in the same register as the rest of this project's
# antiphons, so marked `draft` rather than `verified`. No embedded "*":
# this feast is Duplex I. classis (double-or-higher), so its own query
# shows the antiphon in full at both open and close with no separate
# incipit marker, and there's no lower-rank saint sharing this text to
# reconstruct the split from.
id: st-benedict-antiphon
text:
la: "Sanctíssime Conféssor Dómini, Monachórum pater et dux, Benedícte, intercéde pro nostra omniúmque salúte."
en: "Most holy Confessor of the Lord, father and leader of monks, Benedict, intercede for our salvation and that of all."
status:
la: verified
en: draft
@@ -0,0 +1,14 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
# live query (2026-06-23, winner outright) -- the Benedictus antiphon.
# Own proper text, deliberately echoing the Benedictus canticle's own
# opening words ("Erexit cornu salutis nobis in domo David pueri sui") —
# a fitting antiphon for the Vigil of the saint whose own father, St.
# Zechariah, first spoke that canticle (Luke 1:69) — not shared with
# common-of-a-vigil.yml's other vigils.
id: vigil-of-st-john-the-baptist-antiphon
text:
la: "Eréxit nobis * Dóminus cornu salútis in domo David púeri sui."
en: "The Lord has raised up * a horn of salvation for us in the house of David his servant."
status:
la: verified
en: verified
+25
View File
@@ -71,6 +71,31 @@ describe('minorHoursCommon/benedictusCommon fallback (2026-08, the 94 propers:nu
}); });
}); });
describe('the 26 propers-set saints from the 94-saint batch (2026-08)', () => {
it('a saint with a genuine proper collect can still share its Benedictus antiphon with a Common category (benedictusCommon)', () => {
// Ss. Dionysius and Companions -- own proper collect (propers is
// set), but live-verified byte-identical to common-of-several-
// martyrs's Benedictus antiphon, so getBenedictusAntiphon falls
// through to benedictusCommon rather than a nonexistent
// ss-dionysius-and-companions-antiphon.yml.
const day = resolveDay('2025-10-09');
expect(day.winner).toMatchObject({ kind: 'sanctoral', id: 'ss-dionysius-and-companions' });
expect(getBenedictusAntiphon(day).status).toEqual({ la: 'verified', en: 'verified' });
});
it("a saint with genuinely unique Benedictus antiphon text resolves its own proper file, not a Common", () => {
// St. Benedict -- own proper text ("Sanctíssime Conféssor Dómini...",
// st-benedict-antiphon.yml), sourced from the source's Latin-only
// page (no English rendering, same gap as St. Scholastica's), so
// English is a translation and stays `draft`.
const day = resolveDay('2025-03-21');
expect(day.winner).toMatchObject({ kind: 'sanctoral', id: 'st-benedict' });
const ben = getBenedictusAntiphon(day);
expect(ben.status).toEqual({ la: 'verified', en: 'draft' });
expect(ben.text.la).toContain('Benedícte');
});
});
describe('splitNamedAntiphon', () => { describe('splitNamedAntiphon', () => {
it('carries a verified status through to both the incipit and full forms', () => { it('carries a verified status through to both the incipit and full forms', () => {
const { incipit, full } = splitNamedAntiphon({ const { incipit, full } = splitNamedAntiphon({