Add Vespers' ferial Preces, sourced from Tridentine 1906/1910

Monastic 1617 has no ferial Preces at Vespers, same gap Lauds already
had — the fuller "Preces feriales Vespera" is byte-for-byte the Lauds
ferial Preces with Psalm 129 swapped for Psalm 50 in the source, live-
verified against the same clean Advent feria already used for Lauds.
The short Sunday/feast form turns out to be identical at both hours too,
so it's reused directly rather than duplicated.

Factors the shared ferial-or-vigil predicate out of hours/lauds.ts into
resolve-common.ts's isFerialOrVigil so both hours' -preces cases resolve
it the same way instead of keeping two copies in sync by hand.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-13 21:30:01 -04:00
parent ce954fea9a
commit 4d88568c42
12 changed files with 242 additions and 20 deletions
+13
View File
@@ -155,6 +155,19 @@ export type HourPart =
// deliberately not the shared `isSundayOrFeast` (a Vigil counts as a
// "feast" there; here it needs to count as ferial-like instead).
| { kind: 'lauds-preces' }
// Vespers only. Mirrors 'lauds-preces' exactly — the Tridentine
// 1906/1910 "Preces feriales Vespera" (source: `@:Preces feriales
// Laudes:s/129/50/` — byte-for-byte the Lauds ferial Preces with Psalm
// 129 swapped for Psalm 50, live-verified against a clean Advent feria
// 2026-12-17) on a ferial or vigil day, replacing the short Sunday/feast
// litany otherwise said before the day's collect(s) — see hours/
// resolve-common.ts's isFerialOrVigil (shared with 'lauds-preces') and
// hours/vespers.ts's 'vespers-preces' case. Unlike Lauds, the short form
// here reuses `lauds-short-litany` directly rather than a Vespers-named
// duplicate — confirmed byte-identical by live query at both hours,
// same reuse discipline as data/hours/vespers.yml's `lauds-conclusio`
// closing.
| { kind: 'vespers-preces' }
// Lauds/Vespers. The day's own collect *and* one more per commemoration
// (calendar/types.ts's LiturgicalDay.commemorations) — see hours/
// resolve-common.ts's getDayCollects. Distinct from the singular