Two related fixes surfaced while chasing why St. Gregory Thaumaturgus
appeared to be misdated on Nov 18:
- calendar/commemorations.ts's `ordinary-sunday` case was transferring a
Semiduplex (or lower) saint off the Sunday instead of commemorating it
in place — an earlier, unverified guess. Live-verified against both
Tridentine 1906 and Divino Afflatu 1954 (St. Gregory Thaumaturgus, St.
Clement, St. Apollinaris, St. Thomas Becket, all real cases): the saint
stays and is commemorated on the Sunday itself, same as Simplex, never
pushed to the next open day. This is what was actually moving Gregory
onto Nov 18 — not a data error. `applyChristmasOctaveSunday`'s own
Dec 26-29 special case needed a matching adjustment (per its own
documented intent, the displaced saint there is deliberately *not*
commemorated in place, since he reappears in full on Dec 30 instead).
- getDayLabel had five branches, each hand-assembling its own
filter/format logic for which commemorations to show — which is why
the octave phrasing, the closing-day title, and a missing Sunday
commemoration turned into three separate bugs earlier instead of one.
Replaced with a single shared `collectCommemorations` used by every
branch. This also exposed that the sanctoral-winner branch never
showed any commemorated saint at all, and every other branch only
showed the *first* one (`.find()`), silently dropping real collisions
— both now show every commemorated saint, matching this app's own
generous-commemoration design.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Found while starting the December sanctoral pull: Advent's plain
(non-Ember) weekday ferias have real standing in the live Monastic 1617
engine that the existing ordinary-feria category couldn't represent --
a Simplex saint (St. Bibiana, Dec 2) is merely commemorated there rather
than winning outright, while a Semiduplex+ saint (St. Nicholas, Dec 6)
wins with the feria itself commemorated back. Adds a third, weaker
privileged-feria-minor tier (Semiduplex+ threshold, vs. privileged-
feria's Duplex+) rather than reusing either existing tier, mirroring how
privileged-feria/privileged-feria-major were split in March. Lent's own
ordinary ferias likely share this property but are left as-is, unverified
this session.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
9 collects, 3 antiphons -- including backfilling the pre-existing All
Saints entry. Also updates two pre-existing tests whose shared date
(2025-11-30, Advent I Sunday) now correctly shows St. Andrew commemorated
alongside it, confirmed against the live reference engine.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>