Compare commits

...

35 Commits

Author SHA1 Message Date
will c2a15d94dd Add ruth -- composed with no liturgical precedent at all
Deploy / deploy (push) Successful in 1m51s
User-directed: compose Ruth's own responsory from Ruth 1:16-17 ("thy
people shall be my people, and thy God my God") on the verse's own
merit. Unlike deut/rom/bar, this text has no liturgical precedent
anywhere in the reference source (no Nuptial Mass file even exists
there) -- flagged that distinction before proceeding; user confirmed
explicitly.

Since data/scripture/ruth-1.yml (the usual bulk import) carries no
accents, the Latin was hand-accented rather than transcribed, but
cross-checked word-by-word against already-accented occurrences of
the same words elsewhere in the corpus rather than guessed freehand.

66 of 72 bible-plan books now seeded. npm test (2029 passed) and
tsc --noEmit pass; live-verified through getBiblePlanReadings.
Canonical-key audit re-run, clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 22:01:15 -04:00
will 3ee87098c0 Note user's explanation for the Ezra Introit citation mismatch
Deploy / deploy (push) Successful in 1m53s
Vulgate "Esdras" numbering is genuinely ambiguous: 1/2 Esdras is
canonical Ezra/Nehemiah, but there's also a separate non-canonical
Greek "Esdras A" (the Vulgate appendix's own 3 Esdras, sometimes
itself called "1 Esdras" in Septuagint/Orthodox numbering) -- a
different text this project has never digitized. The reference
engine's own citation never disambiguates, so this can't be
confirmed, but it cleanly explains why the Pasc7-2.txt Introit's
"Esdr 2:36-37" citation doesn't match our canonical Ezra text.
Practical outcome unchanged (ezra stays unseeded), now documented
with a clear reason rather than an open mystery.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 21:51:06 -04:00
will e52c285f99 Add bar (Baruch), found in the Missa propers, not the Horas
Deploy / deploy (push) Successful in 1m54s
User pointed to missa/Latin/Tempora/Quad6-6.txt -- the Mass propers, a
directory tree this whole responsory search had never once checked
(everything so far searched horas/, the Divine Office proper). The
Easter Vigil Mass's own fourth prophecy ([Proph_Baruch3], Bar 3:9-38,
"Audi, Israel, mandata vitae") is genuine, real, accented liturgical
Latin -- just never part of Matins at all.

Composed bar the same way as deut/rom: built from that prophecy's own
climactic close ("Hic est Deus noster... Post haec in terris visus
est, et cum hominibus conversatus est" -- read at the Vigil because
early exegetes saw "seen upon earth, and conversed with men" as a
prophecy of the Incarnation).

Extended the Missa check to the other 6 already-absent books too --
genuinely zero citations anywhere. Ezra turned up one thin, ambiguous
Missa Introit citation that doesn't match its own cited verse; left
unseeded rather than force it.

65 of 72 bible-plan books now seeded -- this closes the per-book
responsory pool. npm test (2029 passed) and tsc --noEmit pass;
live-verified through getBiblePlanReadings. Canonical-key audit
re-run, clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 21:36:48 -04:00
will 2b7495fc91 Close the Matins per-book responsory pool: rom is the last book
Deploy / deploy (push) Successful in 1m53s
Composed rom from Rom 13:11-12 ("the night is past, the day is at
hand... let us cast off the works of darkness, and put on the armour
of light") -- the standing year-round ferial Lauds Capitulum, also
used at Advent I's own Capitulum. Genuine accented Vulgate/
Douay-Rheims text, never historically assembled into its own Matins
responsory, same approach as deut. User-confirmed before adding.

64 of 72 bible-plan books now seeded -- every book actually used in
the bible-plan has a real responsory, whether transcribed (62) or
composed from genuine already-liturgical text (deut, rom). The
remaining 8 have no citation anywhere in the source at all; there's
nothing further to check.

npm test (2029 passed) and tsc --noEmit pass; live-verified through
getBiblePlanReadings. Canonical-key audit re-run, clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 21:14:03 -04:00
will afa187032b Add deut, this pool's first genuine original composition
Deploy / deploy (push) Successful in 1m55s
User found a lead reading a patristic homily (English/Sancti/01-02.txt)
that quotes Deut 32:11's eagle image. Deuteronomy has no historical
Matins responsory anywhere in the reference source, so unlike every
other entry in this pool, this one is composed rather than
transcribed: a real R./V. pairing built from the Canticle of Moses'
own genuine verses (Latin/Psalterium/Psalmorum/Psalm226.txt, sung at
Lauds), verified against data/scripture/deut-32.yml to confirm the
citation is standard verse 11 and not the breviary's own internal
chant-verse-numbering (32:15-16) for the same text. Documented plainly
in the data file's own header as vu's composition, not presented as
historically attested.

63 of 72 bible-plan books now seeded. npm test (2029 passed) and
tsc --noEmit pass; live-verified through getBiblePlanReadings.
Canonical-key audit re-run, clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 20:06:48 -04:00
will d39359e5ac Carry over unreached Advent bible-plan readings into Christmastide
Deploy / deploy (push) Successful in 1m55s
Advent's own reading plan (advent-1-sunday through advent-4-saturday,
28 rows for a full 4-week Advent) is always longer than real Advent
runs. Advent's last real day is always Dec 23 (Dec 24 is the Vigil of
Christmas's own temporal id), while Advent 1 Sunday lands anywhere
from Nov 27 to Dec 3 -- even the longest possible Advent is one row
short of the full plan, and the shortest is a whole week short. Every
year, at least the plan's last row never reaches its own natural date.

Added adventCarryoverReadings to propers/bible-plan.ts: whatever
doesn't land on its own natural date now carries forward one reading
per day starting Christmas Day, pooled alongside whatever
Christmastide's own calendar-dated rows already have -- never
replacing them. This is the one place in bible-plan.ts that needs
real calendar-year awareness (calendar/temporal.ts's adventStart).

4 new tests covering the shortest (2028) and a long (2027) Advent,
pooling behavior, and the Dec-24 boundary. npm test (2029 passed) and
tsc --noEmit pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 19:17:24 -04:00
will 52052d737e Find Canticles, Leviticus, and Numbers in Sancti, not Tempora
Deploy / deploy (push) Successful in 1m51s
User pushback on Canticles being "confirmed absent" -- right instinct
to check the Commune files, which redirected productively: the same
Lectio-citation survey run against Sancti (individual saint/feast
files) rather than just Tempora found real, genuine content:

- cant: the Visitation (July 2) reads straight through the Song of
  Songs, blending it with the Visitation narrative itself.
- lev: the Purification of the BVM's own Leviticus purification-law
  reading is the feast's actual reason for being.
- num: the Exaltation of the Holy Cross's bronze-serpent/Cross
  typology (Num 21:6-9).

Re-checked the other 9 already-"confirmed absent" books against
Sancti too -- still genuinely absent, no alternate abbreviation
missed.

62 of 72 bible-plan books now seeded -- the real final count. Only
Romans and 9 books with no citation anywhere (Tempora or Sancti)
remain. npm test (2025 passed) and tsc --noEmit pass; live-verified
through getBiblePlanReadings. Canonical-key audit re-run, clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 19:03:01 -04:00
will e96d201346 Close out the Matins per-book responsory pool: 59 of 72 books
Deploy / deploy (push) Successful in 1m49s
Asked to translate the 15 remaining "real Latin, no English" books.
None needed translation: the whole post-Epiphany reading season
(Galatians/Ephesians/Philippians/Colossians/1-2 Timothy/Titus/
Philemon/2 Thessalonians) turns out to have no distinct responsory
content of its own -- every feria file references 2 Corinthians' own
week (already bilingual) by weekday position. Same for 2 Peter/2-3
John/Jude, which reference Ascension Day's own responsories (act).

Only Romans genuinely has nothing: every citing file borrows an
unrelated feast's own proper responsory (Circumcision, Christmas Day,
a January saint), never anything Romans-specific. Left unseeded --
using one would repeat the Sacred Heart/Jeremiah mismatch this pool
already avoids elsewhere.

59 of 72 books now seeded -- every book with any usable Latin content
in the source at all. The remaining 13 (Romans plus 12 books with no
citation anywhere) are the real, final gap.

Ran the full canonical-key audit again; confirmed clean. npm test
(2025 passed) and tsc --noEmit pass; live-verified through
getBiblePlanReadings.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 18:50:56 -04:00
will 1867f73080 Add R./V./repeat labels to per-book responsory pool output
Deploy / deploy (push) Successful in 1m54s
getResponsoryForBook's joinResponsory concatenated the r/v text with a
bare newline and no "R."/"V." labels at all, unlike every other
responsory source in the app (octave-readings' own responsory field,
nocturn-readings' inline responsory, and the new per-Common-category
pool) which all include the full "R. ...\n* ...\nV. ...\nR. ..."
convention. User caught this looking at the rendered Judith entry.

Fixed by computing the repeat line from the existing "*" marker
already present in the pool's r text. npm test (2025 passed) and
tsc --noEmit pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 18:44:38 -04:00
will ff87aff240 Add 1 Cor, 2 Cor, 1 Peter, 1 John; fix a repeated canonical-key bug
Deploy / deploy (push) Successful in 1m52s
Confirmed Leviticus/Numbers/Deuteronomy genuinely absent from Tempora
(precise awk-based survey, not a loose grep). Added 1cor (Maundy
Thursday's own Institution-narrative Nocturn 3), 2cor (Epiphany II
Sunday), 1pet and 1joan (Paschaltide Sunday sets already partly used
for jac/jas).

Caught a repeat of the same canonical-key mistake from the previous
commit: the jas entry should have been keyed jac (BOOK_ALIASES maps
jas->jac). Fixed, and this time audited every single key in the file
programmatically against BOOK_ALIASES rather than just the keys
touched this pass -- confirmed clean.

45 of 72 books now seeded. npm test (2025 passed) and tsc --noEmit
pass; live-verified through getBiblePlanReadings.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 18:31:13 -04:00
will c32fabb54d Add Acts, Apocalypse, James, Hebrews, and the 4 Gospels to responsory pool
Deploy / deploy (push) Successful in 1m48s
Surveyed Tempora precisely with an awk one-liner reading the line after
every [LectioN] tag (two lines deep for Gospel citations) rather than a
loose grep-for-book-prefix, which had already produced one false
positive this session.

Added act (Ascension Day's own Matins), marc (Easter Sunday's own),
heb (Good Friday's own Tenebrae), apoc (Easter III Sunday), jas
(Easter IV Sunday), and luc/matt/joan (Advent I/II/III Sundays, one
entry each). 41 of 72 bible-plan books now seeded.

Confirmed no English exists anywhere in the reference engine for
Galatians/Ephesians/Philippians/Colossians/Titus/Philemon or Romans --
real Latin exists, no bilingual source; left unseeded.

npm test (2025 passed) and tsc --noEmit pass; live-verified through
the real getBiblePlanReadings call chain (not a direct
getResponsoryForBook call, per the previous commit's lesson).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 18:20:44 -04:00
will f0b771a02a Fix real correctness bug: pool keys must match canonical book form
Deploy / deploy (push) Successful in 1m50s
bible-plan.ts normalizes a reading's book through canonicalBook()
(scripture/index.ts's BOOK_ALIASES map) before calling
getResponsoryForBook -- so the pool must be keyed by the canonical
form, not the bible-plan YAML's own raw book code. 12 of the 33 keys
seeded earlier today used the raw form and would have silently
resolved to undefined in the real app despite passing an initial
"live verification" that called getResponsoryForBook directly
(bypassing the normalization the real call site always applies).

Renamed: 1macc->1mach, 2macc->2mach, 1sam->1reg, 2sam->2reg,
1kgs->3reg, 2kgs->4reg, jdt->jdth, zeph->soph, obad->abd, jonah->jon,
hos->osee, mic->mich.

Re-verified through the actual getBiblePlanReadings call chain this
time (2026-06-04, post-pentecost-01/Thursday, "1sam 9-10" now
resolves a real responsory). npm test (2025 passed) and
tsc --noEmit pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 18:11:36 -04:00
will 3b46a18d63 Add 14 more books to Matins responsory pool, fix 2 dropped entries
Deploy / deploy (push) Successful in 1m52s
User caught jdt (Judith) listed as unseeded despite having real
responsory content directly visible in the reference source -- and
already flagged present in this same session's own citation dump,
never followed up on. Self-audit after that catch found job had also
been extracted earlier this session but never committed to the file.

Added jdt, esth, job, eccl, hab, joel, zeph, obad, jonah, mal, hos, mic,
nah, and lam (Maundy Thursday's own Tenebrae responsories). 33 of 72
bible-plan books now seeded, up from 19.

npm test (2025 passed) and tsc --noEmit pass; live-verified via
getResponsoryForBook resolving real text for every new key.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 17:43:43 -04:00
will 816dcadf0d Fix wrong book-count estimate in Matins responsory pool notes (66 -> 72)
Deploy / deploy (push) Successful in 1m52s
"~66" was an eyeballed guess from a sort|uniq -c list, never actually
counted -- and coincidentally echoes the 66-book Protestant canon count,
a bad number to leave uncorrected in a Catholic office project's own
docs. The real count (grep -c distinct `book:` values across
data/hours/bible-plan/*.yml) is 72.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 17:28:22 -04:00
will 7cee7a1e8a Fix Matins responsory extraction bug, unblock 8 more books
Deploy / deploy (push) Successful in 1m50s
The per-book pool extraction script only matched a bare [ResponsoryN]
tag, missing the reference engine's underscore-suffixed [ResponsoryN_]
template convention that holds the real text (a bare tag often just
@:-references it, alongside a Cistercian-rubric variant). This wrongly
made 1sam/2sam/1kgs/2kgs/2macc look untranslated in English.

Fixed the script and hand-followed @Tempora/X:ResponsoryN cross-file
references to add 1sam, 2sam, 1kgs, 2kgs, 2macc, zach, amos, and agg --
19 of ~66 bible-plan books now seeded (up from 11).

npm test (2025 passed) and tsc --noEmit pass; live-verified via
getResponsoryForBook resolving real text for every new key at every
pool index.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 17:13:13 -04:00
will 91dcc2c972 Seed 8 more books in the Matins per-book responsory pool
Deploy / deploy (push) Successful in 1m59s
Added exod, prov, sir, sap, tob, ezek, dan, 1macc (11 of ~66 total now
seeded), each sourced from a genuine, non-overridden reference-engine
Tempora file with real bilingual Responsory text. sir/sap and dan reuse
prov's/ezek's own entries respectively, confirmed by the reference
engine's own week files @-referencing that same pool -- real evidence
this app's loose book-level responsory match is historically authentic,
not invented.

Skipped 1sam (macro-only responsory text, not worth resolving for one
book) and 2sam/1kgs/2kgs/2macc/zach/amos/agg (real Latin but no
reference-engine English translation at all).

npm test (2025 passed) and tsc --noEmit pass; live-verified via
getResponsoryForBook resolving real text for every new key.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 16:59:50 -04:00
will a570266028 Add per-Common-category Matins responsory pool, expand per-book pool
Deploy / deploy (push) Successful in 1m52s
The per-book responsory pool (Nocturn 1 scripture readings) only had `isa`
seeded; the much bigger, previously untracked gap was that 272 of 355
nocturn-readings/*.yml files (Nocturn 2/3 patristic readings) had no
responsory at all. Added a sibling per-Common-category pool, sourced from
the reference engine's static Commune text files, covering all 19 of vu's
real `common:` category ids (several confirmed aliases of the same
underlying file). Wired into matins.ts's reading assembly as a fallback
when a reading has no proper responsory of its own. Also expanded the
per-book pool with `gen` and `jer`.

Live-verified end-to-end (St. Francis de Sales, Ss. Cornelius/Cyprian, Ss.
Euphemia/Lucy/Geminianus). npm test (2025 passed) and tsc --noEmit pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 16:47:17 -04:00
will 2a98386bdd Log the Suffragium Paschale mechanism fix in TODO.md
Deploy / deploy (push) Successful in 1m52s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 15:37:59 -04:00
will 58b201dc23 Build the Paschaltide "Suffragium Paschale" mechanism
Throughout Paschaltide (Eastertide/Ascensiontide/Pentecost), two
things happen wherever they'd otherwise show: the ordinary
5-suffrage set (Cross/BVM/Joseph/Apostles/Peace) collapses into one
alleluia-form "Suffragium Paschale" (Lauds and Vespers each have
their own distinct antiphon here, unlike the ordinary suffrages,
which share identical text at both hours), and the ferial-Preces
litany drops entirely rather than being replaced. Live-verified
against the reference source's own [Suffragium] macro directly,
byte-identical between Monastic Tridentinum 1617 and Tridentine 1906.

Exported isPaschaltide(season) from resolve-common.ts (wraps the
pre-existing PASCHALTIDE_SEASONS set). resolveSuffrages gained a
third hourId parameter to pick the right antiphon; the Preces
omission is a small new check gated on the same isFerialOrVigil
predicate that already selects the ferial litany form.

Authored lauds-suffrage-paschale.yml and vespers-suffrage-
paschale.yml -- English on the Vespers antiphon is this project's own
translation (the reference engine leaves it untranslated) and marked
draft; everything else verified.

Closes the last item in TODO.md's "Mechanism gaps" priority tier.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 15:37:53 -04:00
will b90789cab3 Log the Lent Vespers verification in TODO.md
Deploy / deploy (push) Successful in 1m50s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 15:12:11 -04:00
will 7551d205b7 Mark the rest of Lent's Vespers/Lauds hymn content verified
Same shape as the earlier Lauds capitulum/responsory/versicle fix
this session: real content, just never live-query-verified. Live-
verified Vespers' whole bundle (capitulum/responsory/hymn/versicle,
including the hymn's own claimed Monastic word-swap) against a plain
Lenten Wednesday (2026-03-04). Lauds' own hymn and both hours'
doxology-per-annum files were already seen live earlier the same
session (checking lauds-hymn-saturday.yml's real content against a
Lenten Ember Saturday) -- byte-identical, just needed the status
flipped. No more draft Lent content anywhere in this app.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 15:12:04 -04:00
will 25dc73da1f Add Lent's still-draft Vespers/hymn content to the Open Work list
Deploy / deploy (push) Successful in 1m54s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 15:00:53 -04:00
will 4864992cc0 Log Ember recombine/Lent verification/Trinity Sunday fixes in TODO.md
Deploy / deploy (push) Successful in 1m54s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 14:50:39 -04:00
will aba89dc250 Model Trinity Sunday as a real feast, not just a cosmetic label
Trinity Sunday wasn't modeled at all: getDayLabel had a purely
cosmetic "Trinity Sunday" label overlay for the Sunday after
Pentecost, but resolveTemporalId just fell back to post-pentecost-01
(ordinary-sunday category), so any Duplex+ saint assigned that date
(e.g. the Queenship of the BVM, fixed May 31) won outright, real
Trinity Sunday content never appearing anywhere.

Added a real temporal-feasts/trinity-sunday.yml record (Easter+56,
Duplex II. classis, live-verified). Per direct instruction,
unconditional: true (same shape as christ-the-king.yml) -- a
principal Sunday shouldn't lose a same-rank fixed-date collision, and
the one real collision case (Queenship of the BVM) isn't
independently verifiable against Monastic 1617 at all (that calendar
doesn't carry the Queenship feast -- May 31 there is St. Petronilla
instead).

Authored the full office and registered trinity-sunday in
ALWAYS_OVERRIDE_TEMPORAL_IDS -- the same generic mechanism already
built for the Pentecost-cluster fix, no new code needed: collect,
Benedictus/Magnificat antiphons, Matins hymn ("Summæ Deus cleméntiæ"),
Lauds/Vespers chapter (shared, Rom 11:33) and hymn (shared, "O lux
beáta Trínitas", already the pre-Urban VIII text), each hour's own
distinct responsory/versicle -- all live-verified 2026-05-31.

Fixed 3 pre-existing tests written around the old cosmetic-label
behavior, two of which had never-verified guesses baked in as if
correct: day-label.test.ts's "names the anchor day itself" test and
its "outranks an active octave" test (was asserting "Duplex I Class",
a guess -- the real live-verified rank is Duplex II);
transfer.test.ts's St. Felix I test.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 14:50:31 -04:00
will 2a611cc17b Mark Lent's own Lauds capitulum/responsory/versicle verified
Not actually homeless, contrary to an earlier session's claim: these
3 files already had the real content (Isa 58:1 / "Ipse liberávit me"
/ "Ángelis suis"), just marked draft since never live-verified.
Live-verified against both a Lenten Ember Saturday (2026-02-28) and a
plain Lenten Wednesday (2026-03-04) -- identical, confirming this is
genuinely season-wide content, not weekday-varying.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 14:50:08 -04:00
will 3d230b34f2 Recombine the remaining 5 Ember-day nocturn-readings files
Same fix as ember-september-friday.yml (already done): each file's
Lectio1-3 turned out to be one continuous, unbroken homily (Bede,
Gregory, or Ambrose's Commentary on Luke for the two Advent cases,
cross-referenced from the Annunciation's own Common and confirmed
contiguous by reading the source file directly), split only to fill
the fixed 3-lesson slot count. Recombined ember-september-wednesday/
-saturday and ember-advent-wednesday/-friday/-saturday into single
readings, keeping each one's first lesson's own responsory.

All 6 Ember days now recombined -- no remaining split-for-no-reason
readings in this family. Updated ember-days.test.ts's lesson-count
table accordingly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 14:49:59 -04:00
will cefff90a34 Log the Ascension collect/Corpus Christi/Sacred Heart fixes in TODO.md
Deploy / deploy (push) Successful in 1m49s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 12:55:00 -04:00
will 30b3971190 Give Corpus Christi and Sacred Heart their own hymnody, all octave
Same gap and same generic mechanism fix as Ascension/Pentecost --
just needed the ids added to ALWAYS_OVERRIDE_TEMPORAL_IDS plus real
content. Both feasts have 3 genuinely different hymns, one per hour:
Corpus Christi's own are widely known outside this context too
("Sacris solémniis" at Matins, "Verbum supérnum pródiens" at Lauds
whose last 2 stanzas are "O Salutaris Hostia", "Pange, lingua,
gloriósi Córporis mystérium" at Vespers whose last 2 stanzas are
"Tantum Ergo").

Sacred Heart needed one source-track correction: Monastic Tridentinum
1617 doesn't observe this feast on this date at all (shows St.
Barnabas instead) -- used Divino Afflatu 1954 instead, this project's
own stated rubric track. Also live-verified a genuine structural
difference: Sacred Heart's own Lauds/Vespers have no responsory at
all in the source (straight chapter to hymn) -- not an authoring gap.
Fixed lauds.ts's and vespers.ts's own resolveOffice to omit the
responsory part entirely when its status is missing in both
languages, instead of always rendering an empty section.

Authored matins-hymn-{corpus-christi,sacred-heart}.yml,
lauds-{capitulum,responsory,hymn,versicle}-corpus-christi.yml,
vespers-{responsory,hymn,versicle}-corpus-christi.yml,
lauds-{capitulum,hymn,versicle}-sacred-heart.yml, and
vespers-{hymn,versicle}-sacred-heart.yml -- all live-verified,
2026-06-04 and 2026-06-12.

Fixed 2 pre-existing tests whose own dates now land inside these
newly-modeled octaves and were asserting the old fall-through
behavior as if correct: lauds.test.ts's FERIAL_MONDAY (moved off
2026-06-08) and vespers.test.ts's St. Margaret of Scotland test
(2026-06-09) -- its own title already anticipated this fix, just had
the wrong expected values until now.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 12:54:55 -04:00
will 98aa411a1b Author Ascension's own collect
A separate, pre-existing gap: getDayCollect already looked up
ascension-collect via resolveOfficeWinner (the same mechanism this
session's earlier fix already covers), but the content file itself
never existed. Live-verified against Divinum Officium (Monastic
Tridentinum 1617), 2026-05-14.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 12:54:35 -04:00
will 8dd04ab318 Log the Pentecost hymnody fix in TODO.md
Deploy / deploy (push) Successful in 1m50s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 12:07:54 -04:00
will 5d500c4e1f Give Pentecost its own hymnody at Matins/Lauds/Vespers, all octave
Same gap as Ascension (pentecost-sunday is a temporal-feast id, not a
saint record) -- the mechanism fix from that commit is generic, so
this only needed the id added to ALWAYS_OVERRIDE_TEMPORAL_IDS plus
real content.

Unlike Ascension, Pentecost has 3 genuinely different hymns, one per
hour: "Jam Christus astra ascénderat" (Matins), "Beáta nobis gáudia"
(Lauds), "Veni Creátor Spíritus" (Vespers), each with its own real,
distinct chapter/responsory/versicle at Lauds vs. Vespers.

Authored matins-hymn-pentecost-sunday.yml, lauds-{capitulum,
responsory,hymn,versicle}-pentecost-sunday.yml, and
vespers-{responsory,hymn,versicle}-pentecost-sunday.yml (Vespers
reuses Lauds' chapter via the existing cross-hour fallback) -- all
live-verified against Divinum Officium (Monastic Tridentinum 1617),
2026-05-24. Confirmed the whole octave end-to-end via resolveOrdo,
including a real winning saint within the window (St. Augustine of
Canterbury) keeping his own hymn at Lauds/Vespers unaffected.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 12:07:48 -04:00
will 374d27858a Log the Ascension hymnody fix in TODO.md
Deploy / deploy (push) Successful in 1m52s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 11:08:16 -04:00
will 44dd4bb47a Give Ascension its own hymnody at Matins/Lauds/Vespers, all octave
`ascension` is a temporal-feast id, not a saint record, so
resolveOfficeWinner's octave-synthesis (which already handles
saint-based octaves like Assumption's/St. Lawrence's) never
recognized it -- Ascension Day itself and its whole octave silently
rendered the generic Paschaltide hymn at every hour.

Fixed the mechanism: added `ascension` to ALWAYS_OVERRIDE_TEMPORAL_IDS
(covers the feast day itself), and taught resolveOfficeWinner to also
synthesize a {kind:'temporal'} winner from an active octave with no
saint record but a real temporal-feast record (covers ordinary-feria
octave days; a real winning saint within the octave still correctly
keeps priority).

A third gap surfaced testing this: octaveGoverningPrivilegedDay's
correct-by-design "a privileged Sunday never accepts an octave
override" rule is live-verified wrong specifically for "Dominica
infra Octavam Ascensionis" (keeps the octave's own hymn/responsory,
just with its own distinct proper chapter). Rather than loosen that
shared gate for every octave, gave resolveLaudsHymn/resolveVespersHymn
a narrow, hymn-only intercept guarded to saint-less octaves, checked
before the season/weekday default.

Authored matins-hymn-ascension.yml, lauds-{capitulum,responsory,hymn,
versicle}-ascension.yml, and vespers-{responsory,hymn,versicle}-
ascension.yml (Vespers reuses Lauds' chapter via the existing
cross-hour fallback) -- all live-verified against Divinum Officium
(Monastic Tridentinum 1617), 2026-05-14.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 11:08:11 -04:00
will ab8d1d452d Log the Sunday/seasonal Matins hymn work in TODO.md
Deploy / deploy (push) Successful in 1m54s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 10:38:10 -04:00
will e7e19c530a Author Sunday's own Matins hymn and every season's (Advent-Paschaltide)
The "genuinely more complex, not-yet-understood two-hymn mechanism"
flagged for Sunday turned out simple: Day0 Hymnus ("Nocte surgéntes")
is just Sunday's plain per-annum hymn, and Day0 Hymnus1 ("Primo
diérum ómnium") is Septuagesima-tide's own separate seasonal hymn --
the same shape Advent/Lent/Passiontide/Paschaltide each already have.
Live-verified these 4 don't vary by weekday within their season (a
Lenten Sunday and a Lenten feria render identically). None of the 6
were authored at all before this -- every Sunday and every season day
not otherwise overridden by a winning saint/octave silently fell
through to Monday's own ferial placeholder text.

Authored matins-hymn-{sunday,septuagesima,advent,lent,passiontide,
paschaltide}.yml, all live-verified, self-contained with their own
real closing doxology baked in. Septuagesima is checked directly by
day.season in resolveMatinsHymn itself, deliberately not folded into
the shared seasonalOfficeSuffix (Lauds/Vespers have no matching
content yet -- resolveOfficeBundle there is all-or-nothing per feast,
so adding it would silently blank their chapter/hymn instead of
falling through to their current weekday default).

Known, flagged simplification: the generic Paschaltide hymn wrongly
applies during the Ascension octave, whose own real hymn isn't
authored anywhere yet -- a same-shape gap Lauds already has, not a
new regression. Updated 2 FERIAL_DATE (a Tuesday in Advent) hymn
assertions that had been asserting Tuesday's own ferial text --
Advent's own seasonal hymn correctly outranks the weekday cycle now.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
2026-09-04 10:38:05 -04:00
83 changed files with 6128 additions and 333 deletions
+733 -6
View File
@@ -19,16 +19,12 @@ across every hour and content type in this app.
1. **Mechanism gaps** — a real design/code piece not built yet, blocking any content pass on 1. **Mechanism gaps** — a real design/code piece not built yet, blocking any content pass on
it from starting: it from starting:
- Paschaltide should substitute the ordinary suffrages/ferial-Preces set with a single - (none currently open — the last one, Paschaltide's "Suffragium Paschale" substitution,
alleluia-form "Suffragium Paschale" — not modeled; the ordinary set is shown unchanged was closed 2026-09-04, see the dated log below)
throughout Paschaltide instead.
2. **Minimal-proof-done, bulk content pending** — mechanism is built and trusted (a proof 2. **Minimal-proof-done, bulk content pending** — mechanism is built and trusted (a proof
date/entry already resolves correctly end-to-end); what's left is authoring/importing more date/entry already resolves correctly end-to-end); what's left is authoring/importing more
content in that same shape across the rest of the calendar: content in that same shape across the rest of the calendar:
- Matins sanctoral-side readings: the per-book Matins responsory pool has only one book
seeded (`isa`) — needs expanding. Bible-plan TSV content also isn't yet in a test table
(see "Bible-plan TSV — bulk conversion done" below).
- Lauds/Vespers duplex-majus+ Common-category psalmody: all 24 `SaintRecord.common` - Lauds/Vespers duplex-majus+ Common-category psalmody: all 24 `SaintRecord.common`
categories are resolved (Vespers 10/10 real category files, Lauds 9/10 — see categories are resolved (Vespers 10/10 real category files, Lauds 9/10 — see
"Lauds/Vespers duplex-majus+ Common-category psalmody" below and its follow-up entry) with "Lauds/Vespers duplex-majus+ Common-category psalmody" below and its follow-up entry) with
@@ -5422,3 +5418,734 @@ one (Ember/Advent/Lent) where nothing wins outright and Marian Saturday's own `o
doesn't apply. Authored `matins-hymn-ferial-saturday.yml` ("Summæ Deus cleméntiæ", live-verified doesn't apply. Authored `matins-hymn-ferial-saturday.yml` ("Summæ Deus cleméntiæ", live-verified
against a clean September Ember Saturday, 2025-09-20) and added it to `resolveMatinsHymn`'s weekday against a clean September Ember Saturday, 2025-09-20) and added it to `resolveMatinsHymn`'s weekday
lookup. `npm test` (2025 passed, no test changes needed) and `tsc --noEmit` both pass. lookup. `npm test` (2025 passed, no test changes needed) and `tsc --noEmit` both pass.
### Sunday's own Matins hymn, plus every season's (Advent/Septuagesima/Lent/Passiontide/Paschaltide) (2026-09-04)
User asked for the actual detail behind the "genuinely more complex, not-yet-understood two-hymn
mechanism" flagged in the entry above (`Day0 Hymnus` vs `Day0 Hymnus1`). Turned out not to be a
mystery: live-checking several clean dates showed `Day0 Hymnus` ("Nocte surgéntes vigilémus omnes")
is simply Sunday's own plain per-annum hymn, and `Day0 Hymnus1` ("Primo diérum ómnium") is
Septuagesima-tide's own separate seasonal hymn — the exact same shape as Advent/Lent/Passiontide/
Paschaltide each having their own (live-verified: a Lenten Sunday and a Lenten feria both render
"Ex more docti mýstico" identically, so these seasonal hymns don't vary by weekday the way the
plain per-annum cycle does). None of the 5 seasonal Matins hymns, nor Sunday's own plain one, were
authored at all before this — every Sunday and every Advent/Lent/Passiontide/Paschaltide/
Septuagesima day (Sundays and ferias alike) that wasn't otherwise overridden by a winning saint/
octave was silently falling through to Monday's own ferial placeholder text.
Authored `matins-hymn-sunday.yml` ("Nocte surgéntes"), `matins-hymn-advent.yml` ("Verbum supérnum,
pródiens"), `matins-hymn-lent.yml` ("Ex more docti mýstico"), `matins-hymn-passiontide.yml` ("Pange,
lingua, gloriósi prœlium certáminis" — this breviary's own 5-stanza recension, not the longer
"Lustra sex..." continuation some other uses of the hymn carry), `matins-hymn-paschaltide.yml`
("Rex sempitérne Dómine"), and `matins-hymn-septuagesima.yml` ("Primo diérum ómnium") — all
live-verified, all self-contained with their own real closing doxology baked in (each one fixed and
distinct, not the shared weekday "Praesta, Pater piíssime..." ending).
Septuagesima is checked directly by `day.season === 'septuagesima'` in `resolveMatinsHymn` itself,
deliberately *not* folded into the shared `seasonalOfficeSuffix` (Lauds/Vespers' own) — that
function has no matching Septuagesima content authored for those hours yet, and `resolveOfficeBundle`
there is all-or-nothing per feast, so adding it would silently blank their chapter/hymn instead of
falling through to their current (imperfect but real) weekday default. Scoped to Matins alone; Lauds/
Vespers' own Septuagesima gap is real and separately flagged here, not fixed.
Also flagged, not fixed: the generic `matins-hymn-paschaltide.yml` will incorrectly render during
the Ascension octave specifically, which is live-verified to have its own genuinely different proper
hymn ("...Qui scandis super sídera") not yet authored anywhere — same-shape gap already existing in
Lauds' own `lauds-hymn-paschaltide.yml`, not a new regression introduced here.
Updated 2 `FERIAL_DATE` (2026-12-01, a Tuesday *in Advent*) hymn assertions in
`tests/hours/matins.test.ts` that had been asserting Tuesday's own ferial text — Advent's own
seasonal hymn correctly outranks the weekday cycle now. `npm test` (2025 passed) and `tsc --noEmit`
both pass.
### Ascension's own hymnody at Matins/Lauds/Vespers, plus the octave mechanism gap it exposed (2026-09-04)
User asked to actually close the Ascension-octave gap flagged in the entry just above. Turned out
to be a genuine mechanism gap, not just missing content: `ascension` is a *temporal*-feast id
(`data/calendar/temporal-feasts/ascension.yml`), not a saint record, so
`hours/resolve-common.ts`'s `resolveOfficeWinner` — which already synthesizes a sanctoral-shaped
winner from an active octave's own saint record (how Assumption's/St. Lawrence's octave already
gives every hour real content on interior days) — never recognized it at all. Ascension Day itself
and its whole octave were silently rendering the generic Paschaltide hymn at every hour, live-
verified against Divinum Officium (Monastic Tridentinum 1617, 2026-05-14, Ascension Day itself):
real content is "Jesu nostra redémptio" (identical at Matins/Lauds/Vespers), Act 1:1-2 (Lauds/
Vespers' shared chapter), and two genuinely distinct Lauds/Vespers responsories ("Ascéndit Deus in
jubilatióne" / "Ascéndens Christus in altum").
Fixed the mechanism two ways: (1) added `ascension` to `ALWAYS_OVERRIDE_TEMPORAL_IDS` (covers
Ascension Day itself, the same way `christ-the-king`/`circumcision`/etc. already do); (2) taught
`resolveOfficeWinner` to also synthesize a `{kind: 'temporal'}` winner from an active octave with no
saint record but a real temporal-feast record — covers ordinary-feria octave days (a real saint
still correctly keeps priority when one wins, e.g. St. Venantius/St. Peter Celestine within the
octave, live-verified unaffected). A third gap surfaced testing this: `octaveGoverningPrivilegedDay`
(the *Sunday*-side half of that same synthesis) has its own, separate, correct-by-design rule that a
privileged Sunday never accepts even an octave override — but live-verified wrong specifically for
"Dominica infra Octavam Ascensionis," which really does keep the octave's own hymn/responsory (just
with its own distinct proper chapter, not touched here). Rather than loosen that shared gate (real
risk of wrongly re-admitting some other octave's override on some other privileged Sunday, unverified
case by case), gave Lauds' and Vespers' own hymn-resolution functions (`resolveLaudsHymn`/
`resolveVespersHymn`) a narrow, hymn-only intercept: check `resolveActiveOctave` directly (no
privileged-Sunday gate) but only for a saint-less octave, before falling to the season/weekday
default — leaves every saint-based octave's existing behavior (and every other hour/part) completely
untouched.
Authored `matins-hymn-ascension.yml`, `lauds-{capitulum,responsory,hymn,versicle}-ascension.yml`,
and `vespers-{responsory,hymn,versicle}-ascension.yml` (Vespers' own chapter already falls back to
Lauds' via `vespersCapitulumForOverride`'s existing cross-hour fallback, so no separate file needed)
— all live-verified. Confirmed the whole octave end-to-end via `resolveOrdo` directly (Ascension Day,
two plain ordinary-feria octave days, the Sunday within the octave, and 3 real winning saints within
the window, all correct) rather than just the reference engine. `npm test` (2025 passed, no test
changes needed) and `tsc --noEmit` both pass.
Flagged, not fixed: Ascension's own collect is still missing (`getTemporalProper('ascension-collect')`
— a pre-existing gap, unrelated to and unaffected by this fix, not scoped to "hymnody"). Also flagged:
Pentecost/Corpus Christi/Sacred Heart are the same shape (temporal-feast octaves with no saint
record) and likely have the same latent hymn gap this fix closed for Ascension specifically — not
checked or fixed here.
**Follow-on, same day**: per direct instruction ("Ascension and Pentecost are some of the most
important material in the entire app — fix it"), closed Pentecost's own copy of the same gap
immediately, rather than leaving it flagged. Live-verified against Divinum Officium (Monastic
Tridentinum 1617), 2026-05-24 (Pentecost Sunday itself): unlike Ascension, Pentecost has 3 genuinely
different hymns, one per hour ("Jam Christus astra ascénderat" at Matins, "Beáta nobis gáudia" at
Lauds, "Veni Creátor Spíritus" — yes, that one — at Vespers), each with its own real, distinct
chapter/responsory/versicle at Lauds vs. Vespers. Added `pentecost-sunday` to
`ALWAYS_OVERRIDE_TEMPORAL_IDS` (the mechanism fix from the Ascension entry above is generic — no
code change needed beyond that one line) and authored `matins-hymn-pentecost-sunday.yml`,
`lauds-{capitulum,responsory,hymn,versicle}-pentecost-sunday.yml`, and
`vespers-{responsory,hymn,versicle}-pentecost-sunday.yml`. Confirmed the whole octave end-to-end via
`resolveOrdo` (feast day, plain octave days, and a real winning saint within the window — St.
Augustine of Canterbury, live-verified unaffected, keeps his own hymn at Lauds/Vespers while Matins
keeps Pentecost's own per the same established generous-octave design already used for Assumption/
Ascension). `npm test` (2025 passed, no test changes needed) and `tsc --noEmit` both pass.
Corpus Christi and Sacred Heart remain the one still-open piece of this same-shape gap — not fixed
this session, lower priority than Ascension/Pentecost per direct instruction.
**Follow-on, same day**: per direct instruction ("ascension's collect and the two octaves"), closed
all 3 remaining pieces immediately.
Authored `ascension-collect.yml` (live-verified 2026-05-14) — a separate, pre-existing gap
(`getDayCollect` already looked up `ascension-collect` via the same `resolveOfficeWinner` this
session's mechanism fix already covers; the collect file itself just never existed).
Closed Corpus Christi's and Sacred Heart's own hymnody gaps the same way as Ascension/Pentecost:
added `corpus-christi` and `sacred-heart` to `ALWAYS_OVERRIDE_TEMPORAL_IDS` (no further code change
needed — the mechanism is generic) and authored `matins-hymn-{corpus-christi,sacred-heart}.yml`,
`lauds-{capitulum,responsory,hymn,versicle}-corpus-christi.yml`,
`vespers-{responsory,hymn,versicle}-corpus-christi.yml`, `lauds-{capitulum,hymn,versicle}-sacred-
heart.yml`, and `vespers-{hymn,versicle}-sacred-heart.yml` — all live-verified against Divinum
Officium, 2026-06-04 (Corpus Christi) and 2026-06-12 (Sacred Heart). Corpus Christi's own hymns are
widely known outside this context too: Matins' own "Sacris solémniis", Lauds' own "Verbum supérnum
pródiens" (whose final 2 stanzas are the separately-famous "O Salutaris Hostia"), and Vespers' own
"Pange, lingua, gloriósi Córporis mystérium" (whose final 2 stanzas are the separately-famous
"Tantum Ergo").
Sacred Heart needed one real source-track correction: the Monastic Tridentinum 1617 track doesn't
observe this feast on this date at all (live-checked: shows St. Barnabas instead, a real 1617-era
calendar gap, not a vu bug) — used Divino Afflatu 1954 instead, consistent with this project's own
stated rubric/precedence track (see CLAUDE.md). Also live-verified a genuine, deliberate structural
difference: Sacred Heart's own Lauds and Vespers have **no responsory at all** in the source
(straight from chapter to hymn, "Capitulum Hymnus Versus" with no "Responsorium" between) — not an
authoring gap, so no `lauds-responsory-sacred-heart.yml`/`vespers-responsory-sacred-heart.yml` were
created. This exposed a real small UI gap: `hours/lauds.ts`'s and `hours/vespers.ts`'s own
`resolveOffice` always pushed a `{kind:'responsory'}` part even when its own resolved text carried
`status: missing` in both languages, rendering an empty section. Fixed both to omit the responsory
part entirely when both languages are genuinely missing, rather than an empty box.
Confirmed both octaves end-to-end via `resolveOrdo` (feast days, plain octave days, and real winning
saints within each window — St. Boniface/St. Barnabas within Corpus Christi's, unaffected). Found
and fixed 2 pre-existing tests whose own dates now land inside these newly-modeled octaves and were
asserting the old (buggy) fall-through behavior as if correct:
`tests/hours/lauds.test.ts`'s `FERIAL_MONDAY` (was 2026-06-08, inside Corpus Christi's octave — moved
to 2026-09-07) and `tests/hours/vespers.test.ts`'s own St. Margaret of Scotland test (2026-06-09,
also inside Corpus Christi's octave — its own title already anticipated this exact fix; updated its
assertions from the old "falls through to the plain ferial default" guess to the real, live-verified
Corpus Christi content). `npm test` (2025 passed) and `tsc --noEmit` both pass.
### Recombined the 5 remaining Ember-day nocturn-readings files (2026-09-04)
User asked "why only Wed/Sat in September?" after the earlier Ember-Friday recombine, then asked
for all the remaining smaller gaps to be closed. Checked the reference source directly for each of
`ember-september-wednesday`/`ember-september-saturday`/`ember-advent-wednesday`/`ember-advent-
friday`/`ember-advent-saturday` (all 5 still carried the original "genuinely distinct proper
responsory" split rationale) and confirmed all 5 are the same shape already fixed for Ember Friday:
one continuous, unbroken homily (Bede, Gregory, or — for the two Advent Wednesday/Friday cases —
Ambrose's Commentary on Luke, cross-referenced from the Annunciation's own Common,
`@Sancti/03-25:Lectio7/8/9`, confirmed contiguous by reading the source file directly), split only
to fill the fixed 3-lesson slot count. Recombined all 5 into single readings, same convention as
before (keep the first lesson's own responsory, drop the rest). Updated
`tests/calendar/ember-days.test.ts`'s lesson-count table (now 1 for all 6 Ember days, was a mix).
`npm test` (2025 passed) and `tsc --noEmit` both pass.
### Lent's own Lauds capitulum/responsory/versicle: not homeless after all (2026-09-04)
The "homeless Isa 58:1 / Ipse liberávit me / Ángelis suis" content flagged in an earlier entry
(believed to have no home after the Marian-Saturday/plain-ferial-Saturday content correction) turned
out to already have a real home: `lauds-capitulum-lent.yml`/`lauds-responsory-lent.yml`/
`lauds-versicle-lent.yml` already existed with this exact content, just marked `draft` (never
live-verified) rather than genuinely missing. Live-verified against both a Lenten Ember Saturday
(2026-02-28) and a plain Lenten Wednesday (2026-03-04) — identical, confirming this is genuinely
season-wide content (not weekday-varying) and correcting an earlier session's wrong "homeless" claim.
Marked all 3 files `verified`. (Vespers' own Lenten capitulum/responsory/versicle/hymn and both
hours' Lenten hymn-doxology-per-annum files are still `draft` — a separate, broader Lent-content
verification backlog noticed in passing, not fixed here, out of scope of what was specifically
flagged.)
### Trinity Sunday: a real feast, not modeled at all (2026-09-04)
A third "smaller gap" turned out much bigger on inspection: what had been described as a "Trinity
Sunday display gap" was actually a missing calendar mechanism. `getDayLabel` already had a purely
cosmetic "Trinity Sunday" label overlay for the Sunday after Pentecost, but nothing made that Sunday
actually *be* Trinity Sunday — `resolveTemporalId` just fell back to `post-pentecost-01`, an
`ordinary-sunday` category, so any Duplex+ saint assigned that date (e.g. the Queenship of the BVM,
1954, fixed May 31) won outright per the normal rule, with Trinity Sunday itself never appearing as
more than a commemoration or a cosmetic label. Live-verified against Divinum Officium (Monastic
Tridentinum 1617, 2026-05-31): the real occupant is "Festum Sanctissimæ Trinitatis, Duplex II.
classis" — one of the year's principal Sundays.
Added a real `data/calendar/temporal-feasts/trinity-sunday.yml` record (Easter+56, Duplex II.
classis). Per direct instruction, `unconditional: true` (same shape as `christ-the-king.yml`) —
Trinity Sunday always wins, since the one real collision case (the Queenship of the BVM, also Duplex
II classis, fixed May 31) isn't independently live-verifiable against the Monastic 1617 track at all
(that calendar doesn't carry the Queenship feast — May 31 there is St. Petronilla instead, confirmed
live), and a principal Sunday shouldn't lose a same-rank fixed-date collision by coincidence.
Authored the full office: `trinity-sunday-collect.yml`, `trinity-sunday-{benedictus,magnificat}-
antiphon.yml`, `matins-hymn-trinity-sunday.yml` ("Summæ Deus cleméntiæ" — shares its opening stanza
with the plain ferial Saturday hymn but diverges completely after that, a genuinely different hymn),
`lauds-{capitulum,responsory,hymn,versicle}-trinity-sunday.yml`, and `vespers-{responsory,hymn,
versicle}-trinity-sunday.yml` (Lauds/Vespers share both their chapter, via the existing cross-hour
fallback, and their hymn, "O lux beáta Trínitas" — already the pre-Urban VIII text) — all live-
verified 2026-05-31. Added `trinity-sunday` to `ALWAYS_OVERRIDE_TEMPORAL_IDS`.
Found and fixed 3 pre-existing tests written around the old cosmetic-label behavior, two of which
had never-verified guesses baked in as if correct: `tests/calendar/day-label.test.ts`'s "names the
anchor day itself" test (now Trinity Sunday wins outright over the Queenship, not the reverse) and
its own "outranks an active octave" test (previously asserted "Duplex I Class", a guess — the real,
now live-verified rank is Duplex II Class); `tests/calendar/transfer.test.ts`'s St. Felix I test
(Trinity Sunday now the real winner on 2026-05-31, Queenship/post-pentecost-01/Pentecost's octave
all commemorated in return). `npm test` (2025 passed) and `tsc --noEmit` both pass.
### Lent's remaining Vespers/Lauds draft content, verified (2026-09-04)
Closed the rest of the "Lent's own seasonal office bundle" gap flagged in the entry above the same
day: `vespers-{capitulum,responsory,hymn,versicle}-lent.yml` and both hours' own
`-doxology-per-annum` files were all real content, just never marked verified. Live-verified
Vespers' own bundle against a plain Lenten Wednesday (2026-03-04) — Joel 2:17 chapter, "Scápulis
suis obumbrábit tibi" responsory, "Audi, benígne Cónditor" hymn (including its own claimed Monastic
word-swap, confirmed live), shared "Ángelis suis" versicle. `lauds-hymn-lent.yml`'s own content
("Jam Christe sol justítiæ") and its doxology were already seen live earlier the same session (while
checking `lauds-hymn-saturday.yml`'s real content against the same 2026-02-28 Lenten Ember Saturday
date) — byte-identical, just needed the status flipped. All 8 files now `verified`; no more draft
Lent content anywhere in this app. `npm test` (2025 passed) and `tsc --noEmit` both pass.
### Paschaltide's "Suffragium Paschale" mechanism (2026-09-04)
Closed the highest-priority remaining mechanism gap. Live-verified against Divinum Officium (both
Monastic Tridentinum 1617 and Tridentine 1906, byte-identical between the two tracks — the source's
own `[Suffragium]` macro literally has a `(sed tempore paschali) @:Suffragium Paschale` override,
2026-04-20, a plain Eastertide feria): throughout the whole Paschaltide window (`eastertide`/
`ascensiontide`/`pentecost` — the same boundary `PASCHALTIDE_SEASONS` already governs elsewhere in
this store), two things happen whenever they'd otherwise show at all:
1. The ordinary 5-suffrage set (Cross/BVM/Joseph/Apostles/Peace) collapses into one single
alleluia-form "Suffragium Paschale" block — one antiphon (different at Lauds, "Crucifíxus
surréxit a mórtuis...", vs. Vespers, "Crucem sanctam súbiit...", unlike the ordinary 4/5
suffrages, which share identical text at both hours), one shared versicle, one shared collect.
2. The ferial-Preces litany (`lauds-preces-feriales`/`vespers-preces-feriales`, sourced from
Tridentine 1906/1910 since Monastic 1617 has none at all — see that file's own header) drops
entirely rather than being replaced by anything ("Preces Feriales{omittitur}" live) — a
Sunday/feast's own short litany (`lauds-short-litany`) is untouched, a separate, universal
collect-opening dialogue unrelated to this ferial-specific one.
Exported a new `isPaschaltide(season)` helper from `hours/resolve-common.ts` (wraps the existing
`PASCHALTIDE_SEASONS` set, previously private to that file) and used it in both
`resolveSuffrages` (gated after the pre-existing "omit suffrages entirely" checks — Double+/active
octave/Advent-Christmastide-Passiontide already drop suffrages regardless of season, unaffected)
and a new check in `hours/lauds.ts`'s/`hours/vespers.ts`'s own `'lauds-preces'`/`'vespers-preces'`
cases (gated on `isFerialOrVigil(day)`, matching the existing predicate that already selects the
ferial litany in the first place). `resolveSuffrages` gained a third `hourId: 'lauds' | 'vespers'`
parameter (both call sites updated) to pick the right antiphon.
Authored `lauds-suffrage-paschale.yml` and `vespers-suffrage-paschale.yml` — English on the Vespers
antiphon is this project's own translation and left `draft` (the reference engine's own English
render leaves that one antiphon untranslated, Latin-only); everything else `verified`.
Verified end-to-end via `resolveOrdo` on real dates for Lauds (both the suffrage collapse and the
Preces omission fire together correctly on a clean Eastertide feria, 2026-04-20) and via a direct
`resolveSuffrages` unit call plus a separately-found clean Vespers evening (2026-04-15, since this
particular stretch of Eastertide 2026 is otherwise densely packed with First-Vespers anticipations
and octaves — Easter's own, the Patronage of St. Joseph's, Ascension's, Pentecost's — that already
correctly suppress suffrages for other, pre-existing reasons and would have made a false negative
look like a false positive). `npm test` (2025 passed, no pre-existing tests exercised this path at
all) and `tsc --noEmit` both pass.
### Matins responsory pools: per-book expansion + new per-Common-category pool (2026-09-04)
User request: real Matins responsories for each Bible book (sourced from the reference engine),
and for the patristic (Nocturn 2/3 homiletic) readings too. Investigation found the patristic side
was a much bigger, previously-untracked gap than the per-book pool's own "expand beyond `isa`" item
already on this list: 272 of 355 `data/propers/nocturn-readings/*.yml` files have no `responsory`
field at all — most of the calendar, not a handful of stragglers.
**Per-book pool** (`data/hours/matins-responsories-by-book.yml`): added `gen` (2 entries, Latin/
Tempora/Quadp1-1.txt — Monday of Septuagesima week, the historical start of the Genesis "Historia"
cycle, a plain ferial with no overriding feast; only 2 entries because the source's own English
translation is missing a 3rd) and `jer` (3 entries, Latin/Tempora/Quad6-2.txt — Tuesday of Holy
Week, "Feria privilegiata," genuine ferial Jeremiah/Lamentations content). Deliberately did *not*
seed `jer` from Pent02-5.txt despite it citing Jeremiah too — that day's Rank is Sacred Heart
(Duplex I classis), so its Responsory1-3 are the feast's own proper text, not genuine ferial-book
content, even though its Lectio verses are borrowed from Jeremiah. Still only 3 of 72 books used
in the user's own bible-plan seeded (`isa`, `gen`, `jer`) — the rest is deferred bulk content, one
real live-sourced query per book, same pattern.
**New per-Common-category pool** (`data/hours/matins-responsories-by-common.yml` +
`getResponsoryForCommon` in `src/propers/matins-responsories.ts`, sibling to the existing
`getResponsoryForBook`): keyed by `SaintRecord.common` instead of a scripture book, same "loose
match, cycle by index" design. Unlike the per-book pool (scattered one query per book, across the
whole liturgical year), a Commune category's responsories live in one static file each
(`divinum-officium-reference`'s `web/www/horas/{Latin,English}/Commune/CN.txt`) — 9 files
(`C1`-`C8`, `C11`) transcribed directly, cover all 19 of vu's real `common:` category ids (several
are genuine aliases, confirmed by reading each candidate file's own `@Commune/CX` inheritance line
rather than guessed — e.g. `common-of-a-confessor-doctor`/`-pope` inherit C4 unchanged, same pool
as `common-of-a-confessor-bishop`; `common-of-an-abbot`/`-not-bishop`/`several-confessors` inherit
C5 unchanged; `common-of-a-martyr` inherits C2 unchanged; `common-of-a-virgin` inherits C6
unchanged; `common-of-a-widow`/`several-women-martyrs` inherit C7 unchanged — see the data file's
own header for the full mapping). Not seeded: `common-of-an-angel`/`-an-evangelist`/`-a-vigil` and
the `proper-to-*` ids — none of these are real Commune categories with a responsory file to source
from (angels/evangelists have their own proper content instead).
Wired into `hours/matins.ts`'s `nocturnReadingPart`/`gospelReadingPart`: when a reading's own
`responsory` field is absent, falls back to `getResponsoryForCommon(getSaintRecord(id)?.common,
index)` — `index` is the reading's position within that same id's own file (a new `commonPoolIndex`
counter in `buildReadingPool`'s assembly loop), so a saint with several undated readings still gets
distinct responsories across them rather than the pool's first entry repeated. A temporal/octave id
(no `common` category) still correctly gets `undefined` — an honest absence, not a wrong guess.
Live-verified end-to-end via `resolveOrdo`: St. Francis de Sales (2026-01-29, `common-of-a-
confessor-bishop`, previously responsory-less) now resolves a real Nocturn 3 responsory; Ss.
Cornelius and Cyprian plus Ss. Euphemia, Lucy, and Geminianus (both on 2026-09-16, both `common-
of-several-martyrs`) each resolve their own responsory from the same pool, confirming the
per-saint-file cycling index doesn't leak across different saints sharing a day. `npm test` (2025
passed) and `tsc --noEmit` both pass.
### Matins responsory pools: 8 more books seeded (2026-09-04)
Follow-up to the same-day entry above, continuing the per-book pool's bulk-content pass — same
"one real source per book" method, no mechanism changes. Added `exod` (Latin/Tempora/Quad4-0.txt,
Sunday IV in Lent, its own ordinary rank — the burning bush through the Song of the Sea), `prov`
(081-1.txt, August week 1's own ferial), `tob` (093-0.txt, September week 3's own Sunday), `ezek`
(111-1.txt, November week 1's own ferial), and `1macc` (101-1.txt, October week 1's own ferial) —
all bilingual, all genuinely their own book's content, no overriding rank.
Also added `sir` and `sap` (identical to `prov`'s own entries) and `dan` (identical to `ezek`'s) —
not guessed reuse, confirmed by reading each week's own reference-engine file: the August "Wisdom
literature" weeks (081 Prov, 083 Sap, 084-085 Sir) and the November "prophetic" weeks (111 Ezek,
113 Dan) `@`-reference *the same* underlying responsory set regardless of which specific book that
week's Lectio actually reads that day — a real confirmation, from the reference engine's own data,
that this app's "loose, book-level match, not exact-citation" responsory design (see the pool's own
header, and the 2026-08 user direction it's sourced from) matches how these responsories genuinely
worked historically, not an invention to paper over a smaller pool.
Skipped, deliberately: `1sam` (1 Reg) — every Pent01 week file's responsories are macro references
(`@:Responsory1_ (sed rubrica cisterciensis) ...`, `[Rule] Initia cum responsory`) rather than
literal text, needing the base macro template resolved with per-file substitutions to get real
text; not worth the complexity for one book this pass. `2sam`/`1kgs`/`2kgs`/`2macc` (2/3/4 Reg, 2
Mac) — real Latin responsories exist in every week's own file, but the reference engine's own
English translation is entirely absent for all of them (checked every Post-Pentecost week each book
appears in); left unseeded rather than guessing a translation, consistent with only seeding books
that have real bilingual source text. `zach`/`amos`/`agg` (minor prophets) — same English-translation
gap, but Latin is real and available (Latin/Tempora/114-4.txt, 115-4.txt, 115-5.txt) if a future
pass wants to add an own-translation draft English side (see `vu-prefer-text-over-missing` memory
for the precedent).
Now 11 of 72 bible-plan books seeded: `isa`, `gen`, `jer`, `exod`, `prov`, `sir`, `sap`, `tob`,
`ezek`, `dan`, `1macc`. `npm test` (2025 passed) and `tsc --noEmit` both pass; live-verified via
`getResponsoryForBook` resolving real text for every new key.
### Matins responsory pools: a real extraction bug found, 8 more books unblocked (2026-09-04)
User pushback on the previous entry's "5 books skipped, no English available" claim ("look at the
secular office for most of the books") — right call: re-checking found a genuine bug, not a real
source gap. The extraction script's Responsory-block regex only matched a bare `[ResponsoryN]` tag;
it missed the reference engine's own `[ResponsoryN_]` convention (an underscore-suffixed literal
template tag holding the real text, which a plain `[ResponsoryN]` often just `@:`-references
alongside a Cistercian-rubric variant) — so every file using that convention looked like it had no
English translation when the real text was sitting right there under a different tag name. Fixed
the script to prefer the `_`-suffixed tag's literal body over a bare `@:`-reference.
This unblocked `1sam` (Latin/Tempora/Pent01-1.txt, its own genuine 3-entry set — the young Samuel's
call and consecration) outright. Chasing the `@Tempora/X:ResponsoryN` cross-file references (not
resolved by the extraction script, hand-followed instead) also unblocked:
- `2sam`/`1kgs`/`2kgs` (2/3/4 Reg) — all three books' own week files `@`-reference the *same*
single entry, Tempora/Pent03-1Feria's Responsory1 (2 Samuel 24's census/plague narrative,
"Recordáre, Dómine, testaménti tui") — read directly, not guessed, same "loose match" reuse
pattern already established for the Wisdom-literature and Ezekiel/Daniel weeks. One entry only;
Responsory2/3 chain further references not followed this pass.
- `2macc` — reuses `1macc`'s own 3-entry set outright (Tempora/104-1 `@`-references Tempora/101-1).
- `zach` (Tempora/115-5, itself referencing 111-0's Responsory4-6 — Ezekiel's own Sunday, distinct
from `ezek`/`dan`'s own Monday-sourced entries) and `amos`/`agg` (both referencing Tempora/
Pent01-0's Responsory1 — Isaiah's throne-vision — plus 111-0's Responsory2-3) — all three
minor-prophet books previously assumed to have no reference-engine English at all; that was true
of their *own* week files in isolation, but false once their `@`-references were actually
followed.
19 of 72 bible-plan books now seeded (added this pass: `1sam`, `2sam`, `1kgs`, `2kgs`, `2macc`,
`zach`, `amos`, `agg`). `npm test` (2025 passed) and `tsc --noEmit` both pass; live-verified via
`getResponsoryForBook` resolving real text for every new key, at every pool index (not just index
0) for the 3-entry sets.
Still genuinely unseeded after this pass — real gaps, re-confirmed: books with no reference-engine
citation anywhere in Tempora at all (Josue, Judices, Ruth, Paralipomenon/Chronicles, Esdras/
Nehemias, Canticles — the historic secular/monastic Historia cycle apparently never assigns these
their own continuous reading), and the remaining ~45 New Testament epistle/Acts/Apocalypse books
plus minor books not yet attempted.
### Matins responsory pools: 12 more OT books, and 2 real process misses caught (2026-09-04)
User caught two things this pass, neither of them a source gap:
1. Directly pointed at `web/www/horas/English/Tempora/094-3.txt` and asked why Judith ("jdt") was
listed as unseeded when it plainly has real responsory content. Checking confirmed it — worse,
`jdt` and `esth` (Esther) had *both* already surfaced in this same day's own full-citation dump
of Tempora (`!Jdt`, `!Esth` were right there in the list) and were simply never followed up on.
Not a search-methodology gap this time, an attention gap: the data was already in hand.
2. Self-audit prompted by that catch found a second, independent miss: `job` — one of the
heaviest-used books in the bible-plan (42 rows) — had been extracted early in this same day's
session (Latin/Tempora/091-1.txt, the classic "Job Responsories," also used in the Requiem) but
never actually committed to the pool file at all. Sourced, verified, then silently dropped.
Fixed both, then used the same "reused across a whole prophetic-literature week" pattern already
established for `ezek`/`dan`/`zach` to sweep the rest of November's minor prophets efficiently by
following each book's own `@Tempora/X:ResponsoryN` reference rather than re-querying from scratch:
`obad` (reuses `zach`'s own R1), `jonah`/`mal` (share one entry, Tempora/111-0:R7), `hos`/`nah`
(reuse `ezek`/`dan`'s own R1), `mic` (reuses `amos`/`agg`'s own R1), `hab`/`joel` (share one entry,
Tempora/111-2:R1), `zeph` (Tempora/111-3:R1, its own). Also added `eccl` (Tempora/081-2:R1, the
same August "Wisdom literature" week cluster as `prov`/`sir`/`sap`, a different entry than
`prov`'s own) and `lam` (Latin/Tempora/Quad6-4.txt — Maundy Thursday's own Tenebrae Matins, the
classic "In monte Oliveti"/"Tristis est anima mea"/"Ecce vidimus eum" responsories; unlike the
Sacred Heart/Jeremiah override case above, Holy Week's own high rank isn't an unrelated feast
displacing ordinary content here — Tenebrae's Lamentations reading is intrinsically Holy Week's
own, so no override caution applied).
33 of 72 bible-plan books now seeded (added this pass: `jdt`, `esth`, `job`, `eccl`, `hab`, `joel`,
`zeph`, `obad`, `jonah`, `mal`, `hos`, `mic`, `nah`, `lam` — 14 new). `npm test` (2025 passed) and
`tsc --noEmit` both pass; live-verified via `getResponsoryForBook` resolving real text for every
new key.
Confirmed still genuinely absent (re-checked directly, not just re-asserted): `bar` (Baruch),
Josue, Judices, Ruth, Paralipomenon/Chronicles, Esdras/Nehemias, Canticles — no citation anywhere
in Tempora. 39 remaining books not yet attempted: Leviticus/Numbers/Deuteronomy, the four Gospels,
Acts, Apocalypse, and the NT epistles.
### Matins responsory pools: real key-alias bug found and fixed (2026-09-04)
A serious correctness bug, found by re-verifying through the *real* pipeline rather than trusting
the earlier direct-function-call "live verification": `bible-plan.ts` normalizes a reading's book
through `canonicalBook()` (`scripture/index.ts`'s `BOOK_ALIASES` map) *before* calling
`getResponsoryForBook` — so the pool must be keyed by the canonical form, not the bible-plan TSV's
own raw book code, whenever the two differ. 12 of this same day's 33 seeded keys used the raw form
instead: `1macc`/`2macc` (canonical `1mach`/`2mach`), `1sam`/`2sam`/`1kgs`/`2kgs` (`1reg`/`2reg`/
`3reg`/`4reg`), `jdt` (`jdth`), `zeph` (`soph`), `obad` (`abd`), `jonah` (`jon`), `hos` (`osee`),
`mic` (`mich`) — every one of these would have silently resolved to `undefined` in the real app
despite passing this same day's own "live-verified" test, because that test called
`getResponsoryForBook` directly with the raw code, bypassing the normalization the real call site
always applies. Renamed all 12 keys (and their own header comments) to the canonical form.
Re-verified this time through the actual `getBiblePlanReadings` call site (not a direct
`getResponsoryForBook` call) on a real date (2026-06-04, `post-pentecost-01`/Thursday, `1sam 9-10`)
— confirms a real responsory now resolves where it silently wouldn't have before this fix. `npm
test` (2025 passed) and `tsc --noEmit` both pass.
**Lesson for future sourcing passes**: when a book has a `BOOK_ALIASES` entry, the pool key is the
*alias target*, not the bible-plan YAML's own book code — check `scripture/index.ts`'s
`BOOK_ALIASES` map before choosing a key, and verify through `getBiblePlanReadings`/`resolveOrdo`
(the real call chain), not a direct, unnormalized call to `getResponsoryForBook`.
### Matins responsory pools: NT books (Acts, Apocalypse, James, Hebrews, the 4 Gospels) (2026-09-04)
Continuing the same bulk-sourcing pass, applying the previous entry's own lesson from the start
this time (canonical keys, pipeline-verified). Surveyed the whole reference engine's own citation
set precisely (an `awk` one-liner reading the line *after* every `[LectioN]` tag, following two
lines deep for Gospel entries whose citation sits below a "Léctio sancti Evangélii secúndum..."
line) rather than grepping loosely for a book prefix — the loose approach had already produced one
false positive this session (`Rom` matching a Lauds Capitulum, not a real Matins Lectio).
Added, all bilingual, all real Nocturn responsories:
- `act` (Ascension Day's own Matins, Latin/Tempora/Pasc5-4.txt) and `marc` (Easter Sunday's own
Matins, Pasc0-0.txt) — both high-ranked feast days, but genuinely proper content (Ascension's
own Nocturn 1 *is* Acts 1; Easter's *is* Mark 16), not an unrelated override like the Sacred
Heart/Jeremiah case — same reasoning already used for `lam`.
- `heb` (Good Friday's own Tenebrae Matins, Quad6-5.txt) — same reasoning again, Passion-narrative
responsories ("Omnes amici mei," "Velum templi scissum est").
- `apoc` (Easter III Sunday, its own ordinary rank, Pasc3-0.txt) and `jas` (Easter IV Sunday,
Pasc4-0.txt) — genuine Paschaltide Sunday responsory sets, not thematically tied to Apocalypse/
James specifically (a generic Alleluia-form psalm-based set), same "loose match" convention as
everywhere else in this pool.
- `luc`/`matt`/`joan` (Advent I/II/III Sundays, Adv1-0/Adv2-0/Adv3-0.txt) — each Gospel's own
reading week, generic Advent-themed responsories, only 1 entry each (a second Sunday's own set
wasn't chased down this pass).
41 of 72 bible-plan books now seeded. `npm test` (2025 passed) and `tsc --noEmit` both pass;
live-verified through the real `getBiblePlanReadings` call chain this time (not a direct
`getResponsoryForBook` call) — `easter-3`/Monday (`act`, `joan` via the `john``joan` alias),
`post-pentecost-01`/Saturday (`1sam` via alias, `prov`, `matt`), and a calendar-dated Jan 10 row
(`heb`) all resolve real responsory text; `Deut` correctly still resolves `undefined` (genuinely
unseeded, confirmed absent from Tempora entirely).
Confirmed no English exists anywhere in the reference engine for Galatians/Ephesians/Philippians/
Colossians/Titus/Philemon (the whole post-Epiphany reading season) or Romans (the Christmas-Octave
season) — real Latin text exists for all of these, just no bilingual source; left unseeded rather
than own-translating six-plus books in one pass. 32 books remain (9 of them the already-confirmed-
genuinely-absent `bar`/Josue/Judices/Ruth/Chronicles/Esdras-Nehemias/Canticles): Leviticus/
Numbers/Deuteronomy, Romans, 1-2 Corinthians, Galatians, Ephesians, Philippians, Colossians, 1-2
Thessalonians, 1-2 Timothy, Titus, Philemon, 1-2 Peter, 1-3 John, Jude not yet attempted.
### Matins responsory pools: last real batch (1 Cor, 2 Cor, 1 Peter, 1 John), a repeated key bug (2026-09-04)
Confirmed Leviticus/Numbers/Deuteronomy genuinely absent from Tempora (re-checked precisely with
the `awk`-based Lectio-citation survey, not a loose grep — no hit under any Latin form of the
book's name). Added `1cor` (Maundy Thursday's own Nocturn 3, Latin/Tempora/Quad6-4.txt
Responsory7-9 — the Institution narrative, distinct from that same file's Responsory1-3 already
used for `lam`), `2cor` (Epiphany II Sunday, its own ordinary rank, Epi2-0.txt), `1pet` (1 Peter's
own reading week `@`-references the ordinary Paschaltide Sunday psalm-set already used for `jac`
below — R4-6 of that same Pasc4-0.txt), and `1joan` (Sunday within the Ascension Octave, Pasc6-0.txt,
the Paraclete responsory, only 1 entry).
**A repeated mistake, caught by self-audit this time**: the previous entry's `jas` key was wrong —
same bug as the 12-key fix two entries up. `BOOK_ALIASES` maps bible-plan's `jas` to canonical
`jac`; the pool needed `jac:`, not `jas:`. Fixed, and re-verified through `getBiblePlanReadings`
(not a direct call) on `easter-6`/Monday, 2026-05-11 (`Jas 2` now resolves a real responsory).
**Ran a full audit this time**: checked every single current pool key against `BOOK_ALIASES`
programmatically (not just the ones touched this pass) — confirmed clean, zero raw-alias-source
keys remain anywhere in the file.
45 of 72 bible-plan books now seeded. `npm test` (2025 passed) and `tsc --noEmit` both pass.
Remaining 27, none easily gettable this pass: 12 confirmed genuinely absent from the reference
source (`bar`, Canticles, Joshua, Judges, Ruth, 1-2 Chronicles, Ezra, Nehemiah, Leviticus, Numbers,
Deuteronomy); 15 with real Latin but no reference-engine English anywhere (Romans, Galatians,
Ephesians, Philippians, Colossians, Titus, Philemon, 2 Thessalonians, 2 Timothy, 2 Peter, 2-3 John,
Jude). Own-translating any of these would be the next step, if wanted — not attempted here per the
established "only seed real bilingual source" pattern.
### Matins responsory pools: the "untranslated 15" turned out mostly already bilingual (2026-09-04)
Asked to translate the 15 "real Latin, no English" books. Before translating anything, re-checked
each one's own `@Tempora/X:ResponsoryN` reference chain (the same technique that unblocked 8 books
earlier the same day) — and found the whole post-Epiphany "ordinary time" reading season (weeks
3-5, covering Galatians/Ephesians/Philippians/Colossians/1-2 Timothy/Titus/Philemon/2
Thessalonians) doesn't have its own distinct responsory content at all: every one of its 21 feria
files `@`-references 2 Corinthians' own week (Epi2-0 through Epi2-6, already fully bilingual from
earlier this same day) by weekday position. Confirmed by reading every week-3/4/5 feria file's own
`@`-line directly, not guessed. Same story for 2 Peter, 2-3 John, and Jude — all four `@`-reference
Ascension Day's own responsories (already seeded as `act`). **None of these 12 books needed any
translation at all** — added `gal`/`phil`/`1tim` (share Epi2-1), `col`/`2tim` (share Epi2-2),
`eph` (Epi2-3), `1thess`/`tit` (share Epi2-4), `2thess`/`phlm` (share Epi2-6), `2pet`/`2joan`/
`3joan` (share `act`'s R1), `jud` (`act`'s R7) — all real, already-transcribed bilingual text.
Also fixed a real, separate bug the user caught by eye in the rendered app: `getResponsoryForBook`'s
`joinResponsory` concatenated the pool's `r`/`v` text with a bare newline and no "R."/"V." labels
at all — every other responsory source in the app (`octave-readings.ts`'s own `responsory` field,
every `nocturn-readings/*.yml`'s inline `responsory`, and the new per-Common-category pool) uses
the full "R. ...\n* ...\nV. ...\nR. ..." convention. Fixed by computing the repeat line from the
`*` marker already present in the pool's own `r` text (a separate commit, `1867f73`, before this
content pass).
**Only `rom` (Romans) turned out to have no content to translate at all**, on inspection — re-
checked every one of its 15 citing files (all in the Christmas-Octave `Nat0X` range): every single
one `@`-references an unrelated feast's own proper responsory (Circumcision, Christmas Day, or a
January 7 saint), never anything Romans-specific, standalone or borrowed. There's no genuine
"Romans content" anywhere in this reference source to translate, sourced or original — using one of
these borrowed responsories would repeat the Sacred Heart/Jeremiah mismatch this file already
avoids elsewhere. Left `rom` unseeded; it would need an entirely original composition, not a
translation, if ever wanted.
59 of 72 bible-plan books now seeded — every book with any genuinely usable Latin at all. The
remaining 13 (`rom` plus the 12 already-confirmed-absent books) are the real, final gap: `rom` has
no book-specific content anywhere in this source; the other 12 have no citation anywhere at all.
Ran the full canonical-key audit again (programmatic check against `BOOK_ALIASES`, per the
established lesson) — confirmed clean. `npm test` (2025 passed) and `tsc --noEmit` both pass;
live-verified through `getBiblePlanReadings` (`post-epiphany-3`/Wednesday `Gal`, `post-epiphany-5`/
Monday `1tim`, `sunday-after-ascension`/Saturday `Jude` all resolve real responsory text; `Ruth`
correctly still resolves `undefined`).
### Matins responsory pools: `cant` (Canticles) found in the Sancti files, not Tempora (2026-09-05)
User pushback on `cant` being listed "confirmed genuinely absent": right instinct to check the
Commune files specifically — Canticles/Song of Songs imagery is heavily used in Marian propers.
Checked `Latin/Commune/C12.txt` (the Little Office of the BVM) directly: it does cite `!Cant 6:8`,
but only as a Lauds Capitulum, not a Matins Nocturn lesson — Capitula don't carry their own
9-Responsory structure, and C12's actual Lectio1-3 are Sirach 24, not Canticles (matching this
pool's existing `common-of-the-bvm` sourcing). So the Commune search itself came up empty for a
genuine Matins responsory — but it redirected the search productively: checked `Sancti/` (individual
saint/feast files) with the same `awk` Lectio-citation survey used for Tempora, and found real
`!Cant` Nocturn lessons on the Visitation (July 2) and throughout the Assumption Octave
(Sancti/08-15t through 08-22t) — the historic BVM feasts that read straight through the Song of
Songs. Only the Visitation's own file (`07-02.txt`) has both languages; the Assumption Octave days
have real Latin but no English anywhere.
Added `cant`, sourced from `Sancti/07-02.txt` — genuinely Canticles-sourced responsories that
directly blend Song of Songs verses with the Visitation narrative itself ("Surge, própera, amíca
mea... Intrávit María in domum Zacharíæ"), not a borrowed-unrelated-feast mismatch.
60 of 72 bible-plan books now seeded. `npm test` (2025 passed) and `tsc --noEmit` both pass;
live-verified through `getBiblePlanReadings` (a Dec 27 calendar-dated row resolves real `Cant 3`
responsory text). Canonical-key audit re-run, clean (`cant` has no `BOOK_ALIASES` entry).
Prompted by finding `cant` in Sancti, re-checked the other 11 already-confirmed-absent books
against Sancti too (not just Tempora) — found 2 more: `lev` (Leviticus, `Sancti/02-02.txt`, the
Purification of the BVM — its own Leviticus purification-law reading is the feast's actual reason
for being) and `num` (Numbers, `Sancti/09-14.txt`, the Exaltation of the Holy Cross — the
bronze-serpent/Cross typology, Num 21:6-9, only 1 entry). Both genuine thematic matches, not
borrowed-unrelated content. The other 9 (`bar`, Josue, Judices, Ruth, 1-2 Chronicles, Ezra,
Nehemiah, Deuteronomy) checked against the reference engine's own full Sancti citation list —
confirmed still absent, no alternate abbreviation missed.
62 of 72 bible-plan books now seeded — the real final count. `npm test` (2025 passed) and
`tsc --noEmit` both pass; live-verified through `getBiblePlanReadings` (`lent-3`/Sunday resolves
real `Lev 1` responsory text, `palm-sunday`/Sunday resolves real `Num 25-27` text). Canonical-key
audit re-run, clean. Remaining 10, the true final gap: `rom` plus 9 books with no citation
anywhere in Tempora or Sancti (`bar`, Josue, Judices, Ruth, 1-2 Chronicles, Ezra, Nehemiah,
Deuteronomy).
### Advent reading-plan carryover into Christmastide (2026-09-05)
User-flagged wrinkle in `data/hours/bible-plan/*.yml`'s own Isaiah plan: it's authored as a full
4-week Advent (`advent-1-sunday` through `advent-4-saturday`, 28 rows), but real Advent is never
that long. Advent's last real day is always Dec 23 (Dec 24 is the Vigil of Christmas's own
temporal id, `calendar/temporal-id.ts`), while Advent 1 Sunday itself — the Sunday nearest Nov 30
— falls anywhere from Nov 27 to Dec 3. Even the *longest* possible Advent (Nov 27, 27 real days)
is one short of the full 28-row plan; the *shortest* (Dec 3, 21 real days) is a whole week short.
Every single year, at least the plan's last row never lands on its own natural date — not just
"most years," as the request first put it.
Fixed in `propers/bible-plan.ts`'s new `adventCarryoverReadings`: whatever doesn't land on its own
natural date now carries forward one reading per day starting Christmas Day itself, pooled
alongside whatever Christmastide's own calendar-dated rows already have for that day (never
replacing them) — same "every contributing source pools, none override" design already used
throughout this file and `hours/matins.ts`'s own reading-pool assembly. Computed live from
`calendar/temporal.ts`'s `adventStart(year)` for each date's own year (the one place in this file
that needs real calendar-year awareness, since every other lookup here is year-independent); no
new content authoring needed, since the Isaiah rows were already there, just never reachable on
their own natural date in a short year.
User's own framing accepted as the trade-off: "for advent only, we need to show all of those
chapters" — i.e. every planned reading should surface somewhere, even if that means spilling into
Christmastide, rather than silently dropping the tail end of a short year's Advent plan.
Live-verified across the full spread of possible Advent-1-Sunday dates (`adventStart` for
2020-2035 spans exactly the Nov 27 - Dec 3 range): 2028 (Advent 1 Sunday = Dec 3, the latest/
shortest case) carries all 7 of week 4's Isaiah readings forward across Dec 25-31 in order; 2027/
2032 (Advent 1 Sunday = Nov 28, near-earliest/longest) carry only the last 2. Added 4 permanent
tests to `tests/propers/bible-plan.test.ts` covering both extremes, the pooling-not-replacing
behavior, and that nothing carries over before Christmas Day itself. `npm test` (2029 passed,
+4 new) and `tsc --noEmit` both pass.
### Matins responsory pools: `deut` — the first genuine original composition, not a transcription (2026-09-05)
User found a real lead while reading a patristic homily (`English/Sancti/01-02.txt`, on Matt
23:37 "O Jerusalem, Jerusalem"): it quotes Deut 32:11's eagle image in passing ("as also it is
written... an eagle stirreth up her nest... spreadeth abroad her wings"). Confirmed the verse
number against `data/scripture/deut-32.yml`'s own `n: 11` — genuinely Deut 32:11 in standard
citation, not the breviary's own internal chant-verse-numbering for the same text (which splits
it as 32:15-16 in `Latin/Psalterium/Psalmorum/Psalm226.txt`, the real Canticle of Moses sung at
Lauds — that file supplied real, properly accented liturgical Latin and its English counterpart
gave the matching translation, so no accentuation had to be guessed).
Unlike every other entry in this pool, Deuteronomy genuinely has no historical Matins responsory
anywhere in the reference source (confirmed absent from both Tempora and Sancti in the two prior
entries) — so this one is composed, not transcribed: a real R./V. pairing built entirely from
that same canticle's own genuine verses (32:15's eagle image as the R., 32:13-14's "apple of his
eye" as the V.), verbatim text, not paraphrased or invented, just newly paired. Documented plainly
in the data file's own header comment as vu's own composition rather than presented as a
historically-attested responsory, matching this project's "not a reconstruction" ethos.
63 of 72 bible-plan books now seeded (`deut` added). `npm test` (2029 passed) and `tsc --noEmit`
both pass; live-verified through `getBiblePlanReadings` (`easter-3`/Saturday resolves the real,
properly R./V.-formatted text for `Deut 33-34`). Canonical-key audit re-run, clean (`deut` has no
`BOOK_ALIASES` entry).
### Matins responsory pools: `rom` — the second (and last) original composition (2026-09-05)
Asked directly for thoughts on Romans, the one book with real citations but no usable Matins
content anywhere (every citing file borrows an unrelated feast's own proper responsory — Christmas
Day, Circumcision, or a January 7 saint). Same approach as `deut`: composed rather than
transcribed, but built from real, already-liturgical text rather than invented — Rom 13:11-12
("the night is past, the day is at hand... let us cast off the works of darkness, and put on the
armour of light") is the standing year-round ferial Lauds Capitulum
(`Latin/Psalterium/Special/Major Special.txt`'s own "Feria Laudes") and is used again at Advent
I's own Capitulum (`Tempora/Adv1-0.txt`) — genuine accented Vulgate/Douay-Rheims text, just never
combined into its own 9-lesson Matins responsory set the way every other book in this pool was.
User-confirmed before adding.
**64 of 72 bible-plan books now seeded — every book actually used in the user's own bible-plan has
a real responsory, whether transcribed (62) or composed from genuine liturgical text (`deut`,
`rom`).** The remaining 8 are the true, final, unclosable gap: books with no citation anywhere in
Tempora or Sancti at all (`bar`, Josue, Judices, Ruth, 1-2 Chronicles, Ezra, Nehemiah) — there's no
comparable "already-liturgical, just never assembled into a responsory" text to build from for any
of these, since they're never quoted or read in the Office at all, historically. `npm test` (2029
passed) and `tsc --noEmit` both pass; live-verified through `getBiblePlanReadings` (a Jan 1
calendar-dated row resolves real, correctly R./V.-formatted text for `Rom 7-8`). Canonical-key
audit re-run, clean.
### Matins responsory pools: `bar` found in the Missa, not the Horas (2026-09-05)
The "closes the pool" claim above turned out premature by one book. User pointed to
`missa/Latin/Tempora/Quad6-6.txt` — the *Mass* propers, a directory tree this whole responsory
search had never once checked (everything so far searched `horas/`, the Divine Office proper).
The Easter Vigil Mass's own fourth prophecy (`[Proph_Baruch3]`, Bar 3:9-38, "Audi, Israël, mandáta
vitæ") is genuine, real, accented liturgical Latin — just never part of the Office's own Matins at
all, in either directory tree. Composed `bar` the same way as `deut`/`rom`: built from that
prophecy's own climactic close ("Hic est Deus noster... Post hæc in terris visus est, et cum
homínibus conversátus est" — read at the Vigil because early exegetes saw "seen upon earth, and
conversed with men" as a prophecy of the Incarnation), genuine text, not invented.
**65 of 72 bible-plan books now seeded.** `npm test` (2029 passed) and `tsc --noEmit` both pass;
live-verified through `getBiblePlanReadings` (`palm-sunday`/Thursday resolves real, correctly
R./V.-formatted text for `Bar 1-2`). Canonical-key audit re-run, clean (`bar` has no `BOOK_ALIASES`
entry).
**This closes the per-book responsory pool as a project** (see "Matins responsory pools" and its
eleven follow-up entries, 2026-09-04/05) — the per-Common-category pool (19/19 real categories) is
also done; see that same first entry. Extended the Missa check to the other 6 already-absent books
too (Josue, Judices, Ruth, 1-2 Chronicles) — genuinely zero citations anywhere, Horas or Missa.
Ezra came up with one thin, ambiguous lead not acted on: `missa/Latin/Tempora/Pasc7-2.txt`'s
Introit cites `!Esdr 2:36 2:37`, but the actual Vulgate text there (checked against
`data/scripture/1esdr-2.yml`) is a plain census list that doesn't match the Introit's own text at
all ("Accípite jucunditátem glóriæ vestræ... qui vos ad cœléstia regna vocávit"). User's own
explanation (2026-09-05), plausible and probably right, though unprovable without a text we don't
have: Vulgate numbering is genuinely ambiguous here — "1/2 Esdras" is canonical Ezra/Nehemiah, but
there's also a separate, non-canonical Greek "Esdras A" (the Vulgate appendix's own "3 Esdras,"
sometimes itself called "1 Esdras" in Septuagint/Orthodox numbering) — a different text entirely
that this project has never digitized. The reference engine's own citation never disambiguates
("Esdr" bare, no "3" anywhere else in the source to compare against), so this can't be confirmed
outright, but it cleanly explains why the citation doesn't match our canonical Ezra text. Left
both `ezra` and `neh` unseeded rather than force an uncertain match. One small, unrelated loose end
noted along the way
and not addressed here: the bible-plan TSV's own content still isn't covered by a table-driven
test the way other bulk-imported content stores are (see "Bible-plan TSV — bulk conversion done"
below) — `tests/propers/bible-plan.test.ts` tests specific real dates ad hoc, not the full imported
set.
### Matins responsory pools: `ruth` — the first composition with no liturgical precedent at all (2026-09-05)
User-directed: compose Ruth's own responsory from Ruth 1:16-17 ("thy people shall be my people,
and thy God my God") on the verse's own merit, even though — unlike `deut`/`rom`/`bar` — this text
has *no* liturgical precedent anywhere in the reference source at all (no Nuptial Mass file even
exists there to check against). Flagged that distinction directly before proceeding; user confirmed
it explicitly, aware of the difference from the three prior compositions (all of which recombined
text already used liturgically elsewhere, just never in Matins).
Since the project's usual bulk-imported `data/scripture/ruth-1.yml` carries no accents, the Latin
was hand-accented rather than transcribed — but cross-checked word-by-word against already-accented
occurrences of the same words elsewhere in the reference corpus (`quocúmque`, `pópulus tuus`,
`páriter`, `ábeam`, `relínquam`, `moráta`, `morábor`, `móriar`, `moriéntem`, `suscéperit`,
`sepultúræ`) rather than guessed freehand from scratch.
66 of 72 bible-plan books now seeded. `npm test` (2029 passed) and `tsc --noEmit` both pass;
live-verified through `getBiblePlanReadings` (`sunday-after-ascension`/Saturday resolves real,
correctly R./V.-formatted text in both languages for `Ruth 3-4`). Canonical-key audit re-run, clean
(`ruth` has no `BOOK_ALIASES` entry). Remaining 6: Josue, Judices, 1-2 Chronicles, Nehemiah (no
citation anywhere at all) plus `ezra` (one thin, ambiguous near-miss, deliberately left unseeded —
see the entry above).
@@ -0,0 +1,31 @@
# Read from the reference engine: web/www/horas/Latin/Tempora/Pent01-0.txt
# ("In Festo Sanctissimæ Trinitatis"), Duplex II. classis — live-verified
# 2026-05-31 (Trinity Sunday itself that year). Previously not modeled as
# its own record at all: `resolveTemporalId` just fell back to
# `post-pentecost-01`, so this Sunday — one of the principal Sundays of
# the whole year — displayed as a generic ordinary post-Pentecost Sunday,
# with whatever saint happened to be assigned that date (if any) winning
# outright per the plain `ordinary-sunday` rule. Found and fixed 2026-09-04
# after the user asked about a display-only-looking gap that turned out to
# be this much bigger mechanism gap.
id: trinity-sunday
name: "The Most Holy Trinity"
# Reference engine's own [Officium] title is a prepositional phrase ("In
# Festo Sanctissimæ Trinitatis"); adapted to this app's nominative-noun-
# phrase convention.
nameLa: "Sanctissima Trinitas"
rank: duplex-2-classis
anchor:
kind: easter
offset: 56
# Per direct instruction (2026-09-04): always wins, same as christ-the-
# king.yml's own `unconditional: true` — one of the year's principal
# Sundays shouldn't lose to a same-rank fixed-date collision. The one
# real case this matters for: the Queenship of the BVM (1954 addition,
# fixed May 31, also Duplex II. classis) lands on the same date as
# Trinity Sunday in rare years (e.g. 2026) — not verifiable against the
# Monastic Tridentinum 1617 track directly, since that calendar doesn't
# carry the Queenship feast at all (confirmed live: May 31 1617-track
# shows St. Petronilla instead, this app's own blended-calendar-only
# collision).
unconditional: true
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,320 @@
# A per-Common-category pool of Matins Nocturn 2/3 responsories — sibling to
# matins-responsories-by-book.yml's per-book pool, same "loose match, cycled
# by index" design, but keyed by a saint's own `common:` category (see
# SaintRecord.common in calendar/types.ts) instead of a scripture book. Most
# of this project's 272 nocturn-readings/*.yml files (out of 355) have no
# `responsory:` field of their own — a real, large content gap, not the
# small handful the header comments in those files individually call out —
# and this pool is the mechanism to close it generically rather than
# per-saint.
#
# All content transcribed directly from the reference engine's own Commune
# text files (divinum-officium-reference's web/www/horas/{Latin,English}/
# Commune/CN.txt — the *secular* Commune; Monastic 1617's own CommuneM/CN.txt
# files just `@Commune/CN`-reference these verbatim for every category here,
# so there is no separate Monastic responsory text to source), each holding
# a fixed 6-9 Great Responsories (Nocturn 1-3, in their historical position)
# for one Commune category. Several of vu's own `common:` category ids are
# genuine aliases of the same underlying reference file — verified by
# reading each candidate file's own `@Commune/CX` inheritance line, not
# guessed:
# - `common-of-a-confessor-doctor` / `common-of-a-confessor-pope` inherit
# C4's responsories unchanged (only the Oratio/Officium title differ) —
# same pool as `common-of-a-confessor-bishop`.
# - `common-of-a-confessor-not-bishop` / `common-of-an-abbot` /
# `common-of-several-confessors` (the last confirmed against its one
# real user, Ss. Seven Founders of the Servite Order, non-bishops) all
# inherit C5 unchanged — same pool as `common-of-a-confessor`.
# - `common-of-a-martyr` (C2a) inherits C2 unchanged — same pool as
# `common-of-a-martyr-bishop`.
# - `common-of-a-virgin` (C6a) inherits C6 unchanged — same pool as
# `common-of-a-virgin-martyr`.
# - `common-of-a-widow` (C7a) / `common-of-several-women-martyrs` (the
# latter confirmed against its one real user, Ss. Perpetua and
# Felicity, both non-virgins) inherit C7 unchanged — same pool as
# `common-of-a-holy-woman`.
# - `common-of-apostles` (plural feasts, e.g. the Octave of Ss. Peter and
# Paul) is the same C1 pool as `common-of-an-apostle`.
#
# Not seeded here, deliberately — no direct Commune responsory file exists
# (angels and evangelists each have their own real proper content instead;
# vigils and the handful of `proper-to-*` ids aren't Commune categories at
# all): `common-of-an-angel`, `common-of-an-evangelist`, `common-of-a-vigil`,
# `proper-to-*`.
common-of-a-confessor:
- la: "R. Justus germinábit sicut lílium:\n* Et florébit in ætérnum ante Dóminum.\nV. Plantátus in domo Dómini, in átriis domus Dei nostri.\nR. Et florébit in ætérnum ante Dóminum."
en: "R. The righteous shall grow as the lily;\n* Yea, he shall flourish in the presence of the Lord for ever.\nV. Those that be planted in the house of the Lord, shall flourish in the courts of the house of our God.\nR. Yea, he shall flourish in the presence of the Lord for ever."
- la: "R. Iste cognóvit justítiam, et vidit mirabília magna, et exorávit Altíssimum:\n* Et invéntus est in número Sanctórum.\nV. Iste est qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Et invéntus est in número Sanctórum."
en: "R. This is he which knew righteousness, and saw great wonders, and made his prayer unto the Most High;\n* And he is numbered among the Saints.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. And he is numbered among the Saints."
- la: "R. Honéstum fecit illum Dóminus, et custodívit eum ab inimícis, et a seductóribus tutávit illum:\n* Et dedit illi claritátem ætérnam.\nV. Justum dedúxit Dóminus per vias rectas, et osténdit illi regnum Dei.\nR. Et dedit illi claritátem ætérnam."
en: "R. The Lord made him honourable, and defended him from his enemies, and kept him safe from those that lay in wait for him;\n* And gave him perpetual glory.\nV. He went down with him into the pit, and left him not in bonds.\nR. And gave him perpetual glory."
- la: "R. Amávit eum Dóminus, et ornávit eum: stolam glóriæ índuit eum,\n* Et ad portas paradísi coronávit eum.\nV. Índuit eum Dóminus lorícam fídei, et ornávit eum.\nR. Et ad portas paradísi coronávit eum."
en: "R. The Lord loved him and beautified him; He clothed him with a robe of glory,\n* And crowned him at the gates of Paradise.\nV. The Lord hath put on him the breast-plate of faith, and hath adorned him.\nR. And crowned him at the gates of Paradise."
- la: "R. Iste homo perfécit ómnia quæ locútus est ei Deus, et dixit ad eum: Ingrédere in réquiem meam:\n* Quia te vidi justum coram me ex ómnibus géntibus.\nV. Iste est, qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Quia te vidi justum coram me ex ómnibus géntibus."
en: "R. This is he which did according unto all that God commanded him; and God said unto him: Enter thou into My rest,\n* For thee have I seen righteous before Me among all people.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. For thee have I seen righteous before Me among all people."
- la: "R. Iste est qui ante Deum magnas virtútes operátus est, et de omni corde suo laudávit Dóminum:\n* Ipse intercédat pro peccátis ómnium populórum.\nV. Ecce homo sine queréla, verus Dei cultor, ábstinens se ab omni ópere malo, et pérmanens in innocéntia sua.\nR. Ipse intercédat pro peccátis ómnium populórum."
en: "R. This is he which wrought great wonders before God, and praised the Lord with all his heart.\n* May he pray for all people, that their sins may be forgiven unto them.\nV. Behold a man without blame, a worshipper of God in truth, keeping himself clean from every evil work, and abiding still in his innocency.\nR. May he pray for all people, that their sins may be forgiven unto them."
common-of-a-confessor-bishop:
- la: "R. Euge, serve bone et fidélis, quia in pauca fuísti fidélis, supra multa te constítuam:\n* Intra in gáudium Dómini tui.\nV. Dómine, quinque talénta tradidísti mihi, ecce ália quinque superlucrátus sum.\nR. Intra in gáudium Dómini tui."
en: "R. Well done, thou good and faithful servant, thou hast been faithful over a few things. I will make thee ruler over many things:\n* Enter thou into the joy of thy Lord.\nV. Lord, thou deliveredst unto me five talents; behold, I have gained beside them five talents more.\nR. Enter thou into the joy of thy Lord."
- la: "R. Ecce sacérdos magnus, qui in diébus suis plácuit Deo:\n* Ideo jurejurándo fecit illum Dóminus créscere in plebem suam.\nV. Benedictiónem ómnium géntium dedit illi, et testaméntum suum confirmávit super caput ejus.\nR. Ideo jurejurándo fecit illum Dóminus créscere in plebem suam."
en: "R. Behold an high priest, who in his days pleased God\n* Therefore the Lord assured him by an oath that He would multiply his seed among His people.\nV. He hath made him a blessing unto all nations, and hath established His covenant upon his head.\nR. Therefore the Lord assured him by an oath that He would multiply his seed among His people"
- la: "R. Jurávit Dóminus, et non pœnitébit eum:\n* Tu es sacérdos in ætérnum secúndum órdinem Melchísedech.\nV. Dixit Dóminus Dómino meo, Sede a dextris meis.\nR. Tu es sacérdos in ætérnum secúndum órdinem Melchísedech."
en: "R. The Lord hath sworn and will not repent\n* Thou art a Priest for ever after the order of Melchisedek.\nV. The Lord said unto my Lord Sit Thou at My right hand.\nR. Thou art a Priest for ever after the order of Melchisedek."
- la: "R. Invéni David servum meum, óleo sancto meo unxi eum:\n* Manus enim mea auxiliábitur ei.\nV. Nihil profíciet inimícus in eo, et fílius iniquitátis non nocébit ei.\nR. Manus enim mea auxiliábitur ei."
en: "R. I have found David My servant, with My holy oil have I anointed him\n* For My hand shall help him.\nV. The enemy shall prevail nothing against him, nor the son of wickedness afflict him.\nR. For My hand shall help him."
- la: "R. Pósui adjutórium super poténtem, et exaltávi eléctum de plebe mea:\n* Manus enim mea auxiliábitur ei.\nV. Invéni David servum meum, óleo sancto meo unxi eum.\nR. Manus enim mea auxiliábitur ei."
en: "R. I have laid help upon one that is mighty, and have exalted one chosen out of My people\n* For My hand shall help him.\nV. I have found David My servant, with My holy oil have I anointed him.\nR. For My hand shall help him."
- la: "R. Iste est, qui ante Deum magnas virtútes operátus est, et omnis terra doctrína ejus repléta est:\n* Ipse intercédat pro peccátis ómnium populórum.\nV. Iste est, qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Ipse intercédat pro peccátis ómnium populórum."
en: "R. This is he which wrought great wonders before God, and the whole earth is full of his teaching\n* May he pray for all people, that their sins may be forgiven unto them\nV. This is he which loved not his life in this world, and hath attained unto the kingdom of heaven.\nR. May he pray for all people, that their sins may be forgiven unto them"
- la: "R. Amávit eum Dóminus, et ornávit eum: stolam glóriæ índuit eum,\n* Et ad portas paradísi coronávit eum.\nV. Induit eum Dóminus lorícam fídei, et ornávit eum.\nR. Et ad portas paradísi coronávit eum."
en: "R. The Lord loved him and beautified him He clothed him with a robe of glory\n* And crowned him at the gates of Paradise.\nV. The Lord hath put on him the breast-plate of faith, and hath adorned him.\nR. And crowned him at the gates of Paradise."
- la: "R. Sint lumbi vestri præcíncti, et lucérnæ ardéntes in mánibus vestris:\n* Et vos símiles homínibus exspectántibus dóminum suum, quando revertátur a núptiis.\nV. Vigiláte ergo, quia nescítis qua hora Dóminus vester ventúrus sit.\nR. Et vos símiles homínibus exspectántibus dóminum suum, quando revertátur a núptiis."
en: "R. Let your loins be girded about, and your lights burning;\n* And ye yourselves like unto men that wait for their lord, when he will return from the wedding.\nV. Watch therefore, for ye know not what hour your Lord doth come.\nR. And ye yourselves like unto men that wait for their lord, when he will return from the wedding."
common-of-a-confessor-doctor:
- la: "R. Euge, serve bone et fidélis, quia in pauca fuísti fidélis, supra multa te constítuam:\n* Intra in gáudium Dómini tui.\nV. Dómine, quinque talénta tradidísti mihi, ecce ália quinque superlucrátus sum.\nR. Intra in gáudium Dómini tui."
en: "R. Well done, thou good and faithful servant, thou hast been faithful over a few things. I will make thee ruler over many things:\n* Enter thou into the joy of thy Lord.\nV. Lord, thou deliveredst unto me five talents; behold, I have gained beside them five talents more.\nR. Enter thou into the joy of thy Lord."
- la: "R. Ecce sacérdos magnus, qui in diébus suis plácuit Deo:\n* Ideo jurejurándo fecit illum Dóminus créscere in plebem suam.\nV. Benedictiónem ómnium géntium dedit illi, et testaméntum suum confirmávit super caput ejus.\nR. Ideo jurejurándo fecit illum Dóminus créscere in plebem suam."
en: "R. Behold an high priest, who in his days pleased God\n* Therefore the Lord assured him by an oath that He would multiply his seed among His people.\nV. He hath made him a blessing unto all nations, and hath established His covenant upon his head.\nR. Therefore the Lord assured him by an oath that He would multiply his seed among His people"
- la: "R. Jurávit Dóminus, et non pœnitébit eum:\n* Tu es sacérdos in ætérnum secúndum órdinem Melchísedech.\nV. Dixit Dóminus Dómino meo, Sede a dextris meis.\nR. Tu es sacérdos in ætérnum secúndum órdinem Melchísedech."
en: "R. The Lord hath sworn and will not repent\n* Thou art a Priest for ever after the order of Melchisedek.\nV. The Lord said unto my Lord Sit Thou at My right hand.\nR. Thou art a Priest for ever after the order of Melchisedek."
- la: "R. Invéni David servum meum, óleo sancto meo unxi eum:\n* Manus enim mea auxiliábitur ei.\nV. Nihil profíciet inimícus in eo, et fílius iniquitátis non nocébit ei.\nR. Manus enim mea auxiliábitur ei."
en: "R. I have found David My servant, with My holy oil have I anointed him\n* For My hand shall help him.\nV. The enemy shall prevail nothing against him, nor the son of wickedness afflict him.\nR. For My hand shall help him."
- la: "R. Pósui adjutórium super poténtem, et exaltávi eléctum de plebe mea:\n* Manus enim mea auxiliábitur ei.\nV. Invéni David servum meum, óleo sancto meo unxi eum.\nR. Manus enim mea auxiliábitur ei."
en: "R. I have laid help upon one that is mighty, and have exalted one chosen out of My people\n* For My hand shall help him.\nV. I have found David My servant, with My holy oil have I anointed him.\nR. For My hand shall help him."
- la: "R. Iste est, qui ante Deum magnas virtútes operátus est, et omnis terra doctrína ejus repléta est:\n* Ipse intercédat pro peccátis ómnium populórum.\nV. Iste est, qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Ipse intercédat pro peccátis ómnium populórum."
en: "R. This is he which wrought great wonders before God, and the whole earth is full of his teaching\n* May he pray for all people, that their sins may be forgiven unto them\nV. This is he which loved not his life in this world, and hath attained unto the kingdom of heaven.\nR. May he pray for all people, that their sins may be forgiven unto them"
- la: "R. Amávit eum Dóminus, et ornávit eum: stolam glóriæ índuit eum,\n* Et ad portas paradísi coronávit eum.\nV. Induit eum Dóminus lorícam fídei, et ornávit eum.\nR. Et ad portas paradísi coronávit eum."
en: "R. The Lord loved him and beautified him He clothed him with a robe of glory\n* And crowned him at the gates of Paradise.\nV. The Lord hath put on him the breast-plate of faith, and hath adorned him.\nR. And crowned him at the gates of Paradise."
- la: "R. Sint lumbi vestri præcíncti, et lucérnæ ardéntes in mánibus vestris:\n* Et vos símiles homínibus exspectántibus dóminum suum, quando revertátur a núptiis.\nV. Vigiláte ergo, quia nescítis qua hora Dóminus vester ventúrus sit.\nR. Et vos símiles homínibus exspectántibus dóminum suum, quando revertátur a núptiis."
en: "R. Let your loins be girded about, and your lights burning;\n* And ye yourselves like unto men that wait for their lord, when he will return from the wedding.\nV. Watch therefore, for ye know not what hour your Lord doth come.\nR. And ye yourselves like unto men that wait for their lord, when he will return from the wedding."
common-of-a-confessor-not-bishop:
- la: "R. Justus germinábit sicut lílium:\n* Et florébit in ætérnum ante Dóminum.\nV. Plantátus in domo Dómini, in átriis domus Dei nostri.\nR. Et florébit in ætérnum ante Dóminum."
en: "R. The righteous shall grow as the lily;\n* Yea, he shall flourish in the presence of the Lord for ever.\nV. Those that be planted in the house of the Lord, shall flourish in the courts of the house of our God.\nR. Yea, he shall flourish in the presence of the Lord for ever."
- la: "R. Iste cognóvit justítiam, et vidit mirabília magna, et exorávit Altíssimum:\n* Et invéntus est in número Sanctórum.\nV. Iste est qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Et invéntus est in número Sanctórum."
en: "R. This is he which knew righteousness, and saw great wonders, and made his prayer unto the Most High;\n* And he is numbered among the Saints.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. And he is numbered among the Saints."
- la: "R. Honéstum fecit illum Dóminus, et custodívit eum ab inimícis, et a seductóribus tutávit illum:\n* Et dedit illi claritátem ætérnam.\nV. Justum dedúxit Dóminus per vias rectas, et osténdit illi regnum Dei.\nR. Et dedit illi claritátem ætérnam."
en: "R. The Lord made him honourable, and defended him from his enemies, and kept him safe from those that lay in wait for him;\n* And gave him perpetual glory.\nV. He went down with him into the pit, and left him not in bonds.\nR. And gave him perpetual glory."
- la: "R. Amávit eum Dóminus, et ornávit eum: stolam glóriæ índuit eum,\n* Et ad portas paradísi coronávit eum.\nV. Índuit eum Dóminus lorícam fídei, et ornávit eum.\nR. Et ad portas paradísi coronávit eum."
en: "R. The Lord loved him and beautified him; He clothed him with a robe of glory,\n* And crowned him at the gates of Paradise.\nV. The Lord hath put on him the breast-plate of faith, and hath adorned him.\nR. And crowned him at the gates of Paradise."
- la: "R. Iste homo perfécit ómnia quæ locútus est ei Deus, et dixit ad eum: Ingrédere in réquiem meam:\n* Quia te vidi justum coram me ex ómnibus géntibus.\nV. Iste est, qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Quia te vidi justum coram me ex ómnibus géntibus."
en: "R. This is he which did according unto all that God commanded him; and God said unto him: Enter thou into My rest,\n* For thee have I seen righteous before Me among all people.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. For thee have I seen righteous before Me among all people."
- la: "R. Iste est qui ante Deum magnas virtútes operátus est, et de omni corde suo laudávit Dóminum:\n* Ipse intercédat pro peccátis ómnium populórum.\nV. Ecce homo sine queréla, verus Dei cultor, ábstinens se ab omni ópere malo, et pérmanens in innocéntia sua.\nR. Ipse intercédat pro peccátis ómnium populórum."
en: "R. This is he which wrought great wonders before God, and praised the Lord with all his heart.\n* May he pray for all people, that their sins may be forgiven unto them.\nV. Behold a man without blame, a worshipper of God in truth, keeping himself clean from every evil work, and abiding still in his innocency.\nR. May he pray for all people, that their sins may be forgiven unto them."
common-of-a-confessor-pope:
- la: "R. Euge, serve bone et fidélis, quia in pauca fuísti fidélis, supra multa te constítuam:\n* Intra in gáudium Dómini tui.\nV. Dómine, quinque talénta tradidísti mihi, ecce ália quinque superlucrátus sum.\nR. Intra in gáudium Dómini tui."
en: "R. Well done, thou good and faithful servant, thou hast been faithful over a few things. I will make thee ruler over many things:\n* Enter thou into the joy of thy Lord.\nV. Lord, thou deliveredst unto me five talents; behold, I have gained beside them five talents more.\nR. Enter thou into the joy of thy Lord."
- la: "R. Ecce sacérdos magnus, qui in diébus suis plácuit Deo:\n* Ideo jurejurándo fecit illum Dóminus créscere in plebem suam.\nV. Benedictiónem ómnium géntium dedit illi, et testaméntum suum confirmávit super caput ejus.\nR. Ideo jurejurándo fecit illum Dóminus créscere in plebem suam."
en: "R. Behold an high priest, who in his days pleased God\n* Therefore the Lord assured him by an oath that He would multiply his seed among His people.\nV. He hath made him a blessing unto all nations, and hath established His covenant upon his head.\nR. Therefore the Lord assured him by an oath that He would multiply his seed among His people"
- la: "R. Jurávit Dóminus, et non pœnitébit eum:\n* Tu es sacérdos in ætérnum secúndum órdinem Melchísedech.\nV. Dixit Dóminus Dómino meo, Sede a dextris meis.\nR. Tu es sacérdos in ætérnum secúndum órdinem Melchísedech."
en: "R. The Lord hath sworn and will not repent\n* Thou art a Priest for ever after the order of Melchisedek.\nV. The Lord said unto my Lord Sit Thou at My right hand.\nR. Thou art a Priest for ever after the order of Melchisedek."
- la: "R. Invéni David servum meum, óleo sancto meo unxi eum:\n* Manus enim mea auxiliábitur ei.\nV. Nihil profíciet inimícus in eo, et fílius iniquitátis non nocébit ei.\nR. Manus enim mea auxiliábitur ei."
en: "R. I have found David My servant, with My holy oil have I anointed him\n* For My hand shall help him.\nV. The enemy shall prevail nothing against him, nor the son of wickedness afflict him.\nR. For My hand shall help him."
- la: "R. Pósui adjutórium super poténtem, et exaltávi eléctum de plebe mea:\n* Manus enim mea auxiliábitur ei.\nV. Invéni David servum meum, óleo sancto meo unxi eum.\nR. Manus enim mea auxiliábitur ei."
en: "R. I have laid help upon one that is mighty, and have exalted one chosen out of My people\n* For My hand shall help him.\nV. I have found David My servant, with My holy oil have I anointed him.\nR. For My hand shall help him."
- la: "R. Iste est, qui ante Deum magnas virtútes operátus est, et omnis terra doctrína ejus repléta est:\n* Ipse intercédat pro peccátis ómnium populórum.\nV. Iste est, qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Ipse intercédat pro peccátis ómnium populórum."
en: "R. This is he which wrought great wonders before God, and the whole earth is full of his teaching\n* May he pray for all people, that their sins may be forgiven unto them\nV. This is he which loved not his life in this world, and hath attained unto the kingdom of heaven.\nR. May he pray for all people, that their sins may be forgiven unto them"
- la: "R. Amávit eum Dóminus, et ornávit eum: stolam glóriæ índuit eum,\n* Et ad portas paradísi coronávit eum.\nV. Induit eum Dóminus lorícam fídei, et ornávit eum.\nR. Et ad portas paradísi coronávit eum."
en: "R. The Lord loved him and beautified him He clothed him with a robe of glory\n* And crowned him at the gates of Paradise.\nV. The Lord hath put on him the breast-plate of faith, and hath adorned him.\nR. And crowned him at the gates of Paradise."
- la: "R. Sint lumbi vestri præcíncti, et lucérnæ ardéntes in mánibus vestris:\n* Et vos símiles homínibus exspectántibus dóminum suum, quando revertátur a núptiis.\nV. Vigiláte ergo, quia nescítis qua hora Dóminus vester ventúrus sit.\nR. Et vos símiles homínibus exspectántibus dóminum suum, quando revertátur a núptiis."
en: "R. Let your loins be girded about, and your lights burning;\n* And ye yourselves like unto men that wait for their lord, when he will return from the wedding.\nV. Watch therefore, for ye know not what hour your Lord doth come.\nR. And ye yourselves like unto men that wait for their lord, when he will return from the wedding."
common-of-a-dedication:
- la: "R. In dedicatióne templi decantábat pópulus laudem:\n* Et in ore eórum dulcis resonábat sonus.\nV. Fundáta est domus Dómini supra vérticem móntium, et vénient ad eam omnes gentes.\nR. Et in ore eórum dulcis resonábat sonus."
en: "R. When the Temple was dedicated the people sang praise;\n* And sweet in their mouths was the sound.\nV. The Lord's house is established in the top of the mountains; and all nations shall flow unto it.\nR. And sweet in their mouths was the sound."
- la: "R. Fundáta est domus Dómini supra vérticem móntium, et exaltáta est super omnes colles:\n* Et vénient ad eam omnes gentes, et dicent: Glória tibi, Dómine.\nV. Veniéntes autem vénient cum exsultatióne, portántes manípulos suos.\nR. Et vénient ad eam omnes gentes, et dicent: Glória tibi, Dómine."
en: "R. The Lord's house is established in the top of the mountains, and exalted above the hills;\n* And all nations shall flow unto it, and shall say: Glory be to thee, O Lord!\nV. They shall doubtless come again with rejoicing, bringing their sheaves with them.\nR. And all nations shall flow unto it, and shall say: Glory be to thee, O Lord!"
- la: "R. Bénedic, Dómine, domum istam, quam ædificávi nómini tuo: veniéntium in loco isto\n* Exáudi preces in excélso sólio glóriæ tuæ.\nV. Dómine, si convérsus fúerit pópulus tuus, et oráverit ad sanctuárium tuum.\nR. Exáudi preces in excélso sólio glóriæ tuæ."
en: "R. O Lord, bless this house which I have built unto thy name. whosoever shall come unto this place and pray, then\n* Hear thou from the excellent throne of thy glory.\nV. O Lord, if thy people turn and pray toward thy sanctuary.\nR. Hear thou from the excellent throne of thy glory."
- la: "R. Orántibus in loco isto,\n* Dimítte peccáta pópuli tui, Deus, et osténde eis viam bonam per quam ámbulent, et da glóriam in loco isto.\nV. Qui regis Israël inténde, qui dedúcis velut ovem Joseph, qui sedes super Chérubim.\nR. Dimítte peccáta pópuli tui, Deus, et osténde eis viam bonam per quam ámbulent, et da glóriam in loco isto."
en: "R. If they pray toward this place,\n* Forgive the sin of thy people, O God, and teach them the good way wherein they should walk, and manifest forth thy glory in this place.\nV. Give ear, O Shepherd of Israel, thou that leadest Joseph like a flock, thou that sittest upon the cherubim.\nR. Forgive the sin of thy people, O God, and teach them the good way wherein they should walk, and manifest forth thy glory in this place."
- la: "R. O quam metuéndus est locus iste:\n* Vere non est hic áliud nisi domus Dei et porta cæli.\nV. Hæc est domus Dómini fírmiter ædificáta, bene fundáta est supra firmam petram.\nR. Vere non est hic áliud nisi domus Dei et porta cæli."
en: "R. How dreadful is this place!\n* Surely this is none other but the house of God, and this is the gate of heaven.\nV. This is the house of God, stoutly builded, well founded upon a sure rock.\nR. Surely this is none other but the house of God, and this is the gate of heaven."
- la: "R. Mane surgens Jacob, erigébat lápidem in títulum, fundens óleum désuper; votum vovit Dómino:\n* Vere locus iste sanctus est, et ego nesciébam.\nV. Cumque evigilásset Jacob de somno, ait.\nR. Vere locus iste sanctus est, et ego nesciébam."
en: "R. Jacob rose up early in the morning, and set up the stone for a pillar, and poured oil upon the top of it, and vowed a vow unto the Lord.\n* Surely this place is holy, and I knew it not.\nV. And Jacob awaked out of his sleep, and he said\nR. Surely this place is holy, and I knew it not."
- la: "R. Domus mea, domus oratiónis vocábitur, dicit Dóminus: in ea omnis qui petit, áccipit; et qui quærit, ínvenit;\n* Et pulsánti aperiétur.\nV. Pétite, et accipiétis; quǽrite, et inveniétis.\nR. Et pulsánti aperiétur."
en: "R. My house shall be called the house of prayer, saith the Lord. Therein, he that asketh, receiveth; he that seeketh, findeth;\n* And to him that knocketh, it shall be opened.\nV. Ask, and ye shall receive; seek, and ye shall find.\nR. And to him that knocketh, it shall be opened."
- la: "R. Lápides pretiósi omnes muri tui,\n* Et turres Jerúsalem gemmis ædificabúntur.\nV. Portæ Jerúsalem ex sapphíro et smarágdo ædificabúntur, et ex lápide pretióso omnis circúitus muri ejus.\nR. Et turres Jerúsalem gemmis ædificabúntur."
en: "R. All thy walls are of stones most precious.\n* The towers of Jerusalem shall be built up with jewels.\nV. The gates of Jerusalem shall be built up with the sapphire stone, and the emerald, and all her walls round about with stones most precious.\nR. The towers of Jerusalem shall be built up with jewels."
common-of-a-holy-woman:
- la: "R. Fallax grátia, et vana est pulchritúdo:\n* Múlier timens Dóminum, ipsa laudábitur.\nV. Date ei de fructu mánuum suárum, et laudent eam in portis ópera ejus.\nR. Múlier timens Dóminum, ipsa laudábitur."
en: "R. Favour is deceitful, and beauty is vain\n* A woman that feareth God she shall be praised.\nV. Give her of the fruit of her hands, and let her own works praise her in the gates.\nR. A woman that feareth God she shall be praised."
- la: "R. Os suum apéruit sapiéntiæ, et lex cleméntiæ in lingua ejus: considerávit sémitas domus suæ,\n* Et panem otiósa non comédit.\nV. Gustávit et vidit quia bona est negotiátio ejus: non exstinguétur in nocte lucérna ejus.\nR. Et panem otiósa non comédit."
en: "R. She openeth her mouth with wisdom, and in her tongue is the law of kindness. She looketh well to the ways of her household\n* And eateth not the bread of idleness.\nV. She tasteth and perceiveth that her merchandise is good. Her candle goeth not out by night.\nR. And she eateth not the bread of idleness."
- la: "R. Regnum mundi et omnem ornátum sǽculi contémpsi, propter amórem Dómini mei Jesu Christi:\n* Quem vidi, quem amávi, in quem crédidi, quem diléxi.\nV. Eructávit cor meum verbum bonum: dico ego ópera mea Regi.\nR. Quem vidi, quem amávi, in quem crédidi, quem diléxi."
en: "R. The kingdom of this world and all the beauty of life I have esteemed as nothing, for the excellency of the love of Jesus Christ my Lord\n* Whom, having seen, I loved Whom, having believed, I longed after.\nV. My heart is overflowing with a good matter I speak of my works unto the King.\nR. Whom, having seen, I loved Whom, having believed, I longed after."
common-of-a-martyr:
- la: "R. Iste Sanctus pro lege Dei sui certávit usque ad mortem, et a verbis impiórum non tímuit:\n* Fundátus enim erat supra firmam petram.\nV. Iste est qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Fundátus enim erat supra firmam petram."
en: "R. This man is holy, for he hath striven for the law of his God even unto death, and hath not feared for the words of the ungodly;\n* For he had his foundation upon a strong rock.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. For he had his foundation upon a strong rock."
- la: "R. Justus germinábit sicut lílium:\n* Et florébit in ætérnum ante Dóminum.\nV. Plantátus in domo Dómini, in átriis domus Dei nostri.\nR. Et florébit in ætérnum ante Dóminum."
en: "R. The righteous shall grow as the lily\n* Yea, he shall flourish in the presence of the Lord for ever.\nV. Those that be planted in the house of the Lord, shall flourish in the courts of the house of our God.\nR. Yea, he shall flourish in the presence of the Lord for ever."
- la: "R. Iste cognóvit justítiam, et vidit mirabília magna, et exorávit Altíssimum\n* Et invéntus est in número Sanctórum.\nV. Iste est qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Et invéntus est in número Sanctórum."
en: "R. This is he which knew righteousness, and saw great wonders, and made his prayer unto the Most High\n* And he is numbered among the Saints.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. And he is numbered among the Saints."
- la: "R. Honéstum fecit illum Dóminus, et custodívit eum ab inimícis, et a seductóribus tutávit illum:\n* Et dedit illi claritátem ætérnam.\nV. Descendítque cum illo in fóveam, et in vínculis non derelíquit eum.\nR. Et dedit illi claritátem ætérnam."
en: "R. The Lord made him honourable, and defended him from his enemies, and kept him safe from those that lay in wait for him,\n* And gave him perpetual glory.\nV. He went down with him into the pit, and left him not in bonds.\nR. And gave him perpetual glory."
- la: "R. Desidérium ánimæ ejus tribuísti ei Dómine,\n* Et voluntáte labiórum ejus non fraudásti eum.\nV. Quóniam prævenísti eum in benedictiónibus dulcédinis: posuísti in cápite ejus corónam de lápide pretióso.\nR. Et voluntáte labiórum ejus non fraudásti eum."
en: "R. Lord, Thou hast given him his heart's desire.\n* And hast not withholden the request of his lips.\nV. For Thou hast prevented him with the blessings of sweetness: Thou hast set a crown of precious stones upon his head.\nR. And hast not withholden the request of his lips."
- la: "R. Stola jucunditátis índuit eum Dóminus:\n* Et corónam pulchritúdinis pósuit super caput ejus.\nV. Cibávit illum Dóminus pane vitæ et intelléctus: et aqua sapiéntiæ salutáris potávit illum.\nR. Et corónam pulchritúdinis pósuit super caput ejus."
en: "R. The Lord hath put on him a robe of honour,\n* And put about his head a crown of joy.\nV. With the bread of life and understanding hath the Lord fed him, and given him the water of health and wisdom to drink.\nR. And put about his head a crown of joy."
- la: "R. Coróna áurea super caput ejus,\n* Expréssa signo sanctitátis, glória honóris, et opus fortitúdinis.\nV. Quóniam prævenísti eum in benedictiónibus dulcédinis, posuísti in cápite ejus corónam de lápide pretióso.\nR. Expréssa signo sanctitátis, glória honóris, et opus fortitúdinis."
en: "R. A crown of gold upon his head,\n* Wherein is engraved Holiness, an ornament of honour, a costly work.\nV. For Thou hast prevented him with the blessings of sweetness, Thou hast set a crown of precious stones upon his head.\nR. Wherein is engraved Holiness, an ornament of honour, a costly work."
- la: "R. Hic est vere Martyr, qui pro Christi nómine sánguinem suum fudit:\n* Qui minas júdicum non tímuit, nec terrénæ dignitátis glóriam quæsívit, sed ad cæléstia regna pervénit.\nV. Justum dedúxit Dóminus per vias rectas, et osténdit illi regnum Dei.\nR. Qui minas júdicum non tímuit, nec terrénæ dignitátis glóriam quæsívit, sed ad cæléstia regna pervénit."
en: "R. This is a Martyr indeed, who shed his blood for Christ's Name's sake\n* Who feared not for the threats of judges, nor sought to be great with the glory of this world, but pressed on unto the kingdom of heaven.\nV. The Lord guided the righteous in right paths, and showed him the kingdom of God.\nR. Who feared not for the threats of judges, nor sought to be great with the glory of this world, but pressed on unto the kingdom of heaven."
common-of-a-martyr-bishop:
- la: "R. Iste Sanctus pro lege Dei sui certávit usque ad mortem, et a verbis impiórum non tímuit:\n* Fundátus enim erat supra firmam petram.\nV. Iste est qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Fundátus enim erat supra firmam petram."
en: "R. This man is holy, for he hath striven for the law of his God even unto death, and hath not feared for the words of the ungodly;\n* For he had his foundation upon a strong rock.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. For he had his foundation upon a strong rock."
- la: "R. Justus germinábit sicut lílium:\n* Et florébit in ætérnum ante Dóminum.\nV. Plantátus in domo Dómini, in átriis domus Dei nostri.\nR. Et florébit in ætérnum ante Dóminum."
en: "R. The righteous shall grow as the lily\n* Yea, he shall flourish in the presence of the Lord for ever.\nV. Those that be planted in the house of the Lord, shall flourish in the courts of the house of our God.\nR. Yea, he shall flourish in the presence of the Lord for ever."
- la: "R. Iste cognóvit justítiam, et vidit mirabília magna, et exorávit Altíssimum\n* Et invéntus est in número Sanctórum.\nV. Iste est qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Et invéntus est in número Sanctórum."
en: "R. This is he which knew righteousness, and saw great wonders, and made his prayer unto the Most High\n* And he is numbered among the Saints.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. And he is numbered among the Saints."
- la: "R. Honéstum fecit illum Dóminus, et custodívit eum ab inimícis, et a seductóribus tutávit illum:\n* Et dedit illi claritátem ætérnam.\nV. Descendítque cum illo in fóveam, et in vínculis non derelíquit eum.\nR. Et dedit illi claritátem ætérnam."
en: "R. The Lord made him honourable, and defended him from his enemies, and kept him safe from those that lay in wait for him,\n* And gave him perpetual glory.\nV. He went down with him into the pit, and left him not in bonds.\nR. And gave him perpetual glory."
- la: "R. Desidérium ánimæ ejus tribuísti ei Dómine,\n* Et voluntáte labiórum ejus non fraudásti eum.\nV. Quóniam prævenísti eum in benedictiónibus dulcédinis: posuísti in cápite ejus corónam de lápide pretióso.\nR. Et voluntáte labiórum ejus non fraudásti eum."
en: "R. Lord, Thou hast given him his heart's desire.\n* And hast not withholden the request of his lips.\nV. For Thou hast prevented him with the blessings of sweetness: Thou hast set a crown of precious stones upon his head.\nR. And hast not withholden the request of his lips."
- la: "R. Stola jucunditátis índuit eum Dóminus:\n* Et corónam pulchritúdinis pósuit super caput ejus.\nV. Cibávit illum Dóminus pane vitæ et intelléctus: et aqua sapiéntiæ salutáris potávit illum.\nR. Et corónam pulchritúdinis pósuit super caput ejus."
en: "R. The Lord hath put on him a robe of honour,\n* And put about his head a crown of joy.\nV. With the bread of life and understanding hath the Lord fed him, and given him the water of health and wisdom to drink.\nR. And put about his head a crown of joy."
- la: "R. Coróna áurea super caput ejus,\n* Expréssa signo sanctitátis, glória honóris, et opus fortitúdinis.\nV. Quóniam prævenísti eum in benedictiónibus dulcédinis, posuísti in cápite ejus corónam de lápide pretióso.\nR. Expréssa signo sanctitátis, glória honóris, et opus fortitúdinis."
en: "R. A crown of gold upon his head,\n* Wherein is engraved Holiness, an ornament of honour, a costly work.\nV. For Thou hast prevented him with the blessings of sweetness, Thou hast set a crown of precious stones upon his head.\nR. Wherein is engraved Holiness, an ornament of honour, a costly work."
- la: "R. Hic est vere Martyr, qui pro Christi nómine sánguinem suum fudit:\n* Qui minas júdicum non tímuit, nec terrénæ dignitátis glóriam quæsívit, sed ad cæléstia regna pervénit.\nV. Justum dedúxit Dóminus per vias rectas, et osténdit illi regnum Dei.\nR. Qui minas júdicum non tímuit, nec terrénæ dignitátis glóriam quæsívit, sed ad cæléstia regna pervénit."
en: "R. This is a Martyr indeed, who shed his blood for Christ's Name's sake\n* Who feared not for the threats of judges, nor sought to be great with the glory of this world, but pressed on unto the kingdom of heaven.\nV. The Lord guided the righteous in right paths, and showed him the kingdom of God.\nR. Who feared not for the threats of judges, nor sought to be great with the glory of this world, but pressed on unto the kingdom of heaven."
common-of-a-virgin:
- la: "R. Veni Sponsa Christi, áccipe corónam, quam tibi Dóminus præparávit in ætérnum; pro cujus amóre sánguinem tuum fudísti,\n* Et cum Ángelis in paradísum introísti.\nV. Veni, elécta mea, et ponam in te thronum meum; quia concupívit Rex spéciem tuam.\nR. Et cum Ángelis in paradísum introísti."
en: "R. Come, Bride of Christ, and take the everlasting crown, which the Lord hath prepared for thee, even for thee who for the love of Him hast shed thy blood;\n* And art entered with Angels into His garden.\nV. Come, O My chosen one, and I will establish My throne in thee, for the King hath reatly desired thy beauty\nR. And art entered with Angels into His garden."
- la: "R. Diffúsa est grátia in lábiis tuis,\n* Proptérea benedíxit te Deus in ætérnum.\nV. Spécie tua et pulchritúdine tua inténde, próspere procéde, et regna.\nR. Proptérea benedíxit te Deus in ætérnum."
en: "R. Grace is poured into thy lips, therefore;\n* God hath blessed thee for ever.\nV. In thy comeliness and thy beauty, go forward, fare prosperously, and reign.\nR. God hath blessed thee for ever."
- la: "R. Spécie tua et pulchritúdine tua\n* Inténde, próspere procéde, et regna.\nV. Diffúsa est grátia in lábiis tuis, proptérea benedíxit te Deus in ætérnum.\nR. Inténde, próspere procéde, et regna."
en: "R. In thy comeliness and thy beauty;\n* Go forward, fare prosperously, and reign.\nV. Grace is poured into thy lips, therefore God hath blessed thee for ever.\nR. Go forward, fare prosperously, and reign."
- la: "R. Propter veritátem, et mansuetúdinem, et justítiam:\n* Et dedúcet te mirabíliter déxtera tua.\nV. Spécie tua et pulchritúdine tua inténde, próspere procéde, et regna.\nR. Et dedúcet te mirabíliter déxtera tua."
en: "R. Because of truth, and meekness, and righteousness;\n* And thy right hand shall lead thee wonderfully.\nV. In thy comeliness, and thy beauty, go forward, fare prosperously, and reign.\nR. And thy right hand shall lead thee wonderfully."
- la: "R. Dilexísti justítiam, et odísti iniquitátem:\n* Proptérea unxit te Deus, Deus tuus, óleo lætítiæ.\nV. Propter veritátem, et mansuetúdinem, et justítiam.\nR. Proptérea unxit te Deus, Deus tuus, óleo lætítiæ."
en: "R. Thou hast loved righteousness, and hated iniquity;\n* Therefore God, thy God, hath anointed thee with the oil of gladness.\nV. Because of truth, and meekness, and righteousness.\nR. Therefore God, thy God, hath anointed thee with the oil of gladness."
- la: "R. Afferéntur Regi vírgines post eam, próximæ ejus;\n* Afferéntur tibi in lætítia et exsultatióne.\nV. Spécie tua et pulchritúdine tua; inténde, próspere procéde, et regna.\nR. Afferéntur tibi in lætítia et exsultatióne."
en: "R. After her shall virgins be brought unto the King, her fellows\n* They shall be brought unto thee with gladness and rejoicing.\nV. In thy comeliness and thy beauty, go forward, fare prosperously, and reign.\nR. They shall be brought unto thee with gladness and rejoicing."
- la: "R. Hæc est Virgo sápiens, quam Dóminus vigilántem invénit, quæ accéptis lampádibus sumpsit secum óleum:\n* Et veniénte Dómino, introívit cum eo ad núptias.\nV. Média nocte clamor factus est: Ecce sponsus venit, exíte óbviam ei.\nR. Et veniénte Dómino, introívit cum eo ad núptias."
en: "R. This is one of those wise virgins, whom the Lord found watching, for when she took her lamp, she took oil with her.\n* And when the Lord came, she went in with him to the marriage.\nV. At midnight there was a cry made: Behold, the Bridegroom cometh, go ye out to meet him.\nR. And when the Lord came, she went in with him to the marriage."
- la: "R. Média nocte clamor factus est:\n* Ecce sponsus venit, exíte óbviam ei.\nV. Prudéntes vírgines, aptáte vestras lámpades.\nR. Ecce sponsus venit, exíte óbviam ei."
en: "R. At midnight there was a cry made:\n* Behold, the Bridegroom cometh, go ye out to meet him.\nV. Trim your lamps, O ye wise virgins.\nR. Behold, the Bridegroom cometh, go ye out to meet him."
common-of-a-virgin-martyr:
- la: "R. Veni Sponsa Christi, áccipe corónam, quam tibi Dóminus præparávit in ætérnum; pro cujus amóre sánguinem tuum fudísti,\n* Et cum Ángelis in paradísum introísti.\nV. Veni, elécta mea, et ponam in te thronum meum; quia concupívit Rex spéciem tuam.\nR. Et cum Ángelis in paradísum introísti."
en: "R. Come, Bride of Christ, and take the everlasting crown, which the Lord hath prepared for thee, even for thee who for the love of Him hast shed thy blood;\n* And art entered with Angels into His garden.\nV. Come, O My chosen one, and I will establish My throne in thee, for the King hath reatly desired thy beauty\nR. And art entered with Angels into His garden."
- la: "R. Diffúsa est grátia in lábiis tuis,\n* Proptérea benedíxit te Deus in ætérnum.\nV. Spécie tua et pulchritúdine tua inténde, próspere procéde, et regna.\nR. Proptérea benedíxit te Deus in ætérnum."
en: "R. Grace is poured into thy lips, therefore;\n* God hath blessed thee for ever.\nV. In thy comeliness and thy beauty, go forward, fare prosperously, and reign.\nR. God hath blessed thee for ever."
- la: "R. Spécie tua et pulchritúdine tua\n* Inténde, próspere procéde, et regna.\nV. Diffúsa est grátia in lábiis tuis, proptérea benedíxit te Deus in ætérnum.\nR. Inténde, próspere procéde, et regna."
en: "R. In thy comeliness and thy beauty;\n* Go forward, fare prosperously, and reign.\nV. Grace is poured into thy lips, therefore God hath blessed thee for ever.\nR. Go forward, fare prosperously, and reign."
- la: "R. Propter veritátem, et mansuetúdinem, et justítiam:\n* Et dedúcet te mirabíliter déxtera tua.\nV. Spécie tua et pulchritúdine tua inténde, próspere procéde, et regna.\nR. Et dedúcet te mirabíliter déxtera tua."
en: "R. Because of truth, and meekness, and righteousness;\n* And thy right hand shall lead thee wonderfully.\nV. In thy comeliness, and thy beauty, go forward, fare prosperously, and reign.\nR. And thy right hand shall lead thee wonderfully."
- la: "R. Dilexísti justítiam, et odísti iniquitátem:\n* Proptérea unxit te Deus, Deus tuus, óleo lætítiæ.\nV. Propter veritátem, et mansuetúdinem, et justítiam.\nR. Proptérea unxit te Deus, Deus tuus, óleo lætítiæ."
en: "R. Thou hast loved righteousness, and hated iniquity;\n* Therefore God, thy God, hath anointed thee with the oil of gladness.\nV. Because of truth, and meekness, and righteousness.\nR. Therefore God, thy God, hath anointed thee with the oil of gladness."
- la: "R. Afferéntur Regi vírgines post eam, próximæ ejus;\n* Afferéntur tibi in lætítia et exsultatióne.\nV. Spécie tua et pulchritúdine tua; inténde, próspere procéde, et regna.\nR. Afferéntur tibi in lætítia et exsultatióne."
en: "R. After her shall virgins be brought unto the King, her fellows\n* They shall be brought unto thee with gladness and rejoicing.\nV. In thy comeliness and thy beauty, go forward, fare prosperously, and reign.\nR. They shall be brought unto thee with gladness and rejoicing."
- la: "R. Hæc est Virgo sápiens, quam Dóminus vigilántem invénit, quæ accéptis lampádibus sumpsit secum óleum:\n* Et veniénte Dómino, introívit cum eo ad núptias.\nV. Média nocte clamor factus est: Ecce sponsus venit, exíte óbviam ei.\nR. Et veniénte Dómino, introívit cum eo ad núptias."
en: "R. This is one of those wise virgins, whom the Lord found watching, for when she took her lamp, she took oil with her.\n* And when the Lord came, she went in with him to the marriage.\nV. At midnight there was a cry made: Behold, the Bridegroom cometh, go ye out to meet him.\nR. And when the Lord came, she went in with him to the marriage."
- la: "R. Média nocte clamor factus est:\n* Ecce sponsus venit, exíte óbviam ei.\nV. Prudéntes vírgines, aptáte vestras lámpades.\nR. Ecce sponsus venit, exíte óbviam ei."
en: "R. At midnight there was a cry made:\n* Behold, the Bridegroom cometh, go ye out to meet him.\nV. Trim your lamps, O ye wise virgins.\nR. Behold, the Bridegroom cometh, go ye out to meet him."
common-of-a-widow:
- la: "R. Fallax grátia, et vana est pulchritúdo:\n* Múlier timens Dóminum, ipsa laudábitur.\nV. Date ei de fructu mánuum suárum, et laudent eam in portis ópera ejus.\nR. Múlier timens Dóminum, ipsa laudábitur."
en: "R. Favour is deceitful, and beauty is vain\n* A woman that feareth God she shall be praised.\nV. Give her of the fruit of her hands, and let her own works praise her in the gates.\nR. A woman that feareth God she shall be praised."
- la: "R. Os suum apéruit sapiéntiæ, et lex cleméntiæ in lingua ejus: considerávit sémitas domus suæ,\n* Et panem otiósa non comédit.\nV. Gustávit et vidit quia bona est negotiátio ejus: non exstinguétur in nocte lucérna ejus.\nR. Et panem otiósa non comédit."
en: "R. She openeth her mouth with wisdom, and in her tongue is the law of kindness. She looketh well to the ways of her household\n* And eateth not the bread of idleness.\nV. She tasteth and perceiveth that her merchandise is good. Her candle goeth not out by night.\nR. And she eateth not the bread of idleness."
- la: "R. Regnum mundi et omnem ornátum sǽculi contémpsi, propter amórem Dómini mei Jesu Christi:\n* Quem vidi, quem amávi, in quem crédidi, quem diléxi.\nV. Eructávit cor meum verbum bonum: dico ego ópera mea Regi.\nR. Quem vidi, quem amávi, in quem crédidi, quem diléxi."
en: "R. The kingdom of this world and all the beauty of life I have esteemed as nothing, for the excellency of the love of Jesus Christ my Lord\n* Whom, having seen, I loved Whom, having believed, I longed after.\nV. My heart is overflowing with a good matter I speak of my works unto the King.\nR. Whom, having seen, I loved Whom, having believed, I longed after."
common-of-an-abbot:
- la: "R. Justus germinábit sicut lílium:\n* Et florébit in ætérnum ante Dóminum.\nV. Plantátus in domo Dómini, in átriis domus Dei nostri.\nR. Et florébit in ætérnum ante Dóminum."
en: "R. The righteous shall grow as the lily;\n* Yea, he shall flourish in the presence of the Lord for ever.\nV. Those that be planted in the house of the Lord, shall flourish in the courts of the house of our God.\nR. Yea, he shall flourish in the presence of the Lord for ever."
- la: "R. Iste cognóvit justítiam, et vidit mirabília magna, et exorávit Altíssimum:\n* Et invéntus est in número Sanctórum.\nV. Iste est qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Et invéntus est in número Sanctórum."
en: "R. This is he which knew righteousness, and saw great wonders, and made his prayer unto the Most High;\n* And he is numbered among the Saints.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. And he is numbered among the Saints."
- la: "R. Honéstum fecit illum Dóminus, et custodívit eum ab inimícis, et a seductóribus tutávit illum:\n* Et dedit illi claritátem ætérnam.\nV. Justum dedúxit Dóminus per vias rectas, et osténdit illi regnum Dei.\nR. Et dedit illi claritátem ætérnam."
en: "R. The Lord made him honourable, and defended him from his enemies, and kept him safe from those that lay in wait for him;\n* And gave him perpetual glory.\nV. He went down with him into the pit, and left him not in bonds.\nR. And gave him perpetual glory."
- la: "R. Amávit eum Dóminus, et ornávit eum: stolam glóriæ índuit eum,\n* Et ad portas paradísi coronávit eum.\nV. Índuit eum Dóminus lorícam fídei, et ornávit eum.\nR. Et ad portas paradísi coronávit eum."
en: "R. The Lord loved him and beautified him; He clothed him with a robe of glory,\n* And crowned him at the gates of Paradise.\nV. The Lord hath put on him the breast-plate of faith, and hath adorned him.\nR. And crowned him at the gates of Paradise."
- la: "R. Iste homo perfécit ómnia quæ locútus est ei Deus, et dixit ad eum: Ingrédere in réquiem meam:\n* Quia te vidi justum coram me ex ómnibus géntibus.\nV. Iste est, qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Quia te vidi justum coram me ex ómnibus géntibus."
en: "R. This is he which did according unto all that God commanded him; and God said unto him: Enter thou into My rest,\n* For thee have I seen righteous before Me among all people.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. For thee have I seen righteous before Me among all people."
- la: "R. Iste est qui ante Deum magnas virtútes operátus est, et de omni corde suo laudávit Dóminum:\n* Ipse intercédat pro peccátis ómnium populórum.\nV. Ecce homo sine queréla, verus Dei cultor, ábstinens se ab omni ópere malo, et pérmanens in innocéntia sua.\nR. Ipse intercédat pro peccátis ómnium populórum."
en: "R. This is he which wrought great wonders before God, and praised the Lord with all his heart.\n* May he pray for all people, that their sins may be forgiven unto them.\nV. Behold a man without blame, a worshipper of God in truth, keeping himself clean from every evil work, and abiding still in his innocency.\nR. May he pray for all people, that their sins may be forgiven unto them."
common-of-an-apostle:
- la: "R. Ecce ego mitto vos sicut oves in médio lupórum, dicit Dóminus:\n* Estóte ergo prudéntes sicut serpéntes, et símplices sicut colúmbæ.\nV. Dum lucem habétis, crédite in lucem, ut fílii lucis sitis.\nR. Estóte ergo prudéntes sicut serpéntes, et símplices sicut colúmbæ."
en: "R. Behold, I send you as sheep in the midst of wolves, said the Lord:\n* Be ye, therefore, wise as serpents and simple as doves.\nV. Whilst you have the light, believe in the light, that you may be the children of light.\nR. Be ye therefore wise as serpents and simple as doves."
- la: "R. Tóllite jugum meum super vos, dicit Dóminus, et díscite a me, quia mitis sum et húmilis corde:\n* Jugum enim meum suáve est, et onus meum leve.\nV. Et inveniétis réquiem animábus vestris.\nR. Jugum enim meum suáve est, et onus meum leve."
en: "R. Take up my yoke upon you, said the Lord, and learn of me, because I am meek, and humble of heart.\n* For my yoke is sweet and my burden light.\nV. And you shall find rest to your souls.\nR. For my yoke is sweet and my burden light."
- la: "R. Dum stetéritis ante reges et prǽsides, nolíte cogitáre quómodo aut quid loquámini:\n* Dábitur enim vobis in illa hora, quid loquámini.\nV. Non enim vos estis qui loquímini: sed Spíritus Patris vestri, qui lóquitur in vobis.\nR. Dábitur enim vobis in illa hora, quid loquámini."
en: "R. But when they shall deliver you up to the judges, take no thought how or what to speak:\n* for it shall be given you in that hour what to speak:\nV. For it is not you that speak, but the spirit of your Father that speaketh in you.\nR. For it shall be given you in that hour what to speak."
- la: "R. Vidi conjúnctos viros, habéntes spléndidas vestes, et Ángelus Dómini locútus est ad me, dicens:\n* Isti sunt viri sancti facti amíci Dei.\nV. Vidi Ángelum Dei fortem, volántem per médium cælum, voce magna clamántem et dicéntem.\nR. Isti sunt viri sancti facti amíci Dei."
en: "R. I saw men standing together, clad in shining raiment, and the Angel of the Lord spoke unto me, saying:\n* These men are holy, for they are the friends of God.\nV. I saw a strong Angel of God fly into the midst of heaven, saying with a loud voice:\nR. These men are holy, for they are the friends of God."
- la: "R. Beáti estis, cum maledíxerint vobis hómines, et persecúti vos fúerint, et díxerint omne malum advérsum vos, mentiéntes, propter me:\n* Gaudéte et exsultáte, quóniam merces vestra copiósa est in cælis.\nV. Cum vos óderint hómines, et cum separáverint vos, et exprobráverint, et ejécerint nomen vestrum tamquam malum propter Fílium hóminis.\nR. Gaudéte et exsultáte, quóniam merces vestra copiósa est in cælis."
en: "R. Blessed are ye when men shall revile you, and persecute you, and shall say all manner of evil against you falsely, for My sake;\n* Rejoice, and be exceeding glad, for great is your reward in heaven.\nV. When men shall hate you, and when they shall separate you from their company, and shall reproach you, and cast out your name as evil, for the Son of Man's sake.\nR. Rejoice, and be exceeding glad, for great is your reward in heaven."
- la: "R. Isti sunt triumphatóres et amíci Dei, qui contemnéntes jussa príncipum, meruérunt prǽmia ætérna:\n* Modo coronántur, et accípiunt palmam.\nV. Isti sunt qui venérunt ex magna tribulatióne, et lavérunt stolas suas in sánguine Agni.\nR. Modo coronántur, et accípiunt palmam."
en: "R. These are they which have conquered, and are become the friends of God, who recked not of the commandments of princes, and earned the everlasting reward.\n* And now have they crowns on their heads, and palms in their hands.\nV. These are they which came out of great tribulation, and have washed their robes in the blood of the Lamb.\nR. And now have they crowns on their heads, and palms in their hands."
- la: "R. Isti sunt qui vivéntes in carne, plantavérunt Ecclésiam sánguine suo:\n* Cálicem Dómini bibérunt, et amíci Dei facti sunt.\nV. In omnem terram exívit sonus eórum, et in fines orbis terræ verba eórum.\nR. Cálicem Dómini bibérunt, et amíci Dei facti sunt."
en: "R. These are they who while yet they lived in the flesh, planted the Church in their own blood;\n* They drank of the Lord's cup, and became the friends of God.\nV. Their sound is gone out through all the earth, and their words to the ends of the world.\nR. They drank of the Lord's cup, and became the friends of God."
- la: "R. Isti sunt viri sancti, quos elégit Dóminus in caritáte non ficta, et dedit illis glóriam sempitérnam:\n* Quorum doctrína fulget Ecclésia, ut sole luna.\nV. Sancti per fidem vicérunt regna: operáti sunt justítiam.\nR. Quorum doctrína fulget Ecclésia, ut sole luna."
en: "R. These men are saints, whom the Lord hath chosen in love unfeigned, and hath given them glory everlasting. These are they\n* By the light of whose teaching the Church is glorified, even as the moon is glorified by the light of the sun.\nV. The saints through faith subdued kingdoms, wrought righteousness.\nR. By the light of whose teaching the Church is glorified, even as the moon is glorified by the light of the sun."
common-of-apostles:
- la: "R. Ecce ego mitto vos sicut oves in médio lupórum, dicit Dóminus:\n* Estóte ergo prudéntes sicut serpéntes, et símplices sicut colúmbæ.\nV. Dum lucem habétis, crédite in lucem, ut fílii lucis sitis.\nR. Estóte ergo prudéntes sicut serpéntes, et símplices sicut colúmbæ."
en: "R. Behold, I send you as sheep in the midst of wolves, said the Lord:\n* Be ye, therefore, wise as serpents and simple as doves.\nV. Whilst you have the light, believe in the light, that you may be the children of light.\nR. Be ye therefore wise as serpents and simple as doves."
- la: "R. Tóllite jugum meum super vos, dicit Dóminus, et díscite a me, quia mitis sum et húmilis corde:\n* Jugum enim meum suáve est, et onus meum leve.\nV. Et inveniétis réquiem animábus vestris.\nR. Jugum enim meum suáve est, et onus meum leve."
en: "R. Take up my yoke upon you, said the Lord, and learn of me, because I am meek, and humble of heart.\n* For my yoke is sweet and my burden light.\nV. And you shall find rest to your souls.\nR. For my yoke is sweet and my burden light."
- la: "R. Dum stetéritis ante reges et prǽsides, nolíte cogitáre quómodo aut quid loquámini:\n* Dábitur enim vobis in illa hora, quid loquámini.\nV. Non enim vos estis qui loquímini: sed Spíritus Patris vestri, qui lóquitur in vobis.\nR. Dábitur enim vobis in illa hora, quid loquámini."
en: "R. But when they shall deliver you up to the judges, take no thought how or what to speak:\n* for it shall be given you in that hour what to speak:\nV. For it is not you that speak, but the spirit of your Father that speaketh in you.\nR. For it shall be given you in that hour what to speak."
- la: "R. Vidi conjúnctos viros, habéntes spléndidas vestes, et Ángelus Dómini locútus est ad me, dicens:\n* Isti sunt viri sancti facti amíci Dei.\nV. Vidi Ángelum Dei fortem, volántem per médium cælum, voce magna clamántem et dicéntem.\nR. Isti sunt viri sancti facti amíci Dei."
en: "R. I saw men standing together, clad in shining raiment, and the Angel of the Lord spoke unto me, saying:\n* These men are holy, for they are the friends of God.\nV. I saw a strong Angel of God fly into the midst of heaven, saying with a loud voice:\nR. These men are holy, for they are the friends of God."
- la: "R. Beáti estis, cum maledíxerint vobis hómines, et persecúti vos fúerint, et díxerint omne malum advérsum vos, mentiéntes, propter me:\n* Gaudéte et exsultáte, quóniam merces vestra copiósa est in cælis.\nV. Cum vos óderint hómines, et cum separáverint vos, et exprobráverint, et ejécerint nomen vestrum tamquam malum propter Fílium hóminis.\nR. Gaudéte et exsultáte, quóniam merces vestra copiósa est in cælis."
en: "R. Blessed are ye when men shall revile you, and persecute you, and shall say all manner of evil against you falsely, for My sake;\n* Rejoice, and be exceeding glad, for great is your reward in heaven.\nV. When men shall hate you, and when they shall separate you from their company, and shall reproach you, and cast out your name as evil, for the Son of Man's sake.\nR. Rejoice, and be exceeding glad, for great is your reward in heaven."
- la: "R. Isti sunt triumphatóres et amíci Dei, qui contemnéntes jussa príncipum, meruérunt prǽmia ætérna:\n* Modo coronántur, et accípiunt palmam.\nV. Isti sunt qui venérunt ex magna tribulatióne, et lavérunt stolas suas in sánguine Agni.\nR. Modo coronántur, et accípiunt palmam."
en: "R. These are they which have conquered, and are become the friends of God, who recked not of the commandments of princes, and earned the everlasting reward.\n* And now have they crowns on their heads, and palms in their hands.\nV. These are they which came out of great tribulation, and have washed their robes in the blood of the Lamb.\nR. And now have they crowns on their heads, and palms in their hands."
- la: "R. Isti sunt qui vivéntes in carne, plantavérunt Ecclésiam sánguine suo:\n* Cálicem Dómini bibérunt, et amíci Dei facti sunt.\nV. In omnem terram exívit sonus eórum, et in fines orbis terræ verba eórum.\nR. Cálicem Dómini bibérunt, et amíci Dei facti sunt."
en: "R. These are they who while yet they lived in the flesh, planted the Church in their own blood;\n* They drank of the Lord's cup, and became the friends of God.\nV. Their sound is gone out through all the earth, and their words to the ends of the world.\nR. They drank of the Lord's cup, and became the friends of God."
- la: "R. Isti sunt viri sancti, quos elégit Dóminus in caritáte non ficta, et dedit illis glóriam sempitérnam:\n* Quorum doctrína fulget Ecclésia, ut sole luna.\nV. Sancti per fidem vicérunt regna: operáti sunt justítiam.\nR. Quorum doctrína fulget Ecclésia, ut sole luna."
en: "R. These men are saints, whom the Lord hath chosen in love unfeigned, and hath given them glory everlasting. These are they\n* By the light of whose teaching the Church is glorified, even as the moon is glorified by the light of the sun.\nV. The saints through faith subdued kingdoms, wrought righteousness.\nR. By the light of whose teaching the Church is glorified, even as the moon is glorified by the light of the sun."
common-of-several-confessors:
- la: "R. Justus germinábit sicut lílium:\n* Et florébit in ætérnum ante Dóminum.\nV. Plantátus in domo Dómini, in átriis domus Dei nostri.\nR. Et florébit in ætérnum ante Dóminum."
en: "R. The righteous shall grow as the lily;\n* Yea, he shall flourish in the presence of the Lord for ever.\nV. Those that be planted in the house of the Lord, shall flourish in the courts of the house of our God.\nR. Yea, he shall flourish in the presence of the Lord for ever."
- la: "R. Iste cognóvit justítiam, et vidit mirabília magna, et exorávit Altíssimum:\n* Et invéntus est in número Sanctórum.\nV. Iste est qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Et invéntus est in número Sanctórum."
en: "R. This is he which knew righteousness, and saw great wonders, and made his prayer unto the Most High;\n* And he is numbered among the Saints.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. And he is numbered among the Saints."
- la: "R. Honéstum fecit illum Dóminus, et custodívit eum ab inimícis, et a seductóribus tutávit illum:\n* Et dedit illi claritátem ætérnam.\nV. Justum dedúxit Dóminus per vias rectas, et osténdit illi regnum Dei.\nR. Et dedit illi claritátem ætérnam."
en: "R. The Lord made him honourable, and defended him from his enemies, and kept him safe from those that lay in wait for him;\n* And gave him perpetual glory.\nV. He went down with him into the pit, and left him not in bonds.\nR. And gave him perpetual glory."
- la: "R. Amávit eum Dóminus, et ornávit eum: stolam glóriæ índuit eum,\n* Et ad portas paradísi coronávit eum.\nV. Índuit eum Dóminus lorícam fídei, et ornávit eum.\nR. Et ad portas paradísi coronávit eum."
en: "R. The Lord loved him and beautified him; He clothed him with a robe of glory,\n* And crowned him at the gates of Paradise.\nV. The Lord hath put on him the breast-plate of faith, and hath adorned him.\nR. And crowned him at the gates of Paradise."
- la: "R. Iste homo perfécit ómnia quæ locútus est ei Deus, et dixit ad eum: Ingrédere in réquiem meam:\n* Quia te vidi justum coram me ex ómnibus géntibus.\nV. Iste est, qui contémpsit vitam mundi, et pervénit ad cæléstia regna.\nR. Quia te vidi justum coram me ex ómnibus géntibus."
en: "R. This is he which did according unto all that God commanded him; and God said unto him: Enter thou into My rest,\n* For thee have I seen righteous before Me among all people.\nV. This is he which loved not his life in this world, and is come unto an everlasting kingdom.\nR. For thee have I seen righteous before Me among all people."
- la: "R. Iste est qui ante Deum magnas virtútes operátus est, et de omni corde suo laudávit Dóminum:\n* Ipse intercédat pro peccátis ómnium populórum.\nV. Ecce homo sine queréla, verus Dei cultor, ábstinens se ab omni ópere malo, et pérmanens in innocéntia sua.\nR. Ipse intercédat pro peccátis ómnium populórum."
en: "R. This is he which wrought great wonders before God, and praised the Lord with all his heart.\n* May he pray for all people, that their sins may be forgiven unto them.\nV. Behold a man without blame, a worshipper of God in truth, keeping himself clean from every evil work, and abiding still in his innocency.\nR. May he pray for all people, that their sins may be forgiven unto them."
common-of-several-martyrs:
- la: "R. Abstérget Deus omnem lácrimam ab óculis Sanctórum: et jam non erit ámplius neque luctus, neque clamor, sed nec ullus dolor:\n* Quóniam prióra transiérunt.\nV. Non esúrient, neque sítient ámplius, neque cadet super illos sol, neque ullus æstus.\nR. Quóniam prióra transiérunt."
en: "R. God shall wipe away all tears from the eyes of His Saints, and there shall be no more sorrow, there shall be no more death, neither sorrow, nor crying, neither shall there be any more pain;\n* For the former things are passed away.\nV. They shall hunger no more, neither thirst any more, neither shall the sun light on them, nor any heat.\nR. For the former things are passed away."
- la: "R. Viri sancti gloriósum sánguinem fudérunt pro Dómino, amavérunt Christum in vita sua, imitáti sunt eum in morte sua:\n* Et ídeo corónas triumpháles meruérunt.\nV. Unus spíritus, et una fides erat in eis.\nR. Et ídeo corónas triumpháles meruérunt."
en: "R. These men are holy, who have gloriously shed their blood for the Lord's sake, yea, who loved Christ in their lives, and were made like unto Him in their flesh,\n* And therefore they have earned crowns of victory.\nV. One spirit, and one faith was in them.\nR. And therefore they have earned crowns of victory."
- la: "R. Tradidérunt córpora sua propter Deum ad supplícia:\n* Et meruérunt habére corónas perpétuas.\nV. Isti sunt qui venérunt ex magna tribulatióne, et lavérunt stolas suas in sánguine Agni.\nR. Et meruérunt habére corónas perpétuas."
en: "R. They gave their bodies for Gods sake to death\n* And gained the everlasting crown.\nV. These are they which came out of great tribulation, and have washed their robes in the Blood of the Lamb.\nR. And gained the everlasting crown."
- la: "R. Sancti tui, Dómine, mirábile consecúti sunt iter, serviéntes præcéptis tuis, ut inveniréntur illǽsi in aquis válidis:\n* Terra appáruit árida: et in Mari Rubro via sine impediménto.\nV. Quóniam percússit petram, et fluxérunt aquæ, et torréntes inundavérunt.\nR. Terra appáruit árida: et in Mari Rubro via sine impediménto."
en: "R. thy Saints, O Lord, have passed a wonderful way, serving thy commandments, that they might be found without hurt in the midst of the mighty waters.\n* Dry land appeared, and, out of the Red Sea, a way without impediment.\nV. He smote the rock, and the waters gushed out, and the streams overflowed.\nR. Dry land appeared, and, out of the Red Sea, a way without impediment."
- la: "R. Vérbera carníficum non timuérunt Sancti Dei, moriéntes pro Christi nómine:\n* Ut herédes fíerent in domo Dómini.\nV. Tradidérunt córpora sua propter Deum ad supplícia.\nR. Ut herédes fíerent in domo Dómini."
en: "R. The Saints of God shrank not from the stripes of the executioners, but died for Christ's Name's sake\n* That they might be made joint-heirs in the house of the Lord.\nV. They gave their bodies for God's sake to death.\nR. That they might be made joint-heirs in the house of the Lord."
- la: "R. Tamquam aurum in fornáce probávit eléctos Dóminus, et quasi holocáusti hóstiam accépit illos: et in témpore erit respéctus illórum:\n* Quóniam donum et pax est eléctis Dei.\nV. Qui confídunt in illum, intélligent veritátem, et fidéles in dilectióne acquiéscent illi.\nR. Quóniam donum et pax est eléctis Dei."
en: "R. As gold in the furnace hath the Lord tried His chosen ones, and received them as a burnt-offering, and yet a while, and they shall be regarded;\n* For the grace of God, and His peace, are with His chosen.\nV. They that put their trust in Him shall understand the truth and such as be faithful in love shall abide with Him.\nR. For the grace of God, and His peace, are with His chosen."
- la: "R. Propter testaméntum Dómini, et leges patérnas, Sancti Dei perstitérunt in amóre fraternitátis:\n* Quia unus fuit semper spíritus in eis, et una fides.\nV. Ecce quam bonum et quam jucúndum habitáre fratres in unum.\nR. Quia unus fuit semper spíritus in eis, et una fides."
en: "R. Because of the covenant of the Lord, and the laws of their fathers, the Saints of God abode in brotherly love,\n* For one spirit and one faith was ever in them.\nV. Behold how good and how pleasant it is for brethren to dwell together in unity.\nR. For one spirit and one faith was ever in them."
- la: "R. Sancti mei, qui in carne pósiti, certámen habuístis:\n* Mercédem labóris ego reddam vobis.\nV. Veníte benedícti Patris mei, percípite regnum.\nR. Mercédem labóris ego reddam vobis."
en: "R. O ye My Saints, who, being in the flesh, didst have striving\n* I will render unto you a reward of your labours.\nV. Come, ye blessed of My Father, inherit the kingdom\nR. I will render unto you a reward of your labours."
common-of-several-women-martyrs:
- la: "R. Fallax grátia, et vana est pulchritúdo:\n* Múlier timens Dóminum, ipsa laudábitur.\nV. Date ei de fructu mánuum suárum, et laudent eam in portis ópera ejus.\nR. Múlier timens Dóminum, ipsa laudábitur."
en: "R. Favour is deceitful, and beauty is vain\n* A woman that feareth God she shall be praised.\nV. Give her of the fruit of her hands, and let her own works praise her in the gates.\nR. A woman that feareth God she shall be praised."
- la: "R. Os suum apéruit sapiéntiæ, et lex cleméntiæ in lingua ejus: considerávit sémitas domus suæ,\n* Et panem otiósa non comédit.\nV. Gustávit et vidit quia bona est negotiátio ejus: non exstinguétur in nocte lucérna ejus.\nR. Et panem otiósa non comédit."
en: "R. She openeth her mouth with wisdom, and in her tongue is the law of kindness. She looketh well to the ways of her household\n* And eateth not the bread of idleness.\nV. She tasteth and perceiveth that her merchandise is good. Her candle goeth not out by night.\nR. And she eateth not the bread of idleness."
- la: "R. Regnum mundi et omnem ornátum sǽculi contémpsi, propter amórem Dómini mei Jesu Christi:\n* Quem vidi, quem amávi, in quem crédidi, quem diléxi.\nV. Eructávit cor meum verbum bonum: dico ego ópera mea Regi.\nR. Quem vidi, quem amávi, in quem crédidi, quem diléxi."
en: "R. The kingdom of this world and all the beauty of life I have esteemed as nothing, for the excellency of the love of Jesus Christ my Lord\n* Whom, having seen, I loved Whom, having believed, I longed after.\nV. My heart is overflowing with a good matter I speak of my works unto the King.\nR. Whom, having seen, I loved Whom, having believed, I longed after."
common-of-the-bvm:
- la: "R. Sancta et immaculáta virgínitas, quibus te láudibus éfferam, néscio:\n* Quia quem cæli cápere non póterant, tuo grémio contulísti.\nV. Benedícta tu in muliéribus, et benedíctus fructus ventris tui.\nR. Quia quem cæli cápere non póterant, tuo grémio contulisti."
en: "R. O how holy and how spotless is thy virginity; I am too dull to praise thee:\n* For thou hast borne in thy breast Him Whom the heavens cannot contain.\nV. Blessed art thou among women, and blessed is the fruit of thy womb.\nR. For thou hast borne in thy breast Him Whom the heavens cannot contain."
- la: "R. Congratulámini mihi, omnes qui dilígitis Dóminum: quia cum essem párvula, plácui Altíssimo,\n* Et de meis viscéribus génui Deum et hóminem.\nV. Beátam me dicent omnes generatiónes, quia ancíllam húmilem respéxit Deus.\nR. Et de meis viscéribus génui Deum et hóminem."
en: "R. Rejoice with me, all ye that love the Lord, for while I was yet a little one, I pleased the Most High.\n* And I have brought forth from my bowels God and man.\nV. All generations shall call me blessed, since the Lord hath regarded the lowliness of his handmaiden.\nR. And I have brought forth from my bowels God and man."
- la: "R. Beáta es, Virgo María, quæ Dóminum portásti, Creatórem mundi:\n* Genuísti qui te fecit, et in ætérnum pérmanes Virgo.\nV. Ave, María, grátia plena; Dóminus tecum.\nR. Genuísti qui te fecit, et in ætérnum pérmanes Virgo."
en: "R. Blessed art thou, O Virgin Mary, who hast carried the Lord, the Maker of the world.\n* Thou hast borne Him Who created thee, and thou abidest a virgin for ever.\nV. Hail, Mary, full of grace. the Lord is with thee.\nR. Thou hast borne Him Who created thee, and thou abidest a virgin for ever."
- la: "R. Sicut cedrus exaltáta sum in Líbano, et sicut cypréssus in monte Sion: quasi myrrha elécta,\n* Dedi suavitátem odóris.\nV. Et sicut cinnamómum et bálsamum aromatízans.\nR. Dedi suavitátem odóris."
en: "R. I was exalted like a cedar in Lebanon, and as a cypress-tree upon Mount Zion. Like the best myrrh\n* I yielded a pleasant odour.\nV. Like cinnamon and sweet balsam.\nR. I yielded a pleasant odour."
- la: "R. Quæ est ista quæ procéssit sicut sol, et formósa tamquam Jerúsalem?\n* Vidérunt eam fíliæ Sion, et beátam dixérunt, et regínæ laudavérunt eam.\nV. Et sicut dies verni circúmdabant eam flores rosárum et lília convállium.\nR. Vidérunt eam fíliæ Sion, et beátam dixérunt, et regínæ laudavérunt eam."
en: "R. Who is this that cometh up like the sun? This, comely as Jerusalem?\n* The daughters of Zion saw her, and called her blessed: the queens also, and they praised her.\nV. And about her it was as the flower of roses in the spring of the year, and lilies of the valleys.\nR. The daughters of Zion saw her, and called her blessed the queens also, and they praised her."
- la: "R. Ornátam monílibus fíliam Jerúsalem Dóminus concupívit:\n* Et vidéntes eam fíliæ Sion, beatíssimam prædicavérunt, dicéntes: * Unguéntum effúsum nomen tuum.\nV. Astitit regína a dextris tuis in vestítu deauráto, circúmdata varietáte.\nR. Et vidéntes eam fíliæ Sion, beatíssimam prædicavérunt, dicéntes:"
en: "R. When the Lord beheld the daughter of Jerusalem adorned with her jewels, He greatly desired her beauty\n* And when the daughters of Zion saw her, they cried out that she was most blessed, saying thy name is as ointment poured forth.\nV. Upon thy right hand did stand the Queen in a vesture of gold wrought about with diverse colours.\nR. And when the daughters of Zion saw her, they cried out that she was most blessed, saying:"
- la: "R. Felix namque es, sacra Virgo María, et omni laude digníssima:\n* Quia ex te ortus est sol justítiæ, Christus, Deus noster.\nV. Ora pro pópulo, intérveni pro clero, intercéde pro devóto femíneo sexu: séntiant omnes tuum juvámen, quicúmque célebrant tuam sanctam festivitátem.\nR. Quia ex te ortus est sol justítiæ, Christus, Deus noster."
en: "R. O Holy Virgin Mary, happy indeed art thou, and right worthy of all praise\n* For out of thee rose the Sun of righteousness, even Christ our God.\nV. Pray for the people, plead for the clergy, make intercession for all women vowed to God. May all that are keeping this thine holy Feast day feel the might of thine assistance.\nR. For out of thee rose the Sun of righteousness, even Christ our God."
- la: "R. Beátam me dicent omnes generatiónes,\n* Quia fecit mihi Dóminus magna qui potens est, et sanctum nomen ejus.\nV. Et misericórdia ejus a progénie in progénies timéntibus eum.\nR. Quia fecit mihi Dóminus magna qui potens est, et sanctum nomen ejus."
en: "R. All generations shall call me blessed.\n* For He that is mighty, even the Lord, hath done to me great things; and Holy is His Name.\nV. And his mercy is on them that fear Him, from generation to generation.\nR. He that is mighty, even the Lord, hath done to me great things; and Holy is His Name."
@@ -0,0 +1,18 @@
# The Ascension's own Lauds chapter (Acts 1:1-2) — shared with Vespers
# via vespersCapitulumForOverride's own cross-hour fallback (see
# hours/vespers.ts), not duplicated into a separate vespers-capitulum-
# ascension.yml. Live-verified against Divinum Officium (Monastic
# Tridentinum 1617), Lauds/Vespers live query, 2026-05-14 (Ascension Day
# itself) — see matins-hymn-ascension.yml's own header for the fuller
# mechanism story (a temporal-feast octave with no saint record wasn't
# being picked up at all before this).
id: lauds-capitulum-ascension
text:
la: "Primum quidem sermónem feci de ómnibus, o Theóphile, quæ cœpit Jesus fácere et docére usque in diem, qua præcípiens Apóstolis per Spíritum Sanctum, quos elégit, assúmptus est."
en: "The former treatise I made, O Theophilus, of all things which Jesus began to do and to teach, Until the day on which, giving commandments by the Holy Ghost to the apostles whom he had chosen, he was taken up."
citation:
la: "Act 1:1-2"
en: "Acts 1:1-2"
status:
la: verified
en: verified
@@ -0,0 +1,16 @@
# Corpus Christi's own Lauds chapter (1 Cor 11:23-24) — shared with
# Vespers via vespersCapitulumForOverride's own cross-hour fallback (see
# hours/vespers.ts), not duplicated into a separate vespers-capitulum-
# corpus-christi.yml. Live-verified against Divinum Officium (Monastic
# Tridentinum 1617), Lauds/Vespers live query, 2026-06-04 (Corpus Christi
# itself).
id: lauds-capitulum-corpus-christi
text:
la: "Fratres: Ego enim accépi a Dómino quod et trádidi vobis, quóniam Dóminus Jesus, in qua nocte tradebátur, accépit panem, et grátias agens fregit, et dixit: Accípite et manducáte: hoc est corpus meum, quod pro vobis tradétur: hoc fácite in meam commemoratiónem."
en: "Brothers: For I have received of the Lord that which also I delivered unto you, that the Lord Jesus, the same night in which he was betrayed, took bread. And giving thanks, broke, and said: Take ye, and eat: this is my body, which shall be delivered for you: this do for the commemoration of me."
citation:
la: "1 Cor 11:23-24"
en: "1 Cor 11:23-24"
status:
la: verified
en: verified
@@ -1,6 +1,11 @@
# Sourced from Divinum Officium's Monastic block ("[Quad Laudes_]", # Sourced from Divinum Officium's Monastic block ("[Quad Laudes_]",
# Psalterium/Special/Major Special.txt). Not live-query-verified (see # Psalterium/Special/Major Special.txt). Live-verified 2026-09-04 against
# TODO.md) — read directly from source. # both a Lenten Ember Saturday (2026-02-28) and a plain Lenten Wednesday
# (2026-03-04) — identical, so this is genuinely season-wide content, not
# weekday-varying, matching this file's own single (no-weekday-suffix)
# id. (An earlier pass had mistakenly called this same content "homeless"
# — it already had a real home here all along, just never marked
# verified; see TODO.md.)
id: lauds-capitulum-lent id: lauds-capitulum-lent
text: text:
la: "Clama, ne cesses, quasi tuba exálta vocem tuam, et annúntia pópulo meo scélera eórum, et dómui Jacob peccáta eórum." la: "Clama, ne cesses, quasi tuba exálta vocem tuam, et annúntia pópulo meo scélera eórum, et dómui Jacob peccáta eórum."
@@ -9,5 +14,5 @@ citation:
la: "Isa 58:1" la: "Isa 58:1"
en: "Isa 58:1" en: "Isa 58:1"
status: status:
la: draft la: verified
en: draft en: verified
@@ -0,0 +1,16 @@
# Pentecost's own Lauds chapter (Acts 2:1-2) — shared with Vespers via
# vespersCapitulumForOverride's own cross-hour fallback (see
# hours/vespers.ts), not duplicated into a separate vespers-capitulum-
# pentecost-sunday.yml. Live-verified against Divinum Officium (Monastic
# Tridentinum 1617), Lauds/Vespers live query, 2026-05-24 (Pentecost
# Sunday itself).
id: lauds-capitulum-pentecost-sunday
text:
la: "Cum compleréntur dies Pentecóstes, erant omnes discípuli páriter in eódem loco: et factus est repénte de cælo sonus, tamquam adveniéntis spíritus veheméntis, et replévit totam domum, ubi erant sedéntes."
en: "When the day of Pentecost was fully come, the disciples were all with one accord in one place and suddenly there came a sound from heaven, as of a rushing mighty wind and it filled all the house where they were sitting."
citation:
la: "Act 2:1-2"
en: "Acts 2:1-2"
status:
la: verified
en: verified
@@ -0,0 +1,17 @@
# The Sacred Heart's own Lauds chapter (Eph 3:8-9) — shared with Vespers
# via vespersCapitulumForOverride's own cross-hour fallback (see
# hours/vespers.ts), not duplicated into a separate vespers-capitulum-
# sacred-heart.yml. Live-verified against Divinum Officium (Divino
# Afflatu - 1954), Lauds/Vespers live query, 2026-06-12 (the Sacred
# Heart itself) — see matins-hymn-sacred-heart.yml's own header on why
# this track, not Monastic Tridentinum 1617.
id: lauds-capitulum-sacred-heart
text:
la: "Fratres: Mihi ómnium sanctórum mínimo data est grátia hæc, in géntibus evangelizáre investigábiles divítias Christi; et illumináre omnes, quæ sit dispensátio sacraménti abscónditi a sǽculis in Deo."
en: "Brethren: Unto me, who am less than the least of all saints, is this grace given, that I should preach among the Gentiles the unsearchable riches of Christ; and to make all men see what is the fellowship of the Mystery, which from the beginning of the world hath been hid in God."
citation:
la: "Eph 3:8-9"
en: "Eph 3:8-9"
status:
la: verified
en: verified
@@ -0,0 +1,16 @@
# Trinity Sunday's own Lauds chapter (Rom 11:33) — shared with Vespers
# via vespersCapitulumForOverride's own cross-hour fallback (see
# hours/vespers.ts), not duplicated into a separate vespers-capitulum-
# trinity-sunday.yml. Live-verified against Divinum Officium (Monastic
# Tridentinum 1617), Lauds/Vespers live query, 2026-05-31 (Trinity Sunday
# itself).
id: lauds-capitulum-trinity-sunday
text:
la: "O Altitúdo divitiárum sapiéntiæ, et sciéntiæ Dei, quam incomprehensibília sunt judícia ejus, et investigábiles viæ ejus!"
en: "O the depth of the riches of the wisdom and of the knowledge of God! How incomprehensible are his judgments, and how unsearchable his ways!"
citation:
la: "Rom 11:33"
en: "Rom 11:33"
status:
la: verified
en: verified
@@ -0,0 +1,101 @@
# The Ascension's own Lauds hymn ("Jesu nostra redémptio") — identical
# text to Matins' own (matins-hymn-ascension.yml) and Vespers' own
# (vespers-hymn-ascension.yml). Live-verified against Divinum Officium
# (Monastic Tridentinum 1617), Lauds live query, 2026-05-14 (Ascension
# Day itself). Self-contained — this hour's own resolveOfficeBundle
# doesn't run a hymn through the doxology-split/append mechanism at all,
# and this hymn's own natural ending has no separate doxology stanza in
# the source anyway.
id: lauds-hymn-ascension
text:
la: >-
Jesu nostra redémptio,
Amor et desidérium,
Deus Creátor ómnium,
Homo in fine témporum:
Quæ te vicit cleméntia,
Ut ferres nostra crímina,
Crudélem mortem pátiens,
Ut nos a morte tólleres!
Inférni claustra pénetrans,
Tuos captívos rédimens,
Victor triúmpho nóbili
Ad dextram Patris résidens.
Ipsa te cogat píetas,
Ut mala nostra súperes
Parcéndo, et voti cómpotes
Nos tuo vultu sáties.
Tu esto nostrum gáudium,
Qui es futúrus prǽmium,
Sit nostra in te glória,
Per cuncta semper sǽcula. Amen.
en: >-
Hail, thou who man's Redeemer art,
Jesu, the joy of every heart;
Great Maker of the world's wide frame,
And purest love's delight and flame:
What nameless mercy thee o'ercame,
To bear our load of sin and shame?
For guiltless, thou thy life didst give,
That sinful erring man might live.
The realms of woe are forced by thee,
Its captives from their chains set free;
And thou, amid thy ransomed train,
At God's right hand dost victor reign.
Let mercy sweet with thee prevail,
To cure the wounds we now bewail;
Oh, bless us with thy holy sight,
And fill us with eternal light.
Our guide, our way to heavenly rest,
Be thou the aim of every breast;
Be thou the soother of our tears,
Our sweet reward above the spheres. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,120 @@
# Corpus Christi's own Lauds hymn ("Verbum supérnum pródiens") — whose
# final 2 stanzas ("O salutáris hóstia... Uni trinóque Dómino...") are
# the separately-famous "O Salutaris Hostia" often sung on its own.
# Distinct from Matins' own ("Sacris solémniis") and Vespers' own
# ("Pange, lingua, gloriósi Córporis mystérium" — the "Tantum Ergo"
# hymn). Live-verified against Divinum Officium (Monastic Tridentinum
# 1617), Lauds live query, 2026-06-04 (Corpus Christi itself). Self-
# contained — its own final stanza is the hymn's natural theological
# close, not a separate swappable doxology.
id: lauds-hymn-corpus-christi
text:
la: >-
Verbum supérnum pródiens,
Nec Patris linquens déxteram,
Ad opus suum éxiens,
Venit ad vitæ vésperam.
In mortem a discípulo
Suis tradéndus ǽmulis,
Prius in vitæ férculo
Se trádidit discípulis.
Quibus sub bina spécie
Carnem dedit et sánguinem;
Ut dúplicis substántiæ
Totum cibáret hóminem.
Se nascens dedit sócium,
Convéscens in edúlium,
Se móriens in prétium,
Se regnans dat in prǽmium.
O salutáris hóstia,
Quæ cæli pandis óstium,
Bella premunt hostília;
Da robur, fer auxílium.
Uni trinóque Dómino,
Sit sempitérna glória:
Qui vitam sine término
Nobis donet in pátria. Amen.
en: >-
The heav'nly Word proceeding forth,
Yet leaving not the Father's side,
And going to his work on earth
Had reached at length life's eventide.
By false disciple to be given
To foemen for his blood athirst,
Himself, the living bread from heaven,
He gave to his disciples first.
To them he gave, in twofold kind,
His very flesh, his very blood:
In love's own fullness thus designed
Of the whole man to be the food.
By birth, our fellow-man was he;
Our meat, while sitting at the board;
He died, our ransomer to be;
He ever reigns, our great reward.
O saving victim, opening wide
The gate of heaven to man below,
Our foes press on from every side,
Thine aid supply, thy strength bestow.
To thy great name be endless praise,
Immortal Godhead, One in Three;
O grant us endless length of days
In our true native land, with thee. Amen.
status:
la: verified
en: verified
@@ -1,7 +1,8 @@
# Live-verified 2026-09-04 — see lauds-hymn-lent.yml's own header.
id: lauds-hymn-lent-doxology-per-annum id: lauds-hymn-lent-doxology-per-annum
text: text:
la: "Te rerum univérsitas,\nClemens, adóret, Trínitas,\nEt nos novi per véniam,\nNovum canámus cánticum.\nAmen." la: "Te rerum univérsitas,\nClemens, adóret, Trínitas,\nEt nos novi per véniam,\nNovum canámus cánticum.\nAmen."
en: "May heaven and earth aloud proclaim\nThe Trinity's almighty fame;\nAnd we, restored to grace, rejoice\nIn newness both of heart and voice.\nAmen." en: "May heaven and earth aloud proclaim\nThe Trinity's almighty fame;\nAnd we, restored to grace, rejoice\nIn newness both of heart and voice.\nAmen."
status: status:
la: draft la: verified
en: draft en: verified
+6 -4
View File
@@ -1,8 +1,10 @@
# Sourced from Divinum Officium's Monastic block ("[HymnusM Quad # Sourced from Divinum Officium's Monastic block ("[HymnusM Quad
# Laudes]", Psalterium/Special/Major Special.txt) — full separate # Laudes]", Psalterium/Special/Major Special.txt) — full separate
# Monastic text ("Jam Christe sol justítiæ"), not a substitution against # Monastic text ("Jam Christe sol justítiæ"), not a substitution against
# the Roman "O sol salútis, íntimis". Not live-query-verified (see # the Roman "O sol salútis, íntimis". Live-verified 2026-09-04 (already
# TODO.md). # seen live against a Lenten Ember Saturday, 2026-02-28, while checking
# lauds-hymn-saturday.yml's own real content earlier the same session —
# byte-identical).
id: lauds-hymn-lent id: lauds-hymn-lent
text: text:
la: | la: |
@@ -46,5 +48,5 @@ text:
May we of their indulgence share, May we of their indulgence share,
And bless the God that grants our prayer. And bless the God that grants our prayer.
status: status:
la: draft la: verified
en: draft en: verified
@@ -0,0 +1,147 @@
# Pentecost's own Lauds hymn ("Beáta nobis gáudia") — distinct from
# Matins' own ("Jam Christus astra ascénderat") and Vespers' own ("Veni
# Creátor Spíritus"), unlike Ascension where all 3 hours share one text.
# Live-verified against Divinum Officium (Monastic Tridentinum 1617),
# Lauds live query, 2026-05-24 (Pentecost Sunday itself). Self-contained
# — this hour's own resolveOfficeBundle doesn't run a hymn through the
# doxology-split/append mechanism at all; the closing doxology here is
# the same shared Pentecost-track text as Matins' own (see
# matins-hymn-pentecost-sunday.yml's own header on "Doxology: PentT"),
# baked in directly, but its own distinct English rendering ("To God the
# Father, laud and praise...") is kept rather than reused from the
# generic `hymn-doxology-pent.yml` translation, same as everywhere else
# in this store that keeps each hymn's own historic translator's ending.
id: lauds-hymn-pentecost-sunday
text:
la: >-
Beáta nobis gáudia
Anni redúxit órbita,
Cum Spíritus Paráclitus
Effúlsit in discípulos.
Ignis vibránte lúmine
Linguæ figúram détulit,
Verbis ut essent próflui,
Et caritáte férvidi.
Linguis loquúntur ómnium;
Turbæ pavent Gentílium,
Musto madére députant
Quos Spíritus repléverat.
Patráta sunt hæc mýstice,
Paschæ perácto témpore,
Sacro diérum número,
Quo lege fit remíssio.
Te nunc, Deus piíssime,
Vultu precámur cérnuo:
Illápsa nobis cǽlitus
Largíre dona Spíritus.
Dudum sacráta péctora
Tua replésti grátia:
Dimítte nostra crímina,
Et da quiéta témpora.
Glória Patri Dómino,
Natóque, qui a mórtuis
Surréxit, ac Paráclito,
In sæculórum sǽcula. Amen.
en: >-
Round roll the weeks our hearts to greet,
With blissful joy returning;
For lo! the Holy Paraclete
On twelve bright brows sits burning:
With quivering flame he lights on each,
In fashion like a tongue, to teach
That eloquent they are of speech,
Their hearts with true love yearning.
While with all tongues they speak to all,
The nations deem them maddened,
And drunk with wine the prophets call,
Whom God's good Spirit gladdened;
A marvel this—in mystery done—
The holy paschaltide outrun,
By numbers told, whose reckoning won
Remission for the saddened.
O God most Holy, thee we pray,
With reverent brow low bending,
Grant us the Spirit's gifts today
The gifts from heaven descending;
And, since, thy grace hath deigned to bide
Within our breasts once sanctified,
Deign, Lord, to cast our sins aside,
Henceforth calm seasons sending.
To God the Father, laud and praise,
Praise to the Son be given;
Praise to the Spirit of all grace,
The fount of graces seven —
As was of old, all worlds before,
Is now and shall be evermore,
When time and change are spent and o'er
All praise in earth and heaven. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,123 @@
# The Sacred Heart's own Lauds hymn ("Cor, arca legem cóntinens") —
# distinct from Matins' own ("Auctor beáte sǽculi") and Vespers' own
# ("En, ut supérba críminum"). Live-verified against Divinum Officium
# (Divino Afflatu - 1954), Lauds live query, 2026-06-12 (the Sacred
# Heart itself) — see matins-hymn-sacred-heart.yml's own header on why
# this track. Self-contained — its own final stanza is the hymn's
# natural theological close, not a separate swappable doxology.
#
# This day's own Lauds genuinely has no responsory in the source at all
# (straight from chapter to hymn) — see lauds-capitulum-sacred-heart.yml
# and hours/lauds.ts's own resolveOffice, which omits the responsory
# part entirely rather than rendering an empty one.
id: lauds-hymn-sacred-heart
text:
la: >-
Cor, arca legem cóntinens
Non servitútis véteris,
Sed grátiæ, sed véniæ,
Sed et misericórdiæ.
Cor, sanctuárium novi
Intemerátum fœ́deris,
Templum vetústo sánctius,
Velúmque scisso utílius.
Te vulnerátum cáritas
Ictu paténti vóluit,
Amóris invisíbilis
Ut venerémur vúlnera.
Hoc sub amóris sýmbolo
Passus cruénta et mýstica,
Utrúmque sacrifícium
Christus sacérdos óbtulit.
Quis non amántem rédamet?
Quis non redémptus díligat,
Et Corde in isto séligat
Ætérna tabernácula?
Jesu, tibi sit glória,
Qui Corde fundis grátiam,
Cum Patre, et almo Spíritu,
In sempitérna sǽcula. Amen.
en: >-
Jesus, behind thy temple's veil,
Hid in an ark of gold,
On stones engraven, lay the law
thy finger wrote of old.
But in thy body's temple new,
thy life-blood's throbbing shrine,
Held, upon fleshly tables graved,
The law of love divine.
And when that heart in death was stilled,
Each temple's veil was riven:
And lo, within thy love's red shrine,
To us to look was given.
There make us gaze and see the love
Which drew thee, for our sake,
O great high-priest, thyself to God
A sacrifice to make.
Thou, Saviour, cause that every soul
Which thou hast loved so well,
May will within thine open heart
In life and death to dwell.
Grant it, O Father, only Son,
And Spirit, God of grace,
To whom all worship shall be done,
In every time and place. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,65 @@
# Trinity Sunday's own Lauds hymn ("O lux beáta Trínitas") — identical
# text to Vespers' own (vespers-hymn-trinity-sunday.yml). Already the
# pre-Urban VIII text (this project's own standing preference — see
# CLAUDE.md) as the reference source's own default, not a separate
# choice made here. Live-verified against Divinum Officium (Monastic
# Tridentinum 1617), Lauds live query, 2026-05-31 (Trinity Sunday
# itself). Self-contained — its own final stanza is a fixed, unique
# doxology, not the shared weekday one.
id: lauds-hymn-trinity-sunday
text:
la: >-
O lux beáta Trínitas,
Et principális Únitas,
Jam sol recédit ígneus,
Infúnde lumen córdibus.
Te mane laudum cármine,
Te deprecémur véspere:
Te nostra supplex glória
Per cuncta laudet sǽcula.
Deo Patri sit glória,
Ejúsque soli Fílio,
Cum Spíritu Paráclito,
Et nunc, et in perpétuum. Amen.
en: >-
O Trinity of blessed Light,
O Unity of sovereign might,
as now the fiery sun departs,
shed Thou Thy beams within our hearts.
To Thee our morning song of praise,
to Thee our evening prayer we raise;
Thee may our glory evermore
in lowly reverence adore.
All laud to God the Father be;
all praise, Eternal Son, to Thee;
all glory, as is ever meet,
to God the Holy Paraclete. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,24 @@
# The Ascension's own Lauds responsory ("Ascéndit Deus in jubilatióne")
# — distinct from Vespers' own ("Ascéndens Christus in altum", see
# vespers-responsory-ascension.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Lauds live query, 2026-05-14
# (Ascension Day itself).
id: lauds-responsory-ascension
text:
la: |
R.br. Ascéndit Deus in jubilatióne, * Allelúja, allelúja.
R. Ascéndit Deus in jubilatióne, * Allelúja, allelúja.
V. Et Dóminus in voce tubæ.
R. Allelúja, allelúja.
V. Glória Patri, et Fílio, * et Spirítui Sancto.
R. Ascéndit Deus in jubilatióne, * Allelúja, allelúja.
en: |
R.br. God is gone up with jubilation. * Alleluia, alleluia.
R. God is gone up with jubilation. * Alleluia, alleluia.
V. And the Lord with the sound of trumpet.
R. Alleluia, alleluia.
V. Glory be to the Father, and to the Son, * and to the Holy Ghost.
R. God is gone up with jubilation. * Alleluia, alleluia.
status:
la: verified
en: verified
@@ -0,0 +1,24 @@
# Corpus Christi's own Lauds responsory ("Panem cæli dedit eis") —
# distinct from Vespers' own ("Cibávit illos ex ádipe fruménti", see
# vespers-responsory-corpus-christi.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Lauds live query, 2026-06-04
# (Corpus Christi itself).
id: lauds-responsory-corpus-christi
text:
la: |
R.br. Panem cæli dedit eis, * Allelúja, allelúja.
R. Panem cæli dedit eis, * Allelúja, allelúja.
V. Panem Angelórum manducávit homo.
R. Allelúja, allelúja.
V. Glória Patri, et Fílio, * et Spirítui Sancto.
R. Panem cæli dedit eis, * Allelúja, allelúja.
en: |
R.br. He gave them the bread of heaven. * Alleluia, Alleluia.
R. He gave them the bread of heaven. * Alleluia, Alleluia.
V. Man did eat Angels' bread.
R. Alleluia, Alleluia.
V. Glory be to the Father, and to the Son, * and to the Holy Ghost.
R. He gave them the bread of heaven. * Alleluia, Alleluia.
status:
la: verified
en: verified
@@ -1,6 +1,6 @@
# Sourced from Divinum Officium's Monastic block ("[Responsory Quad # Sourced from Divinum Officium's Monastic block ("[Responsory Quad
# Laudes]", Psalterium/Special/Major Special.txt). Not live-query-verified # Laudes]", Psalterium/Special/Major Special.txt). Live-verified
# (see TODO.md) — read directly from source. # 2026-09-04 — see lauds-capitulum-lent.yml's own header.
id: lauds-responsory-lent id: lauds-responsory-lent
text: text:
la: | la: |
@@ -18,5 +18,5 @@ text:
V. Glory be to the Father, and to the Son, * and to the Holy Ghost. V. Glory be to the Father, and to the Son, * and to the Holy Ghost.
R. For he hath delivered me * from the snare of the hunters. R. For he hath delivered me * from the snare of the hunters.
status: status:
la: draft la: verified
en: draft en: verified
@@ -0,0 +1,24 @@
# Pentecost's own Lauds responsory ("Spíritus Dómini replévit orbem
# terrárum") — distinct from Vespers' own ("Spíritus Paráclitus", see
# vespers-responsory-pentecost-sunday.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Lauds live query, 2026-05-24
# (Pentecost Sunday itself).
id: lauds-responsory-pentecost-sunday
text:
la: |
R.br. Spíritus Dómini replévit orbem terrárum, * Allelúja, allelúja.
R. Spíritus Dómini replévit orbem terrárum, * Allelúja, allelúja.
V. Et hoc quod cóntinet ómnia, sciéntiam habet vocis.
R. Allelúja, allelúja.
V. Glória Patri, et Fílio, * et Spirítui Sancto.
R. Spíritus Dómini replévit orbem terrárum, * Allelúja, allelúja.
en: |
R.br. The Spirit of the Lord filleth the world. * Alleluia, Alleluia.
R. The Spirit of the Lord filleth the world. * Alleluia, Alleluia.
V. And That Which containeth all things hath knowledge of the voice.
R. Alleluia, alleluia.
V. Glory be to the Father, and to the Son, * and to the Holy Ghost.
R. The Spirit of the Lord filleth the world. * Alleluia, Alleluia.
status:
la: verified
en: verified
@@ -0,0 +1,25 @@
# Trinity Sunday's own Lauds responsory ("Benedíctus es, Dómine, in
# firmaménto cæli") — distinct from Vespers' own ("Benedicámus Patrem et
# Fílium cum Sancto Spíritu", see
# vespers-responsory-trinity-sunday.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Lauds live query, 2026-05-31
# (Trinity Sunday itself).
id: lauds-responsory-trinity-sunday
text:
la: |
R.br. Benedíctus es, Dómine, * In firmaménto cæli.
R. Benedíctus es, Dómine, * In firmaménto cæli.
V. Et laudábilis et gloriósus in sǽcula.
R. In firmaménto cæli.
V. Glória Patri, et Fílio, * et Spirítui Sancto.
R. Benedíctus es, Dómine, * In firmaménto cæli.
en: |
R.br. Blessed art Thou, O Lord, * In the firmament of heaven.
R. Blessed art Thou, O Lord, * In the firmament of heaven.
V. And to be praised and glorified for ever.
R. In the firmament of heaven.
V. Glory be to the Father, and to the Son, * and to the Holy Ghost.
R. Blessed art Thou, O Lord, * In the firmament of heaven.
status:
la: verified
en: verified
@@ -0,0 +1,29 @@
# Throughout Paschaltide (Eastertide/Ascensiontide/Pentecost), the whole
# ordinary 5-suffrage set (Cross/BVM/Joseph/Apostles/Peace) collapses into
# this single alleluia-form "Suffragium Paschale" instead — live-verified
# against Divinum Officium (Monastic Tridentinum 1617 and Tridentine 1906,
# byte-identical between the two tracks), Lauds live query, 2026-04-20 (a
# plain Eastertide feria). Distinct antiphon from Vespers' own
# (vespers-suffrage-paschale.yml, "Crucem sanctam súbiit..."); the
# versicle/response and collect are shared between both hours.
id: lauds-suffrage-paschale
text:
la: |
Ant. Crucifíxus surréxit a mórtuis, et redémit nos, allelúja, allelúja.
V. Dícite in natiónibus, allelúja.
R. Quia Dóminus regnávit a ligno, allelúja.
Orémus.
Deus qui pro nobis Fílium tuum Crucis patíbulum subíre voluísti, ut inimíci a nobis expélleres potestátem: concéde nobis fámulis tuis; ut resurrectiónis grátiam consequámur.
Per eúmdem Dóminum nostrum Jesum Christum Fílium tuum, qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
R. Amen.
en: |
Ant. He that was crucified is risen from the dead, and hath redeemed us. Alleluia, alleluia.
V. Say among the heathen, alleluia.
R. That the Lord reigneth from the tree, alleluia.
Let us pray.
O God, who didst send thy Son to suffer death for us upon the Cross, that thou mightest deliver us from the power of the enemy: grant unto us thy servants to be made partakers of his Resurrection.
Through the same Jesus Christ, thy Son, Our Lord, Who liveth and reigneth with thee in the unity of the Holy Ghost, God, world without end.
R. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,11 @@
# The Ascension's own versicle — identical at both Lauds and Vespers
# (see vespers-versicle-ascension.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Lauds/Vespers live query,
# 2026-05-14 (Ascension Day itself).
id: lauds-versicle-ascension
text:
la: "V. Dóminus in cælo, allelúja.\nR. Parávit sedem suam, allelúja."
en: "V. The Lord in heaven, alleluia.\nR. Hath prepared his throne, alleluia."
status:
la: verified
en: verified
@@ -0,0 +1,12 @@
# Corpus Christi's own Lauds versicle — distinct from Vespers' own
# ("Panem de cælo præstitísti eis", see
# vespers-versicle-corpus-christi.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Lauds live query, 2026-06-04
# (Corpus Christi itself).
id: lauds-versicle-corpus-christi
text:
la: "V. Pósuit fines tuos pacem, allelúja.\nR. Et ádipe fruménti sátiat te, allelúja."
en: "V. He maketh peace in thy borders, alleluia.\nR. And filleth thee with the finest of wheat, alleluia."
status:
la: verified
en: verified
@@ -1,7 +1,7 @@
# The versicle right before the Benedictus, in Lent. Sourced from Divinum # The versicle right before the Benedictus, in Lent. Sourced from Divinum
# Officium's Monastic block: "[Quad Versum 2] = @:Quad Versum 3" — a bare # Officium's Monastic block: "[Quad Versum 2] = @:Quad Versum 3" — a bare
# alias to the same text used at Vespers (see vespers-versicle-lent.yml). # alias to the same text used at Vespers (see vespers-versicle-lent.yml).
# Not live-query-verified (see TODO.md) — read directly from source. # Live-verified 2026-09-04 — see lauds-capitulum-lent.yml's own header.
id: lauds-versicle-lent id: lauds-versicle-lent
text: text:
la: | la: |
@@ -11,5 +11,5 @@ text:
V. God hath given His Angels charge over thee. V. God hath given His Angels charge over thee.
R. To keep thee in all thy ways. R. To keep thee in all thy ways.
status: status:
la: draft la: verified
en: draft en: verified
@@ -0,0 +1,12 @@
# Pentecost's own Lauds versicle — distinct from Vespers' own
# ("Loquebántur váriis linguis Apóstoli", see
# vespers-versicle-pentecost-sunday.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Lauds live query, 2026-05-24
# (Pentecost Sunday itself).
id: lauds-versicle-pentecost-sunday
text:
la: "V. Repléti sunt omnes Spíritu Sancto, allelúja.\nR. Et cœpérunt loqui, allelúja."
en: "V. They were all filled with the Holy Ghost, alleluia.\nR. And began to speak, alleluia."
status:
la: verified
en: verified
@@ -0,0 +1,11 @@
# The Sacred Heart's own versicle — identical at both Lauds and Vespers
# (see vespers-versicle-sacred-heart.yml). Live-verified against Divinum
# Officium (Divino Afflatu - 1954), Lauds/Vespers live query, 2026-06-12
# (the Sacred Heart itself).
id: lauds-versicle-sacred-heart
text:
la: "V. Hauriétis aquas in gáudio.\nR. De fóntibus Salvatóris."
en: "V. With joy shall ye draw water.\nR. Out of the fountains of the Saviour."
status:
la: verified
en: verified
@@ -0,0 +1,12 @@
# Trinity Sunday's own Lauds versicle — distinct from Vespers' own
# ("Benedíctus es, Dómine, in firmaménto cæli", see
# vespers-versicle-trinity-sunday.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Lauds live query, 2026-05-31
# (Trinity Sunday itself).
id: lauds-versicle-trinity-sunday
text:
la: "V. Benedicámus Patrem et Fílium cum Sancto Spíritu.\nR. Laudémus et superexaltémus eum in sǽcula."
en: "V. Bless we the Father, and the Son, and the Holy Ghost.\nR. Let us praise Him and exalt Him above all for ever."
status:
la: verified
en: verified
@@ -0,0 +1,100 @@
# Advent's own Matins hymn ("Verbum supérnum, pródiens"). Live-verified
# against both a plain Advent Sunday and a plain Advent feria
# (2026-12-10, a Thursday with no saint of its own) — byte-identical, so
# this season doesn't vary its Matins hymn by weekday the way the plain
# per-annum ferial cycle does. Self-contained with its own closing
# doxology stanza baked in (a fixed, unique ending, "Laus, honor, virtus,
# glória... In sæculórum sǽcula" — not the shared weekday doxology).
id: matins-hymn-advent
text:
la: >-
Verbum supérnum, pródiens
A Patre olim éxiens,
Qui natus orbi súbvenis,
Cursu declívi témporis.
Illúmina nunc péctora,
Tuóque amóre cóncrema;
Audíto ut præcónio
Sint pulsa tandem lúbrica.
Judéxque cum post áderis
Rimári facta péctoris,
Reddens vicem pro ábditis,
Justísque regnum pro bonis.
Non demum arctémur malis
Pro qualitáte críminis;
Sed cum beátis cómpotes
Simus perénnes cælibes.
Laus, honor, virtus, glória,
Deo Patri, et Fílio,
Sancto simul Paráclito,
In sæculórum sǽcula. Amen.
en: >-
Celestial Word, to this our earth
Sent down from God's eternal clime,
To save mankind by mortal birth
Into a world of change and time;
Enlighten our hearts; vain hopes destroy;
And in thy love's consuming fire
Fill all the soul with heavenly joy,
And melt the dross of low desire.
So when the Judge of quick and dead
Shall bid his awful summons come,
To whelm the guilty soul with dread,
And call the blessed to their home.
Saved from the whirling, black abyss,
Forevermore to us be given
To share the feast of saintly bliss,
And see the face of God in heaven.
To God the Father and the Son
Our songs with one accord we raise;
And to the Holy Spirit, One
With them, be ever equal praise. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,117 @@
# The Ascension's own Matins hymn ("Jesu nostra redémptio"), shared
# identically with its own Lauds and Vespers (see lauds-hymn-ascension.yml/
# vespers-hymn-ascension.yml). Live-verified against Divinum Officium
# (Monastic Tridentinum 1617), Matins/Lauds/Vespers live query, 2026-05-14
# (Ascension Day itself).
#
# Closes a real gap found while fixing the generic Matins seasonal-hymn
# fallback (see matins-hymn-paschaltide.yml's own header): 'ascension' is
# a temporal-feast id (calendar/data/calendar/temporal-feasts/
# ascension.yml), not a saint record, so it was never picked up by
# `resolveOfficeWinner`'s octave-synthesis (which only ever checked
# `getSaintRecord`) — Ascension Day itself and its whole octave were both
# silently rendering the generic Paschaltide hymn instead of their own
# proper one, at every hour. Fixed by (1) adding `ascension` to
# `ALWAYS_OVERRIDE_TEMPORAL_IDS` (covers Ascension Day itself) and (2)
# teaching `resolveOfficeWinner` to also synthesize a `{kind: 'temporal'}`
# winner from a temporal-feast-only active octave when no saint record
# exists (covers the interior octave days, e.g. St. Ubald's or St.
# Bernardine's own days still correctly win outright and keep their own
# hymn — this only ever fires on a day nothing else claims).
#
# Self-contained — this hymn's own natural ending ("Per cuncta semper
# sǽcula. Amen.") has no separate trailing doxology stanza at all in the
# source, unlike most other Matins hymns in this store.
id: matins-hymn-ascension
text:
la: >-
Jesu nostra redémptio,
Amor et desidérium,
Deus Creátor ómnium,
Homo in fine témporum:
Quæ te vicit cleméntia,
Ut ferres nostra crímina,
Crudélem mortem pátiens,
Ut nos a morte tólleres!
Inférni claustra pénetrans,
Tuos captívos rédimens,
Victor triúmpho nóbili
Ad dextram Patris résidens.
Ipsa te cogat píetas,
Ut mala nostra súperes
Parcéndo, et voti cómpotes
Nos tuo vultu sáties.
Tu esto nostrum gáudium,
Qui es futúrus prǽmium,
Sit nostra in te glória,
Per cuncta semper sǽcula. Amen.
en: >-
Hail, thou who man's Redeemer art,
Jesu, the joy of every heart;
Great Maker of the world's wide frame,
And purest love's delight and flame:
What nameless mercy thee o'ercame,
To bear our load of sin and shame?
For guiltless, thou thy life didst give,
That sinful erring man might live.
The realms of woe are forced by thee,
Its captives from their chains set free;
And thou, amid thy ransomed train,
At God's right hand dost victor reign.
Let mercy sweet with thee prevail,
To cure the wounds we now bewail;
Oh, bless us with thy holy sight,
And fill us with eternal light.
Our guide, our way to heavenly rest,
Be thou the aim of every breast;
Be thou the soother of our tears,
Our sweet reward above the spheres. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,183 @@
# Corpus Christi's own Matins hymn ("Sacris solémniis"), St. Thomas
# Aquinas's own composition for this feast. Live-verified against
# Divinum Officium (Monastic Tridentinum 1617), Matins live query,
# 2026-06-04 (Corpus Christi itself). Self-contained — its own final
# stanza ("Te, trina Déitas...") is the hymn's natural theological
# close, not a separate swappable doxology.
#
# Closes the same real mechanism gap already fixed for Ascension/
# Pentecost (`corpus-christi` is a temporal-feast id, not a saint
# record, so `resolveOfficeWinner`'s octave-synthesis needed the same
# fix already in place — see hours/resolve-common.ts's
# `ALWAYS_OVERRIDE_TEMPORAL_IDS`).
id: matins-hymn-corpus-christi
text:
la: >-
Sacris solémniis juncta sint gáudia,
Et ex præcórdiis sonent præcónia;
Recédant vétera, nova sint ómnia,
Corda, voces, et ópera.
Noctis recólitur cœna novíssima,
Qua Christus créditur agnum et ázyma
Dedísse frátribus, juxta legítima
Priscis indúlta pátribus.
Post agnum týpicum, explétis épulis,
Corpus Domínicum datum discípulis,
Sic totum ómnibus, quod totum síngulis,
Ejus fatémur mánibus.
Dedit fragílibus córporis férculum,
Dedit et trístibus sánguinis póculum,
Dicens: Accípite quod trado vásculum;
Omnes ex eo bíbite.
Sic sacrifícium istud instítuit,
Cujus offícium commítti vóluit
Solis presbýteris, quibus sic cóngruit,
Ut sumant, et dent céteris.
Panis angélicus fit panis hóminum;
Dat panis cǽlicus figúris términum;
O res mirábilis: mandúcat Dóminum
Pauper, servus et húmilis.
Te, trina Déitas únaque, póscimus;
Sic nos tu vísita, sicut te cólimus:
Per tuas sémitas duc nos quo téndimus,
Ad lucem quam inhábitas. Amen.
en: >-
At this our solemn feast,
Let holy joys abound,
And from the inmost breast
Let songs of praise resound;
Let ancient rites depart,
And all be new around,
In ev'ry act and voice and heart.
Remember we that eve,
When, the last supper spread,
Christ, as we all believe,
The lamb, with leavenless bread,
Among his brethren shared,
And thus the law obeyed,
Of old unto their sires declared.
The typic lamb consumed,
The legal feast complete,
The Lord unto the twelve
His body gave to eat;
The whole to all, no less
The whole to each, did mete
With his own hands, as we confess.
He gave them, weak and frail,
His flesh, their food to be;
On them, downcast and sad,
His blood bestowèd he:
And thus to them he spake,
"Receive this cup from me,
And all of you of this partake."
So he this sacrifice
To institute did will,
And charged his priests alone
That office to fulfil:
In them he did confide:
To whom pertaineth still
To take, and to the rest divide.
Thus angels' bread is made
The bread of man today:
The living bread from heaven
With figures doth away:
O wondrous gift indeed!
The poor and lowly may
Upon their Lord and Master feed.
O Triune Deity,
To thee we meekly pray,
So mayst thou visit us,
As we our homage pay;
And in thy footsteps bright
Conduct us on our way
To where thou dwell'st in cloudless light. Amen.
status:
la: verified
en: verified
@@ -10,15 +10,13 @@
# `resolveMatinsHymn` now looks up a weekday-specific id # `resolveMatinsHymn` now looks up a weekday-specific id
# (`matins-hymn-ferial-tuesday`/`-wednesday`/`-thursday`/`-friday`/ # (`matins-hymn-ferial-tuesday`/`-wednesday`/`-thursday`/`-friday`/
# `-saturday`) for those five days; this file (`matins-hymn-ferial`, no # `-saturday`) for those five days; this file (`matins-hymn-ferial`, no
# day suffix) is still used directly for Monday, and — as a deliberate, # day suffix) is still used directly for Monday. Sunday's own gap (turned
# documented placeholder, not yet its own real content — for Sunday too: # out simple, not the "genuinely more complex two-hymn mechanism" first
# Sunday's own real Matins hymn selection is a genuinely more complex, # suspected — see matins-hymn-sunday.yml's own header) and Saturday's own
# not-yet-modeled two-hymn mechanism (Day0 Hymnus vs Hymnus1, live source # gap (superseded on nearly every ordinary Saturday by Marian Saturday,
# tags H-MatDom1/H-MatDom4, purpose unconfirmed). Saturday's own gap # not a full Little Office — see matins-hymn-ferial-saturday.yml and
# (superseded on nearly every ordinary Saturday by Marian Saturday, not a # calendar/index.ts's applyMarianSaturday) were both closed the same
# full Little Office — see matins-hymn-ferial-saturday.yml and # session. See TODO.md's 2026-09-04 entries.
# calendar/index.ts's applyMarianSaturday) was closed the same day. See
# TODO.md's 2026-09-04 entries.
# #
# The closing doxology stanza is split out into # The closing doxology stanza is split out into
# matins-hymn-doxology-per-annum.yml (see hours/matins.ts) — the source # matins-hymn-doxology-per-annum.yml (see hours/matins.ts) — the source
@@ -0,0 +1,173 @@
# Lent's own Matins hymn ("Ex more docti mýstico"), used throughout Lent
# up to (not including) Passiontide, which has its own separate hymn
# (`matins-hymn-passiontide.yml`). Live-verified against both a plain
# Lenten Sunday (2026-03-01) and a plain Lenten feria (2026-03-03, a
# Tuesday) — byte-identical, so this season doesn't vary its Matins hymn
# by weekday. Self-contained with its own closing doxology stanza baked
# in (a fixed, unique ending, "Præsta, beáta Trínitas..." — not the
# shared weekday doxology).
id: matins-hymn-lent
text:
la: >-
Ex more docti mýstico
Servémus hoc jejúnium,
Deno diérum círculo
Ducto quater notíssimo.
Lex et prophétæ prímitus
Hoc prætulérunt, póstmodum
Christus sacrávit, ómnium
Rex atque factor témporum.
Utámur ergo párcius
Verbis, cibis et pótibus,
Somno, jocis, et árctius
Perstémus in custódia.
Vitémus autem péssima,
Quæ súbruunt mentes vagas:
Nullúmque demus cállidi
Hostis locum tyránnidi.
Dicámus omnes cérnui:
Clamémus atque sínguli,
Plorémus ante Júdicem,
Flectámus iram víndicem,
Nostris malis offéndimus
Tuam, Deus, cleméntiam:
Effúnde nobis désuper,
Remíssor, indulgéntiam.
Meménto quod sumus tui,
Licet cadúci, plásmatis:
Ne des honórem nóminis
Tui, precámur, álteri.
Laxa malum, quod fécimus,
Auge bonum, quod póscimus:
Placére quo tandem tibi
Possímus hic, et pérpetim.
Præsta, beáta Trínitas,
Concéde, simplex Únitas,
Ut fructuósa sint tuis
Jejuniórum múnera. Amen.
en: >-
The fast, as taught by holy lore,
We keep in solemn course once more:
The fast to all men known, and bound
In forty days of yearly round.
The law and seers that were of old
In diverse ways this Lent foretold,
Which Christ, all seasons' King and Guide,
In after ages sanctified.
More sparing therefore let us make
The words we speak, the food we take,
Our sleep and mirth, and closer barred
Be every sense in holy guard.
Avoid the evil thoughts that roll
Like waters o'er the heedless soul;
Nor let the foe occasion find
Our souls in slavery to bind.
In prayer together let us fall,
And cry for mercy, one and all,
And weep before the Judge's feet,
And his avenging wrath entreat.
Thy grace have we offended sore,
By sins, O God, which we deplore;
But pour upon us from on high,
O pardoning One, thy clemency.
Remember thou, though frail we be,
That yet thine handiwork are we;
Nor let the honour of thy name
Be by another put to shame.
Forgive the sin that we have wrought;
Increase the good that we have sought:
That we at length, our wanderings o'er,
May please thee here and evermore.
Grant O thou Blessed Trinity,
Grant, O Essential Unity,
That this our fast of forty days
May work our profit and thy praise. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,185 @@
# Paschaltide's own Matins hymn ("Rex sempitérne Dómine"), live-verified
# against a plain post-Easter-Octave feria (2026-04-20, a Monday, "Feria
# Secunda infra Hebdomadam II post Octavam Paschæ"). Covers vu's whole
# `PASCHALTIDE_SEASONS` cluster (eastertide/ascensiontide/pentecost) per
# `seasonalOfficeSuffix`'s existing collapse — but the Ascension octave
# itself is live-verified to actually use a real, different, not-yet-
# authored proper hymn of its own ("...Qui scandis super sídera",
# 2026-05-15) that this app doesn't model yet; this generic Paschaltide
# text will incorrectly apply there for now — a known simplification
# matching a same-shape, pre-existing gap in Lauds' own
# `lauds-hymn-paschaltide.yml`, not a new regression. Flagged in TODO.md.
#
# Self-contained with its own closing doxology stanza baked in ("Glória
# tibi Dómine, Qui surrexísti a mórtuis..." — byte-identical to the
# already-existing `hymn-doxology-pasch.yml` used by Lauds/Vespers, but
# baked directly into the body here rather than split out/reattached,
# since this hour doesn't need the seasonal doxology-override mechanism
# for its own sub-season variants (Ascension/Pentecost/etc.) to matter —
# those days don't reach this file's own generic content at all until the
# proper-hymn gap above is closed).
id: matins-hymn-paschaltide
text:
la: >-
Rex sempitérne Dómine,
Rerum Creátor ómnium,
Qui eras ante sǽcula
Semper cum Patre Fílius:
Qui mundi in primórdio
Adam plásmasti hóminem:
Cui tuæ imágini
Vultum dedísti símilem.
Quem diábolus decéperat,
Hostis humáni géneris,
Cujus tu formam córporis
Assúmere dignátus es:
Ut hóminem redímeres,
Quem ante jam plasmáveras:
Et nos Deo conjúngeres,
Per carnis contubérnium.
Quem éditum ex Vírgine
Pavéscit omnis ánima:
Per quem et nos resúrgere
Devóta mente crédimus.
Qui nobis in Baptísmate
Donásti indulgéntiam,
Qui tenebámur vínculis
Ligáti consciéntiæ.
Qui Crucem propter hóminem
Suscípere dignátus es:
Dedísti tuum sánguinem
Nostræ salútis prétium.
Quǽsumus Auctor ómnium,
In hoc Pascháli gáudio,
Ab omni mortis ímpetu
Tuum defénde pópulum.
Glória tibi Dómine,
Qui surrexísti a mórtuis,
Cum Patre et Sancto Spíritu,
In sempitérna sǽcula. Amen.
en: >-
O thou, the heavens' eternal King,
Creator, unto thee we sing,
With God the Father ever One,
Co-equal, co-eternal Son.
Thy hand, when first the world began,
Made in thine own pure image man,
And linked to Adam, sprung from earth,
A living soul of heavenly birth.
And when by craft the envious foe
Had marred thy noblest work below,
Clothed in our flesh, thou didst restore
The image thou hadst made before.
So that thou might redeem man
Whom thou hadst made
And us to God might thou wouldst unite
Through thy union with the flesh.
Once wast thou born of Mary's womb;
And now, new-born from out the tomb,
O Christ, thou bidd'st us rise with thee
From death to immortality.
Eternal Shepherd, thou dost lave
Thy flock in pure baptismal wave,
That mystic bath, that grave of sin,
Where ransomed souls new life begin.
Redeemer, thou for us didst deign
To hang upon the Cross of pain,
And give for us the lavish price
Of thine own blood in sacrifice.
Grant, Lord, in thee each faithful mind
Unceasing paschal joy may find;
And from the death of sin set free
Souls newly born to life by thee.
To Thee Who, dead, again dost live,
All glory, Lord, Thy people give;
All glory, as is ever meet,
To Father and to Paraclete. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,170 @@
# Passiontide's own Matins hymn ("Pange, lingua, gloriósi prœ́lium
# certáminis" — the Passiontide recension of Venantius Fortunatus' hymn,
# distinct from Lent's own "Ex more docti mýstico" used up to this point).
# Live-verified against both Passion Sunday itself (2026-03-22) and a
# plain Passiontide feria (2026-03-24, a Tuesday) — byte-identical, so
# this season doesn't vary its Matins hymn by weekday. This particular
# breviary recension is 5 stanzas, ending after the Incarnation/manger
# stanza — it does not continue into the "Lustra sex qui iam peracta..."
# stanzas some other uses of this hymn carry. Self-contained with its own
# closing doxology stanza baked in (a fixed, unique ending, "Glória, et
# honor Deo..." — not the shared weekday doxology).
id: matins-hymn-passiontide
text:
la: >-
Pange, lingua, gloriósi
Prœlium certáminis,
Et super Crucis trophǽo
Dic triúmphum nóbilem,
Quáliter Redémptor orbis
Immolátus vícerit.
De paréntis protoplásti
Fraude Factor cóndolens,
Quando pomi noxiális
Morsu in mortem córruit,
Ipse lignum tunc notávit,
Damna ligni ut sólveret.
Hoc opus nostræ salútis
Ordo depopóscerat,
Multifórmis proditóris
Ars ut artem fálleret,
Et medélam ferret inde,
Hostis unde lǽserat.
Quando venit ergo sacri
Plenitúdo témporis,
Missus est ab arce Patris
Natus, orbis Cónditor,
Atque ventre virgináli
Carne amíctus pródiit.
Vagit infans inter arcta
Cónditus præsépia:
Membra pannis involúta
Virgo Mater álligat:
Et manus, pedésque, et crura
Stricta cingit fáscia.
Glória, et honor Deo
Usqueqáque Altíssimo,
Una Patri, Filióque;
Inclyto Paráclito:
Cui laus est et potéstas,
Per ætérna sǽcula. Amen.
en: >-
Sing, my tongue, the glorious battle
Sing the last, the dread affray;
O'er the cross, the victor's trophy,
Sound the high triumphal lay:
Tell how Christ, the world's Redeemer,
As a victim won the day.
God, his Maker, sorely grieving
That the first-made Adam fell,
When he ate the fruit of sorrow,
Whose reward was death and hell,
Noted then this wood, the ruin
Of the ancient wood to quell.
For the work of our salvation
Needs would have his order so,
And the multiform deceiver's
Art by art would overthrow,
And from thence would bring the med'cine
Whence the insult of the foe.
Wherefore, when the sacred fullness
Of the appointed time was come,
This world's Maker left his Father,
Sent the heav'nly mansion from,
And proceeded, God Incarnate,
Of the Virgin's holy womb.
Weeps the infant in the manger
That in Bethlehem's stable stands;
And his limbs the Virgin Mother
Doth compose in swaddling bands,
Meetly thus in linen folding
Of her God the feet and hands.
To the Trinity be glory
Everlasting, as is meet;
Equal to the Father, equal
To the Son, and Paraclete:
Trinal Unity, whose praises
All created things repeat. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,182 @@
# Pentecost's own Matins hymn ("Jam Christus astra ascénderat"). Live-
# verified against Divinum Officium (Monastic Tridentinum 1617), Matins
# live query, 2026-05-24 (Pentecost Sunday itself). Self-contained with
# its own closing doxology baked in ("Glória Patri Dómino, Natóque, qui a
# mórtuis Surréxit, ac Paráclito..." — the source tags this "Doxology:
# PentT", byte-identical to the already-existing `hymn-doxology-pent.yml`
# used elsewhere, but baked directly into the body here since this hour's
# per-feast/octave hymn tiers never run the doxology-split/append
# mechanism — see matins-hymn-ascension.yml's own header for the
# identical reasoning).
#
# Closes the same real mechanism gap already fixed for Ascension
# (`pentecost-sunday` is a temporal-feast id, not a saint record, so
# `resolveOfficeWinner`'s octave-synthesis needed the same fix — see
# hours/resolve-common.ts's `ALWAYS_OVERRIDE_TEMPORAL_IDS`). Per direct
# instruction (2026-09-04): Ascension and Pentecost are core content, not
# to be left half-fixed.
id: matins-hymn-pentecost-sunday
text:
la: >-
Jam Christus astra ascénderat,
Revérsus unde vénerat,
Promíssum Patris múnere,
Sanctum datúrus Spíritum.
Solémnis urgébat dies,
Quo mýstico septémplici
Orbis volútus sépties,
Signat beáta témpora.
Cum lucis hora tértia
Repénte mundus íntonat,
Orántibus Apóstolis
Deum venísse núntiat.
De Patris ergo lúmine
Decórus ignis almus est,
Qui fida Christi péctora
Calóre Verbi cómpleat.
Impléta gaudent víscera,
Affláta Sancto Spíritu,
Voces divérsas íntonant,
Fantur Dei magnália.
Ex omni gente cógniti,
Græcis, Latínis, Bárbaris,
Cunctísque admirántibus,
Linguis loquúntur ómnium.
Judǽa tunc incrédula,
Vesána torvo spíritu,
Ructáre musti crápulam,
Alúmnos Christi cóncrepat.
Sed signis et virtútibus
Occúrrit, et docet Petrus,
Falsa profári pérfidos,
Joéle teste cómprobans.
Glória Patri Dómino,
Natóque, qui a mórtuis
Surréxit, ac Paráclito,
In sæculórum sǽcula. Amen.
en: >-
Now Christ, ascending whence he came,
Had mounted o'er the starry frame,
The Holy Ghost on man below,
The Father's promise, to bestow.
The solemn time was drawing nigh,
Replete with heav'nly mystery,
On seven days' sevenfold circles borne,
That first and blessèd Whitsun-morn.
When the third hour shone all around,
There came a rushing mighty sound,
And told the Apostles, while in prayer,
That, as was promised, God was there.
Forth from the Father's light it came,
That beautiful and kindly flame:
To fill with fervour of his word
The spirits faithful to their Lord.
With joy the Apostles' breasts are fired,
By God the Holy Ghost inspired:
And straight, in diverse kinds of speech,
The wondrous works of God they preach.
To men of every race they speak,
Alike barbarian, Roman, Greek:
From the same lips, with awe and fear,
All men their native accents hear.
But Juda's sons, e'en faithless yet,
With mad infuriate rage beset,
To mock Christ's followers combine,
As drunken all with new-made wine.
When lo! with signs and mighty deeds,
Stands Peter in the midst, and pleads;
Confounding their malignant lie
By Joel's ancient prophecy.
To God the Father let us sing,
To God the Son, our risen King,
And equally let us adore
The Spirit, God forevermore. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,125 @@
# The Sacred Heart's own Matins hymn ("Auctor beáte sǽculi"). Live-
# verified against Divinum Officium (Divino Afflatu - 1954, 2026-06-12,
# the Sacred Heart itself) — not the Monastic Tridentinum 1617 track,
# which doesn't observe this feast on the same date at all (live-
# checked: shows St. Barnabas instead, unaffected). This project's own
# rubric/precedence track is Divino Afflatu anyway (see the repo's
# CLAUDE.md), so this is a real, consistent source choice, not a
# deviation. Self-contained — its own final stanza is the hymn's natural
# theological close, not a separate swappable doxology.
#
# Closes the same real mechanism gap already fixed for Ascension/
# Pentecost/Corpus Christi (`sacred-heart` is a temporal-feast id, not a
# saint record — see hours/resolve-common.ts's
# `ALWAYS_OVERRIDE_TEMPORAL_IDS`).
id: matins-hymn-sacred-heart
text:
la: >-
Auctor beáte sǽculi,
Christe, Redémptor ómnium,
Lumen Patris de lúmine,
Deúsque verus de Deo.
Amor coégit te tuus
Mortále corpus súmere,
Ut novus Adam rédderes,
Quod vetus ille abstúlerat.
Ille amor, almus ártifex
Terræ marísque, et síderum,
Erráta patrum míserans,
Et nostra rumpens víncula.
Non Corde discédat tuo
Vis illa amóris íncliti:
Hoc fonte gentes háuriant
Remissiónis grátiam.
Percússum ad hoc est láncea,
Passúmque ad hoc est vúlnera:
Ut nos laváret sórdibus,
Unda fluénte, et sánguine.
Jesu, tibi sit glória,
Qui Corde fundis grátiam,
Cum Patre, et almo Spíritu,
In sempitérna sǽcula. Amen.
en: >-
O Christ, the world's Creator bright,
Who didst mankind from sin redeem,
Light from the Father's glorious light,
True God of God, in bliss supreme.
Thy love compelled thee to assume
A mortal body, man to save;
Reversing the old Adam's doom;
Our ransom the new Adam gave.
That love which gloriously framed all
The earth, the stars, and wondrous sea
Took pity on our parents' fall,
Broke all our bonds and set us free.
O Saviour, let thy potent love
Flow ever from thy bounteous heart;
To nations that pure fount above
The grace of pardon will impart.
His heart for this was opened wide,
And wounded by the soldier's spear,
That freely from his sacred side
Might flow the streams our souls to clear.
Glory to Father and to Son,
And to the Holy Ghost the same,
To whom all power, when time is done,
And endless rule, in endless fame. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,174 @@
# Septuagesima-tide's own Matins hymn ("Primo diérum ómnium" —
# Psalterium/Special/Matutinum Special.txt's "Day0 Hymnus1M", a genuinely
# separate full text from the secular "Day0 Hymnus1", not a word-swap).
# Live-verified 2026-02-01 (Septuagesima Sunday itself). Checked before
# `matins-hymn-sunday.yml` in `resolveMatinsHymn` — this only ever
# applies during Septuagesima/Sexagesima/Quinquagesima, a real, narrow
# season vu's calendar already tracks (`day.season === 'septuagesima'`)
# but that the shared `seasonalOfficeSuffix` (Lauds/Vespers' own) doesn't
# cover — checked directly here rather than added there, since Lauds/
# Vespers have no matching Septuagesima content authored yet and adding
# it to that shared function would silently blank their own chapter/
# hymn instead of falling through to their current (imperfect but real)
# weekday default. See TODO.md.
#
# Self-contained, own closing doxology baked in — happens to be
# byte-identical to the shared "Praesta, Pater piíssime..." weekday
# doxology, but this hour doesn't use the split/append mechanism at all
# for this seasonal tier (see matins-hymn-sunday.yml's own header).
id: matins-hymn-septuagesima
text:
la: >-
Primo diérum ómnium,
Quo mundus extat cónditus,
Vel quo resúrgens Cónditor
Nos morte victa líberat.
Pulsis procul torpóribus
Surgámus omnes ócius,
Et nocte quærámus pium
Sicut prophétam nóvimus.
Nostras preces ut áudiat,
Suámque dextram pórrigat:
Et expiátos sórdibus
Reddat polórum sédibus.
Ut quique sacratíssimo
Hujus diéi témpore
Horis quiétis psállimus,
Donis beátis múneret.
Jam nunc patérna cláritas
Te postulámus áffatim:
Absit libído sórdidans
Et omnis actus nóxius.
Ne fœda sit, vel lúbrica
Compágo nostri córporis,
Per quem Avérni ígnibus
Ipsi cremémur ácrius.
Ob hoc Redémptor, quǽsumus,
Ut probra nostra díluas,
Vitæ perénnis cómmoda
Nobis benígne cónferas.
Quo carnis actu éxsules
Effécti ipsi cælibes,
Ut præstolámur cérnui,
Melos canámus glóriæ.
Præsta, Pater piíssime,
Patríque compar Únice,
Cum Spíritu Paráclito
Regnans per omne sǽculum. Amen.
en: >-
Hail day! whereon the One in Three
First formed the earth by sure decree,
The day its Maker rose again,
And vanquished death, and burst our chain.
Away with sleep and slothful ease
We raise our hearts and bend our knees,
And early seek the Lord of all,
Obedient to the Prophet's call.
That He may hearken to our prayer,
Stretch forth His strong right arm to spare,
And ev'ry past offense forgiven,
Restore us to our home in heaven.
Assembled here this holy day,
This holiest hour we raise the lay,
And O that He to whom we sing,
May now reward our offering!
O Father of unclouded light!
Keep us this day as in thy sight,
In word and deed that we may be
From ev'ry touch of evil free.
That this our body's mortal frame
May know no sin, and fear no shame,
Nor fire hereafter be the end
Of passions which our bosom rend.
Redeemer of the world, we pray
That thou wouldst wash our sins away,
And give us, of Thy boundless grace,
The blessings of the heavenly place.
Most Holy Father, hear our cry,
Through Jesus Christ our Lord most High
Who, with the Holy Ghost and thee
Shall live and reign eternally. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,80 @@
# Sunday's own plain Matins hymn ("Nocte surgéntes vigilémus omnes" —
# Psalterium/Special/Matutinum Special.txt's "Day0 Hymnus", Monastic
# 1617's own "Day0 HymnusM" swap applied: "Víribus totis"/"beátam"/
# "réboat" replacing the secular "Voce concórdi"/"perénnem"/"résonat").
# Live-verified against 3 clean ordinary-time (Trinitytide) Sundays with
# no season/octave/winning-saint override (2026-07-05, 2026-08-02,
# 2026-09-06), all byte-identical.
#
# Self-contained with its own closing doxology stanza baked in (a fixed,
# unique Sapphic-meter ending, "Præstet hoc nobis Déitas beáta..." — not
# the shared iambic-dimeter "Praesta, Pater piíssime..." every weekday
# ferial hymn uses) — same convention as every other self-contained
# Matins hymn (see e.g. matins-hymn-common-of-an-apostle.yml).
#
# Septuagesima-tide has its own separate, genuinely different Sunday
# hymn ("Primo diérum ómnium", `matins-hymn-septuagesima.yml`) — checked
# before this one in `resolveMatinsHymn`'s precedence, same as Advent/
# Lent/Passiontide/Paschaltide's own seasonal hymns. Advent/Lent/
# Passiontide/Paschaltide's own Sunday hymns turned out identical to
# their own ferial-weekday hymns (live-verified: a Lenten Tuesday and a
# Lenten Sunday both render "Ex more docti mýstico"), unlike the plain
# per-annum case here, where Sunday genuinely differs from the weekday
# cycle (`matins-hymn-ferial*.yml`).
id: matins-hymn-sunday
text:
la: >-
Nocte surgéntes vigilémus omnes,
Semper in psalmis meditémur, atque
Víribus totis Dómino canámus
Dúlciter hymnos.
Ut pio Regi páriter canéntes,
Cum suis Sanctis mereámur aulam
Íngredi cæli, simul et beátam
Dúcere vitam.
Præstet hoc nobis Déitas beáta
Patris, ac Nati, paritérque Sancti
Spíritus, cujus réboat per omnem
Glória mundum. Amen.
en: >-
Now, from the slumbers of the night arising,
Chant we the holy psalmody of David,
Hymns to our Master, with a voice concordant,
Sweetly intoning.
So may our Monarch pitifully hear us,
That we may merit with his saints to enter
Mansions eternal, therewithal possessing
Joy beatific.
This be our portion, God forever blessed,
Father eternal, Son, and Holy Spirit,
Whose is the glory, which through all creation
Ever resoundeth. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,67 @@
# Trinity Sunday's own Matins hymn ("Summæ Deus cleméntiæ") — shares its
# opening stanza with the plain ferial Saturday hymn
# (matins-hymn-ferial-saturday.yml's "Summæ Deus cleméntiæ, Mundíque
# Factor máchinæ..."), but diverges completely from its second stanza
# onward and is shorter overall (2 body stanzas + its own doxology,
# not 4 + the shared weekday doxology) — a genuinely different hymn, not
# a mislabeled duplicate. Live-verified against Divinum Officium
# (Monastic Tridentinum 1617), Matins live query, 2026-05-31 (Trinity
# Sunday itself). Self-contained — its own final stanza is a fixed,
# unique doxology, not the shared weekday one.
id: matins-hymn-trinity-sunday
text:
la: >-
Summæ Deus cleméntiæ,
Mundíque Factor máchinæ,
Unus potentiáliter,
Trinúsque personáliter.
Da déxteram surgéntibus,
Exsúrgat ut mens sóbria,
Flagrans et in laudem Dei,
Grates repéndet débitas.
Glória Patri Dómino,
Glória Unigénito,
Una cum Sancto Spíritu,
In sempitérna sǽcula. Amen.
en: >-
O God, by whose command is swayed
This ordered world which thou hast made;
Parent of heavenly clemency,
In nature One, in persons Three;
Assist us while our minds we raise,
Inflamed with thy immortal praise;
That with our sober thoughts, we may
Forever our thanksgiving pay.
May age by age thy wonders tell,
Eternal praise thy works reveal,
And sing with the celestial host
The Father, Son, and Holy Ghost. Amen.
status:
la: verified
en: verified
@@ -1,6 +1,6 @@
# Sourced from Divinum Officium's Monastic block ("[Quad Vespera_]", # Sourced from Divinum Officium's Monastic block ("[Quad Vespera_]",
# Psalterium/Special/Major Special.txt). Not live-query-verified (see # Psalterium/Special/Major Special.txt). Live-verified 2026-09-04 against
# TODO.md) — read directly from source. # a plain Lenten Wednesday (2026-03-04).
id: vespers-capitulum-lent id: vespers-capitulum-lent
text: text:
la: "Inter vestíbulum et altáre plorábunt sacerdótes, minístri Dómini, et dicent: Parce, Dómine, parce pópulo tuo: et ne des hereditátem tuam in oppróbrium, ut dominéntur eis natiónes." la: "Inter vestíbulum et altáre plorábunt sacerdótes, minístri Dómini, et dicent: Parce, Dómine, parce pópulo tuo: et ne des hereditátem tuam in oppróbrium, ut dominéntur eis natiónes."
@@ -9,5 +9,5 @@ citation:
la: "Joel 2:17" la: "Joel 2:17"
en: "Joel 2:17" en: "Joel 2:17"
status: status:
la: draft la: verified
en: draft en: verified
@@ -0,0 +1,98 @@
# The Ascension's own Vespers hymn ("Jesu nostra redémptio") — identical
# text to Matins' own (matins-hymn-ascension.yml) and Lauds' own
# (lauds-hymn-ascension.yml). Live-verified against Divinum Officium
# (Monastic Tridentinum 1617), Vespers live query, 2026-05-14 (Ascension
# Day itself).
id: vespers-hymn-ascension
text:
la: >-
Jesu nostra redémptio,
Amor et desidérium,
Deus Creátor ómnium,
Homo in fine témporum:
Quæ te vicit cleméntia,
Ut ferres nostra crímina,
Crudélem mortem pátiens,
Ut nos a morte tólleres!
Inférni claustra pénetrans,
Tuos captívos rédimens,
Victor triúmpho nóbili
Ad dextram Patris résidens.
Ipsa te cogat píetas,
Ut mala nostra súperes
Parcéndo, et voti cómpotes
Nos tuo vultu sáties.
Tu esto nostrum gáudium,
Qui es futúrus prǽmium,
Sit nostra in te glória,
Per cuncta semper sǽcula. Amen.
en: >-
Hail, thou who man's Redeemer art,
Jesu, the joy of every heart;
Great Maker of the world's wide frame,
And purest love's delight and flame:
What nameless mercy thee o'ercame,
To bear our load of sin and shame?
For guiltless, thou thy life didst give,
That sinful erring man might live.
The realms of woe are forced by thee,
Its captives from their chains set free;
And thou, amid thy ransomed train,
At God's right hand dost victor reign.
Let mercy sweet with thee prevail,
To cure the wounds we now bewail;
Oh, bless us with thy holy sight,
And fill us with eternal light.
Our guide, our way to heavenly rest,
Be thou the aim of every breast;
Be thou the soother of our tears,
Our sweet reward above the spheres. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,169 @@
# Corpus Christi's own Vespers hymn ("Pange, lingua, gloriósi Córporis
# mystérium") — St. Thomas Aquinas's own Eucharistic hymn, whose final 2
# stanzas ("Tantum ergo Sacraméntum..." — sung genuflecting per the
# source's own rubric, not modeled here) are the separately-famous
# "Tantum Ergo" sung constantly at Benediction. Distinct from Matins'
# own ("Sacris solémniis") and Lauds' own ("Verbum supérnum pródiens").
# Live-verified against Divinum Officium (Monastic Tridentinum 1617),
# Vespers live query, 2026-06-04 (Corpus Christi itself). Self-contained
# — its own final stanza is the hymn's natural theological close, not a
# separate swappable doxology.
id: vespers-hymn-corpus-christi
text:
la: >-
Pange, lingua, gloriósi
Córporis mystérium,
Sanguinísque pretiósi,
Quem in mundi prétium
Fructus ventris generósi
Rex effúdit géntium.
Nobis datus, nobis natus
Ex intácta Vírgine,
Et in mundo conversátus,
Sparso verbi sémine,
Sui moras incolátus
Miro clausit órdine.
In suprémæ nocte cenæ
Recúmbens cum frátribus,
Observáta lege plene
Cibis in legálibus,
Cibum turbæ duodénæ
Se dat suis mánibus.
Verbum caro, panem verum
Verbo carnem éfficit;
Fitque sanguis Christi merum:
Et si sensus déficit,
Ad firmándum cor sincérum
Sola fides súfficit.
Tantum ergo Sacraméntum
Venerémur cérnui:
Et antíquum documéntum
Novo cedat rítui:
Præstet fides suppleméntum
Sénsuum deféctui.
Genitóri, Genitóque
Laus et jubilátio,
Salus, honor, virtus quoque
Sit et benedíctio:
Procedénti ab utróque
Compar sit laudátio. Amen.
en: >-
Sing, my tongue, the Saviour's glory,
Of his flesh the mystery sing;
Of the blood, all price exceeding,
Shed by our immortal King,
Destined, for the world's redemption,
From a noble womb to spring.
Of a pure and spotless Virgin
Born for us on earth below,
He, as man, with man conversing,
Stayed, the seeds of truth to sow;
Then he closed in solemn order
Wondrously his life of woe.
On the night of that last supper
Seated with his chosen band,
He, the paschal victim eating,
First fulfills the law's command:
Then as food to all his brethren
Gives himself with his own hand.
Word made flesh, the bread of nature
By his word to flesh he turns;
Wine into his blood he changes:
What though sense no change discerns?
Only be the heart in earnest,
Faith her lesson quickly learns.
Down in adoration falling,
Lo! the sacred Host we hail;
Lo! o'er ancient forms departing,
Newer rites of grace prevail;
Faith for all defects supplying,
Where the feeble senses fail.
To the everlasting Father,
And the Son who reigns on high,
With the Holy Ghost proceeding
Forth from each eternally,
Be salvation, honour, blessing,
Might, and endless majesty. Amen.
status:
la: verified
en: verified
@@ -1,7 +1,9 @@
# Live-verified 2026-09-04 against a plain Lenten Wednesday (2026-03-04)
# — same text as matins-hymn-lent.yml's own baked-in closing stanza.
id: vespers-hymn-lent-doxology-per-annum id: vespers-hymn-lent-doxology-per-annum
text: text:
la: "Præsta, beáta Trínitas,\nConcéde, simplex Únitas;\nUt fructuósa sint tuis\nJejuniórum múnera.\nAmen." la: "Præsta, beáta Trínitas,\nConcéde, simplex Únitas;\nUt fructuósa sint tuis\nJejuniórum múnera.\nAmen."
en: "We pray thee, Holy Trinity,\nOne God, unchanging Unity,\nThat we from this our abstinence\nMay reap the fruits of penitence.\nAmen." en: "We pray thee, Holy Trinity,\nOne God, unchanging Unity,\nThat we from this our abstinence\nMay reap the fruits of penitence.\nAmen."
status: status:
la: draft la: verified
en: draft en: verified
@@ -2,8 +2,9 @@
# Vespera]", Psalterium/Special/Major Special.txt): two substitutions # Vespera]", Psalterium/Special/Major Special.txt): two substitutions
# against the base "[Hymnus Quad Vespera]" text — a word-order swap in # against the base "[Hymnus Quad Vespera]" text — a word-order swap in
# stanza 3 ("Ad nóminis laudem tui" -> "Ad laudem tui nóminis") and a full # stanza 3 ("Ad nóminis laudem tui" -> "Ad laudem tui nóminis") and a full
# replacement of stanza 4 — applied by hand here. Not live-query-verified # replacement of stanza 4 — applied by hand here. Live-verified 2026-09-04
# (see TODO.md). English has no separate Monastic variant in the source. # against a plain Lenten Wednesday (2026-03-04), including the Monastic
# swap. English has no separate Monastic variant in the source.
id: vespers-hymn-lent id: vespers-hymn-lent
text: text:
la: | la: |
@@ -47,5 +48,5 @@ text:
That fasting inward secretly That fasting inward secretly
The soul may purely dwell with thee. The soul may purely dwell with thee.
status: status:
la: draft la: verified
en: draft en: verified
@@ -0,0 +1,137 @@
# Pentecost's own Vespers hymn ("Veni Creátor Spíritus") — the well-known
# hymn, distinct from Matins' own ("Jam Christus astra ascénderat") and
# Lauds' own ("Beáta nobis gáudia"). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Vespers live query, 2026-05-24
# (Pentecost Sunday itself). The source's own rubric ("Prima stropha
# hymni sequentis dicitur flexibus genibus" — the first verse is said
# genuflecting) isn't modeled by this app's own rendering, same as other
# performance-rubric notes elsewhere in this store.
id: vespers-hymn-pentecost-sunday
text:
la: >-
Veni Creátor Spíritus,
Mentes tuórum vísita,
Imple supérna grátia,
Quæ tu creásti péctora.
Qui Paráclitus díceris,
Donum Dei altíssimi,
Fons vivus, ignis, cáritas,
Et spiritális únctio.
Tu septifórmis múnere,
Dextræ Dei tu dígitus,
Tu rite promíssum Patris,
Sermóne ditans gúttura.
Accénde lumen sénsibus:
Infúnde amórem córdibus:
Infírma nostri córporis
Virtúte firmans pérpeti.
Hostem repéllas lóngius,
Pacémque dones prótinus:
Ductóre sic te prǽvio
Vitémus omne nóxium.
Per te sciámus da Patrem,
Noscámus atque Fílium,
Te utriúsque Spíritum
Credámus omni témpore.
Glória Patri Dómino,
Natóque, qui a mórtuis
Surréxit, ac Paráclito,
In sæculórum sǽcula. Amen.
en: >-
Creator Spirit, all Divine,
Come, visit every soul of Thine,
And fill with Thy celestial flame
The hearts which Thou Thyself didst frame.
O gift of God, Thine is the sweet
Consoling name of Paraclete
And spring of life and fire and love
And unction flowing from above.
The mystic sevenfold gifts are Thine,
Finger of God's right hand divine;
The Father's promise sent to teach
The tongue a rich and heavenly speech.
Kindle with fire brought from above
Each sense, and fill our hearts with love;
And grant our flesh, so weak and frail,
The strength of Thine which cannot fail.
Drive far away our deadly foe,
And grant us Thy true peace to know;
So we, led by Thy guidance still,
May safely pass through every ill.
To us, through Thee, the grace be shown
To know the Father and the Son;
And Spirit of Them both, may we
Forever rest our faith in Thee.
To Sire and Son be praises meet,
And to the Holy Paraclete;
And may Christ send us from above
That Holy Spirit's gift of love. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,123 @@
# The Sacred Heart's own Vespers hymn ("En, ut supérba críminum") —
# distinct from Matins' own ("Auctor beáte sǽculi") and Lauds' own
# ("Cor, arca legem cóntinens"). Live-verified against Divinum Officium
# (Divino Afflatu - 1954), Vespers live query, 2026-06-12 (the Sacred
# Heart itself) — see matins-hymn-sacred-heart.yml's own header on why
# this track. Self-contained — its own final stanza is the hymn's
# natural theological close, not a separate swappable doxology.
#
# This day's own Vespers genuinely has no responsory in the source at
# all (straight from chapter to hymn), same as its own Lauds — see
# hours/vespers.ts's own resolveOffice, which omits the responsory part
# entirely rather than rendering an empty one.
id: vespers-hymn-sacred-heart
text:
la: >-
En, ut supérba críminum
Et sæva nostrórum cohors
Cor sauciávit ínnocens
Meréntis haud tale Dei!
Vibrántis hastam mílitis
Peccáta nostra dírigunt,
Ferrúmque diræ cúspidis
Mortále crimen ácuit.
Ex Corde scisso Ecclésia,
Christo jugáta, náscitur:
Hoc óstium arcæ in látere est
Genti ad salútem pósitum.
Ex hoc perénnis grátia,
Ceu septifórmis flúvius,
Stolas ut illic sórdidas
Lavémus Agni in sánguine.
Turpe est redíre ad crímina,
Quæ Cor beátum lácerent:
Sed æmulémur córdibus
Flammas amóris índices.
Jesu, tibi sit glória,
Qui Corde fundis grátiam,
Cum Patre, et almo Spíritu,
In sempitérna sǽcula. Amen.
en: >-
Lo, how the savage crew
Of our proud sins hath rent
The heart of our all-gracious God,
That heart so innocent.
The soldier's quivering lance
Our guilt it was that drave,
Our wicked deeds that to its point
Such cruel sharpness gave.
O wounded heart, whence sprang
The Church, the Saviour's bride;
Thou door of our salvation's ark
Set in its mystic side.
Thou holy fount, whence flows
The sacred sevenfold flood,
Where we our filthy robes may cleanse
In the Lamb's saving blood:
By sorrowful relapse,
thee will we rend no more;
But like the flames, those types of love,
Strive heavenward to soar.
Father and Son supreme
And Spirit, hear our cry;
Whose is the kingdom, praise and power,
Through all eternity. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,61 @@
# Trinity Sunday's own Vespers hymn ("O lux beáta Trínitas") — identical
# text to Lauds' own (lauds-hymn-trinity-sunday.yml). Live-verified
# against Divinum Officium (Monastic Tridentinum 1617), Vespers live
# query, 2026-05-31 (Trinity Sunday itself).
id: vespers-hymn-trinity-sunday
text:
la: >-
O lux beáta Trínitas,
Et principális Únitas,
Jam sol recédit ígneus,
Infúnde lumen córdibus.
Te mane laudum cármine,
Te deprecémur véspere:
Te nostra supplex glória
Per cuncta laudet sǽcula.
Deo Patri sit glória,
Ejúsque soli Fílio,
Cum Spíritu Paráclito,
Et nunc, et in perpétuum. Amen.
en: >-
O Trinity of blessed Light,
O Unity of sovereign might,
as now the fiery sun departs,
shed Thou Thy beams within our hearts.
To Thee our morning song of praise,
to Thee our evening prayer we raise;
Thee may our glory evermore
in lowly reverence adore.
All laud to God the Father be;
all praise, Eternal Son, to Thee;
all glory, as is ever meet,
to God the Holy Paraclete. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,24 @@
# The Ascension's own Vespers responsory ("Ascéndens Christus in
# altum") — distinct from Lauds' own ("Ascéndit Deus in jubilatióne",
# see lauds-responsory-ascension.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Vespers live query, 2026-05-14
# (Ascension Day itself).
id: vespers-responsory-ascension
text:
la: |
R.br. Ascéndens Christus in altum, * Allelúja, allelúja.
R. Ascéndens Christus in altum, * Allelúja, allelúja.
V. Captívam duxit captivitátem.
R. Allelúja, allelúja.
V. Glória Patri, et Fílio, * et Spirítui Sancto.
R. Ascéndens Christus in altum, * Allelúja, allelúja.
en: |
R.br. When Christ ascended up on high. * Alleluia, alleluia.
R. When Christ ascended up on high. * Alleluia, alleluia.
V. He led captivity captive.
R. Alleluia, alleluia.
V. Glory be to the Father, and to the Son, * and to the Holy Ghost.
R. When Christ ascended up on high. * Alleluia, alleluia.
status:
la: verified
en: verified
@@ -0,0 +1,24 @@
# Corpus Christi's own Vespers responsory ("Cibávit illos ex ádipe
# fruménti") — distinct from Lauds' own ("Panem cæli dedit eis", see
# lauds-responsory-corpus-christi.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Vespers live query, 2026-06-04
# (Corpus Christi itself).
id: vespers-responsory-corpus-christi
text:
la: |
R.br. Cibávit illos ex ádipe fruménti, * Allelúja, allelúja.
R. Cibávit illos ex ádipe fruménti, * Allelúja, allelúja.
V. Et de petra, melle saturávit eos.
R. Allelúja, allelúja.
V. Glória Patri, et Fílio, * et Spirítui Sancto.
R. Cibávit illos ex ádipe fruménti, * Allelúja, allelúja.
en: |
R.br. He fed them with the finest of the wheat. * Alleluia, Alleluia.
R. He fed them with the finest of the wheat. * Alleluia, Alleluia.
V. And with honey out of the rock did He satisfy them.
R. Alleluia, Alleluia.
V. Glory be to the Father, and to the Son, * and to the Holy Ghost.
R. He fed them with the finest of the wheat. * Alleluia, Alleluia.
status:
la: verified
en: verified
@@ -1,6 +1,6 @@
# Sourced from Divinum Officium's Monastic block ("[Responsory Quad # Sourced from Divinum Officium's Monastic block ("[Responsory Quad
# Vespera]", Psalterium/Special/Major Special.txt). Not # Vespera]", Psalterium/Special/Major Special.txt). Live-verified
# live-query-verified (see TODO.md) — read directly from source. # 2026-09-04 against a plain Lenten Wednesday (2026-03-04).
id: vespers-responsory-lent id: vespers-responsory-lent
text: text:
la: | la: |
@@ -18,5 +18,5 @@ text:
V. Glory be to the Father, and to the Son, * and to the Holy Ghost. V. Glory be to the Father, and to the Son, * and to the Holy Ghost.
R. He will overshadow * thee with his shoulders. R. He will overshadow * thee with his shoulders.
status: status:
la: draft la: verified
en: draft en: verified
@@ -0,0 +1,24 @@
# Pentecost's own Vespers responsory ("Spíritus Paráclitus") — distinct
# from Lauds' own ("Spíritus Dómini replévit orbem terrárum", see
# lauds-responsory-pentecost-sunday.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Vespers live query, 2026-05-24
# (Pentecost Sunday itself).
id: vespers-responsory-pentecost-sunday
text:
la: |
R.br. Spíritus Paráclitus, * Allelúja, allelúja.
R. Spíritus Paráclitus, * Allelúja, allelúja.
V. Docébit vos ómnia.
R. Allelúja, allelúja.
V. Glória Patri, et Fílio, * et Spirítui Sancto.
R. Spíritus Paráclitus, * Allelúja, allelúja.
en: |
R.br. The Comforter, Which is the Holy Ghost. * Alleluia, Alleluia.
R. The Comforter, Which is the Holy Ghost. * Alleluia, Alleluia.
V. He shall teach you all things.
R. Alleluia, alleluia.
V. Glory be to the Father, and to the Son, * and to the Holy Ghost.
R. The Comforter, Which is the Holy Ghost. * Alleluia, Alleluia.
status:
la: verified
en: verified
@@ -0,0 +1,25 @@
# Trinity Sunday's own Vespers responsory ("Benedicámus Patrem et
# Fílium cum Sancto Spíritu") — distinct from Lauds' own ("Benedíctus
# es, Dómine, in firmaménto cæli", see
# lauds-responsory-trinity-sunday.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Vespers live query, 2026-05-31
# (Trinity Sunday itself).
id: vespers-responsory-trinity-sunday
text:
la: |
R.br. Benedicámus Patrem et Fílium * Cum Sancto Spíritu.
R. Benedicámus Patrem et Fílium * Cum Sancto Spíritu.
V. Laudémus et superexaltémus eum in sǽcula.
R. Cum Sancto Spíritu.
V. Glória Patri, et Fílio, * et Spirítui Sancto.
R. Benedicámus Patrem et Fílium * Cum Sancto Spíritu.
en: |
R.br. Bless we the Father, and the Son, * And the Holy Ghost.
R. Bless we the Father, and the Son, * And the Holy Ghost.
V. Let us praise and exalt Him above all for ever.
R. And the Holy Ghost.
V. Glory be to the Father, and to the Son, * and to the Holy Ghost.
R. Bless we the Father, and the Son, * And the Holy Ghost.
status:
la: verified
en: verified
@@ -0,0 +1,30 @@
# Vespers' own antiphon for the same "Suffragium Paschale" substitution
# described in lauds-suffrage-paschale.yml's own header — shares that
# file's versicle/response and collect, but its own distinct antiphon
# ("Crucem sanctam súbiit..."), live-verified against Divinum Officium
# (Monastic Tridentinum 1617), Vespers live query, 2026-04-20 (a plain
# Eastertide feria). English antiphon translation is this project's own
# (the reference engine's own English-language render leaves this
# particular antiphon untranslated, Latin-only) — status left `draft`
# for the English text specifically pending a better-sourced translation.
id: vespers-suffrage-paschale
text:
la: |
Ant. Crucem sanctam súbiit, qui inférnum confrégit; accínctus est poténtia, surréxit die tértia, allelúja.
V. Dícite in natiónibus, allelúja.
R. Quia Dóminus regnávit a ligno, allelúja.
Orémus.
Deus qui pro nobis Fílium tuum Crucis patíbulum subíre voluísti, ut inimíci a nobis expélleres potestátem: concéde nobis fámulis tuis; ut resurrectiónis grátiam consequámur.
Per eúmdem Dóminum nostrum Jesum Christum Fílium tuum, qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
R. Amen.
en: |
Ant. He bore the holy Cross, who broke the gates of hell; he was girded with power, and rose again on the third day, alleluia.
V. Say among the heathen, alleluia.
R. That the Lord reigneth from the tree, alleluia.
Let us pray.
O God, who didst send thy Son to suffer death for us upon the Cross, that thou mightest deliver us from the power of the enemy: grant unto us thy servants to be made partakers of his Resurrection.
Through the same Jesus Christ, thy Son, Our Lord, Who liveth and reigneth with thee in the unity of the Holy Ghost, God, world without end.
R. Amen.
status:
la: verified
en: draft
@@ -0,0 +1,11 @@
# The Ascension's own versicle — identical at both Vespers and Lauds
# (see lauds-versicle-ascension.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Vespers live query, 2026-05-14
# (Ascension Day itself).
id: vespers-versicle-ascension
text:
la: "V. Dóminus in cælo, allelúja.\nR. Parávit sedem suam, allelúja."
en: "V. The Lord in heaven, alleluia.\nR. Hath prepared his throne, alleluia."
status:
la: verified
en: verified
@@ -0,0 +1,11 @@
# Corpus Christi's own Vespers versicle — distinct from Lauds' own
# ("Pósuit fines tuos pacem", see lauds-versicle-corpus-christi.yml).
# Live-verified against Divinum Officium (Monastic Tridentinum 1617),
# Vespers live query, 2026-06-04 (Corpus Christi itself).
id: vespers-versicle-corpus-christi
text:
la: "V. Panem de cælo præstitísti eis, allelúja.\nR. Omne delectaméntum in se habéntem, allelúja."
en: "V. Thou didst send them from heaven, alleluia.\nR. Bread able to content every man's delight, alleluia."
status:
la: verified
en: verified
@@ -2,8 +2,8 @@
# Officium's Monastic block ("[Quad Versum 3]", Psalterium/Special/Major # Officium's Monastic block ("[Quad Versum 3]", Psalterium/Special/Major
# Special.txt) — "[Quad Versum 2]" (Lauds' own) is a bare alias to this # Special.txt) — "[Quad Versum 2]" (Lauds' own) is a bare alias to this
# same text, so Lauds and Vespers share it here too (see # same text, so Lauds and Vespers share it here too (see
# lauds-versicle-lent.yml). Not live-query-verified (see TODO.md) — read # lauds-versicle-lent.yml). Live-verified 2026-09-04 against a plain
# directly from source. # Lenten Wednesday (2026-03-04).
id: vespers-versicle-lent id: vespers-versicle-lent
text: text:
la: | la: |
@@ -13,5 +13,5 @@ text:
V. God hath given His Angels charge over thee. V. God hath given His Angels charge over thee.
R. To keep thee in all thy ways. R. To keep thee in all thy ways.
status: status:
la: draft la: verified
en: draft en: verified
@@ -0,0 +1,12 @@
# Pentecost's own Vespers versicle — distinct from Lauds' own
# ("Repléti sunt omnes Spíritu Sancto", see
# lauds-versicle-pentecost-sunday.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Vespers live query, 2026-05-24
# (Pentecost Sunday itself).
id: vespers-versicle-pentecost-sunday
text:
la: "V. Loquebántur váriis linguis Apóstoli, allelúja.\nR. Magnália Dei, allelúja."
en: "V. The Apostles spoke in diverse tongues, alleluia.\nR. The wonderful works of God, alleluia."
status:
la: verified
en: verified
@@ -0,0 +1,11 @@
# The Sacred Heart's own versicle — identical at both Vespers and Lauds
# (see lauds-versicle-sacred-heart.yml). Live-verified against Divinum
# Officium (Divino Afflatu - 1954), Vespers live query, 2026-06-12 (the
# Sacred Heart itself).
id: vespers-versicle-sacred-heart
text:
la: "V. Hauriétis aquas in gáudio.\nR. De fóntibus Salvatóris."
en: "V. With joy shall ye draw water.\nR. Out of the fountains of the Saviour."
status:
la: verified
en: verified
@@ -0,0 +1,12 @@
# Trinity Sunday's own Vespers versicle — distinct from Lauds' own
# ("Benedicámus Patrem et Fílium cum Sancto Spíritu", see
# lauds-versicle-trinity-sunday.yml). Live-verified against Divinum
# Officium (Monastic Tridentinum 1617), Vespers live query, 2026-05-31
# (Trinity Sunday itself).
id: vespers-versicle-trinity-sunday
text:
la: "V. Benedíctus es, Dómine, in firmaménto cæli.\nR. Et laudábilis et gloriósus in sǽcula."
en: "V. Blessed art Thou, O Lord, in the firmament of heaven.\nR. And to be praised and glorified for ever."
status:
la: verified
en: verified
@@ -6,9 +6,16 @@
# #
# Lectio1's Gospel citation (Luke 1:39-47, the Visitation) is a bare # Lectio1's Gospel citation (Luke 1:39-47, the Visitation) is a bare
# incipit with no full pericope text given, so only the homily portion is # incipit with no full pericope text given, so only the homily portion is
# authored, same convention as the September Ember days. Kept as 3 # authored, same convention as the September Ember days.
# separate readings, each with its own genuinely distinct proper #
# responsory. # Recombined into one reading 2026-09-04 (previously kept as 3 separate
# readings): Lectio1-3 are one continuous, unbroken Ambrose excerpt,
# split only to fill the fixed 3-lesson Nocturn slot count — same fix
# already applied to the other 4 Ember day nocturn-readings files the
# same day, see ember-september-friday.yml's own header for the fuller
# rationale. Responsory is Lectio1's own; Lectio2/3's own distinct
# responsories are dropped, same as every other collapsed-reading case
# in this store.
id: ember-advent-friday id: ember-advent-friday
readings: readings:
- nocturn: 1 - nocturn: 1
@@ -22,6 +29,21 @@ readings:
incérta de núntio, nec quasi dúbitans de exémplo, sed quasi læta pro voto, religiósa pro offício, festína incérta de núntio, nec quasi dúbitans de exémplo, sed quasi læta pro voto, religiósa pro offício, festína
pro gáudio, in montána perréxit. Quo enim jam Deo plena, nisi ad superióra cum festinatióne conténderet? pro gáudio, in montána perréxit. Quo enim jam Deo plena, nisi ad superióra cum festinatióne conténderet?
Nescit tarda molímina Sancti Spíritus grátia. Nescit tarda molímina Sancti Spíritus grátia.
Díscite et vos, sanctæ mulíeres, sedulitátem, quam prægnántibus debeátis exhibére cognátis. Maríam, quæ
ante sola in íntimis penetrálibus versabátur, non a público virginitátis pudor, non ab stúdio aspéritas
móntium, non ab offício prolíxitas itíneris retardávit. In montána Virgo cum festinatióne, Virgo offícii
memor, injúriæ ímmemor, afféctu urgénte non sexu, relícta perréxit domo. Díscite, vírgines, non circumcursáre
per aliénas ædes, non demorári in platéis, non áliquos in público miscére sermónes. María in domo sera,
festína in público, mansit apud cognátam suam tribus ménsibus.
Didicístis, vírgines, pudórem Maríæ: díscite humilitátem. Venit propínqua ad próximam, júnior ad seniórem:
nec solum venit, sed étiam prior salutávit. Decet enim, ut quanto cástior virgo, tanto humílior sit.
Nóverit deférre senióribus. Sit magístra humilitátis, in qua est proféssio castitátis. Est et causa
pietátis, est étiam norma doctrínæ. Contuéndum est enim, quia supérior venit ad inferiórem, ut inférior
adjuvétur: María ad Elísabeth, Christus ad Joánnem.
en: >- en: >-
When any one asketh another for credence, he is bound to give some reasonable ground. And so the Angel, When any one asketh another for credence, he is bound to give some reasonable ground. And so the Angel,
when he announced to Mary the counsel of God, gave, as a proof, the conception of Elizabeth, then aged and when he announced to Mary the counsel of God, gave, as a proof, the conception of Elizabeth, then aged and
@@ -33,23 +55,8 @@ readings:
religious duty. She went into the hill country in joyful haste. And is it not something that she went up religious duty. She went into the hill country in joyful haste. And is it not something that she went up
into the hills? God was already in her womb, and her feeling bore her continually upward. The grace of the into the hills? God was already in her womb, and her feeling bore her continually upward. The grace of the
Holy Spirit knoweth no slow working. Holy Spirit knoweth no slow working.
responsory:
la: "R. Emítte Agnum, Dómine, Dominatórem terræ, * De Petra desérti ad montem fíliæ Sion.\nV. Osténde nobis, Dómine, misericórdiam tuam, et salutáre tuum da nobis.\nR. De Petra desérti ad montem fíliæ Sion."
en: "R. Send forth the Lamb, O Lord, the Ruler of the land; * From the rock in the wilderness unto the mount of the daughter of Zion.\nV. Show us thy mercy, O Lord, and grant us thy salvation.\nR. From the rock in the wilderness unto the mount of the daughter of Zion."
status: { la: verified, en: verified }
- nocturn: 2
isGospel: false
source: "St. Ambrose, Bishop of Milan, Commentary on Luke, Book 2, on Luke 1:39-47"
text:
la: >-
Díscite et vos, sanctæ mulíeres, sedulitátem, quam prægnántibus debeátis exhibére cognátis. Maríam, quæ
ante sola in íntimis penetrálibus versabátur, non a público virginitátis pudor, non ab stúdio aspéritas
móntium, non ab offício prolíxitas itíneris retardávit. In montána Virgo cum festinatióne, Virgo offícii
memor, injúriæ ímmemor, afféctu urgénte non sexu, relícta perréxit domo. Díscite, vírgines, non circumcursáre
per aliénas ædes, non demorári in platéis, non áliquos in público miscére sermónes. María in domo sera,
festína in público, mansit apud cognátam suam tribus ménsibus.
en: >-
Godly women will learn from the example of the Mother of God to take a tender care of their kinswomen who Godly women will learn from the example of the Mother of God to take a tender care of their kinswomen who
are with child. In pursuance of this charity, Mary, who had hitherto remained alone at home, was not are with child. In pursuance of this charity, Mary, who had hitherto remained alone at home, was not
deterred by her maidenly shyness from entering on a public journey; she faced for this end the hardships deterred by her maidenly shyness from entering on a public journey; she faced for this end the hardships
@@ -59,22 +66,8 @@ readings:
from her not to idle about from house to house, to loiter in the streets, nor to take part in from her not to idle about from house to house, to loiter in the streets, nor to take part in
conversations in public. Mary, as she was hasteful to pass through the public roads, so was she slow again conversations in public. Mary, as she was hasteful to pass through the public roads, so was she slow again
to enter on them she abode with her cousin about three months. to enter on them she abode with her cousin about three months.
responsory:
la: "R. Roráte, cæli, désuper, et nubes pluant justum: * Aperiátur terra, et gérminet Salvatórem.\nV. Emítte Agnum, Dómine, Dominatórem terræ, de Petra desérti ad montem fíliæ Sion.\nR. Aperiátur terra, et gérminet Salvatórem."
en: "R. Drop down, ye heavens, from above, and let the skies pour down the Righteous One. * Let the earth open, and let her bring forth the Saviour.\nV. Send forth the Lamb, O Lord, the Ruler of the land, from the rock in the wilderness unto the mount of the daughter of Zion.\nR. Let the earth open, and let her bring forth the Saviour."
status: { la: verified, en: verified }
- nocturn: 3
isGospel: false
source: "St. Ambrose, Bishop of Milan, Commentary on Luke, Book 2, on Luke 1:39-47"
text:
la: >-
Didicístis, vírgines, pudórem Maríæ: díscite humilitátem. Venit propínqua ad próximam, júnior ad seniórem:
nec solum venit, sed étiam prior salutávit. Decet enim, ut quanto cástior virgo, tanto humílior sit.
Nóverit deférre senióribus. Sit magístra humilitátis, in qua est proféssio castitátis. Est et causa
pietátis, est étiam norma doctrínæ. Contuéndum est enim, quia supérior venit ad inferiórem, ut inférior
adjuvétur: María ad Elísabeth, Christus ad Joánnem.
en: >-
As the modesty of Mary is a pattern for the imitation of all maidens, so also is her humility. She went to As the modesty of Mary is a pattern for the imitation of all maidens, so also is her humility. She went to
see Elizabeth, like one cousin going to visit another, and as the younger to the elder. Not only did she see Elizabeth, like one cousin going to visit another, and as the younger to the elder. Not only did she
first go, but she first saluted Elizabeth. Now, the purer a virgin is, the humbler ought she to be. She first go, but she first saluted Elizabeth. Now, the purer a virgin is, the humbler ought she to be. She
@@ -83,6 +76,6 @@ readings:
principal rule of its teaching. In this act of the Virgin then we see the greater going to visit and to principal rule of its teaching. In this act of the Virgin then we see the greater going to visit and to
succour the lesser: Mary to Elizabeth, Christ to John. succour the lesser: Mary to Elizabeth, Christ to John.
responsory: responsory:
la: "R. Germinavérunt campi erémi germen odóris Israël: quia ecce Deus noster cum virtúte véniet, * Et splendor ejus cum eo.\nV. Ex Sion spécies decóris ejus: Deus noster maniféste véniet.\nR. Et splendor ejus cum eo." la: "R. Emítte Agnum, Dómine, Dominatórem terræ, * De Petra desérti ad montem fíliæ Sion.\nV. Osténde nobis, Dómine, misericórdiam tuam, et salutáre tuum da nobis.\nR. De Petra desérti ad montem fíliæ Sion."
en: "R. The waste places have brought forth sweet-smelling buds for Israel; for, behold, our God will come with power. * And His brightness is with Him.\nV. Out of Zion the perfection of beauty, our God shall come manifestly.\nR. And His brightness is with Him." en: "R. Send forth the Lamb, O Lord, the Ruler of the land; * From the rock in the wilderness unto the mount of the daughter of Zion.\nV. Show us thy mercy, O Lord, and grant us thy salvation.\nR. From the rock in the wilderness unto the mount of the daughter of Zion."
status: { la: verified, en: verified } status: { la: verified, en: verified }
@@ -7,8 +7,15 @@
# Lectio1's Gospel citation (Luke 3:1-6, the preaching of St. John the # Lectio1's Gospel citation (Luke 3:1-6, the preaching of St. John the
# Baptist) is a bare incipit with no full pericope text given, so only # Baptist) is a bare incipit with no full pericope text given, so only
# the homily portion is authored, same convention as the other Ember # the homily portion is authored, same convention as the other Ember
# days. Kept as 3 separate readings, each with its own genuinely # days.
# distinct proper responsory. #
# Recombined into one reading 2026-09-04 (previously kept as 3 separate
# readings): Lectio1-3 are one continuous, unbroken Gregory homily, split
# only to fill the fixed 3-lesson Nocturn slot count — same fix already
# applied to the other 4 Ember day nocturn-readings files the same day,
# see ember-september-friday.yml's own header for the fuller rationale.
# Responsory is Lectio1's own; Lectio2/3's own distinct responsories are
# dropped, same as every other collapsed-reading case in this store.
id: ember-advent-saturday id: ember-advent-saturday
readings: readings:
- nocturn: 1 - nocturn: 1
@@ -22,44 +29,14 @@ readings:
designántur. Quia autem gentílitas colligénda erat, et Judǽa pro culpa perfídiæ dispergénda, ipsa quoque designántur. Quia autem gentílitas colligénda erat, et Judǽa pro culpa perfídiæ dispergénda, ipsa quoque
descríptio terréni principátus osténdit: quóniam et in Romána república unus præfuísse descríbitur, et in descríptio terréni principátus osténdit: quóniam et in Romána república unus præfuísse descríbitur, et in
Judǽæ regno per quartam partem plúrimi principabántur. Judǽæ regno per quartam partem plúrimi principabántur.
en: >-
The date, at which the Fore-runner of our Redeemer entered on his public office of preaching, is indicated
to us by the name of the ruler of the Roman Commonwealth, and by those of the princes of Palestine. The
time of his preaching is indicated by these names, because he came as the Fore-runner of Him Who was to be
the Redeemer of some Jews and many Gentiles. Moreover in the enumeration of these worldly monarchs there
is a foreshadowing of the fact, that the Gentiles were about to be gathered into one, and the Jews to be
scattered abroad in punishment of their unbelief; in the whole heathen Commonwealth we find the title of
one Emperor, but in the small kingdom of Judaea are mentioned four masters.
responsory:
la: "R. Egrediétur virga de radíce Jesse, et flos de radíce ejus ascéndet: * Et erit justítia cíngulum lumbórum ejus, et fides cinctórium renum ejus.\nV. Et requiéscet super eum spíritus Dómini: spíritus sapiéntiæ, et intelléctus: spíritus consílii, et fortitúdinis.\nR. Et erit justítia cíngulum lumbórum ejus, et fides cinctórium renum ejus."
en: "R. There shall come forth a rod out of the stem of Jesse, and a flower shall grow out of his roots. * And righteousness shall be the girdle of his loins, and faithfulness the girdle of his reins.\nV. And the Spirit of the Lord shall rest upon him the spirit of wisdom and understanding the spirit of counsel and might.\nR. And righteousness shall be the girdle of his loins, and faithfulness the girdle of his reins."
status: { la: verified, en: verified }
- nocturn: 2
isGospel: false
source: "Pope St. Gregory the Great, Homily 20 on the Gospels, on Luke 3:1-6"
text:
la: >-
Voce étenim nostri Redemptóris dícitur: Omne regnum in seípsum divisum desolábitur. Liquet ergo, quod ad Voce étenim nostri Redemptóris dícitur: Omne regnum in seípsum divisum desolábitur. Liquet ergo, quod ad
finem regni Judǽa pervénerat, quæ tot régibus divísa subjacébat. Apte quoque non solum quibus régibus, sed finem regni Judǽa pervénerat, quæ tot régibus divísa subjacébat. Apte quoque non solum quibus régibus, sed
étiam quibus sacerdótibus actum sit, demonstrátur: et quia illum Joánnes Baptísta prædicáret, qui simul Rex étiam quibus sacerdótibus actum sit, demonstrátur: et quia illum Joánnes Baptísta prædicáret, qui simul Rex
et Sacérdos exsísteret, Lucas Evangelísta prædicatiónis ejus témpora per regnum et sacerdótium designávit. et Sacérdos exsísteret, Lucas Evangelísta prædicatiónis ejus témpora per regnum et sacerdótium designávit.
en: >-
The blessed voice of the Saviour itself hath said, Every kingdom divided against itself is brought to
desolation. And we may well look for the ruin of the Jewish state when we see it divided among so many
rulers. We observe likewise that the names of the reigning priests as well as kings are given. The
Evangelist Luke hath left on record the chiefs both of the monarchy and of the priesthood who held office
when John the Baptist began to preach, because John preached Him Who is at once our Priest and our King.
responsory:
la: "R. Radix Jesse, qui exsúrget judicáre gentes, in eum gentes sperábunt: * Et erit nomen ejus benedíctum in sǽcula.\nV. Super ipsum continébunt reges os suum, ipsum gentes deprecabúntur.\nR. Et erit nomen ejus benedíctum in sǽcula."
en: "R. Behold, the root of Jesse that shall arise to bring forth judgment to the Gentiles, in him shall the Gentiles trust. * And his name shall be blessed for ever.\nV. The Kings shall shut their mouths at him, to him shall the Gentiles seek.\nR. And his name shall be blessed for ever."
status: { la: verified, en: verified }
- nocturn: 3
isGospel: false
source: "Pope St. Gregory the Great, Homily 20 on the Gospels, on Luke 3:1-6"
text:
la: >-
Et venit in omnem regiónem Jordánis, prǽdicans baptísmum pœniténtiæ in remissiónem peccatórum. Cunctis Et venit in omnem regiónem Jordánis, prǽdicans baptísmum pœniténtiæ in remissiónem peccatórum. Cunctis
legéntibus liquet, quia Joánnes non solum baptísmum pœniténtiæ prædicávit, verum étiam quibúsdam dedit: sed legéntibus liquet, quia Joánnes non solum baptísmum pœniténtiæ prædicávit, verum étiam quibúsdam dedit: sed
tamen baptísmum suum in remissiónem peccatórum dare non pótuit. Remíssio étenim peccatórum in solo nobis tamen baptísmum suum in remissiónem peccatórum dare non pótuit. Remíssio étenim peccatórum in solo nobis
@@ -68,6 +45,22 @@ readings:
incarnátum Verbum Patris præcurrébat verbo prædicatiónis, ita baptísmum pœniténtiæ, quo peccáta solvúntur, incarnátum Verbum Patris præcurrébat verbo prædicatiónis, ita baptísmum pœniténtiæ, quo peccáta solvúntur,
præcúrreret suo baptísmate, quo peccáta solvi non possunt. præcúrreret suo baptísmate, quo peccáta solvi non possunt.
en: >- en: >-
The date, at which the Fore-runner of our Redeemer entered on his public office of preaching, is indicated
to us by the name of the ruler of the Roman Commonwealth, and by those of the princes of Palestine. The
time of his preaching is indicated by these names, because he came as the Fore-runner of Him Who was to be
the Redeemer of some Jews and many Gentiles. Moreover in the enumeration of these worldly monarchs there
is a foreshadowing of the fact, that the Gentiles were about to be gathered into one, and the Jews to be
scattered abroad in punishment of their unbelief; in the whole heathen Commonwealth we find the title of
one Emperor, but in the small kingdom of Judaea are mentioned four masters.
The blessed voice of the Saviour itself hath said, Every kingdom divided against itself is brought to
desolation. And we may well look for the ruin of the Jewish state when we see it divided among so many
rulers. We observe likewise that the names of the reigning priests as well as kings are given. The
Evangelist Luke hath left on record the chiefs both of the monarchy and of the priesthood who held office
when John the Baptist began to preach, because John preached Him Who is at once our Priest and our King.
And he came into all the country about Jordan, preaching the baptism of repentance for the remission of And he came into all the country about Jordan, preaching the baptism of repentance for the remission of
sins. It is evident from these words that John the Baptist not only preached, but also administered the sins. It is evident from these words that John the Baptist not only preached, but also administered the
baptism of repentance, and yet that baptism of repentance which he gave, was not really a baptism for the baptism of repentance, and yet that baptism of repentance which he gave, was not really a baptism for the
@@ -78,6 +71,6 @@ readings:
holy baptism, by which our sins are washed away, far greater than that baptism of repentance which the holy baptism, by which our sins are washed away, far greater than that baptism of repentance which the
Fore-runner preached, and which could never wash away sin. Fore-runner preached, and which could never wash away sin.
responsory: responsory:
la: "R. Veni, Dómine, et noli tardáre: reláxa facínora plebi tuæ, * Et révoca dispérsos in terram suam.\nV. Excíta, Dómine, poténtiam tuam, et veni, ut salvos fácias nos.\nR. Et révoca dispérsos in terram suam." la: "R. Egrediétur virga de radíce Jesse, et flos de radíce ejus ascéndet: * Et erit justítia cíngulum lumbórum ejus, et fides cinctórium renum ejus.\nV. Et requiéscet super eum spíritus Dómini: spíritus sapiéntiæ, et intelléctus: spíritus consílii, et fortitúdinis.\nR. Et erit justítia cíngulum lumbórum ejus, et fides cinctórium renum ejus."
en: "R. O Lord, come, and make no tarrying loosen the bonds of thy people. * And gather together into their own land them that are scattered abroad.\nV. Stir up, O Lord, thy power, and come among us, to save us.\nR. And gather together into their own land them that are scattered abroad." en: "R. There shall come forth a rod out of the stem of Jesse, and a flower shall grow out of his roots. * And righteousness shall be the girdle of his loins, and faithfulness the girdle of his reins.\nV. And the Spirit of the Lord shall rest upon him the spirit of wisdom and understanding the spirit of counsel and might.\nR. And righteousness shall be the girdle of his loins, and faithfulness the girdle of his reins."
status: { la: verified, en: verified } status: { la: verified, en: verified }
@@ -4,14 +4,20 @@
# No Monastic-track override file exists for this day (only Adv3-0/1/2/4 # No Monastic-track override file exists for this day (only Adv3-0/1/2/4
# have one) — confirms the Monastic 1617 track uses this same text. # have one) — confirms the Monastic 1617 track uses this same text.
# #
# Unlike the other 5 Ember days, Lectio1-3 here are cross-references # Lectio1-3 here are cross-references (`@Sancti/03-25:Lectio7/8/9`) to
# (`@Sancti/03-25:Lectio7/8/9`) to the Annunciation's own Common # the Annunciation's own Common (web/www/horas/Latin/Sancti/03-25.txt) —
# (web/www/horas/Latin/Sancti/03-25.txt) — St. Ambrose's homily on Luke # St. Ambrose's homily on Luke 1:26-38, not a Gospel-pericope-plus-homily
# 1:26-38, not a Gospel-pericope-plus-homily pattern of its own. Kept as # pattern of its own.
# 3 separate readings, each with its own genuinely distinct proper #
# responsory (Responsory3 is this Ember day's own text, not further # Recombined into one reading 2026-09-04 (previously kept as 3 separate
# cross-referenced) — same "don't collapse where each carries real, # readings): checked the reference source directly (Sancti/03-25.txt's
# distinct content" reasoning as the other 5 Ember days. # own Lectio7-9) and confirmed this is one continuous, unbroken Ambrose
# excerpt, split only to fill the fixed 3-lesson Nocturn slot count —
# same fix already applied to the other 4 Ember day nocturn-readings
# files the same day, see ember-september-friday.yml's own header for
# the fuller rationale. Responsory is Lectio1's own; Lectio2/3's own
# distinct responsories are dropped, same as every other collapsed-
# reading case in this store.
id: ember-advent-wednesday id: ember-advent-wednesday
readings: readings:
- nocturn: 1 - nocturn: 1
@@ -23,6 +29,18 @@ readings:
consílium Dei. Sed tamen ex céteris factis, atque præcéptis Dómini Salvatóris póssumus intellégere, et hoc consílium Dei. Sed tamen ex céteris factis, atque præcéptis Dómini Salvatóris póssumus intellégere, et hoc
propensióris fuísse consílii, quod ea potíssimum elécta est, ut Dóminum páreret, quæ erat desponsáta viro. propensióris fuísse consílii, quod ea potíssimum elécta est, ut Dóminum páreret, quæ erat desponsáta viro.
Cur autem non ántequam desponsarétur, impléta est? Fortásse ne dicerétur quod concéperat ex adultério. Cur autem non ántequam desponsarétur, impléta est? Fortásse ne dicerétur quod concéperat ex adultério.
Et ingréssus ad eam Angelus. Disce vírginem móribus, disce vírginem verecúndia, disce oráculo, disce
mystério. Trepidáre vírginum est, et ad omnes viri ingréssus pavére, omnes viri affátus veréri. Discant
mulíeres propósitum pudóris imitári. Sola in penetrálibus, quam nemo virórum víderit, solus Angelus
répererit: sola sine cómite, sola sine teste, ne quo degénere depravarétur affátu, ab Angelo salutátur.
Tanti namque mandáti mystérium non hóminis fuit, sed Angeli ore proméndum. Hódie primum audítur: Spíritus
Sanctus supervéniet in te. Et audítur, et créditur. Dénique, Ecce, inquit, ancílla Dómini: contíngat mihi
secúndum verbum tuum. Vide humilitátem, vide devotiónem. Ancíllam se dicit Dómini, quæ mater elígitur: nec
repentíno exaltáta promísso est.
en: >- en: >-
The mysteries of God are unsearchable, and it is especially declared by a Prophet, that a man can hardly The mysteries of God are unsearchable, and it is especially declared by a Prophet, that a man can hardly
know His counsels. Nevertheless, some things have been revealed to us, and we may gather from some of the know His counsels. Nevertheless, some things have been revealed to us, and we may gather from some of the
@@ -30,42 +48,16 @@ readings:
was chosen to be the mother of the Lord was espoused to a man. Why did not the power of the Highest was chosen to be the mother of the Lord was espoused to a man. Why did not the power of the Highest
overshadow her before she was so espoused? Perhaps it was lest any might blasphemously say that she had overshadow her before she was so espoused? Perhaps it was lest any might blasphemously say that she had
conceived in fornication the Holy One. conceived in fornication the Holy One.
responsory:
la: "R. Clama in fortitúdine, qui annúntias pacem in Jerúsalem: * Dic civitátibus Judæ, et habitatóribus Sion: Ecce Deus noster, quem exspectabámus, advéniet.\nV. Supra montem excélsum ascénde tu, qui evangelízas Sion, exálta in fortitúdine vocem tuam.\nR. Ecce Deus noster, quem exspectabámus, advéniet."
en: "R. O thou that bringest good tidings of peace to Jerusalem, lift up thy voice with strength! * Say unto the cities of Judah, and to the inhabitants of Jerusalem: Behold, our God will come, for Whom we waited.\nV. O thou that tellest good tidings to Zion, get thee up into the high mountain, lift up thy voice with strength.\nR. Behold, our God will come, for Whom we waited."
status: { la: verified, en: verified }
- nocturn: 2
isGospel: false
source: "St. Ambrose, Bishop of Milan, Commentary on Luke, Book 2 (from the Annunciation's own Common)"
text:
la: >-
Et ingréssus ad eam Angelus. Disce vírginem móribus, disce vírginem verecúndia, disce oráculo, disce
mystério. Trepidáre vírginum est, et ad omnes viri ingréssus pavére, omnes viri affátus veréri. Discant
mulíeres propósitum pudóris imitári. Sola in penetrálibus, quam nemo virórum víderit, solus Angelus
répererit: sola sine cómite, sola sine teste, ne quo degénere depravarétur affátu, ab Angelo salutátur.
en: >-
And the angel came in unto her. Let us learn from this Virgin how to bear ourselves, let us learn her And the angel came in unto her. Let us learn from this Virgin how to bear ourselves, let us learn her
modesty, let us learn by her devout utterance, above all let us learn by the holy mystery enacted. It is modesty, let us learn by her devout utterance, above all let us learn by the holy mystery enacted. It is
the part of a maiden to be timid, to avoid the advances of men, and to shrink from men's addresses. Would the part of a maiden to be timid, to avoid the advances of men, and to shrink from men's addresses. Would
that our women would learn from the example of modesty here set before us. She upon whom the stare of men that our women would learn from the example of modesty here set before us. She upon whom the stare of men
had never been fixed was alone in her chamber, and was found only by an angel. There was neither companion had never been fixed was alone in her chamber, and was found only by an angel. There was neither companion
nor witness there, that what passed might not be debased in gossip and the angel saluted her. nor witness there, that what passed might not be debased in gossip and the angel saluted her.
responsory:
la: "R. Oriétur stella ex Jacob, et exsúrget homo de Israël, et confrínget omnes duces alienigenárum: * Et erit omnis terra posséssio ejus.\nV. Adorábunt eum omnes reges terræ, omnes gentes sérvient ei.\nR. Et erit omnis terra posséssio ejus."
en: "R. There shall come a Star out of Jacob, and a Man shall rise out of Israel, and shall smite through all the princes of the aliens. * And all the earth shall be His possession.\nV. All kings shall fall down before Him, all nations shall serve Him.\nR. And all the earth shall be His possession."
status: { la: verified, en: verified }
- nocturn: 3
isGospel: false
source: "St. Ambrose, Bishop of Milan, Commentary on Luke, Book 2 (from the Annunciation's own Common)"
text:
la: >-
Tanti namque mandáti mystérium non hóminis fuit, sed Angeli ore proméndum. Hódie primum audítur: Spíritus
Sanctus supervéniet in te. Et audítur, et créditur. Dénique, Ecce, inquit, ancílla Dómini: contíngat mihi
secúndum verbum tuum. Vide humilitátem, vide devotiónem. Ancíllam se dicit Dómini, quæ mater elígitur: nec
repentíno exaltáta promísso est.
en: >-
The message of God to the Virgin was a mystery, which it was not lawful for the mouth of men, but only of The message of God to the Virgin was a mystery, which it was not lawful for the mouth of men, but only of
angels, to utter. For the first time on earth the words are spoken The Holy Ghost shall come upon thee. angels, to utter. For the first time on earth the words are spoken The Holy Ghost shall come upon thee.
The holy maiden heareth, and believeth. At length she saith Behold the handmaid of the Lord be it unto me The holy maiden heareth, and believeth. At length she saith Behold the handmaid of the Lord be it unto me
@@ -73,6 +65,6 @@ readings:
moment that she is told she is chosen to be the mother of the Lord she at once declareth herself His moment that she is told she is chosen to be the mother of the Lord she at once declareth herself His
handmaid. The knowledge that she was Mother of God caused in the heart of Mary only an act of humility. handmaid. The knowledge that she was Mother of God caused in the heart of Mary only an act of humility.
responsory: responsory:
la: "R. Modo véniet Dominátor Dóminus: * Et nomen ejus Emmánuel vocábitur.\nV. Oriétur in diébus ejus justítia, et abundántia pacis.\nR. Et nomen ejus Emmánuel vocábitur." la: "R. Clama in fortitúdine, qui annúntias pacem in Jerúsalem: * Dic civitátibus Judæ, et habitatóribus Sion: Ecce Deus noster, quem exspectabámus, advéniet.\nV. Supra montem excélsum ascénde tu, qui evangelízas Sion, exálta in fortitúdine vocem tuam.\nR. Ecce Deus noster, quem exspectabámus, advéniet."
en: "R. The Lord, the Ruler, cometh quickly. * And His name shall be called Emmanuel.\nV. In His days shall righteousness flourish, and abundance of peace.\nR. And His name shall be called Emmanuel." en: "R. O thou that bringest good tidings of peace to Jerusalem, lift up thy voice with strength! * Say unto the cities of Judah, and to the inhabitants of Jerusalem: Behold, our God will come, for Whom we waited.\nV. O thou that tellest good tidings to Zion, get thee up into the high mountain, lift up thy voice with strength.\nR. Behold, our God will come, for Whom we waited."
status: { la: verified, en: verified } status: { la: verified, en: verified }
@@ -10,8 +10,16 @@
# #
# Lectio1's Gospel citation (Luke 13:6-17) is a bare incipit with no full # Lectio1's Gospel citation (Luke 13:6-17) is a bare incipit with no full
# pericope text given, so only the homily portion is authored, same # pericope text given, so only the homily portion is authored, same
# convention as the other two September Ember days. Kept as 3 separate # convention as the other two September Ember days.
# readings, each with its own genuinely distinct proper responsory. #
# Recombined into one reading 2026-09-04 (previously kept as 3 separate
# readings): Lectio1-3 are one continuous, unbroken Gregory homily, split
# only to fill the fixed 3-lesson Nocturn slot count — same fix already
# applied to ember-september-friday.yml/ember-september-wednesday.yml the
# same day, see either file's own header for the fuller rationale.
# Responsory is Lectio1's own; Lectio2/3's own distinct responsories
# (drawn from TemporaM/093-0's own Tobias-sermon texts) are dropped, same
# as every other collapsed-reading case in this store.
id: ember-september-saturday id: ember-september-saturday
readings: readings:
- nocturn: 1 - nocturn: 1
@@ -24,6 +32,23 @@ readings:
audístis: ficúlneam infructuósam, et mulíerem curvam; et utríque rei est píetas impénsa. Illud autem dixit audístis: ficúlneam infructuósam, et mulíerem curvam; et utríque rei est píetas impénsa. Illud autem dixit
per similitúdinem: istud egit per exhibitiónem. Sed hoc signíficat ficúlnea infructuósa, quod múlier per similitúdinem: istud egit per exhibitiónem. Sed hoc signíficat ficúlnea infructuósa, quod múlier
inclináta; et hoc ficúlnea reserváta, quod múlier erécta. inclináta; et hoc ficúlnea reserváta, quod múlier erécta.
Quid arbor fici, nisi humánam natúram desígnat? Quid múlier inclináta, nisi eámdem natúram significándo
denúntiat? Quæ et bene plantáta est sicut ficus, et bene creáta sicut múlier; sed in culpam própria sponte
lapsa, neque fructum servat operatiónis, neque statum rectitúdinis. Ad peccátum quippe ex voluntáte
córruens, quia fructum obediéntiæ ferre nóluit, statum rectitúdinis amísit. Quæ ad Dei similitúdinem
cóndita, dum in sua dignitáte non pérstitit, quod plantáta vel creáta fúerat, serváre contémpsit. Tértio
dóminus víneæ ad ficúlneam venit, quia natúram géneris humáni ante legem, sub lege, sub grátia, exspéctando,
admonéndo, visitándo requisívit.
Venit ante legem, quia per naturálem intelléctum quid unusquísque exémplo sui, quáliter erga próximum ágere
debuísset, innótuit. Venit in lege, quia præcipiéndo dócuit. Venit post legem per grátiam, quia pietátis
suæ præséntiam exhibéndo monstrávit. Sed tamen in tribus annis fructum se non invenísse conquéritur: quia
quorúmdam pravórum mentes nec inspiráta lex naturális córrigit, nec præcépta erúdiunt, nec incarnatiónis
ejus mirácula convértunt. Quid vero per cultórem víneæ, nisi præpositórum ordo exprímitur? Qui dum præsunt
Ecclésiæ, nimírum Domínicæ víneæ curam gerunt.
en: >- en: >-
Our Lord and Redeemer speaketh unto us sometimes by words, and sometimes by deeds, sometimes one thing by Our Lord and Redeemer speaketh unto us sometimes by words, and sometimes by deeds, sometimes one thing by
words, and another by deeds, and sometimes the same thing both by word and deed. In the portion of the words, and another by deeds, and sometimes the same thing both by word and deed. In the portion of the
@@ -32,24 +57,8 @@ readings:
in the one by a parable, in the other by an example. But the barren fig-tree signifieth the same thing as in the one by a parable, in the other by an example. But the barren fig-tree signifieth the same thing as
doth the woman bowed together, and the patience shown to the fig-tree the same thing as doth the healing doth the woman bowed together, and the patience shown to the fig-tree the same thing as doth the healing
of the woman bowed together. of the woman bowed together.
responsory:
la: "R. Tribulatiónes civitátum audívimus, quas passæ sunt, et defécimus: timor et hebetúdo mentis cécidit super nos et super líberos nostros: ipsi montes nolunt recípere fugam nostram: * Dómine, miserére.\nV. Peccávimus cum pátribus nostris, injúste égimus, iniquitátem fécimus.\nR. Dómine, miserére."
en: "R. We have heard of the tribulation of those cities, which they have suffered, and we have fainted. Fear and confusion of mind are fallen upon us. Even the mountains will not give us a refuge. * Lord, have mercy.\nV. We have sinned like our forefathers, we have done unjustly, and wrought iniquity.\nR. Lord, have mercy."
status: { la: verified, en: verified }
- nocturn: 2
isGospel: false
source: "Pope St. Gregory the Great, Homily 31 on the Gospels, on Luke 13:6-17"
text:
la: >-
Quid arbor fici, nisi humánam natúram desígnat? Quid múlier inclináta, nisi eámdem natúram significándo
denúntiat? Quæ et bene plantáta est sicut ficus, et bene creáta sicut múlier; sed in culpam própria sponte
lapsa, neque fructum servat operatiónis, neque statum rectitúdinis. Ad peccátum quippe ex voluntáte
córruens, quia fructum obediéntiæ ferre nóluit, statum rectitúdinis amísit. Quæ ad Dei similitúdinem
cóndita, dum in sua dignitáte non pérstitit, quod plantáta vel creáta fúerat, serváre contémpsit. Tértio
dóminus víneæ ad ficúlneam venit, quia natúram géneris humáni ante legem, sub lege, sub grátia, exspéctando,
admonéndo, visitándo requisívit.
en: >-
What is the fig-tree a type, but of mankind? Of what is the woman bowed together by a spirit of infirmity a What is the fig-tree a type, but of mankind? Of what is the woman bowed together by a spirit of infirmity a
type, but of the same mankind? Man was originally placed in a garden like the fig-tree, and created upright type, but of the same mankind? Man was originally placed in a garden like the fig-tree, and created upright
like the woman, but man fell away by his own willful fault like the fig-tree he brought forth no fruit like like the woman, but man fell away by his own willful fault like the fig-tree he brought forth no fruit like
@@ -58,23 +67,8 @@ readings:
continued not in honour, but cast aside the state wherein it had been placed and made. The lord of the continued not in honour, but cast aside the state wherein it had been placed and made. The lord of the
vineyard came thrice to the fig-tree, for God hath come in hope, and in warning, seeking fruit from mankind vineyard came thrice to the fig-tree, for God hath come in hope, and in warning, seeking fruit from mankind
under three successive dispensations, that is to say, before the law, under the law, and under grace. under three successive dispensations, that is to say, before the law, under the law, and under grace.
responsory:
la: "R. Audíte, fílii mei, patrem vestrum: † servíte Dómino in veritáte, et inquírite ut faciátis quæ plácita sunt illi: et fíliis vestris mandáte * Ut fáciant justítias et eleemósynas.\nV. Ut sint mémores Dei, et benedícant eum in omni témpore † in veritáte, et in tota virtúte sua.\nR. Ut fáciant justítias et eleemósynas."
en: "R. Hearken my children, to your father: serve the Lord in truth, and seek to do the things that please him: and command your children: * That they do justice and almsdeeds.\nV. That they be mindful of God, and bless him at all times in truth, and with all their power.\nR. That they do justice and almsdeeds."
status: { la: verified, en: verified }
- nocturn: 3
isGospel: false
source: "Pope St. Gregory the Great, Homily 31 on the Gospels, on Luke 13:6-17"
text:
la: >-
Venit ante legem, quia per naturálem intelléctum quid unusquísque exémplo sui, quáliter erga próximum ágere
debuísset, innótuit. Venit in lege, quia præcipiéndo dócuit. Venit post legem per grátiam, quia pietátis
suæ præséntiam exhibéndo monstrávit. Sed tamen in tribus annis fructum se non invenísse conquéritur: quia
quorúmdam pravórum mentes nec inspiráta lex naturális córrigit, nec præcépta erúdiunt, nec incarnatiónis
ejus mirácula convértunt. Quid vero per cultórem víneæ, nisi præpositórum ordo exprímitur? Qui dum præsunt
Ecclésiæ, nimírum Domínicæ víneæ curam gerunt.
en: >-
It came before the law, in that by natural understanding, He let all know by example of Himself, what and It came before the law, in that by natural understanding, He let all know by example of Himself, what and
how they should do toward their neighbor. In the law He came teaching. After the law He came by grace, how they should do toward their neighbor. In the law He came teaching. After the law He came by grace,
opening, manifesting His merciful Presence. But after all these three years He yet hath to complain that He opening, manifesting His merciful Presence. But after all these three years He yet hath to complain that He
@@ -84,6 +78,6 @@ readings:
For these are they who have the government in the Church, and are therefore truly called the dressers of For these are they who have the government in the Church, and are therefore truly called the dressers of
the Lord's vineyard. the Lord's vineyard.
responsory: responsory:
la: "R. Benedícat te Dóminus in virtúte sua, † qui per te ad níhilum redégit inimícos nostros: * Ut non defíciat laus tua de ore hóminum.\nV. Benedíctus Dóminus qui creávit cælum et terram: † quia hódie nomen tuum ita magnificávit.\nR. Ut non defíciat laus tua de ore hóminum." la: "R. Tribulatiónes civitátum audívimus, quas passæ sunt, et defécimus: timor et hebetúdo mentis cécidit super nos et super líberos nostros: ipsi montes nolunt recípere fugam nostram: * Dómine, miserére.\nV. Peccávimus cum pátribus nostris, injúste égimus, iniquitátem fécimus.\nR. Dómine, miserére."
en: "R. The Lord bless you by His power, Who hath brought our enemies to nought through you. * And may the praise of you never fail from the mouth of men.\nV. Blessed be the Lord, Who hath created the heaven and the earth, because that He hath so glorified your name this day.\nR. And may the praise of you never fail from the mouth of men." en: "R. We have heard of the tribulation of those cities, which they have suffered, and we have fainted. Fear and confusion of mind are fallen upon us. Even the mountains will not give us a refuge. * Lord, have mercy.\nV. We have sinned like our forefathers, we have done unjustly, and wrought iniquity.\nR. Lord, have mercy."
status: { la: verified, en: verified } status: { la: verified, en: verified }
@@ -11,13 +11,22 @@
# Lectio1's Gospel citation (Mark 9:16-28) is a bare incipit ("Et # Lectio1's Gospel citation (Mark 9:16-28) is a bare incipit ("Et
# réliqua") with no full pericope text given, so — per this store's own # réliqua") with no full pericope text given, so — per this store's own
# established convention (see st-lawrence.yml/st-andrew.yml) — only the # established convention (see st-lawrence.yml/st-andrew.yml) — only the
# homily portion is authored, not marked isGospel. Kept as 3 separate # homily portion is authored, not marked isGospel.
# readings (not combined into one, despite being one continuous homily by #
# Bede) because each carries its own genuinely distinct, proper # Recombined into one reading 2026-09-04 (previously kept as 3 separate
# responsory rather than one reused across a merely-chopped source — see # readings): Lectio1-3 are one continuous, unbroken Bede homily, split
# post-pentecost-15.yml's own doc comment for the "recombine only where # only to fill the fixed 3-lesson Nocturn slot count — the "source
# the source doesn't genuinely change" default this deliberately departs # doesn't genuinely split" case this store's own established default
# from here, given the real content loss combining would cause. # (see post-pentecost-15.yml's own doc comment) recombines, same fix
# already applied to ember-september-friday.yml the same day (see that
# file's own header for the fuller rationale — the original "genuinely
# distinct proper responsory" justification for staying split doesn't
# hold up against that established default, which already collapses
# readings with their own distinct responsories elsewhere). Responsory
# here is Lectio1's own (Responsory1 = identical in both tracks) per the
# "the first one, when several collapse" convention; Lectio2/3's own
# distinct responsories (drawn from TemporaM/093-0's own Tobias-sermon
# texts) are dropped, same as every other collapsed-reading case.
id: ember-september-wednesday id: ember-september-wednesday
readings: readings:
- nocturn: 1 - nocturn: 1
@@ -32,6 +41,24 @@ readings:
tabéscunt; stultórum namque et languéntium atque hébetum est, spumas salivárum ex ore dimíttere. Strident tabéscunt; stultórum namque et languéntium atque hébetum est, spumas salivárum ex ore dimíttere. Strident
déntibus, cum iracúndiæ furóre flamméscunt: aréscunt, cum ótio torpénte languéscunt, et nulla virtútis déntibus, cum iracúndiæ furóre flamméscunt: aréscunt, cum ótio torpénte languéscunt, et nulla virtútis
indústria confortáti enérviter vivunt. indústria confortáti enérviter vivunt.
Quod autem ait: Et dixi discípulis tuis ut eícerent illum, et non potuérunt; laténter Apóstolos accúsat, cum
impossibílitas curándi, intérdum non ad imbecillitátem curántium, sed ad eórum, qui curándi sunt, fidem
referátur, dicénte Dómino: Fiat tibi secúndum fidem tuam. Qui respóndens eis, dixit: O generátio incrédula,
quámdiu apud vos ero? quámdiu vos pátiar? Non quod tǽdio superátus sit mansuétus ac mitis, qui non apéruit
sicut agnus coram tondénte os suum, nec in verba furóris erúpit; sed quo in similitúdinem médici, si ægrótum
vídeat contra sua præcépta se gérere, dicat: Usquequo accédam ad domum tuam? quoúsque artis meæ perdam
indústriam, me áliud jubénte, et te áliud perpetránte?
Et dixit illis: Hoc genus in nullo potest exíre, nisi in oratióne et jejúnio. Dum docet Apóstolos quómodo
dæmon nequíssimus débeat expélli, omnes instítuit ad vitam; ut scílicet novérimus, gravíssima quæque vel
immundórum spirítuum, vel hóminum tentaménta jejúniis et oratiónibus esse superánda: iram quoque Dómini,
cum in ultiónem nostrórum scélerum fúerit accénsa, hoc remédio singulári posse placári. Jejúnium autem
generále est, non solum ab escis, sed et a cunctis illécebris abstinére carnálibus, immo ab ómnibus
vitiórum continére se passiónibus. Sic et orátio generális non in verbis solum est, quibus divínam
cleméntiam invocámus, verum étiam in ómnibus, quæ in obséquium nostri Conditóris fídei devotióne gérimus.
en: >- en: >-
Concerning this possessed person whom the Lord healed, after that He was come down from the mount, Mark Concerning this possessed person whom the Lord healed, after that He was come down from the mount, Mark
saith that he was deaf and dumb, and Matthew that he was lunatic. He was a figure of them of whom it is saith that he was deaf and dumb, and Matthew that he was lunatic. He was a figure of them of whom it is
@@ -41,24 +68,8 @@ readings:
with idiots, and swooners, and stupified, to foam their spittle out at their mouths. They gnash their teeth with idiots, and swooners, and stupified, to foam their spittle out at their mouths. They gnash their teeth
when they are inflamed with the heat of passion. They wither up in the paralysis of sloth and live nerveless when they are inflamed with the heat of passion. They wither up in the paralysis of sloth and live nerveless
lives unbraced by any strong exercise. lives unbraced by any strong exercise.
responsory:
la: "R. Tribulatiónes civitátum audívimus, quas passæ sunt, et defécimus: timor et hebetúdo mentis cécidit super nos et super líberos nostros: ipsi montes nolunt recípere fugam nostram: * Dómine, miserére.\nV. Peccávimus cum pátribus nostris, injúste égimus, iniquitátem fécimus.\nR. Dómine, miserére."
en: "R. We have heard of the tribulation of those cities, which they have suffered, and we have fainted. Fear and confusion of mind are fallen upon us. Even the mountains will not give us a refuge. * Lord, have mercy.\nV. We have sinned like our forefathers, we have done unjustly, and wrought iniquity.\nR. Lord, have mercy."
status: { la: verified, en: verified }
- nocturn: 2
isGospel: false
source: "The Venerable Bede, Priest, homily on Mark 9:16-28"
text:
la: >-
Quod autem ait: Et dixi discípulis tuis ut eícerent illum, et non potuérunt; laténter Apóstolos accúsat, cum
impossibílitas curándi, intérdum non ad imbecillitátem curántium, sed ad eórum, qui curándi sunt, fidem
referátur, dicénte Dómino: Fiat tibi secúndum fidem tuam. Qui respóndens eis, dixit: O generátio incrédula,
quámdiu apud vos ero? quámdiu vos pátiar? Non quod tǽdio superátus sit mansuétus ac mitis, qui non apéruit
sicut agnus coram tondénte os suum, nec in verba furóris erúpit; sed quo in similitúdinem médici, si ægrótum
vídeat contra sua præcépta se gérere, dicat: Usquequo accédam ad domum tuam? quoúsque artis meæ perdam
indústriam, me áliud jubénte, et te áliud perpetránte?
en: >-
The father saith: And I spake to thy disciples, that they should cast him out, and they could not. Here he The father saith: And I spake to thy disciples, that they should cast him out, and they could not. Here he
maketh a sort of accusation against the Apostles. But that cures cannot be wrought is sometimes owing, not maketh a sort of accusation against the Apostles. But that cures cannot be wrought is sometimes owing, not
to the powerlessness of them that would heal, but to the want of faith in them that are to be healed as to the powerlessness of them that would heal, but to the want of faith in them that are to be healed as
@@ -68,24 +79,8 @@ readings:
but He spake as a physician might speak, who saw that the sick man did contrary to his commands. Wherefore but He spake as a physician might speak, who saw that the sick man did contrary to his commands. Wherefore
should I come unto thine house? How long am I to throw away the exercise of my skill, while I order one should I come unto thine house? How long am I to throw away the exercise of my skill, while I order one
thing and thou dost another? thing and thou dost another?
responsory:
la: "R. Audíte, fílii mei, patrem vestrum: † servíte Dómino in veritáte, et inquírite ut faciátis quæ plácita sunt illi: et fíliis vestris mandáte * Ut fáciant justítias et eleemósynas.\nV. Ut sint mémores Dei, et benedícant eum in omni témpore † in veritáte, et in tota virtúte sua.\nR. Ut fáciant justítias et eleemósynas."
en: "R. Hearken my children, to your father: serve the Lord in truth, and seek to do the things that please him: and command your children: * That they do justice and almsdeeds.\nV. That they be mindful of God, and bless him at all times in truth, and with all their power.\nR. That they do justice and almsdeeds."
status: { la: verified, en: verified }
- nocturn: 3
isGospel: false
source: "The Venerable Bede, Priest, homily on Mark 9:16-28"
text:
la: >-
Et dixit illis: Hoc genus in nullo potest exíre, nisi in oratióne et jejúnio. Dum docet Apóstolos quómodo
dæmon nequíssimus débeat expélli, omnes instítuit ad vitam; ut scílicet novérimus, gravíssima quæque vel
immundórum spirítuum, vel hóminum tentaménta jejúniis et oratiónibus esse superánda: iram quoque Dómini,
cum in ultiónem nostrórum scélerum fúerit accénsa, hoc remédio singulári posse placári. Jejúnium autem
generále est, non solum ab escis, sed et a cunctis illécebris abstinére carnálibus, immo ab ómnibus
vitiórum continére se passiónibus. Sic et orátio generális non in verbis solum est, quibus divínam
cleméntiam invocámus, verum étiam in ómnibus, quæ in obséquium nostri Conditóris fídei devotióne gérimus.
en: >-
And He said unto them: This kind can come forth by nothing but by prayer and fasting. While He teacheth the And He said unto them: This kind can come forth by nothing but by prayer and fasting. While He teacheth the
Apostles how the very worst kind of devil must be driven out, He giveth unto all of us an instruction unto Apostles how the very worst kind of devil must be driven out, He giveth unto all of us an instruction unto
life, that we may know that the most grievous trials, either from unclean spirits, or from men, are to be life, that we may know that the most grievous trials, either from unclean spirits, or from men, are to be
@@ -95,6 +90,6 @@ readings:
to pray, is not only to call in words for the mercy of God, but also, in all things which we do, in to pray, is not only to call in words for the mercy of God, but also, in all things which we do, in
earnestness of faith to worship our Maker. earnestness of faith to worship our Maker.
responsory: responsory:
la: "R. Benedícat te Dóminus in virtúte sua, † qui per te ad níhilum redégit inimícos nostros: * Ut non defíciat laus tua de ore hóminum.\nV. Benedíctus Dóminus qui creávit cælum et terram: † quia hódie nomen tuum ita magnificávit.\nR. Ut non defíciat laus tua de ore hóminum." la: "R. Tribulatiónes civitátum audívimus, quas passæ sunt, et defécimus: timor et hebetúdo mentis cécidit super nos et super líberos nostros: ipsi montes nolunt recípere fugam nostram: * Dómine, miserére.\nV. Peccávimus cum pátribus nostris, injúste égimus, iniquitátem fécimus.\nR. Dómine, miserére."
en: "R. The Lord bless you by His power, Who hath brought our enemies to nought through you. * And may the praise of you never fail from the mouth of men.\nV. Blessed be the Lord, Who hath created the heaven and the earth, because that He hath so glorified your name this day.\nR. And may the praise of you never fail from the mouth of men." en: "R. We have heard of the tribulation of those cities, which they have suffered, and we have fainted. Fear and confusion of mind are fallen upon us. Even the mountains will not give us a refuge. * Lord, have mercy.\nV. We have sinned like our forefathers, we have done unjustly, and wrought iniquity.\nR. Lord, have mercy."
status: { la: verified, en: verified } status: { la: verified, en: verified }
@@ -0,0 +1,21 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) -- read
# directly from the reference engine's own real-date output, 2026-05-14
# (Ascension Day itself). A real, pre-existing content gap:
# `getDayCollect` already looked up `${winner.id}-collect` for Ascension
# unconditionally (it's the day's own kind:'temporal' winner regardless
# of the hymnody-mechanism fix elsewhere), but this file never existed.
id: ascension-collect
text:
la: |
Orémus.
Concéde, quǽsumus, omnípotens Deus: ut, qui hodiérna die Unigénitum tuum, Redemptórem nostrum, ad cælos ascendísse crédimus; ipsi quoque mente in cæléstibus habitémus.
Per eúmdem Dóminum nostrum Jesum Christum Fílium tuum, qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
R. Amen.
en: |
Let us pray.
Grant, we beseech thee, Almighty God, that just as we do believe thine Only-Begotten Son, our Saviour, to have this day ascended into the heavens, so we may also in heart and mind thither ascend, and with Him continually dwell.
Through the same Jesus Christ, thy Son, Our Lord, Who liveth and reigneth with thee in the unity of the Holy Ghost, God, world without end.
R. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,9 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
# live query, 2026-05-31 (Trinity Sunday itself).
id: trinity-sunday-benedictus-antiphon
text:
la: "Benedícta sit * sancta creátrix et gubernátrix ómnium, sancta et indivídua Trínitas, nunc, et semper, et per infiníta sǽcula sæculórum."
en: "Blessed be the Holy One, * the Maker and Lord of all things: blessed be the Holy and Undivided Trinity, now and always, and unto unending ages of ages."
status:
la: verified
en: verified
@@ -0,0 +1,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds
# live query, 2026-05-31 (Trinity Sunday itself).
id: trinity-sunday-collect
text:
la: |
Orémus.
Omnípotens sempitérne Deus, qui dedísti fámulis tuis in confessióne veræ fídei, ætérnæ Trinitátis glóriam agnóscere, et in poténtia majestátis adoráre Unitátem: quǽsumus; ut, ejúsdem fídei firmitáte, ab ómnibus semper muniámur advérsis.
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
R. Amen.
en: |
Let us pray.
Almighty and everlasting God, who hast given thy servants in the confession of the true faith, to acknowledge the glory of the Eternal Trinity, and to adore the Unity in the power of thy Majesty: grant that, by steadfastness in this faith, we may ever be defended from all adversities.
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
R. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,9 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), Vespers
# live query, 2026-05-31 (Trinity Sunday itself).
id: trinity-sunday-magnificat-antiphon
text:
la: "Te Deum * Patrem ingénitum, te Fílium unigénitum, te Spíritum Sanctum Paráclitum, sanctam et indivíduam Trinitátem, toto corde et ore confitémur, laudámus, atque benedícimus: tibi glória in sǽcula."
en: "With all our heart * and with all our voice do we acknowledge thee, praise thee, and bless thee: O God the Father Unbegotten, O God the Only-Begotten Son, O God the Holy Ghost the Comforter, one Holy and Undivided Trinity: to thee be glory for ever."
status:
la: verified
en: verified
+44 -8
View File
@@ -1,6 +1,7 @@
import type { HourDefinition, HourPart, ResolvedOrdo, ResolvedPart, ResolvedText } from './types'; import type { HourDefinition, HourPart, ResolvedOrdo, ResolvedPart, ResolvedText } from './types';
import type { LiturgicalDay, Weekday } from '../calendar/types'; import type { LiturgicalDay, Weekday } from '../calendar/types';
import { resolveDay } from '../calendar'; import { resolveDay, resolveActiveOctave } from '../calendar';
import { getSaintRecord } from '../calendar/feasts';
import { getDayLabel } from '../calendar/day-label'; import { getDayLabel } from '../calendar/day-label';
import { getPsalmVerses } from '../psalter'; import { getPsalmVerses } from '../psalter';
import { getCanticle, type CanticleVerse } from './lauds-canticles'; import { getCanticle, type CanticleVerse } from './lauds-canticles';
@@ -25,6 +26,7 @@ import {
resolveResponsory, resolveResponsory,
resolveOfficeBundle, resolveOfficeBundle,
resolveSuffrages, resolveSuffrages,
isPaschaltide,
} from './resolve-common'; } from './resolve-common';
import laudsDefinitionData from '../data/hours/lauds.yml'; import laudsDefinitionData from '../data/hours/lauds.yml';
import laudsAntiphonsData from '../data/hours/lauds-antiphons.yml'; import laudsAntiphonsData from '../data/hours/lauds-antiphons.yml';
@@ -282,6 +284,25 @@ function resolvePsalmody(day: LiturgicalDay): ResolvedPart[] {
* exact original text. * exact original text.
*/ */
function resolveLaudsHymn(day: LiturgicalDay, key: string): ResolvedText { function resolveLaudsHymn(day: LiturgicalDay, key: string): ResolvedText {
// A temporal-feast-only octave (Ascension's own — no saint record, so
// resolveOfficeWinner's own octave-synthesis can't help here on a
// privileged Sunday, whose `octaveGoverningPrivilegedDay` gate is
// correctly closed to a real *saint* overriding it but wrongly also
// closes the *octave's own* hymn — live-verified wrong: "Dominica infra
// Octavam Ascensionis" still uses Ascension's own hymn/responsory, just
// with its own distinct proper chapter) still needs its own hymn
// recognized here directly via resolveActiveOctave (no privileged-
// Sunday gate) — checked before the plain season/weekday fallback, but
// deliberately not touched at the chapter/responsory/versicle level:
// this Sunday's own chapter genuinely differs from Ascension Day's own,
// so folding the whole bundle through the octave id would be wrong.
const octave = resolveActiveOctave(day.date);
if (octave && !getSaintRecord(octave.id)) {
const octaveHymn = resolveCommon(`lauds-hymn-${octave.id}`);
if (octaveHymn.status.la !== 'missing' || octaveHymn.status.en !== 'missing') {
return octaveHymn;
}
}
const body = resolveCommon(`lauds-hymn-${key}`); const body = resolveCommon(`lauds-hymn-${key}`);
const doxology = resolveCommon(getHymnDoxologyId(day, `lauds-hymn-${key}-doxology-per-annum`)); const doxology = resolveCommon(getHymnDoxologyId(day, `lauds-hymn-${key}-doxology-per-annum`));
return appendDoxology(body, doxology); return appendDoxology(body, doxology);
@@ -301,12 +322,18 @@ function resolveLaudsHymn(day: LiturgicalDay, key: string): ResolvedText {
function resolveOffice(day: LiturgicalDay): ResolvedPart[] { function resolveOffice(day: LiturgicalDay): ResolvedPart[] {
const bundle = resolveOfficeBundle('lauds', day); const bundle = resolveOfficeBundle('lauds', day);
if (bundle) { if (bundle) {
return [ const parts: ResolvedPart[] = [{ kind: 'chapter', text: bundle.chapter }];
{ kind: 'chapter', text: bundle.chapter }, // The Sacred Heart's own Lauds genuinely has no responsory at all in
{ kind: 'responsory', text: bundle.responsory }, // the source (live-verified, Divino Afflatu 1954, 2026-06-12: straight
{ kind: 'hymn', text: bundle.hymn }, // from chapter to hymn, "Capitulum Hymnus Versus" with no
{ kind: 'versicle', text: bundle.versicle }, // "Responsorium" in between) — an intentionally missing part, not an
]; // unauthored one, so omitted from the page entirely rather than
// rendering an empty section.
if (bundle.responsory.status.la !== 'missing' || bundle.responsory.status.en !== 'missing') {
parts.push({ kind: 'responsory', text: bundle.responsory });
}
parts.push({ kind: 'hymn', text: bundle.hymn }, { kind: 'versicle', text: bundle.versicle });
return parts;
} }
const seasonSuffix = seasonalOfficeSuffix(day.season); const seasonSuffix = seasonalOfficeSuffix(day.season);
const key = seasonSuffix ?? day.weekday; const key = seasonSuffix ?? day.weekday;
@@ -340,7 +367,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
case 'day-collects': case 'day-collects':
return getDayCollects(day); return getDayCollects(day);
case 'suffrages': case 'suffrages':
return resolveSuffrages(day, part.omitOnDouble); return resolveSuffrages(day, part.omitOnDouble, 'lauds');
case 'versicle': case 'versicle':
case 'chapter': case 'chapter':
case 'responsory': case 'responsory':
@@ -351,6 +378,15 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
return [{ kind: 'preces', text: resolveCommon(id), label: getMarianAntiphonLabel(id) }]; return [{ kind: 'preces', text: resolveCommon(id), label: getMarianAntiphonLabel(id) }];
} }
case 'lauds-preces': { case 'lauds-preces': {
// Throughout Paschaltide, the whole ferial-Preces litany drops
// entirely rather than being replaced by anything — live-verified
// ("Preces Feriales{omittitur}" against both Monastic Tridentinum
// 1617 and Tridentine 1906, a plain Eastertide feria, 2026-04-20).
// Sunday/feast's own short litany is untouched — that's a separate,
// universal collect-opening dialogue, not this ferial-specific one.
if (isFerialOrVigil(day) && isPaschaltide(day.season)) {
return [];
}
const id = isFerialOrVigil(day) ? 'lauds-preces-feriales' : 'lauds-short-litany'; const id = isFerialOrVigil(day) ? 'lauds-preces-feriales' : 'lauds-short-litany';
return [{ kind: 'preces', text: resolveCommon(id) }]; return [{ kind: 'preces', text: resolveCommon(id) }];
} }
+44 -8
View File
@@ -95,6 +95,7 @@ import { getTemporalFeastRecord } from '../calendar/temporal-feasts';
import { getBiblePlanReadings } from '../propers/bible-plan'; import { getBiblePlanReadings } from '../propers/bible-plan';
import { getNocturnReadings, type NocturnReading } from '../propers/nocturn-readings'; import { getNocturnReadings, type NocturnReading } from '../propers/nocturn-readings';
import { getOctaveReading } from '../propers/octave-readings'; import { getOctaveReading } from '../propers/octave-readings';
import { getResponsoryForCommon } from '../propers/matins-responsories';
import { getGospelIncipitFromCitation } from '../propers/bible-book-incipits'; import { getGospelIncipitFromCitation } from '../propers/bible-book-incipits';
import { getMatinsSaintOverride, getMatinsCommonOverride, type MatinsPsalmodyScheme } from './matins-psalmody-overrides'; import { getMatinsSaintOverride, getMatinsCommonOverride, type MatinsPsalmodyScheme } from './matins-psalmody-overrides';
import matinsSundayAntiphonsData from '../data/hours/matins-sunday-antiphons.yml'; import matinsSundayAntiphonsData from '../data/hours/matins-sunday-antiphons.yml';
@@ -450,6 +451,21 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
return commonHymn; return commonHymn;
} }
} }
// Septuagesima-tide checked directly by `day.season`, not folded into
// `seasonalOfficeSuffix` — that function is shared with Lauds/Vespers,
// which have no matching Septuagesima content authored yet; adding it
// there would silently blank their own chapter/hymn (resolveOfficeBundle
// requires all-or-nothing) instead of falling through to their current
// weekday default. Scoped to Matins alone until Lauds/Vespers' own
// Septuagesima content exists too (see TODO.md). Its own hymn ("Primo
// diérum ómnium") is a genuinely separate seasonal text from the plain
// Sunday/ferial one below, live-verified 2026-02-01.
if (day.season === 'septuagesima') {
const septuagesima = resolveCommon('matins-hymn-septuagesima');
if (septuagesima.status.la !== 'missing' || septuagesima.status.en !== 'missing') {
return septuagesima;
}
}
const seasonSuffix = seasonalOfficeSuffix(day.season); const seasonSuffix = seasonalOfficeSuffix(day.season);
if (seasonSuffix) { if (seasonSuffix) {
const seasonal = resolveCommon(`matins-hymn-${seasonSuffix}`); const seasonal = resolveCommon(`matins-hymn-${seasonSuffix}`);
@@ -457,6 +473,16 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
return seasonal; return seasonal;
} }
} }
// Sunday's own plain hymn ("Nocte surgéntes"), self-contained (own
// doxology baked in, unlike the shared weekday one below) — checked
// here, after every season/octave/Common tier above but before the
// Monday-Saturday ferial cycle, live-verified 2026-09-04.
if (day.weekday === 'sunday') {
const sunday = resolveCommon('matins-hymn-sunday');
if (sunday.status.la !== 'missing' || sunday.status.en !== 'missing') {
return sunday;
}
}
// The plain ferial hymn's own Monastic source (Day1-6 Hymnus, Psalterium/ // The plain ferial hymn's own Monastic source (Day1-6 Hymnus, Psalterium/
// Special/Matutinum Special.txt) carries a real seasonal-doxology // Special/Matutinum Special.txt) carries a real seasonal-doxology
// substitution marker (live-checked 2026-09-03) — unlike the Advent/ // substitution marker (live-checked 2026-09-03) — unlike the Advent/
@@ -470,8 +496,9 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
// text — a real gap uncovered when the user noticed Friday showing // text — a real gap uncovered when the user noticed Friday showing
// Monday's own hymn, and Saturday's own gap found the same day by // Monday's own hymn, and Saturday's own gap found the same day by
// asking what actually renders on a real Ember Saturday (see // asking what actually renders on a real Ember Saturday (see
// matins-hymn-ferial.yml's header for why Sunday alone still falls to // matins-hymn-ferial.yml's header for why Monday alone still falls to
// the plain `matins-hymn-ferial` id as a documented placeholder). // the plain `matins-hymn-ferial` id, since Monday's own text simply
// lives there unsuffixed).
const weekdayFerialHymnIds: Partial<Record<Weekday, string>> = { const weekdayFerialHymnIds: Partial<Record<Weekday, string>> = {
tuesday: 'matins-hymn-ferial-tuesday', tuesday: 'matins-hymn-ferial-tuesday',
wednesday: 'matins-hymn-ferial-wednesday', wednesday: 'matins-hymn-ferial-wednesday',
@@ -726,12 +753,19 @@ function fallbackHagiographicLabel(id: string): string | undefined {
return name.startsWith('The ') ? `On the ${name.slice(4)}` : `On ${name}`; return name.startsWith('The ') ? `On the ${name.slice(4)}` : `On ${name}`;
} }
function nocturnReadingPart(r: NocturnReading, id: string): ResolvedPart { /** `index` is this reading's position among this same id's own
* nocturn-readings (not the whole day's pool) — the cycling key for
* `getResponsoryForCommon` when `r` has no proper `responsory` of its own,
* same convention as the per-book pool. Common-category fallback only
* applies to a real saint id (`getSaintRecord(id)?.common`) — a temporal or
* octave id has no Commune category to fall back to. */
function nocturnReadingPart(r: NocturnReading, id: string, index: number): ResolvedPart {
const responsoryText = r.responsory ?? getResponsoryForCommon(getSaintRecord(id)?.common, index);
return { return {
kind: 'lesson', kind: 'lesson',
text: { text: r.text, status: r.status, citation: r.citation }, text: { text: r.text, status: r.status, citation: r.citation },
label: r.source ?? fallbackHagiographicLabel(id), label: r.source ?? fallbackHagiographicLabel(id),
responsory: r.responsory ? { text: r.responsory, status: { la: 'verified', en: 'verified' } } : undefined, responsory: responsoryText ? { text: responsoryText, status: { la: 'verified', en: 'verified' } } : undefined,
}; };
} }
@@ -743,14 +777,15 @@ function nocturnReadingPart(r: NocturnReading, id: string): ResolvedPart {
* ResolvedPart can't be split across two nocturns by `distributeIntoNocturns`, * ResolvedPart can't be split across two nocturns by `distributeIntoNocturns`,
* whereas two adjacent pool entries could be (and, before this, sometimes * whereas two adjacent pool entries could be (and, before this, sometimes
* were). */ * were). */
function gospelReadingPart(r: NocturnReading, homily: NocturnReading | undefined): ResolvedPart { function gospelReadingPart(r: NocturnReading, homily: NocturnReading | undefined, id: string, index: number): ResolvedPart {
const incipit = getGospelIncipitFromCitation(r.citation); const incipit = getGospelIncipitFromCitation(r.citation);
const responsoryText = r.responsory ?? getResponsoryForCommon(getSaintRecord(id)?.common, index);
return { return {
kind: 'gospel', kind: 'gospel',
text: { text: r.text, status: r.status, citation: r.citation }, text: { text: r.text, status: r.status, citation: r.citation },
source: r.source, source: r.source,
label: incipit ? { la: incipit.la, en: incipit.en } : undefined, label: incipit ? { la: incipit.la, en: incipit.en } : undefined,
responsory: r.responsory ? { text: r.responsory, status: { la: 'verified', en: 'verified' } } : undefined, responsory: responsoryText ? { text: responsoryText, status: { la: 'verified', en: 'verified' } } : undefined,
homily: homily homily: homily
? { source: homily.source, text: { text: homily.text, status: homily.status, citation: homily.citation } } ? { source: homily.source, text: { text: homily.text, status: homily.status, citation: homily.citation } }
: undefined, : undefined,
@@ -806,6 +841,7 @@ function buildReadingPool(day: LiturgicalDay, temporalId: string, date: string,
const byNocturn = new Map<number, ResolvedPart[]>(); const byNocturn = new Map<number, ResolvedPart[]>();
for (const id of ids) { for (const id of ids) {
const readings = getNocturnReadings(id); const readings = getNocturnReadings(id);
let commonPoolIndex = 0;
for (let i = 0; i < readings.length; i++) { for (let i = 0; i < readings.length; i++) {
const reading = readings[i]!; const reading = readings[i]!;
const bucket = byNocturn.get(reading.nocturn) ?? []; const bucket = byNocturn.get(reading.nocturn) ?? [];
@@ -819,10 +855,10 @@ function buildReadingPool(day: LiturgicalDay, temporalId: string, date: string,
// apart by distributeIntoNocturns. // apart by distributeIntoNocturns.
const next = readings[i + 1]; const next = readings[i + 1];
const homily = next && !next.isGospel && next.nocturn === reading.nocturn ? next : undefined; const homily = next && !next.isGospel && next.nocturn === reading.nocturn ? next : undefined;
bucket.push(gospelReadingPart(reading, homily)); bucket.push(gospelReadingPart(reading, homily, id, commonPoolIndex++));
if (homily) i++; if (homily) i++;
} else { } else {
bucket.push(nocturnReadingPart(reading, id)); bucket.push(nocturnReadingPart(reading, id, commonPoolIndex++));
} }
byNocturn.set(reading.nocturn, bucket); byNocturn.set(reading.nocturn, bucket);
} }
+41 -1
View File
@@ -60,6 +60,11 @@ export const ALWAYS_OVERRIDE_TEMPORAL_IDS = new Set([
'christ-the-king', 'christ-the-king',
'christmas-octave-sunday', 'christmas-octave-sunday',
'immaculate-heart-of-mary', 'immaculate-heart-of-mary',
'ascension',
'pentecost-sunday',
'corpus-christi',
'sacred-heart',
'trinity-sunday',
'circumcision', 'circumcision',
'holy-name-of-jesus', 'holy-name-of-jesus',
'vigil-of-christmas', 'vigil-of-christmas',
@@ -124,6 +129,16 @@ export function resolveOfficeWinner(day: LiturgicalDay): DayWinner {
if (saint) { if (saint) {
return { kind: 'sanctoral', id: saint.id, name: saint.name, rank: saint.rank }; return { kind: 'sanctoral', id: saint.id, name: saint.name, rank: saint.rank };
} }
// A temporal-feast-only octave (Ascension's own — no saint record to
// synthesize from, unlike Assumption's/St. Lawrence's) still needs its
// own content recognized on interior octave days, the same way its own
// feast day already is via the `ALWAYS_OVERRIDE_TEMPORAL_IDS` check
// above — found 2026-09-04 via the Matins seasonal-hymn fallback
// silently rendering the generic Paschaltide text throughout the whole
// Ascension octave, not just a missing-content gap on the day itself.
if (ALWAYS_OVERRIDE_TEMPORAL_IDS.has(activeOctave.id) && getTemporalFeastRecord(activeOctave.id)) {
return { kind: 'temporal', id: activeOctave.id };
}
} }
return day.winner; return day.winner;
} }
@@ -291,6 +306,15 @@ export function getMinorHourOverrideId(day: LiturgicalDay): string | undefined {
*/ */
const PASCHALTIDE_SEASONS = new Set(['eastertide', 'ascensiontide', 'pentecost']); const PASCHALTIDE_SEASONS = new Set(['eastertide', 'ascensiontide', 'pentecost']);
/** Whether `season` falls within the same broad Paschaltide window
* `PASCHALTIDE_SEASONS` already governs elsewhere in this file (Marian
* antiphon, Common-category text, hymn doxology) — exported so
* hours/lauds.ts's and hours/vespers.ts's own ferial-Preces omission can
* share the identical boundary rather than redeclaring it. */
export function isPaschaltide(season: string): boolean {
return PASCHALTIDE_SEASONS.has(season);
}
/** /**
* Which seasonal office-content suffix (if any) a day's season maps to — * Which seasonal office-content suffix (if any) a day's season maps to —
* shared by Lauds' and Vespers' own resolveOffice, both of which fall * shared by Lauds' and Vespers' own resolveOffice, both of which fall
@@ -774,7 +798,11 @@ const SUFFRAGE_LABELS: Record<string, string> = {
* the caveat on what real practice also suppresses them for that isn't * the caveat on what real practice also suppresses them for that isn't
* modeled. * modeled.
*/ */
export function resolveSuffrages(day: LiturgicalDay, omitOnDouble: boolean | undefined): ResolvedPart[] { export function resolveSuffrages(
day: LiturgicalDay,
omitOnDouble: boolean | undefined,
hourId: 'lauds' | 'vespers' = 'lauds',
): ResolvedPart[] {
// isDoubleOrHigher only ever looks at a sanctoral rank — Christ the // isDoubleOrHigher only ever looks at a sanctoral rank — Christ the
// King is modeled as a named temporal winner (see // King is modeled as a named temporal winner (see
// ALWAYS_OVERRIDE_TEMPORAL_IDS above) with no FeastClass to check at // ALWAYS_OVERRIDE_TEMPORAL_IDS above) with no FeastClass to check at
@@ -797,6 +825,18 @@ export function resolveSuffrages(day: LiturgicalDay, omitOnDouble: boolean | und
if (omitOnDouble && (isDoubleOrHigher(day.winner) || isChristTheKing || isSeasonallyExcluded || isWithinAnOctave)) { if (omitOnDouble && (isDoubleOrHigher(day.winner) || isChristTheKing || isSeasonallyExcluded || isWithinAnOctave)) {
return []; return [];
} }
// Throughout the rest of Paschaltide, the whole ordinary 5-suffrage set
// below collapses into a single alleluia-form "Suffragium Paschale" —
// live-verified against both Monastic Tridentinum 1617 and Tridentine
// 1906 directly (a plain Eastertide feria, 2026-04-20), byte-identical
// between the two tracks. Checked after the omit-entirely gate above
// (an active octave/Double+/Advent-Christmastide-Passiontide already
// drops suffrages regardless of season, unaffected by this) but before
// the ordinary per-suffrage filtering below, since this replaces that
// filtering outright rather than adjusting it.
if (isPaschaltide(day.season)) {
return [{ kind: 'preces', text: resolveCommon(`${hourId}-suffrage-paschale`) }];
}
// "Of the Holy Cross" is the real *ferial*-office suffrage, sourced // "Of the Holy Cross" is the real *ferial*-office suffrage, sourced
// from Tridentine 1906/1910 (a different track than the other four, // from Tridentine 1906/1910 (a different track than the other four,
// which come from Monastic 1617 -- that track has no Cross suffrage // which come from Monastic 1617 -- that track has no Cross suffrage
+31 -7
View File
@@ -2,6 +2,8 @@ import type { HourDefinition, HourPart, ResolvedOrdo, ResolvedPart, ResolvedText
import type { LiturgicalDay, Weekday } from '../calendar/types'; import type { LiturgicalDay, Weekday } from '../calendar/types';
import { resolveEveningDay } from '../calendar/vespers'; import { resolveEveningDay } from '../calendar/vespers';
import { weekdayOf } from '../calendar/weekday'; import { weekdayOf } from '../calendar/weekday';
import { resolveActiveOctave } from '../calendar';
import { getSaintRecord } from '../calendar/feasts';
import { getDayLabel } from '../calendar/day-label'; import { getDayLabel } from '../calendar/day-label';
import { getPsalmVerses } from '../psalter'; import { getPsalmVerses } from '../psalter';
import { getOpeningVersicleId } from './opening-versicle'; import { getOpeningVersicleId } from './opening-versicle';
@@ -24,6 +26,7 @@ import {
resolveResponsory, resolveResponsory,
resolveOfficeBundle, resolveOfficeBundle,
resolveSuffrages, resolveSuffrages,
isPaschaltide,
} from './resolve-common'; } from './resolve-common';
import vespersDefinitionData from '../data/hours/vespers.yml'; import vespersDefinitionData from '../data/hours/vespers.yml';
import vespersAntiphonsData from '../data/hours/vespers-antiphons.yml'; import vespersAntiphonsData from '../data/hours/vespers-antiphons.yml';
@@ -190,6 +193,19 @@ function vespersCapitulumForOverride(id: string): ResolvedText {
* Advent, Lent — the source itself never swaps those) reproduces the * Advent, Lent — the source itself never swaps those) reproduces the
* exact original text. See lauds.ts's identical resolveLaudsHymn. */ * exact original text. See lauds.ts's identical resolveLaudsHymn. */
function resolveVespersHymn(day: LiturgicalDay, key: string): ResolvedText { function resolveVespersHymn(day: LiturgicalDay, key: string): ResolvedText {
// A temporal-feast-only octave (Ascension's own) still needs its own
// hymn recognized directly here, bypassing octaveGoverningPrivilegedDay's
// privileged-Sunday gate — see lauds.ts's identical resolveLaudsHymn for
// the full story. Guarded to saint-less octaves only: a saint-based
// octave (Assumption's, St. Lawrence's) already reaches its own content
// through resolveOfficeWinner's existing synthesis without this.
const octave = resolveActiveOctave(day.date);
if (octave && !getSaintRecord(octave.id)) {
const octaveHymn = resolveCommon(`vespers-hymn-${octave.id}`);
if (octaveHymn.status.la !== 'missing' || octaveHymn.status.en !== 'missing') {
return octaveHymn;
}
}
const body = resolveCommon(`vespers-hymn-${key}`); const body = resolveCommon(`vespers-hymn-${key}`);
const doxology = resolveCommon(getHymnDoxologyId(day, `vespers-hymn-${key}-doxology-per-annum`)); const doxology = resolveCommon(getHymnDoxologyId(day, `vespers-hymn-${key}-doxology-per-annum`));
return appendDoxology(body, doxology); return appendDoxology(body, doxology);
@@ -214,12 +230,14 @@ function resolveVespersHymn(day: LiturgicalDay, key: string): ResolvedText {
function resolveOffice(day: LiturgicalDay): ResolvedPart[] { function resolveOffice(day: LiturgicalDay): ResolvedPart[] {
const bundle = resolveOfficeBundle('vespers', day, vespersCapitulumForOverride); const bundle = resolveOfficeBundle('vespers', day, vespersCapitulumForOverride);
if (bundle) { if (bundle) {
return [ const parts: ResolvedPart[] = [{ kind: 'chapter', text: bundle.chapter }];
{ kind: 'chapter', text: bundle.chapter }, // The Sacred Heart's own Vespers genuinely has no responsory at all in
{ kind: 'responsory', text: bundle.responsory }, // the source, same as its own Lauds — see lauds.ts's identical check.
{ kind: 'hymn', text: bundle.hymn }, if (bundle.responsory.status.la !== 'missing' || bundle.responsory.status.en !== 'missing') {
{ kind: 'versicle', text: bundle.versicle }, parts.push({ kind: 'responsory', text: bundle.responsory });
]; }
parts.push({ kind: 'hymn', text: bundle.hymn }, { kind: 'versicle', text: bundle.versicle });
return parts;
} }
const seasonSuffix = seasonalOfficeSuffix(day.season); const seasonSuffix = seasonalOfficeSuffix(day.season);
const key = seasonSuffix ?? day.weekday; const key = seasonSuffix ?? day.weekday;
@@ -258,13 +276,19 @@ function resolvePart(part: HourPart, day: LiturgicalDay, weekday: Weekday): Reso
]; ];
} }
case 'vespers-preces': { case 'vespers-preces': {
// Throughout Paschaltide, the whole ferial-Preces litany drops
// entirely rather than being replaced by anything — see lauds.ts's
// identical 'lauds-preces' case for the live-verification detail.
if (isFerialOrVigil(day) && isPaschaltide(day.season)) {
return [];
}
const id = isFerialOrVigil(day) ? 'vespers-preces-feriales' : 'lauds-short-litany'; const id = isFerialOrVigil(day) ? 'vespers-preces-feriales' : 'lauds-short-litany';
return [{ kind: 'preces', text: resolveCommon(id) }]; return [{ kind: 'preces', text: resolveCommon(id) }];
} }
case 'day-collects': case 'day-collects':
return getDayCollects(day); return getDayCollects(day);
case 'suffrages': case 'suffrages':
return resolveSuffrages(day, part.omitOnDouble); return resolveSuffrages(day, part.omitOnDouble, 'vespers');
case 'preces': case 'preces':
return [{ kind: 'preces', text: resolveCommon(part.textRef.id), label: part.label }]; return [{ kind: 'preces', text: resolveCommon(part.textRef.id), label: part.label }];
case 'versicle': case 'versicle':
+52 -4
View File
@@ -22,6 +22,9 @@ import { resolvePassages, type ScriptureCitation } from './octave-readings';
import { getResponsoryForBook } from './matins-responsories'; import { getResponsoryForBook } from './matins-responsories';
import { getBookIncipit } from './bible-book-incipits'; import { getBookIncipit } from './bible-book-incipits';
import { canonicalBook } from '../scripture'; import { canonicalBook } from '../scripture';
import { adventStart } from '../calendar/temporal';
import { addDays, daysBetween } from '../calendar/date-math';
import type { Weekday } from '../calendar/types';
const GOSPEL_BOOKS = new Set(['matt', 'mark', 'luke', 'john']); const GOSPEL_BOOKS = new Set(['matt', 'mark', 'luke', 'john']);
@@ -154,10 +157,54 @@ for (const mod of Object.values(modules)) {
} }
} }
const WEEKDAYS: Weekday[] = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
/** Advent's own reading plan (`advent-1-sunday` through `advent-4-saturday`,
* 28 rows, one per day of a full 4-week Advent) is longer than Advent
* itself ever actually runs: Advent's last real day is Dec 23 (Dec 24 is
* the Vigil of Christmas's own temporal id, calendar/temporal-id.ts) but
* Advent 1 Sunday falls anywhere from Nov 27 to Dec 3 (the Sunday nearest
* Nov 30) — even in the longest possible Advent (Advent 1 Sunday = Nov 27,
* 27 real days before Dec 24) the 28th planned reading never lands on its
* own natural date, and in the shortest (Advent 1 Sunday = Dec 3, 21 real
* days) the entire last week's worth (7 readings) never does. Rather than
* silently drop that content, whatever didn't land on its own natural date
* carries forward one reading per day starting Christmas Day itself,
* pooled alongside whatever Christmastide's own calendar-dated rows
* already have for that day (never replacing them) — same "every
* contributing source pools, none override" design as everywhere else in
* this file and in hours/matins.ts's own reading-pool assembly. User
* direction, 2026-09-05: "for advent only, we need to show all of those
* chapters," accepting the spillover into Christmastide as the trade-off.
*
* Real day-by-day for `date`'s own year: the pool has no calendar-year
* awareness anywhere else (temporal ids are already year-independent), so
* this is the one place in this file that computes real dates. */
function adventCarryoverReadings(date: string): BiblePlanReading[] {
const year = Number(date.slice(0, 4));
const christmasDay = `${year}-12-25`;
const daysAfterChristmas = daysBetween(christmasDay, date);
if (daysAfterChristmas < 0) return [];
const vigilOfChristmas = `${year}-12-24`;
const start = adventStart(year);
const skippedKeys: string[] = [];
for (let i = 0; i < 28; i++) {
if (addDays(start, i) >= vigilOfChristmas) {
const week = Math.floor(i / 7) + 1;
skippedKeys.push(`advent-${week}-${WEEKDAYS[i % 7]}`);
}
}
const key = skippedKeys[daysAfterChristmas];
return key ? (readingsByTemporalKey.get(key) ?? []) : [];
}
/** Every reading this plan contributes to Matins' pooled reading list for /** Every reading this plan contributes to Matins' pooled reading list for
* `date` — both the (temporalId, weekday) row and the fixed-calendar-date * `date` — the (temporalId, weekday) row, the fixed-calendar-date row (if
* row (if any), pooled together rather than one overriding the other, since * any), and (Christmas Day onward) any Advent reading bumped past its own
* both can genuinely apply to the same date (see this file's header). * natural date by a short Advent that year (see `adventCarryoverReadings`)
* — all pooled together rather than one overriding another, since more
* than one can genuinely apply to the same date (see this file's header).
* Empty array, not undefined, when nothing's authored for this day yet — * Empty array, not undefined, when nothing's authored for this day yet —
* every caller already treats "no readings" as a valid, renderable state * every caller already treats "no readings" as a valid, renderable state
* (see hours/matins.ts), so there's no separate "missing entirely" signal * (see hours/matins.ts), so there's no separate "missing entirely" signal
@@ -165,5 +212,6 @@ for (const mod of Object.values(modules)) {
export function getBiblePlanReadings(temporalId: string, weekday: string, date: string): BiblePlanReading[] { export function getBiblePlanReadings(temporalId: string, weekday: string, date: string): BiblePlanReading[] {
const byTemporal = readingsByTemporalKey.get(`${temporalId}-${weekday}`) ?? []; const byTemporal = readingsByTemporalKey.get(`${temporalId}-${weekday}`) ?? [];
const byCalendarDate = readingsByCalendarDate.get(date.slice(5)) ?? []; const byCalendarDate = readingsByCalendarDate.get(date.slice(5)) ?? [];
return [...byTemporal, ...byCalendarDate]; const carryover = adventCarryoverReadings(date);
return [...byTemporal, ...byCalendarDate, ...carryover];
} }
+61 -2
View File
@@ -2,6 +2,11 @@
// data/hours/matins-responsories-by-book.yml's own header for why matching // data/hours/matins-responsories-by-book.yml's own header for why matching
// is book-level, not citation-level, and why this is a seeded subset, not // is book-level, not citation-level, and why this is a seeded subset, not
// a full pool. // a full pool.
//
// This file also holds the sibling per-Common-category pool (see
// data/hours/matins-responsories-by-common.yml's own header) — used to
// fill in a real responsory for a saint's own Nocturn 2/3 patristic
// reading when that reading has no proper `responsory` of its own.
import type { LanguageCode, TranslationStatus } from '../psalter/types'; import type { LanguageCode, TranslationStatus } from '../psalter/types';
interface BilingualText { interface BilingualText {
@@ -37,9 +42,28 @@ for (const mod of Object.values(modules)) {
} }
} }
/** Builds the full "R. ...\n* ...\nV. ...\nR. ..." block — same R./V./repeat
* convention as octave-readings.ts's own `responsory` field and every
* nocturn-readings/*.yml file's inline `responsory` — from the pool's
* plain `{r, v}` text (no "R."/"V." labels, `r` already carries a `*`
* marking where the repeat begins, per the extraction convention
* documented in the data file's own header). Previously joined these with
* a bare newline and no R./V. labels at all — a real, visible
* inconsistency (caught 2026-09-04): every other responsory source in
* this app labels its lines. */
function joinOne(r: string | undefined, v: string | undefined): string | undefined {
if (!r) return undefined;
const starIndex = r.indexOf('*');
const repeat = starIndex >= 0 ? r.slice(starIndex + 1).trim() : r;
const lines = [`R. ${r}`];
if (v) lines.push(`V. ${v}`);
lines.push(`R. ${repeat}`);
return lines.join('\n');
}
function joinResponsory(record: ResponsoryRecord): MatinsResponsory { function joinResponsory(record: ResponsoryRecord): MatinsResponsory {
const la = record.r.la && record.v.la ? `${record.r.la}\n${record.v.la}` : record.r.la; const la = joinOne(record.r.la, record.v.la);
const en = record.r.en && record.v.en ? `${record.r.en}\n${record.v.en}` : record.r.en; const en = joinOne(record.r.en, record.v.en);
return { return {
text: { la, en }, text: { la, en },
status: { la: la ? 'verified' : 'missing', en: en ? 'verified' : 'missing' }, status: { la: la ? 'verified' : 'missing', en: en ? 'verified' : 'missing' },
@@ -56,3 +80,38 @@ export function getResponsoryForBook(book: string, index: number): MatinsRespons
if (!pool || pool.length === 0) return undefined; if (!pool || pool.length === 0) return undefined;
return joinResponsory(pool[index % pool.length]!); return joinResponsory(pool[index % pool.length]!);
} }
interface FullTextResponsory {
la: string;
en: string;
}
const commonModules = import.meta.glob<{ default: Record<string, FullTextResponsory[]> }>(
'../data/hours/matins-responsories-by-common.yml',
{ eager: true },
);
const poolByCommon = new Map<string, FullTextResponsory[]>();
for (const mod of Object.values(commonModules)) {
for (const [commonId, entries] of Object.entries(mod.default)) {
poolByCommon.set(commonId, entries);
}
}
/** Same cycling convention as getResponsoryForBook, but the pooled text is
* already the full "R. ...\n* ...\nV. ...\nR. ..." block (matching the
* inline `responsory` convention every nocturn-readings/*.yml file uses),
* ready to drop straight into a reading's `responsory` field — not the
* split {r, v} shape the book pool uses. Undefined when the saint has no
* `common` category, or that category isn't seeded (e.g. angel/evangelist/
* vigil — see the data file's own header for why those are out of scope). */
export function getResponsoryForCommon(
commonId: string | undefined,
index: number,
): Partial<Record<LanguageCode, string>> | undefined {
if (!commonId) return undefined;
const pool = poolByCommon.get(commonId);
if (!pool || pool.length === 0) return undefined;
const entry = pool[index % pool.length]!;
return { la: entry.la, en: entry.en };
}
+26 -19
View File
@@ -21,18 +21,19 @@ describe('getDayLabel — ordinal temporal label', () => {
it('names the anchor day itself, not "day after itself"', () => { it('names the anchor day itself, not "day after itself"', () => {
// Trinity Sunday 2026 (May 31) is now also the Queenship of the // Trinity Sunday 2026 (May 31) is now also the Queenship of the
// Blessed Virgin Mary's own fixed day (Duplex II Classis, added per // Blessed Virgin Mary's own fixed day (Duplex II Classis, added per
// the full-year sanctoral import) — since this app models Trinitytide // the full-year sanctoral import). Trinity Sunday itself used to be
// Sundays as plain `ordinary-sunday` with no special first-class // modeled as plain `ordinary-sunday` with no special first-class
// standing of their own, the Duplex+ sanctoral feast wins outright // standing of its own, purely a cosmetic label overlay -- fixed
// here per the normal ordinary-Sunday rule (see // 2026-09-04 with a real `trinity-sunday` temporal-feast record
// tests/calendar/transfer.test.ts's own May 31 case for the full // (calendar/data/calendar/temporal-feasts/trinity-sunday.yml),
// winner/commemorations breakdown), so the label now reflects her, // `unconditional: true` per direct instruction (a principal Sunday
// not Trinity Sunday itself — but Trinity Sunday is still // shouldn't lose to a same-rank fixed-date collision, same shape as
// commemorated in return (`decideOccurrence`'s own `ordinary-sunday` // christ-the-king.yml). Trinity Sunday now wins outright and the
// branch), by bare name only — a commemoration never carries a rank // Queenship is commemorated instead, by bare name only — a
// parenthetical, only the day's own winner does. // commemoration never carries a rank parenthetical, only the day's
// own winner does.
expect(getDayLabel(resolveDay('2026-05-31')).en).toBe( expect(getDayLabel(resolveDay('2026-05-31')).en).toBe(
'The Queenship of the Blessed Virgin Mary (Duplex II Class) — Trinity Sunday', 'The Most Holy Trinity (Duplex II Class) — The Queenship of the Blessed Virgin Mary',
); );
expect(getDayLabel(resolveDay('2026-04-05')).en).toBe( expect(getDayLabel(resolveDay('2026-04-05')).en).toBe(
"Easter (Duplex I Class) — St. Vincent Ferrer, Confessor (transferred away)", "Easter (Duplex I Class) — St. Vincent Ferrer, Confessor (transferred away)",
@@ -41,12 +42,12 @@ describe('getDayLabel — ordinal temporal label', () => {
"Ash Wednesday — St. Simeon, Bishop and Martyr (transferred away)", "Ash Wednesday — St. Simeon, Bishop and Martyr (transferred away)",
); );
// Latin: the winner now has a real authored nameLa (see // Latin: the winner now has a real authored nameLa (see
// calendar/data/calendar/saints/queenship-of-the-bvm.yml), so this is // calendar/data/calendar/saints/queenship-of-the-bvm.yml and
// real Latin throughout — the rank label ("Duplex II. Classis") and // temporal-feasts/trinity-sunday.yml's own "Sanctissima Trinitas"),
// the commemorated Sunday's own name ("Dominica Sanctissimae // so this is real Latin throughout — the rank label ("Duplex II.
// Trinitatis") were already real Latin before this. // Classis") was already real Latin before this.
expect(getDayLabel(resolveDay('2026-05-31')).la).toBe( expect(getDayLabel(resolveDay('2026-05-31')).la).toBe(
'Beata Maria Virgo Regina (Duplex II. Classis) — Dominica Sanctissimae Trinitatis', 'Sanctissima Trinitas (Duplex II. Classis) — Beata Maria Virgo Regina',
); );
expect(getDayLabel(resolveDay('2026-04-05')).la).toBe( expect(getDayLabel(resolveDay('2026-04-05')).la).toBe(
'Pascha (Duplex I. Classis) — Sanctus Vincentius Ferrerius, Confessor (translata alio)', 'Pascha (Duplex I. Classis) — Sanctus Vincentius Ferrerius, Confessor (translata alio)',
@@ -233,14 +234,20 @@ describe('getDayLabel — active octave', () => {
expect(getDayLabel(resolveDay('2028-11-03')).en).toBe('3rd Day within the Octave of All Saints (Semiduplex)'); expect(getDayLabel(resolveDay('2028-11-03')).en).toBe('3rd Day within the Octave of All Saints (Semiduplex)');
}); });
it("a season's own named anchor day outranks an active octave, even though Trinity Sunday is technically also day 8 of Pentecost's own octave", () => { it("Trinity Sunday itself outranks Pentecost's own octave, which is technically still active on the same day (day 8)", () => {
// Not 2026 (May 31, the Queenship of the Blessed Virgin Mary's own // Not 2026 (May 31, the Queenship of the Blessed Virgin Mary's own
// fixed day, see tests/calendar/transfer.test.ts) and not 2023 // fixed day, see tests/calendar/transfer.test.ts) and not 2023
// (June 4, now St. Francis Caracciolo's own fixed day) -- both would // (June 4, now St. Francis Caracciolo's own fixed day) -- both would
// muddy this specifically octave-vs-anchor-day check with a sanctoral // muddy this specifically octave-vs-anchor-day check with a sanctoral
// winner. 2030's Trinity Sunday (June 16) has no sanctoral entry at // winner. 2030's Trinity Sunday (June 16) has no sanctoral entry at
// all, isolating the octave interaction cleanly. // all, isolating the octave interaction cleanly. Since 2026-09-04,
expect(getDayLabel(resolveDay('2030-06-16')).en).toBe('Trinity Sunday (Duplex I Class)'); // Trinity Sunday is a real, unconditional-winning temporal-feast
// (see the test above) rather than a purely cosmetic label overlay,
// so this is now a real occurrence result, not just a label choice --
// Duplex II Class, its own live-verified rank, not the earlier
// (never-verified) "Duplex I Class" placeholder this test used to
// assert.
expect(getDayLabel(resolveDay('2030-06-16')).en).toBe('The Most Holy Trinity (Duplex II Class)');
}); });
it("a temporal day with real standing of its own (not ordinary-feria) never shows an octave name at all, even with one active -- live-verified counterexample: the Christmas Octave's own stack (Dec 30) titles itself off the Sunday, never any of the four octaves layered on top of it", () => { it("a temporal day with real standing of its own (not ordinary-feria) never shows an octave name at all, even with one active -- live-verified counterexample: the Christmas Octave's own stack (Dec 30) titles itself off the Sunday, never any of the four octaves layered on top of it", () => {
+14 -14
View File
@@ -106,22 +106,22 @@ describe('Ember days', () => {
}); });
it('Matins renders real, distinct, verified lessons+responsories for each of the 6 Ember days', () => { it('Matins renders real, distinct, verified lessons+responsories for each of the 6 Ember days', () => {
// September Ember Friday (2026-09-18) is 1, not >=3, since 2026-09-04: // All 6 are now 1, not >=3, since 2026-09-04: every Ember day's own
// ember-september-friday.yml's own Gregory homily (Lectio1-3) was // nocturn-readings file was recombined into a single reading -- each
// recombined into a single reading -- it's one continuous, unbroken // is one continuous, unbroken homily, split only to fill the fixed
// homily on the same pericope, split only to fill the fixed 3-lesson // 3-lesson slot count, the same "source doesn't genuinely split"
// slot count, the same "source doesn't genuinely split" default // default post-pentecost-15.yml's own doc comment establishes.
// post-pentecost-15.yml's own doc comment already establishes. The // September Friday was the first fixed; Wednesday/Saturday (September)
// other 5 Ember days' own nocturn-readings files still keep their // and Wednesday/Friday/Saturday (Advent) followed the same day once
// historical 3-way split (each with its own genuinely distinct // the reference source was checked directly for each and confirmed
// responsory) -- not revisited here, out of scope for this fix. // contiguous.
const dates: [string, number][] = [ const dates: [string, number][] = [
['2026-09-16', 3], ['2026-09-16', 1],
['2026-09-18', 1], ['2026-09-18', 1],
['2026-09-19', 3], ['2026-09-19', 1],
['2026-12-16', 3], ['2026-12-16', 1],
['2026-12-18', 3], ['2026-12-18', 1],
['2026-12-19', 3], ['2026-12-19', 1],
]; ];
for (const [date, minLessons] of dates) { for (const [date, minLessons] of dates) {
const ordo = resolveOrdo('matins', date); const ordo = resolveOrdo('matins', date);
+11 -13
View File
@@ -88,22 +88,20 @@ describe('transfer mechanism (resolveDay integration)', () => {
// Felix doesn't reach Trinity Sunday at all now. Trinity Sunday 2026 // Felix doesn't reach Trinity Sunday at all now. Trinity Sunday 2026
// (May 31) is also the Queenship of the Blessed Virgin Mary's own // (May 31) is also the Queenship of the Blessed Virgin Mary's own
// fixed day (Duplex II Classis) -- since this app models Trinitytide // fixed day (Duplex II Classis). Trinity Sunday used to be modeled as
// Sundays as plain `ordinary-sunday` (no special first-class standing // plain `ordinary-sunday` (no special first-class standing of its
// of their own, see temporal-categories.yml), a Duplex+ sanctoral // own), so the Duplex+ Queenship won outright there -- fixed
// feast wins outright here per the normal ordinary-Sunday rule, with // 2026-09-04 with a real `trinity-sunday` temporal-feast record,
// both the day's own temporal id and Pentecost's octave commemorated // `unconditional: true` (a principal Sunday shouldn't lose to a
// in return. // same-rank fixed-date collision, same shape as christ-the-king.yml).
expect(sunday.winner).toEqual({ // Trinity Sunday now wins outright; the Queenship, the day's own
kind: 'sanctoral', // plain temporal id, and Pentecost's octave are all commemorated in
id: 'queenship-of-the-bvm', // return.
name: 'The Queenship of the Blessed Virgin Mary', expect(sunday.winner).toEqual({ kind: 'temporal', id: 'trinity-sunday' });
nameLa: 'Beata Maria Virgo Regina',
rank: 'duplex-2-classis',
});
expect(sunday.commemorations).toEqual([ expect(sunday.commemorations).toEqual([
{ kind: 'temporal', id: 'post-pentecost-01' }, { kind: 'temporal', id: 'post-pentecost-01' },
{ kind: 'octave', id: 'pentecost-sunday', name: 'Pentecost', nameLa: 'Dominica Pentecostes' }, { kind: 'octave', id: 'pentecost-sunday', name: 'Pentecost', nameLa: 'Dominica Pentecostes' },
{ kind: 'sanctoral', id: 'queenship-of-the-bvm', name: 'The Queenship of the Blessed Virgin Mary', nameLa: 'Beata Maria Virgo Regina', rank: 'duplex-2-classis' },
]); ]);
}); });
}); });
+1 -1
View File
@@ -6,7 +6,7 @@ import { getLaudsCommonOverride } from '../../src/hours/lauds-psalmody-overrides
// and src/hours/lauds.ts's own generation-script provenance comments for // and src/hours/lauds.ts's own generation-script provenance comments for
// why these particular dates. // why these particular dates.
const FERIAL_SUNDAY = '2026-06-21'; const FERIAL_SUNDAY = '2026-06-21';
const FERIAL_MONDAY = '2026-06-08'; // not 08-31 -- St. Raymond Nonnatus's own day (common-of-a-confessor) const FERIAL_MONDAY = '2026-09-07'; // not 2026-06-08 -- that fell inside Corpus Christi's own octave once its own hymnody was modeled 2026-09-04, see TODO.md; not 08-31 either -- St. Raymond Nonnatus's own day (common-of-a-confessor)
const FERIAL_TUESDAY = '2033-09-06'; // not 2026-06-16 -- that fell inside Sacred Heart's own octave once modeled 2026-08-26, see TODO.md const FERIAL_TUESDAY = '2033-09-06'; // not 2026-06-16 -- that fell inside Sacred Heart's own octave once modeled 2026-08-26, see TODO.md
const LAWRENCE_OCTAVE_DAY = '2026-08-11'; // Semiduplex -- exercises isDoubleOrHigher's false branch differently than a plain feria only in rank, not in psalms (Commune override not modeled, see below) const LAWRENCE_OCTAVE_DAY = '2026-08-11'; // Semiduplex -- exercises isDoubleOrHigher's false branch differently than a plain feria only in rank, not in psalms (Commune override not modeled, see below)
+9 -8
View File
@@ -774,9 +774,9 @@ describe('resolveOrdo("matins", ...) Assumption-octave hymn fallback (2026-08-22
}); });
it("a plain ferial day outside the octave still gets the plain ferial hymn, unaffected", () => { it("a plain ferial day outside the octave still gets the plain ferial hymn, unaffected", () => {
// FERIAL_DATE (2026-12-01) is a Tuesday -- see the identical note on // FERIAL_DATE (2026-12-01) is a Tuesday in Advent -- see the identical
// the other FERIAL_DATE hymn assertion below. // note on the other FERIAL_DATE hymn assertion below.
expect(hymnLatin(FERIAL_DATE)).toContain('Consors patérni lúminis'); expect(hymnLatin(FERIAL_DATE)).toContain('Verbum supérnum, pródiens');
}); });
}); });
@@ -1074,11 +1074,12 @@ describe('resolveOrdo("matins", ...) Common-of-an-Apostle hymn + invitatory (202
}); });
it('a plain ferial day is unaffected -- still falls through to the plain ferial hymn and invitatory antiphon', () => { it('a plain ferial day is unaffected -- still falls through to the plain ferial hymn and invitatory antiphon', () => {
// FERIAL_DATE (2026-12-01) is a Tuesday, so this is Tuesday's own // FERIAL_DATE (2026-12-01) is a Tuesday in Advent, so since Advent's
// ferial hymn ("Consors patérni lúminis") since 2026-09-04's weekday- // own Matins hymn was authored (2026-09-04), this is Advent's own
// specific hymn fix -- previously every weekday fell through to the // seasonal hymn ("Verbum supérnum, pródiens"), not Tuesday's own
// same (mislabeled) Monday text ("Somno reféctis ártubus"). // ferial one -- season outranks weekday in resolveMatinsHymn's own
expect(hymnLatin(FERIAL_DATE)).toContain('Consors patérni lúminis'); // precedence, same as everywhere else.
expect(hymnLatin(FERIAL_DATE)).toContain('Verbum supérnum, pródiens');
expect(invitatoryFullLatin(FERIAL_DATE)).toContain('Veníte'); expect(invitatoryFullLatin(FERIAL_DATE)).toContain('Veníte');
expect(invitatoryFullLatin(FERIAL_DATE)).not.toContain('Regem Apostolórum'); expect(invitatoryFullLatin(FERIAL_DATE)).not.toContain('Regem Apostolórum');
}); });
+14 -6
View File
@@ -524,15 +524,23 @@ describe('resolveOrdo("vespers", ...)', () => {
// to the octave -- and Jun 9 itself is *also* inside the same // to the octave -- and Jun 9 itself is *also* inside the same
// octave, already having lost its own Simplex saint (Ss. Primus and // octave, already having lost its own Simplex saint (Ss. Primus and
// Felicianus) to it, so neither day has any sanctoral winner left to // Felicianus) to it, so neither day has any sanctoral winner left to
// anticipate. Jun 9's evening falls all the way through to the plain // anticipate.
// ferial Vespers default (Trinity week's own governing chapter/hymn), //
// with both Primus & Felicianus and Corpus Christi's octave merely // Corrected 2026-09-04: Jun 9's evening does NOT fall through to the
// commemorated, not any widow-specific content at all. // plain ferial Vespers default -- that was this test's own original,
// never-actually-verified guess, documenting the same real
// resolveOfficeWinner gap already fixed for Ascension/Pentecost (see
// TODO.md): a temporal-feast octave (Corpus Christi, no saint
// record) wasn't being recognized on ordinary-feria days within it.
// Live-verified against Divinum Officium (Monastic Tridentinum 1617,
// 2026-06-09, "Feria Tertia infra Octavam Corporis Christi"): the
// real content is Corpus Christi's own chapter/hymn ("ex Commune aut
// Festo" in the source), not Trinity week's own governing default.
const ordo = resolveOrdo('vespers', '2026-06-09'); const ordo = resolveOrdo('vespers', '2026-06-09');
const chapter = ordo.parts.find((p) => p.kind === 'chapter'); const chapter = ordo.parts.find((p) => p.kind === 'chapter');
expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('2 Cor 1:3-4'); expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('1 Cor 11:23-24');
const hymn = ordo.parts.find((p) => p.kind === 'hymn'); const hymn = ordo.parts.find((p) => p.kind === 'hymn');
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Tellúris ingens Cónditor'); expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Pange, lingua, gloriósi');
}); });
it("uses common-of-the-bvm's real office bundle for Our Lady of Mount Carmel's First Vespers", () => { it("uses common-of-the-bvm's real office bundle for Our Lady of Mount Carmel's First Vespers", () => {
+37
View File
@@ -38,3 +38,40 @@ describe('getBiblePlanReadings label uses the same book-alias normalization as v
expect(readings[0]?.label?.la).toBe('Léctio libri Judith'); expect(readings[0]?.label?.la).toBe('Léctio libri Judith');
}); });
}); });
// The Advent reading plan has 28 rows (advent-1-sunday through
// advent-4-saturday, a full 4-week Advent), but real Advent is never that
// long -- its last real day is always Dec 23 (Dec 24 is the Vigil of
// Christmas's own temporal id), while Advent 1 Sunday itself lands anywhere
// from Nov 27 to Dec 3. Even the longest possible Advent (Nov 27) is 27
// real days, one short of the full plan; the shortest (Dec 3) is 21, a
// whole week short. Whatever doesn't land on its own natural date carries
// forward one reading per day starting Christmas Day, pooled alongside
// whatever Christmastide's own calendar-dated rows already have. User
// direction, 2026-09-05: "for advent only, we need to show all of those
// chapters," accepting the spillover into Christmastide as the trade-off.
describe('Advent reading-plan carryover into Christmastide', () => {
it('a short Advent (2028: Advent 1 Sunday = Dec 3, latest possible) carries all 7 of week 4\'s readings forward, one per day', () => {
const isaiahCitations = [25, 26, 27, 28, 29, 30, 31].map(
(day) => getBiblePlanReadings('christmas-octave-sunday', 'monday', `2028-12-${day}`).find((r) => r.citation.la?.startsWith('Isa'))?.citation.la,
);
expect(isaiahCitations).toEqual(['Isa 46-48', 'Isa 49-51', 'Isa 52-54', 'Isa 55-57', 'Isa 58-60', 'Isa 61-63', 'Isa 64-66']);
});
it('a long Advent (2027: Advent 1 Sunday = Nov 28, near-earliest) carries only the last 2 readings forward', () => {
const isaiahCitations = [25, 26, 27, 28].map(
(day) => getBiblePlanReadings('christmas-octave-sunday', 'monday', `2027-12-${day}`).find((r) => r.citation.la?.startsWith('Isa'))?.citation.la,
);
expect(isaiahCitations).toEqual(['Isa 61-63', 'Isa 64-66', undefined, undefined]);
});
it('carried-over readings pool alongside Christmastide\'s own calendar-dated rows, never replacing them', () => {
const readings = getBiblePlanReadings('christmas-octave-sunday', 'friday', '2028-12-25');
expect(readings.map((r) => r.citation.la)).toEqual(['Cant 1', 'Isa 46-48']);
});
it('does not carry anything over before Christmas Day', () => {
const readings = getBiblePlanReadings('vigil-of-christmas', 'thursday', '2028-12-24');
expect(readings.find((r) => r.citation.la?.startsWith('Isa'))).toBeUndefined();
});
});