Give every day of Passiontide its own real propers and label
Deploy / deploy (push) Successful in 2m0s

Passion Sunday through Holy Saturday (14 days) all collapsed onto just
two ids (passion-sunday/palm-sunday) via resolveTemporalId's coarse
governing-Sunday bucketing, so the day-label header showed the same
generic "Weekday in Passiontide" phrase for all 14, and Maundy
Thursday/Good Friday/Holy Saturday silently rendered Palm Sunday's own
collect and antiphons.

Fixed via the same movable-feast override architecture already used for
Corpus Christi/Ascension (calendar/movable-feasts.ts's anchor-based
override), leaving resolveTemporalId itself untouched: each of the 12
non-Sunday days gets its own real winner id, its own authored
collect/Benedictus/Magnificat content, and its own temporal-feasts
display record, closing both the label bug and the underlying content
gap in one mechanism. day-label.ts's temporalLabel and
collectCommemorations also now recognize any named temporal identity
(not just Ember days), so a saint winning outright on one of these days
still surfaces the day's own real name as a commemoration.

A broader audit of every ALWAYS_OVERRIDE_TEMPORAL_IDS entry found the
same class of gap elsewhere: Corpus Christi and Sacred Heart were
completely unauthored across collect/Benedictus/Magnificat/Matins
reading, and Ascension/Trinity Sunday/Christ the King were missing
pieces too. All authored now, live-verified against the reference
engine. Added a general fallback in resolve-common.ts (missing
day-specific content degrades to the coarse Sunday's own instead of
rendering blank) so this class of gap degrades gracefully if it recurs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Lu3sgMFpwud3CerW9r6LYc
This commit is contained in:
2026-09-06 06:33:18 -04:00
parent f579ba2d2e
commit 60da11a6bd
67 changed files with 2102 additions and 14 deletions
+13 -1
View File
@@ -319,8 +319,20 @@ describe('getMagnificatAntiphon — classic weekday-default fallback', () => {
// tests/hours/vespers.test.ts's own note where this test used to
// live. Tests the mechanism directly instead, the same way this
// file's other synthetic-day cases do.
//
// `date` deliberately isn't Jan 1 any more (2026-09-06): getMagnificatAntiphon
// now also falls back to `resolveTemporalId(day.date)`'s own antiphon
// (see resolve-common.ts's getTemporalProperWithFallback, added for
// the Passiontide/movable-feast content-completeness pass) before the
// classic weekday default -- Jan 1 resolves to `christmas-octave-
// sunday`, which now has real content, so that fallback tier fired
// first and hid the one this test means to exercise. `vigil-of-
// christmas` (Dec 24) is one of the few remaining coarse ids with no
// magnificat-antiphon file of its own (see saturday-passion-week.yml/
// holy-saturday.yml for why: an anticipated First Vespers, not an
// oversight), so it still reaches the true weekday-default tier.
const day: LiturgicalDay = {
date: '2026-01-01',
date: '2026-12-24',
weekday: 'tuesday',
season: 'trinitytide',
temporalCategory: 'ordinary-feria',