Give the Matins invitatory antiphon a real weekday cycle
Deploy / deploy (push) Successful in 2m3s

The plain ferial fallback was a single fixed year-round text that was
actually just Monday's own antiphon, mislabeled in its own comment as
live-verified for 2026-09-06 (a Sunday). The real Monastic 1617 source
genuinely varies this antiphon Sunday-Saturday, same shape as the Matins
hymn's own weekday cycle. Adds the six missing weekday variants and
dispatches on weekday in resolveMatinsInvitatoryText.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W8cttEhwbN3f6hiHQHqCae
This commit is contained in:
2026-09-06 08:52:36 -04:00
parent 7482df1777
commit 90f6450b2f
10 changed files with 144 additions and 11 deletions
+9 -2
View File
@@ -29,7 +29,11 @@ describe('resolveOrdo("matins", ...) ferial (1-nocturn) branch', () => {
expect(ordo.parts[3]).toMatchObject({ kind: 'section-heading', label: 'Invitatory' });
expect(ordo.parts[4]).toMatchObject({ kind: 'psalm', psalmNumber: 94 });
const invitatoryAntiphon = (ordo.parts[4] as { antiphon?: { text: Record<string, string> } }).antiphon;
expect(invitatoryAntiphon?.text.la).toContain('Veníte');
// FERIAL_DATE is a Tuesday — its own weekday-specific invitatory
// antiphon (see hours/matins.ts's resolveMatinsInvitatoryText), not
// Monday's "Veníte" text every weekday used to share before the
// weekday cycle was built (2026-09-06).
expect(invitatoryAntiphon?.text.la).toContain('Jubilémus Deo');
// Real practice repeats the invitatory antiphon between verse groups —
// deliberately not modeled that way here (see hours/matins.ts's own
// header): confirm there's exactly one standalone repeat, not several.
@@ -1090,7 +1094,10 @@ describe('resolveOrdo("matins", ...) Common-of-an-Apostle hymn + invitatory (202
// ferial one -- season outranks weekday in resolveMatinsHymn's own
// precedence, same as everywhere else.
expect(hymnLatin(FERIAL_DATE)).toContain('Verbum supérnum, pródiens');
expect(invitatoryFullLatin(FERIAL_DATE)).toContain('Veníte');
// Advent has no seasonal invitatory antiphon authored, so this falls
// through to Tuesday's own weekday text (see hours/matins.ts's
// resolveMatinsInvitatoryText and its 2026-09-06 weekday-cycle fix).
expect(invitatoryFullLatin(FERIAL_DATE)).toContain('Jubilémus Deo');
expect(invitatoryFullLatin(FERIAL_DATE)).not.toContain('Regem Apostolórum');
});
});