hours: build Terce, Sext, and None
Deploy / deploy (push) Successful in 39s

Three separate resolver files (terce.ts/sext.ts/none.ts), not a shared
little-hour module — they're structurally identical but kept independent
by choice. Ordo verified against Divinum Officium (Monastic Tridentinum
1617): opening versicle, self-contained hymn, one antiphon framing three
psalms (no closing repeat, unlike Prime), a capitulum with its own
embedded short versicle/response, the day's own collect, and a closing
identical across all three hours.

Also fills in psalter-distribution.yml's previously-missing Sunday/
Monday/Tuesday psalm entries (Ps 118 sections for Sunday/Monday; Tuesday
turns out to share Wednesday/Thursday's native gradual-psalm set, not a
distinct one). Friday/Saturday's antiphons are derived from each day's
first psalm rather than reusing the native gradual antiphons, since
those two days already use a redistributed, non-native psalm set.

hours/types.ts gains a 'day-collect' part kind — the first ordo to use
the day's own Proper collect rather than a fixed text.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-10 13:51:08 -04:00
parent 7a932b40be
commit 813d173f5c
20 changed files with 526 additions and 29 deletions
+19
View File
@@ -0,0 +1,19 @@
# See terce-antiphons.yml for the full explanation of this table's shape,
# sourcing, and the Friday/Saturday derivation caveat.
sunday:
la: "Allelúja."
en: "Alleluia."
monday:
la: "Fiat manus tua."
en: "Let thy hand be with me to save me."
tuesday: &gradual-none-ant
la: "Beáti omnes."
en: "Blessed are all they."
wednesday: *gradual-none-ant
thursday: *gradual-none-ant
friday:
la: "Si vere útique justítiam loquímini."
en: "If in very deed you speak justice."
saturday:
la: "Dóminus regnávit."
en: "The Lord hath reigned."
+16
View File
@@ -0,0 +1,16 @@
# See terce.yml for the full explanation of this ordo's structure and
# deliberate deviations — None is identical in shape, only its hymn,
# antiphon/psalms, and capitulum differ.
id: none
parts:
- kind: opening-versicle
- kind: hymn
textRef: { source: common, id: none-hymn }
- kind: variable
resolve: by-weekday
- kind: chapter
textRef: { source: common, id: none-capitulum-per-annum }
- kind: day-collect
- kind: preces
textRef: { source: common, id: little-hour-conclusio }
label: Conclusion
+19
View File
@@ -0,0 +1,19 @@
# See terce-antiphons.yml for the full explanation of this table's shape,
# sourcing, and the Friday/Saturday derivation caveat.
sunday:
la: "Allelúja."
en: "Alleluia."
monday:
la: "Áspice in me."
en: "Look upon me."
tuesday: &gradual-sext-ant
la: "Qui hábitas."
en: "Who dwellest."
wednesday: *gradual-sext-ant
thursday: *gradual-sext-ant
friday:
la: "Quid gloriáris in malítia."
en: "Why dost thou glory in malice."
saturday:
la: "Fundaménta ejus in móntibus sanctis."
en: "The foundations thereof are in the holy mountains."
+16
View File
@@ -0,0 +1,16 @@
# See terce.yml for the full explanation of this ordo's structure and
# deliberate deviations — Sext is identical in shape, only its hymn,
# antiphon/psalms, and capitulum differ.
id: sext
parts:
- kind: opening-versicle
- kind: hymn
textRef: { source: common, id: sext-hymn }
- kind: variable
resolve: by-weekday
- kind: chapter
textRef: { source: common, id: sext-capitulum-per-annum }
- kind: day-collect
- kind: preces
textRef: { source: common, id: little-hour-conclusio }
label: Conclusion
+38
View File
@@ -0,0 +1,38 @@
# One antiphon per weekday, framing that day's whole psalm group (see
# hours/terce.ts and psalter/distribution.ts's 'terce' table) — same shape
# and convention as data/hours/prime-antiphons.yml (inline text, no
# separate common-propers id, incipit/full split via an embedded "*" where
# the source has one). None of these happen to have a "*" — each is a
# short single-clause antiphon and splitAntiphon() already degrades
# gracefully (incipit == full) when there isn't one.
#
# Verified against Divinum Officium (Monastic Tridentinum 1617):
# - sunday/monday/tuesday: clean per-annum runs with no sanctoral
# override (2026-08-09 Sun, 2026-08-31 Mon, 2026-10-13 Tue).
# - wednesday/thursday: share Tuesday's antiphon — same native psalms
# (119-121), confirmed identical across all three.
# - friday/saturday: these two days' psalms were editorially
# redistributed (see psalter-distribution.yml's long comment on
# 'terce'), so there's no real historical antiphon for this specific
# grouping. Per explicit decision, each is instead derived from the
# opening phrase of that day's first psalm (Ps 41 for Friday, Ps 69 for
# Saturday) — editorial, not independently verified against the
# reference engine as a real antiphon, same caveat as the
# redistribution itself.
sunday:
la: "Allelúja."
en: "Alleluia."
monday:
la: "Ádjuva me."
en: "Help me."
tuesday: &gradual-terce-ant
la: "Clamávi."
en: "I cried unto the Lord."
wednesday: *gradual-terce-ant
thursday: *gradual-terce-ant
friday:
la: "Quemádmodum desíderat cervus."
en: "As the hart panteth."
saturday:
la: "Deus, in adjutórium meum inténde."
en: "O God, come to my assistance."
+29
View File
@@ -0,0 +1,29 @@
# Ordo verified against Divinum Officium (Monastic Tridentinum 1617), clean
# per-annum runs with no sanctoral override (2026-08-09 Sun, 2026-08-31 Mon,
# 2026-10-13 Tue) — see src/hours/terce.ts for how each part resolves.
#
# Deliberately deviates from that verified source in one place, matching
# Prime's own precedent: the opening Pater/Ave (said silently before "Deus
# in adjutórium") is dropped, to keep the hour shorter.
#
# Real structure, confirmed directly against the engine: opening versicle,
# hymn (self-contained, no seasonal doxology swap — see terce-hymn.yml),
# one antiphon framing all three psalms, capitulum with its own embedded
# short versicle/response (*not* a separate elaborate responsory the way
# Prime's chapter-responsory.ts adds one — Monastic Terce doesn't have
# one), the day's own collect, and a closing that's identical across all
# three Little Hours (see little-hour-conclusio.yml). No Preces, no Creed —
# real Monastic Terce/Sext/None have neither.
id: terce
parts:
- kind: opening-versicle
- kind: hymn
textRef: { source: common, id: terce-hymn }
- kind: variable
resolve: by-weekday
- kind: chapter
textRef: { source: common, id: terce-capitulum-per-annum }
- kind: day-collect
- kind: preces
textRef: { source: common, id: little-hour-conclusio }
label: Conclusion