Three separate resolver files (terce.ts/sext.ts/none.ts), not a shared
little-hour module — they're structurally identical but kept independent
by choice. Ordo verified against Divinum Officium (Monastic Tridentinum
1617): opening versicle, self-contained hymn, one antiphon framing three
psalms (no closing repeat, unlike Prime), a capitulum with its own
embedded short versicle/response, the day's own collect, and a closing
identical across all three hours.
Also fills in psalter-distribution.yml's previously-missing Sunday/
Monday/Tuesday psalm entries (Ps 118 sections for Sunday/Monday; Tuesday
turns out to share Wednesday/Thursday's native gradual-psalm set, not a
distinct one). Friday/Saturday's antiphons are derived from each day's
first psalm rather than reusing the native gradual antiphons, since
those two days already use a redistributed, non-native psalm set.
hours/types.ts gains a 'day-collect' part kind — the first ordo to use
the day's own Proper collect rather than a fixed text.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Non-Sunday Monastic Matins is 12 psalms/day; ferial Terce/Sext/None always
repeats the same 9 (119-127) regardless of weekday. Worked out an editorial
redistribution in conversation: cut non-Sunday Matins to 9/day, and hand
the freed capacity to Friday's and Saturday's Terce/Sext/None instead of
discarding it, keeping Wednesday/Thursday's 119-127 as-is and leaving
Sunday/Monday/Tuesday untouched entirely.
No code reads `matins`/`terce`/`sext`/`none` from this table yet — those
hours don't exist until milestone 3 (T/S/N) and milestone 5 (Matins).
Recording the decision now, with the method spelled out in the comment,
so it survives until then rather than needing to be re-derived. Verified
against a real Monastic Tridentinum 1617 run throughout, not reconstructed
from memory.
Pulls in verified content from Divinum Officium rather than placeholders:
17 psalms (2, 6, 7-19, 118, 129), 365 days of the Martyrology, and the full
121-reading Regula cycle, plus the Athanasian Creed.
Ordo corrections driven by review against the real engine output:
- Capitulum and Preces now pick a Sunday/feast vs. ferial form
(calendar/isSundayOrFeast); ferial Preces said every ferial day by choice.
- Chapter responsory, hymn doxology, and the opening versicle's
Alleluia/Laus tibi all vary by season via a shared resolver
(hours/seasonal-propers.ts).
- Real Roman Kalends/Nones/Ides Latin dating (calendar/roman-date.ts,
verified against 363/365 real Martyrology headings) plus the historical
"bis sextus" Feb 29 handling, and the Martyrology's Luna (moon-day)
heading (a ported Golden-Number calculation).
- Fixed responsory structure (was missing its initial full repeat),
weekday psalm antiphons (opening as incipit-or-full by rank, full
repeat after the psalms/Creed as its own part, "*" chant mark kept),
scripture citations on the capitulum/lectio brevis, and V./R. markers
switched from Unicode symbols to plain text for reliable font rendering.
- Dropped Pretiosa and the dead-commemoration psalm (129) for time;
trimmed section headings down to the ones that are actually named
things (Preces, Chapter Office, etc. no longer relabel connective text).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Client-side-first PWA (Vite/TS, no backend) per the approved plan: day-
navigable shell listing all 8 hours, Prime fully resolves via the
calendar -> psalter -> ordo pipeline, the other 7 hours are registered
but flagged not-implemented. Sanctoral/temporal calendar data uses a
day -> id indirection layer (saints, easter-offsets, fixed-date-calendar)
so reassigning a feast to a different day is a data edit, not a code
change. Docker (Caddy-serving-static) + Gitea CI workflow scaffolded to
match the eec/drip/bookshop operational pattern.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>