Give the Matins ferial hymn its own text per weekday, not one for all

matins-hymn-ferial.yml turned out to already be Monday's own hymn
("Somno reféctis ártubus"), mislabeled as a single fixed year-round
text and used unconditionally for every weekday -- the source
(Psalterium/Special/Matutinum Special.txt) genuinely varies this hymn
Monday through Saturday, the classic "week of hymns". Caught first on
Friday ("Tu Trinitátis Únitas" expected, Monday's text shown), then
again on a real Ember Saturday ("Summæ Deus cleméntiæ" expected).

Authored matins-hymn-ferial-{tuesday,wednesday,thursday,friday,
saturday}.yml (Monastic 1617 text, live-verified against the CGI
instance directly, including Friday's own real M-track word-swaps) and
wired resolveMatinsHymn's final fallback tier to pick by day.weekday.
Sunday is left on the existing placeholder, documented as a real,
more complex not-yet-understood gap (a two-hymn source split).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
This commit is contained in:
2026-09-04 09:32:05 -04:00
parent 4b6d55d56c
commit b8cb636446
8 changed files with 489 additions and 9 deletions
+18 -1
View File
@@ -462,7 +462,24 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
// substitution marker (live-checked 2026-09-03) — unlike the Advent/
// Paschaltide seasonal hymns above, whose Monastic forms are each fixed,
// non-swapping text, so only this final fallback needs the swap.
const body = resolveCommon('matins-hymn-ferial');
//
// Weekday-specific (2026-09-04): the source's plain Matins hymn genuinely
// varies Monday-Saturday (the classic "week of hymns" — Somno reféctis
// ártubus, Consors patérni lúminis, Rerum Creátor óptime, Nox atra rerum,
// Tu Trinitátis Únitas, Summæ Deus cleméntiæ), not one fixed year-round
// 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
// asking what actually renders on a real Ember Saturday (see
// matins-hymn-ferial.yml's header for why Sunday alone still falls to
// the plain `matins-hymn-ferial` id as a documented placeholder).
const weekdayFerialHymnIds: Partial<Record<Weekday, string>> = {
tuesday: 'matins-hymn-ferial-tuesday',
wednesday: 'matins-hymn-ferial-wednesday',
thursday: 'matins-hymn-ferial-thursday',
friday: 'matins-hymn-ferial-friday',
saturday: 'matins-hymn-ferial-saturday',
};
const body = resolveCommon(weekdayFerialHymnIds[day.weekday] ?? 'matins-hymn-ferial');
const doxology = resolveCommon(getHymnDoxologyId(day, 'matins-hymn-doxology-per-annum'));
return appendDoxology(body, doxology);
}