Author Sunday's own Matins hymn and every season's (Advent-Paschaltide)
The "genuinely more complex, not-yet-understood two-hymn mechanism"
flagged for Sunday turned out simple: Day0 Hymnus ("Nocte surgéntes")
is just Sunday's plain per-annum hymn, and Day0 Hymnus1 ("Primo
diérum ómnium") is Septuagesima-tide's own separate seasonal hymn --
the same shape Advent/Lent/Passiontide/Paschaltide each already have.
Live-verified these 4 don't vary by weekday within their season (a
Lenten Sunday and a Lenten feria render identically). None of the 6
were authored at all before this -- every Sunday and every season day
not otherwise overridden by a winning saint/octave silently fell
through to Monday's own ferial placeholder text.
Authored matins-hymn-{sunday,septuagesima,advent,lent,passiontide,
paschaltide}.yml, all live-verified, self-contained with their own
real closing doxology baked in. Septuagesima is checked directly by
day.season in resolveMatinsHymn itself, deliberately not folded into
the shared seasonalOfficeSuffix (Lauds/Vespers have no matching
content yet -- resolveOfficeBundle there is all-or-nothing per feast,
so adding it would silently blank their chapter/hymn instead of
falling through to their current weekday default).
Known, flagged simplification: the generic Paschaltide hymn wrongly
applies during the Ascension octave, whose own real hymn isn't
authored anywhere yet -- a same-shape gap Lauds already has, not a
new regression. Updated 2 FERIAL_DATE (a Tuesday in Advent) hymn
assertions that had been asserting Tuesday's own ferial text --
Advent's own seasonal hymn correctly outranks the weekday cycle now.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
This commit is contained in:
+28
-2
@@ -450,6 +450,21 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
|
||||
return commonHymn;
|
||||
}
|
||||
}
|
||||
// Septuagesima-tide checked directly by `day.season`, not folded into
|
||||
// `seasonalOfficeSuffix` — that function is shared with Lauds/Vespers,
|
||||
// which have no matching Septuagesima content authored yet; adding it
|
||||
// there would silently blank their own chapter/hymn (resolveOfficeBundle
|
||||
// requires all-or-nothing) instead of falling through to their current
|
||||
// weekday default. Scoped to Matins alone until Lauds/Vespers' own
|
||||
// Septuagesima content exists too (see TODO.md). Its own hymn ("Primo
|
||||
// diérum ómnium") is a genuinely separate seasonal text from the plain
|
||||
// Sunday/ferial one below, live-verified 2026-02-01.
|
||||
if (day.season === 'septuagesima') {
|
||||
const septuagesima = resolveCommon('matins-hymn-septuagesima');
|
||||
if (septuagesima.status.la !== 'missing' || septuagesima.status.en !== 'missing') {
|
||||
return septuagesima;
|
||||
}
|
||||
}
|
||||
const seasonSuffix = seasonalOfficeSuffix(day.season);
|
||||
if (seasonSuffix) {
|
||||
const seasonal = resolveCommon(`matins-hymn-${seasonSuffix}`);
|
||||
@@ -457,6 +472,16 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
|
||||
return seasonal;
|
||||
}
|
||||
}
|
||||
// Sunday's own plain hymn ("Nocte surgéntes"), self-contained (own
|
||||
// doxology baked in, unlike the shared weekday one below) — checked
|
||||
// here, after every season/octave/Common tier above but before the
|
||||
// Monday-Saturday ferial cycle, live-verified 2026-09-04.
|
||||
if (day.weekday === 'sunday') {
|
||||
const sunday = resolveCommon('matins-hymn-sunday');
|
||||
if (sunday.status.la !== 'missing' || sunday.status.en !== 'missing') {
|
||||
return sunday;
|
||||
}
|
||||
}
|
||||
// The plain ferial hymn's own Monastic source (Day1-6 Hymnus, Psalterium/
|
||||
// Special/Matutinum Special.txt) carries a real seasonal-doxology
|
||||
// substitution marker (live-checked 2026-09-03) — unlike the Advent/
|
||||
@@ -470,8 +495,9 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
|
||||
// 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).
|
||||
// matins-hymn-ferial.yml's header for why Monday alone still falls to
|
||||
// the plain `matins-hymn-ferial` id, since Monday's own text simply
|
||||
// lives there unsuffixed).
|
||||
const weekdayFerialHymnIds: Partial<Record<Weekday, string>> = {
|
||||
tuesday: 'matins-hymn-ferial-tuesday',
|
||||
wednesday: 'matins-hymn-ferial-wednesday',
|
||||
|
||||
Reference in New Issue
Block a user