Build the Vespers ordo: mechanism, weekday content, seasonal content

Wires resolveOrdo('vespers', ...) end to end: opening versicle,
weekday psalmody (4 groups, handling the joined Ps 115+116 and the
split Ps 138/143 via a PsalmRef-like shape), the chapter/responsory/
hymn/versicle office bundle, Magnificat, day-collects — reusing
resolveEveningDay so First/Second Vespers precedence and the cross-day
commemoration (both added in the previous commit) apply automatically
— and a closing that reuses Lauds' own conclusio, since no distinct
"Vespera" version of that exact text turned up in the source.

getMagnificatAntiphon mirrors getBenedictusAntiphon's saint/temporal-id
lookup order, but also falls back to real content Benedictus has no
equivalent of: the classic ferial set that quotes the Magnificat's own
text in sequence across the week, with the correct Monastic-rubric
variant picked for Tue/Thu/Fri/Sat (two of those needed a fresh
translation where the Monastic Latin diverges from the given English
in content, not just wording).

Also includes Vespers' own seasonal content (Advent/Lent/Passiontide/
Paschaltide chapter+responsory+hymn+versicle), transcribed from the
same source blocks as the weekday content, with the Monastic-specific
hymn variants hand-applied from the source's substitution notation
against each base Roman text (one transcription slip caught and fixed
mid-pass: the Passiontide hymn's closing lines had been copied from
the Roman text instead of the Monastic one actually being
transcribed). Passiontide's own responsory/hymn correctly omit the
Gloria Patri, matching real rubric and the source data as given.

All weekday/seasonal content marked `draft`, not `verified` — read
directly from the reference source, not cross-checked against a live
rendering per day the way the psalmody was.

Six other hours' resolvePart switches needed the three new HourPart
kinds ('vespers-psalmody', 'vespers-office', 'magnificat') added to
their exhaustive not-used lists so they still typecheck; three
pre-existing tests assumed Vespers was still "coming soon" and are
updated to exercise Matins (still the genuine stub) instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-13 20:14:19 -04:00
parent 979bbe6aa4
commit de83786793
45 changed files with 1649 additions and 12 deletions
@@ -0,0 +1,64 @@
# Sourced from Divinum Officium's Monastic block ("[HymnusM Day2 Vespera]",
# Psalterium/Special/Major Special.txt): four word substitutions against
# the base "[Hymnus Day2 Vespera]" text ("alme" -> "ingens"; "séparans" ->
# "éruens"; "dedísti" -> "dedíst[i]" — the source's own bracket notation,
# kept as-is; "ictum" -> "actum"), applied by hand here — not
# live-query-verified (see TODO.md). English has no separate Monastic
# variant in the source.
id: vespers-hymn-tuesday
text:
la: |
Tellúris ingens Cónditor,
Mundi solum qui éruens,
Pulsis aquæ moléstiis,
Terram dedíst[i] immóbilem:
Ut germen aptum próferens,
Fulvis decóra flóribus,
Fecúnda fructu sísteret,
Pastúmque gratum rédderet.
Mentis perústæ vúlnera
Munda viróre grátiæ:
Ut facta fletu díluat,
Motúsque pravos átterat.
Jussis tuis obtémperet:
Nullis malis appróximet:
Bonis repléri gáudeat,
Et mortis actum nésciat.
Præsta, Pater piíssime,
Patríque compar Únice,
Cum Spíritu Paráclito
Regnans per omne sǽculum.
Amen.
en: |
Earth's mighty Maker, whose command
Raised from the sea the solid land;
And drove each billowy heap away,
And bade the earth stand firm for aye:
That so, with flowers of golden hue,
The seeds of each it might renew;
And fruit-trees bearing fruit might yield,
And pleasant pasture of the field:
Our spirit's rankling wounds efface
With dewy freshness of thy grace:
That grief may cleanse each deed of ill,
And o'er each lust may triumph still.
Let every soul thy law obey,
And keep from every evil way;
Rejoice each promised good to win,
And flee from every mortal sin.
Hear thou our prayer, Almighty King!
Hear thou our praises, while we sing,
Adoring with the heavenly host,
The Father, Son, and Holy Ghost!
Amen.
status:
la: draft
en: draft