Add reusable Matins building blocks: types, content stores, seed data

New ResolvedPart kinds (nocturn-psalmody, te-deum) and lesson fields
(nocturn, source, isGospel, responsory) in hours/types.ts. Three new
content-store modules: propers/bible-plan.ts (the user's own continuous
scripture-reading plan, replacing the historical Nocturn-1 lectionary),
propers/nocturn-readings.ts (general feast/temporal-day Nocturn 2-3
readings, extending propers/octave-readings.ts's combine-into-one-reading
pattern via a newly-exported resolvePassages), and
propers/matins-responsories.ts (a per-book responsory pool, matched
loosely rather than by exact citation).

Data: Sunday's fixed 12-psalm/3-canticle psalmody (live-verified against
the reference engine), the invitatory antiphon, ferial hymn and
capitulum, the Te Deum, a seeded Isaiah responsory, two live-transcribed
scripture chapters, and the two bible-plan rows needed for this pass'
proof content.
This commit is contained in:
2026-08-14 11:40:31 -04:00
parent 5162eabdb4
commit 83bf55efdb
16 changed files with 1008 additions and 2 deletions
@@ -0,0 +1,24 @@
# The user's own continuous scripture-reading plan (source: personal TSV,
# not a historical lectionary — see src/propers/bible-plan.ts's header),
# row "Tuesday of III Advent" -> "Isa 36-37, Wis 14". Two readings, no
# Gospel that day. Each `passages` list becomes one combined Matins
# reading (see hours/matins.ts) — Isa 36-37 is one continuous 2-chapter
# reading, not two separate ones, matching the user's own "recombine
# where the source doesn't genuinely split" instruction (there's no
# source split here at all; this is just how the plan cites a multi-
# chapter passage).
#
# Verse text for these chapters isn't authored in src/data/scripture yet
# (the full Vulgate/Douay-Rheims import is a deferred, separate project) —
# these readings resolve with real citations and honestly `missing` body
# text, which is expected for this proof pass.
temporalId: advent-3
weekday: tuesday
readings:
- passages:
- { book: isa, chapter: 36 }
- { book: isa, chapter: 37 }
status: { la: missing, en: missing }
- passages:
- { book: sap, chapter: 14 }
status: { la: missing, en: missing }
@@ -0,0 +1,21 @@
# The user's own continuous scripture-reading plan, row "14th Sunday
# after Trinity" -> "Tob 1-2, Sir 45" (temporalId post-pentecost-15 =
# "14th Sunday after Trinity" in this app's own Trinity-counted display
# label — Trinity Sunday itself is post-pentecost-01, so "Nth Sunday
# after Trinity" is always post-pentecost-(N+1); see calendar/
# day-label.ts and calendar/temporal-id.ts). No Gospel reading on this
# Sunday row — confirmed a deliberate editorial choice across the whole
# plan (the user's plan never puts a Gospel reading on a Sunday), not a
# gap. This Sunday's own Nocturn 1 (see hours/matins.ts) uses this data;
# Nocturns 2-3 use the day's own patristic/Gospel content instead (see
# src/propers/nocturn-readings.ts).
temporalId: post-pentecost-15
weekday: sunday
readings:
- passages:
- { book: tob, chapter: 1 }
- { book: tob, chapter: 2 }
status: { la: missing, en: missing }
- passages:
- { book: sir, chapter: 45 }
status: { la: missing, en: missing }
@@ -0,0 +1,38 @@
# A per-book pool of Matins responsories, matched loosely (by scriptural
# book, not exact citation) rather than tied to a specific chapter/verse —
# per the user's own description (2026-08): responsories aren't attuned to
# chapter/verse historically, so a book-level match is the right
# granularity, not a gap to fill in later with exact citations.
#
# Seeded, not a full pool — only the books needed for this build's proof
# content are here (see TODO.md for what's deferred). Cycled in order
# per-day when a Nocturn-1 reading's book has more than one candidate
# responsory available; the day's own responsory count doesn't have to
# match the pool's size.
#
# `isa` sourced from a live query (Monastic Tridentinum 1617, 2026-12-15,
# a plain ferial Tuesday of Advent III — real, un-summer-contracted
# Lectio 1-3 on Isa 30:18-28) — this is genuine historical Advent-season
# Isaiah content, reused here as a loose match for the user's own
# continuous Isaiah reading even though the exact chapters differ (Isa
# 36-37 vs. the source's own Isa 30), consistent with "not attuned to
# chapter/verse."
isa:
- r:
la: "Ægýpte, noli flere, quia Dominátor tuus véniet tibi, ante cujus conspéctum movebúntur abýssi, * Liberáre pópulum suum de manu poténtiæ."
en: "Weep not, O Egypt, for the Ruler cometh unto thee, and the depths shall be moved at His presence. * To deliver His people out of the hand of the mighty."
v:
la: "Ecce véniet Dóminus exercítuum, Deus tuus cum potestáte magna."
en: "Behold, the Lord of hosts, thy God, cometh with great power."
- r:
la: "Prope est ut véniat tempus ejus, et dies ejus non elongabúntur: * Miserébitur Dóminus Jacob, et Israël salvábitur."
en: "Her time is near to come, and her days shall not be prolonged. * The Lord shall have mercy on Jacob, and Israel shall be saved."
v:
la: "Revértere, virgo Israël, revértere ad civitátes tuas."
en: "Turn again, O Virgin of Israel, turn again to thy cities."
- r:
la: "Descéndet Dóminus sicut plúvia in vellus: * Oriétur in diébus ejus justítia, et abundántia pacis."
en: "The Lord shall come down like rain upon a fleece. * In His days shall righteousness flourish, and abundance of peace."
v:
la: "Et adorábunt eum omnes reges, omnes gentes sérvient ei."
en: "All the kings of the earth shall fall down before Him, all nations shall serve Him."
@@ -0,0 +1,73 @@
# Sunday Matins' fixed 12-psalm/3-canticle psalmody (Rule of Benedict ch.
# 18's own Sunday arrangement, distinct from Roman Matins' 9-psalm Sunday
# scheme). Sourced from Divinum Officium's Monastic-labeled block,
# `Latin/Psalterium/Psalmi/Psalmi matutinum.txt`'s `[Daym0]` section
# (English parallel at the same section name in the `English/` tree), and
# live-verified against a real `prayMatutinum` query (Monastic Tridentinum
# 1617, 2026-09-06, an ordinary Sunday with no feast collision) — the
# psalm numbers, canticle citations, and lesson/Te Deum sequence all
# matched exactly.
#
# Unlike the ferial weekday table (psalter-distribution.yml's `matins:`),
# this doesn't vary by weekday — it's the same every Sunday, but the
# antiphon *text* does vary by season even though the psalm numbers don't:
# `[Advm0]` right after `[Daym0]` in the same source file has its own
# Advent-specific antiphon set. Only the plain (non-seasonal) `[Daym0]` set
# is authored here; seasonal variants are a deferred follow-on, not
# required for this build (see TODO.md).
#
# Nocturn 3's 3 canticles are identified via `Psalterium/Monastic
# canticles.txt`'s internal numbering key (266 = Isa 33:2-10, 267 = Isa
# 33:13-18, 268 = Sirach/Ecclesiasticus 36:14-19, cited "sir" per this
# project's own scripture-store convention), confirmed by the live query
# ("Canticum Isaiæ" / "Canticum Isaiae" / "Canticum Ecclesiasticae").
# Unlike nocturns 1-2 (each psalm pair under its own antiphon), all 3
# canticles share a single antiphon ("Allelúja, allelúja, allelúja").
nocturn1:
groups:
- psalms: [20, 21]
antiphon:
la: "Dómine * in virtúte tua lætábitur rex."
en: "The king rejoices * in Thy strength, O Lord."
- psalms: [22, 23]
antiphon:
la: "Dóminus regit me * et nihil mihi déerit: in loco páscuæ ibi me collocávit."
en: "The Lord ruleth me * and I shall want nothing. He hath set me in a place of pasture."
- psalms: [24, 25]
antiphon:
la: "Óculi mei * semper ad Dóminum."
en: "My eyes * are ever towards the Lord."
versicle:
v: { la: "Memor fui nocte nóminis tui Dómine.", en: "In the night I have remembered thy name, O Lord:" }
r: { la: "Et custodívi legem tuam.", en: "And have kept thy law." }
nocturn2:
groups:
- psalms: [26, 27]
antiphon:
la: "Dóminus * defénsor vitæ meæ."
en: "The Lord is the defence * of my life."
- psalms: [28, 29]
antiphon:
la: "Adoráte * Dóminum in aula sancta ejus."
en: "Worship the Lord * in His holy courts."
- psalms: [30, 31]
antiphon:
la: "In tua justítia * líbera me, Dómine."
en: "Deliver me * in Thy righteousness."
versicle:
v: { la: "Média nocte surgébam ad confiténdum tibi.", en: "I rose at midnight to give praise to thee." }
r: { la: "Super justítia justificatiónis tuæ.", en: "For the judgments of thy justification." }
nocturn3:
canticles:
- { book: isa, chapter: 33, verses: "2-10" }
- { book: isa, chapter: 33, verses: "13-18" }
- { book: sir, chapter: 36, verses: "14-19" }
antiphon:
la: "Allelúja, allelúja, allelúja."
en: "Alleluia, alleluia, alleluia."
versicle:
v: { la: "Exaltáre Dómine in virtúte tua.", en: "Be Thou exalted, O Lord, in Thine own strength." }
r: { la: "Cantábimus et psallémus virtútes tuas.", en: "We will sing and praise Thy power." }