Name Ember days in the day label, demoted or winning outright

calendar/day-label.ts never surfaced an Ember day's own identity
anywhere: collectCommemorations only matched a temporal commemoration
against resolveTemporalId(day.date), never an Ember-relabeled id, and
the winning-outright fallback used the generic ordinal weekday label
with no id awareness at all. Adds a standalone emberDayLabel lookup,
deliberately kept out of temporal-feasts.ts since that table doubles
as isFerialOrVigil's bareness check and would have silently turned
off Ember days' own ferial Preces.

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 07:12:32 -04:00
parent 03d39dc911
commit 88e8a5b404
3 changed files with 74 additions and 1 deletions
+20
View File
@@ -5232,3 +5232,23 @@ all 6 winning-outright dates; Magnificat status on Advent Ember Wednesday, the o
overriding mechanism to complicate the assertion). `npm test` (2023 passed, 47 files) and
`tsc --noEmit` both pass.
**Follow-on, same day**: user asked why the Ember days didn't actually show anywhere in the app
on 2026-09-16/18/19 despite the above. Real bug, found by resolving `getDayLabel` directly for
those dates: `calendar/day-label.ts`'s `collectCommemorations` only ever matched a `temporal`-kind
commemoration against `resolveTemporalId(day.date)` (the plain, un-relabeled id for that date) —
never against an Ember-relabeled id, so `applyEmberDay`'s own commemoration was silently dropped
from the label every time. Worse, even the *winning-outright* case had no name: the final
fallback branch calls the generic `temporalLabel(day)` (pure season/weekday arithmetic, no id
awareness at all), so an Ember day that won outright rendered as bare "Wednesday in the Nth week
after Trinity (Feria)" with zero mention of Ember anywhere.
Fixed with a small standalone `EMBER_DAY_NAMES`/`emberDayLabel` lookup in `day-label.ts` itself
(6 entries, Latin names read straight from each day's own `[Officium]` header) — deliberately
*not* added to `temporal-feasts.ts`'s named-feast table, since that table doubles as `resolve-
common.ts`'s `isFerialOrVigil` bareness check (`isBareFeria = ... && !getTemporalFeastRecord(...)`)
and adding Ember ids there would have silently turned off their own ferial Preces (their `[Rule]`
is literally "Preces Feriales"). Wired into both places: `collectCommemorations`'s temporal
branch (demoted case) and `getDayLabel`'s final fallback (winning-outright case). New assertions
in `tests/calendar/ember-days.test.ts` cover both. `npm test` (2024 passed) and `tsc --noEmit`
both pass.