fix: never celebrate a commemoration-grade office over the feria (#424) #425

Merged
manlycucumber merged 1 commit from fix/commemoration-only-never-celebrated into develop 2026-07-02 17:38:13 +00:00
manlycucumber commented 2026-07-02 17:36:54 +00:00 (Migrated from github.com)

Second bug found by the validation harness (#45) against the missalemeum oracle
(the base-1962 authority); sibling of #422.

The bug

A IV-class commemoration (kind=commemoration-only) tied the feria at the
fourth tier and won DayResolver::sortByTier()'s id-based tie-break, so it was
celebrated as the day's office and the feria omitted. St Silverius (20 Jun), St
Christina (24 Jul), Ss Abdon & Sennen (30 Jul) and ~50 days/year showed a red
martyr's office instead of the green feria that should merely commemorate them.

Fix

ObservanceKind::COMMEMORATION_ONLY existed but was never consulted in precedence.
A commemoration has no proper office (nn. 106-114). Add a commemoration tier below
the whole Table of Liturgical Days (ordinal 29, in the cited precedence data) and
return it from tierOf() for that kind, so a commemoration always yields the day to
a real office and is commemorated — or omitted where the day admits none (Triduum).

Blast radius (verified)

A day-by-day diff of 2024 shows 42 changed days: 41 commemoration-only -> feria
swaps (the fix), plus one where Corpus Christi already omitted both offices and only
the displaced ordering moved. Divergence vs the oracle across 2024-2026 dropped from
269->200 commemoration and 186->139 colour mismatches. Golden re-frozen.

Gates green: lint 111/111, analyse [OK], test 625 passing, corpus verify OK.

Closes #424.

Second bug found by the validation harness (#45) against the missalemeum oracle (the base-1962 authority); sibling of #422. ## The bug A IV-class **commemoration** (`kind=commemoration-only`) tied the feria at the `fourth` tier and won `DayResolver::sortByTier()`'s id-based tie-break, so it was celebrated as the day's office and the feria omitted. St Silverius (20 Jun), St Christina (24 Jul), Ss Abdon & Sennen (30 Jul) and ~50 days/year showed a red martyr's office instead of the green feria that should merely commemorate them. ## Fix `ObservanceKind::COMMEMORATION_ONLY` existed but was never consulted in precedence. A commemoration has no proper office (nn. 106-114). Add a `commemoration` tier below the whole Table of Liturgical Days (ordinal 29, in the cited precedence data) and return it from `tierOf()` for that kind, so a commemoration always yields the day to a real office and is commemorated — or omitted where the day admits none (Triduum). ## Blast radius (verified) A day-by-day diff of 2024 shows 42 changed days: 41 `commemoration-only -> feria` swaps (the fix), plus one where Corpus Christi already omitted both offices and only the displaced ordering moved. Divergence vs the oracle across 2024-2026 dropped from 269->200 commemoration and 186->139 colour mismatches. Golden re-frozen. Gates green: lint 111/111, analyse [OK], test 625 passing, corpus verify OK. Closes #424.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Directorium/Core!425
No description provided.