compline: build the full hour, sharing Prime's resolver helpers
Deploy / deploy (push) Successful in 38s
Deploy / deploy (push) Successful in 38s
Ordo is Monastic 1617 as a base, with deliberate Tridentine 1906 additions: the "In manus tuas" short responsory, the Nunc Dimittis with its "Salva nos" antiphon, the fuller Preces (Monastic's own is shorter), and Lent's "Christe, qui lux es et dies" hymn replacement (English translation marked draft, pending a real historical one). Psalms 4, 90, 133 are fixed daily with real verified text, unlike Prime's weekday-rotated psalms. The closing Marian antiphon now picks Alma Redemptoris Mater / Ave Regina Caelorum / Regina Caeli / Salve Regina by real season, using the calendar work from the previous commit — except Ave Regina Caelorum's own window (Candlemas through the day before Maundy Thursday) doesn't align to any single season value, so that one case checks the real date directly instead of going through the by-season table. resolve-common.ts extracts the resolve/status/doxology/antiphon helpers Prime already had into something Compline can share; a few propers files lose their "prime-" prefix now that both hours use them.
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# Ordo verified against Divinum Officium (Monastic Tridentinum 1617 *and*
|
||||
# Tridentine 1906), 2026-08-25 runs — see src/hours/compline.ts for how
|
||||
# each part resolves.
|
||||
#
|
||||
# Base is Monastic 1617, per explicit choice, with several deliberate
|
||||
# additions from Tridentine 1906 (Monastic Compline has none of these):
|
||||
# - The "In manus tuas" short responsory, right after the capitulum.
|
||||
# - The Nunc Dimittis, framed by its "Salva nos" antiphon, right after
|
||||
# the responsory's versicle.
|
||||
# - The fuller Tridentine Preces, in place of Monastic's own shorter form
|
||||
# (which drops the "Benedíctus es, Dómine..." triple exchange and the
|
||||
# "Miserére nostri, Dómine.../Fiat misericórdia..." exchange — both
|
||||
# marked "(sed rubrica ^Monastic omittitur)" in the source). Compline
|
||||
# has no separate ferial/Sunday Preces text the way Prime does — one
|
||||
# form, gated only by omitOnDouble (see calendar/isDoubleOrHigher).
|
||||
# - Lent's distinct hymn replacement ("Christe, qui lux es et dies") —
|
||||
# see hours/compline.ts's 'hymn' case for a caveat on how confident to
|
||||
# be that this actually triggers automatically in real practice.
|
||||
#
|
||||
# Unlike Prime, Compline's psalms (4, 90, 133) are fixed every day — no
|
||||
# weekday rotation — and have no antiphon of their own at all in ferial use.
|
||||
# The capitulum and Preces are likewise not split Sunday-vs-ferial.
|
||||
#
|
||||
# The closing Marian antiphon is genuinely seasonal in real practice (Alma
|
||||
# Redemptoris Mater / Ave Regina Caelorum / Regina Caeli / Salve Regina) —
|
||||
# see hours/marian-antiphon.ts.
|
||||
id: compline
|
||||
parts:
|
||||
- kind: preces
|
||||
textRef: { source: common, id: compline-incipit }
|
||||
- kind: lesson
|
||||
textRef: { source: common, id: compline-lectio-brevis }
|
||||
label: Short Reading
|
||||
- kind: preces
|
||||
textRef: { source: common, id: lesson-close }
|
||||
- kind: preces
|
||||
textRef: { source: common, id: compline-confiteor }
|
||||
- kind: opening-versicle
|
||||
- kind: psalm
|
||||
psalmNumber: 4
|
||||
- kind: psalm
|
||||
psalmNumber: 90
|
||||
- kind: psalm
|
||||
psalmNumber: 133
|
||||
- kind: hymn
|
||||
textRef: { source: common, id: compline-hymn }
|
||||
- kind: chapter
|
||||
textRef: { source: common, id: compline-capitulum }
|
||||
- kind: responsory
|
||||
textRef: { source: common, id: compline-responsory }
|
||||
- kind: versicle
|
||||
textRef: { source: common, id: compline-versicle }
|
||||
- kind: nunc-dimittis
|
||||
- kind: preces
|
||||
textRef: { source: common, id: compline-preces }
|
||||
omitOnDouble: true
|
||||
- kind: prayer
|
||||
textRef: { source: common, id: compline-collect }
|
||||
- kind: preces
|
||||
textRef: { source: common, id: compline-conclusio }
|
||||
label: Conclusion
|
||||
- kind: marian-antiphon
|
||||
@@ -1,9 +1,11 @@
|
||||
# Which common proper supplies the hymn's final doxology stanza, by season.
|
||||
# Advent has no special doxology in the source data — it falls through to
|
||||
# perAnnum, same as any season not listed here. Same PLACEHOLDER caveat as
|
||||
# Shared across every hymn (Divinum Officium's own Doxologies.txt table is
|
||||
# hymn-agnostic) — each hymn's own per-annum default is supplied by the
|
||||
# caller instead (see hours/hymn-doxology.ts). Advent has no special
|
||||
# doxology in the source data — it falls through to the caller's per-annum
|
||||
# default, same as any season not listed here. Same PLACEHOLDER caveat as
|
||||
# prime-chapter-responsory-by-season.yml: real season resolution doesn't
|
||||
# exist until milestone 4, so this can't be exercised by real data yet.
|
||||
perAnnum: hymn-doxology-per-annum
|
||||
bySeason:
|
||||
christmastide: hymn-doxology-nat
|
||||
epiphanytide: hymn-doxology-epi
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Which common proper supplies Compline's closing Marian antiphon, by
|
||||
# season. Only 4 real forms exist regardless of how finely other mechanisms
|
||||
# (chapter responsory, hymn doxology) slice the year — Ascensiontide and
|
||||
# Pentecost don't get their own Marian antiphon, they're still "Paschalis"
|
||||
# (Regina Caeli); Epiphanytide is still "Nativiti" (Alma Redemptoris Mater).
|
||||
#
|
||||
# Ave Regina Caelorum's real window (Candlemas, Feb 2, through Wednesday of
|
||||
# Holy Week) doesn't line up with any single `season` value — it starts
|
||||
# mid-Epiphanytide and ends mid-Lent or mid-Passiontide depending on the
|
||||
# year, cutting across three of the mutually-exclusive season buckets used
|
||||
# everywhere else in this app. So it's NOT a key in this table at all;
|
||||
# hours/marian-antiphon.ts checks that window directly against the real
|
||||
# date before ever consulting bySeason below. See calendar/types.ts's
|
||||
# Season doc comment for the general overlapping-windows problem this is
|
||||
# one instance of.
|
||||
perAnnum: marian-antiphon-salve-regina
|
||||
bySeason:
|
||||
advent: marian-antiphon-alma-redemptoris-advent
|
||||
christmastide: marian-antiphon-alma-redemptoris-nativity
|
||||
epiphanytide: marian-antiphon-alma-redemptoris-nativity
|
||||
eastertide: marian-antiphon-regina-caeli
|
||||
ascensiontide: marian-antiphon-regina-caeli
|
||||
pentecost: marian-antiphon-regina-caeli
|
||||
@@ -3,8 +3,8 @@
|
||||
# drop the Alleluia — same PLACEHOLDER caveat as the other by-season
|
||||
# tables: real season resolution doesn't exist until milestone 4, so this
|
||||
# always falls through to perAnnum today.
|
||||
perAnnum: prime-opening-alleluia
|
||||
perAnnum: opening-alleluia
|
||||
bySeason:
|
||||
septuagesima: prime-opening-laus-tibi
|
||||
lent: prime-opening-laus-tibi
|
||||
passiontide: prime-opening-laus-tibi
|
||||
septuagesima: opening-laus-tibi
|
||||
lent: opening-laus-tibi
|
||||
passiontide: opening-laus-tibi
|
||||
@@ -47,6 +47,7 @@ parts:
|
||||
textRef: { source: common, id: prime-versicle }
|
||||
- kind: by-day-kind
|
||||
resolvedKind: preces
|
||||
omitOnDouble: true
|
||||
sundayOrFeastRef: { source: common, id: prime-preces-dominicales }
|
||||
ferialRef: { source: common, id: prime-preces-feriales }
|
||||
- kind: prayer
|
||||
@@ -59,7 +60,7 @@ parts:
|
||||
textRef: { source: common, id: prime-lectio-brevis-per-annum }
|
||||
label: Short Reading
|
||||
- kind: preces
|
||||
textRef: { source: common, id: prime-lesson-close }
|
||||
textRef: { source: common, id: lesson-close }
|
||||
- kind: preces
|
||||
textRef: { source: common, id: prime-conclusio }
|
||||
label: Conclusion
|
||||
|
||||
Reference in New Issue
Block a user