Author Matins invitatory-antiphon Common tier for Confessors/Martyrs/Virgins/Dedication
Deploy / deploy (push) Successful in 1m23s

resolveMatinsInvitatoryText's Common-category tier existed but only had
Common-of-an-Apostle authored, so every other Common category fell all
the way through to the plain ferial invitatory antiphon regardless of
rank (e.g. St. Joseph Calasanctius, 2026-08-27, Confessor). Adds the
Confessor family (5 duplicated ids, matching the hymn's own precedent),
Martyr family (2 ids + Several Martyrs), Virgin family (2 ids), and
Dedication — all read directly from the reference engine's own
Commune/C-number [Invit] lines. Holy Women (C7) needs a name-template
mechanism this project doesn't have yet for invitatory antiphons, and
General/All Saints (C9) turned out to be a mislabeled backlog item (C9 is
actually the Office of the Dead) — both logged in TODO.md instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012AVXS5iTrk3c2anSYVGwxS
This commit is contained in:
2026-08-27 08:53:33 -04:00
parent 63463c696f
commit f55cd46272
13 changed files with 178 additions and 8 deletions
+26 -6
View File
@@ -2753,12 +2753,32 @@ directly from the reference engine's `Commune/C1.txt` (Latin + English both pres
Live-verified: St. Bartholomew (2026-08-24) and St. Andrew (2026-11-30) both now resolve to this Live-verified: St. Bartholomew (2026-08-24) and St. Andrew (2026-11-30) both now resolve to this
Common's text for hymn + invitatory. Common's text for hymn + invitatory.
**Not authored, logged as explicit backlog**, same incremental-content pattern as everywhere **Invitatory-antiphon Common tier filled in for Confessors/Martyrs/Virgins/Dedication
else in this project: (2026-08-27)**: `matins-invitatory-common-of-a-confessor{,-bishop,-not-bishop,-doctor,-pope}.yml`
- Hymn + invitatory Common tiers for: Martyrs (C2), Virgins (C6), Holy Women (Commune/C4's own `[Invit]`, "Regem Confessórum Dóminum" — C4a/C4b/C5 all inherit it verbatim,
(C7), Dedication (C8), General/All Saints (C9) — all confirmed to have their own distinct so duplicated under all 5 confessor ids, same convention as the hymn), `matins-invitatory-
`[Invit]`/`[Hymnus Matutinum]` text in the reference source, not yet transcribed. Confessors common-of-a-martyr{,-bishop}.yml` + `matins-invitatory-common-of-several-martyrs.yml`
(C4) hymn done 2026-08-25, see below — invitatory antiphon still open. (Commune/C2's own `[Invit]`, "Regem Mártyrum Dóminum" — C3's own `[Invit]` is a literal
`@Commune/C2` redirect), `matins-invitatory-common-of-a-virgin{,-martyr}.yml` (Commune/C6's own
`[Invit]`, "Regem Vírginum Dóminum" — C6a inherits verbatim), and `matins-invitatory-common-of-
a-dedication.yml` (Commune/C8's own `[Invit]`, "Domum Dei decet sanctitúdo"). Directly fixed
St. Joseph Calasanctius (2026-08-27, Confessor, duplex) falling all the way to the plain
ferial invitatory antiphon.
**Still not authored, logged as explicit backlog**, same incremental-content pattern as
everywhere else in this project:
- Holy Women (C7) invitatory antiphon — Commune/C7.txt's own `[Invit]` ("Laudémus Deum nostrum
* In confessióne beátæ N..") is a name-template text (a literal "N." placeholder, like
`collectCommon`'s `{N}` substitution elsewhere) — this project's invitatory-antiphon files
have no substitution mechanism built yet, so authoring this one needs that groundwork first,
not just a transcription. Only 3 saints use `common-of-a-holy-woman`.
- General/All Saints (C9) invitatory antiphon — re-investigated 2026-08-27: the reference
engine's own `Commune/C9.txt` is actually the Office of the Dead ("Regem, cui ómnia vivunt"),
not a General/All-Saints common — this backlog item's own C-number was mislabeled at the time
it was written. No saint's `common:` field maps to a C9-shaped category currently, so there's
nothing to author against yet; revisit if that changes.
- Hymn Common tiers for: Martyrs (C2), Virgins (C6), Dedication (C8) — invitatory done above,
hymn still open for these three (Confessors' hymn was done 2026-08-25, see above).
- Seasonal invitatory-antiphon tier content (Advent/Lent/Passiontide/Paschaltide/Christmastide) - Seasonal invitatory-antiphon tier content (Advent/Lent/Passiontide/Paschaltide/Christmastide)
— mechanism now exists (same `seasonalOfficeSuffix`-keyed lookup the hymn's own long-standing — mechanism now exists (same `seasonalOfficeSuffix`-keyed lookup the hymn's own long-standing
seasonal tier already uses), but no seasonal invitatory file is authored yet; every season seasonal tier already uses), but no seasonal invitatory file is authored yet; every season
@@ -0,0 +1,11 @@
# Same Common-of-a-Confessor invitatory antiphon as
# matins-invitatory-common-of-a-confessor.yml — see that file's header
# for full sourcing detail (Commune/C4.txt's own [Invit], inherited
# verbatim by C4a/C4b/C5 alike).
id: matins-invitatory-common-of-a-confessor-bishop
text:
la: "Regem Confessórum Dóminum, * Veníte, adorémus."
en: "The Lord, the King of Confessors, * O come, let us worship."
status:
la: verified
en: verified
@@ -0,0 +1,11 @@
# Same Common-of-a-Confessor invitatory antiphon as
# matins-invitatory-common-of-a-confessor.yml — see that file's header
# for full sourcing detail (Commune/C4.txt's own [Invit], inherited
# verbatim by C4a/C4b/C5 alike; C4a is the Doctor Common specifically).
id: matins-invitatory-common-of-a-confessor-doctor
text:
la: "Regem Confessórum Dóminum, * Veníte, adorémus."
en: "The Lord, the King of Confessors, * O come, let us worship."
status:
la: verified
en: verified
@@ -0,0 +1,11 @@
# Same Common-of-a-Confessor invitatory antiphon as
# matins-invitatory-common-of-a-confessor.yml — see that file's header
# for full sourcing detail (Commune/C4.txt's own [Invit], inherited
# verbatim by C4a/C4b/C5 alike).
id: matins-invitatory-common-of-a-confessor-not-bishop
text:
la: "Regem Confessórum Dóminum, * Veníte, adorémus."
en: "The Lord, the King of Confessors, * O come, let us worship."
status:
la: verified
en: verified
@@ -0,0 +1,12 @@
# Same Common-of-a-Confessor invitatory antiphon as
# matins-invitatory-common-of-a-confessor.yml — see that file's header
# for full sourcing detail (Commune/C4.txt's own [Invit], inherited
# verbatim by C4a/C4b/C5 alike; C4b is the Pope-Confessor Common
# specifically).
id: matins-invitatory-common-of-a-confessor-pope
text:
la: "Regem Confessórum Dóminum, * Veníte, adorémus."
en: "The Lord, the King of Confessors, * O come, let us worship."
status:
la: verified
en: verified
@@ -0,0 +1,19 @@
# The Common-of-a-Confessor's own invitatory antiphon ("Regem Confessórum
# Dóminum" / "The Lord, the King of Confessors"), read from the reference
# engine's own Commune/C4.txt [Invit] line (both languages) — C4a
# (Doctor) and C4b (Pope-Confessor) both inherit this verbatim (`@Commune/
# C4`, no own [Invit]), and C5 (Confessor Not a Bishop) does too, matching
# this Common category's existing hymn precedent (matins-hymn-common-of-a-
# confessor.yml and its -bishop/-not-bishop/-doctor/-pope siblings all
# share one text the same way). Duplicated under all 5 confessor ids
# rather than aliased, per this project's established convention for this
# category. Any winning confessor with no proper invitatory antiphon of
# his own authored falls to this Common tier
# (hours/matins.ts's resolveMatinsInvitatoryText).
id: matins-invitatory-common-of-a-confessor
text:
la: "Regem Confessórum Dóminum, * Veníte, adorémus."
en: "The Lord, the King of Confessors, * O come, let us worship."
status:
la: verified
en: verified
@@ -0,0 +1,13 @@
# The Common of the Dedication of a Church's own invitatory antiphon
# ("Domum Dei decet sanctitúdo" / "Holiness becometh the house of God"),
# read from the reference engine's own Commune/C8.txt [Invit] line (both
# languages). Any winning dedication feast with no proper invitatory
# antiphon of its own authored falls to this Common tier
# (hours/matins.ts's resolveMatinsInvitatoryText).
id: matins-invitatory-common-of-a-dedication
text:
la: "Domum Dei decet sanctitúdo: * Sponsum ejus Christum adorémus in ea."
en: "Holiness becometh the house of God. * In her let us worship her Bridegroom, even Christ."
status:
la: verified
en: verified
@@ -0,0 +1,10 @@
# Same Common-of-a-Martyr invitatory antiphon as
# matins-invitatory-common-of-a-martyr.yml — see that file's header for
# full sourcing detail.
id: matins-invitatory-common-of-a-martyr-bishop
text:
la: "Regem Mártyrum Dóminum, * Veníte, adorémus."
en: "The Lord, the King of Martyrs, * O come, let us worship."
status:
la: verified
en: verified
@@ -0,0 +1,19 @@
# The Common-of-a-Martyr's own invitatory antiphon ("Regem Mártyrum
# Dóminum" / "The Lord, the King of Martyrs"), read from the reference
# engine's own Commune/C2.txt [Invit] line (both languages) — C3 (Several
# Martyrs) inherits this verbatim (`[Invit]` line is a literal
# `@Commune/C2` redirect, no own text), matching this Common's own
# Matins psalmody precedent (matins-psalmody-overrides.ts's own
# Common-of-a-Martyr-Bishop-redirects-to-Common-of-a-Martyr note).
# Duplicated under common-of-a-martyr and common-of-a-martyr-bishop
# (both real SaintRecord.common ids in use) rather than aliased, per this
# project's established convention. Any winning martyr with no proper
# invitatory antiphon of his own authored falls to this Common tier
# (hours/matins.ts's resolveMatinsInvitatoryText).
id: matins-invitatory-common-of-a-martyr
text:
la: "Regem Mártyrum Dóminum, * Veníte, adorémus."
en: "The Lord, the King of Martyrs, * O come, let us worship."
status:
la: verified
en: verified
@@ -0,0 +1,10 @@
# Same Common-of-a-Virgin invitatory antiphon as
# matins-invitatory-common-of-a-virgin.yml — see that file's header for
# full sourcing detail.
id: matins-invitatory-common-of-a-virgin-martyr
text:
la: "Regem Vírginum Dóminum, * Veníte, adorémus."
en: "The Lord, the King of Virgins, * O come, let us worship."
status:
la: verified
en: verified
@@ -0,0 +1,18 @@
# The Common-of-a-Virgin's own invitatory antiphon ("Regem Vírginum
# Dóminum" / "The Lord, the King of Virgins"), read from the reference
# engine's own Commune/C6.txt [Invit] line (both languages) — C6a
# (Virgin-Martyr) inherits this verbatim (`@Commune/C6`, no own [Invit]),
# matching this Common's own Matins hymn precedent
# (matins-hymn-common-of-a-virgin.yml / matins-hymn-common-of-a-virgin-
# martyr.yml already share one text the same way). Duplicated under both
# ids rather than aliased, per this project's established convention.
# Any winning virgin with no proper invitatory antiphon of her own
# authored falls to this Common tier
# (hours/matins.ts's resolveMatinsInvitatoryText).
id: matins-invitatory-common-of-a-virgin
text:
la: "Regem Vírginum Dóminum, * Veníte, adorémus."
en: "The Lord, the King of Virgins, * O come, let us worship."
status:
la: verified
en: verified
@@ -0,0 +1,11 @@
# Same Common-of-a-Martyr invitatory antiphon as
# matins-invitatory-common-of-a-martyr.yml — Commune/C3.txt's own
# [Invit] is a literal `@Commune/C2` redirect (no distinct text of its
# own for Several Martyrs).
id: matins-invitatory-common-of-several-martyrs
text:
la: "Regem Mártyrum Dóminum, * Veníte, adorémus."
en: "The Lord, the King of Martyrs, * O come, let us worship."
status:
la: verified
en: verified
+7 -2
View File
@@ -585,8 +585,13 @@ describe('resolveOrdo("matins", ...) invitatory antiphon doubling by rank', () =
return invitatoryPsalm?.antiphon?.text.la; return invitatoryPsalm?.antiphon?.text.la;
} }
it('a Duplex+ weekday winner opens with the FULL (not incipit-only) invitatory antiphon (St. Lawrence, 2026-08-17: ferial text, no proper/Common of his own; St. Bartholomew, duplex-2-classis, 2026-08-24: Common-of-an-Apostle text)', () => { it('a Duplex+ weekday winner opens with the FULL (not incipit-only) invitatory antiphon (St. Lawrence, 2026-08-17: Common-of-a-Martyr text, no proper of his own; St. Bartholomew, duplex-2-classis, 2026-08-24: Common-of-an-Apostle text)', () => {
expect(openingAntiphonLatin('2026-08-17')).toContain('Exsultémus'); // St. Lawrence has his own full proper Matins psalmody
// (matins-psalmody-overrides/saints/st-lawrence.yml) but no proper
// invitatory antiphon of his own -- resolveMatinsInvitatoryText falls
// to his common-of-a-martyr Common tier (matins-invitatory-common-of-
// a-martyr.yml, authored 2026-08-27), not the plain ferial default.
expect(openingAntiphonLatin('2026-08-17')).toContain('Regem Mártyrum Dóminum, * Veníte');
expect(openingAntiphonLatin('2026-08-24')).toContain('Regem Apostolórum Dóminum, * Veníte'); expect(openingAntiphonLatin('2026-08-24')).toContain('Regem Apostolórum Dóminum, * Veníte');
}); });