Full precedence sweep of temporal-categories.yml, two more real bugs
Deploy / deploy (push) Successful in 1m27s
Deploy / deploy (push) Successful in 1m27s
Following the Ascensiontide fix, swept every remaining unverified Sunday/ feria precedence tier against the live reference engine: - commemorations.ts's privileged-sunday rule was itself wrong: a duplex-majus+ candidate was given a bare commemoration instead of transferring, never actually verified. Live-checked the Immaculate Conception (transfers off Advent II) and the Annunciation (transfers off Palm/Easter Sunday) - confirmed correct by direct instruction. privileged-sunday now transfers every rank unconditionally. - eastertide's own Sunday tier was backwards (privileged-sunday instead of ordinary-sunday) for the ordinary Sundays after Easter - live- verified twice (Finding of the Holy Cross, St. Mark both win outright). Easter Day itself still needs the stronger tier, now special-cased directly since Sundays never consult the offset table. Six existing tests updated to reflect real, live-verified behavior - each had the old wrong "commemorated in place" assumption baked into its expected value. Remaining unverified entries (Vigil of Pentecost/ Christmas, Corpus Christi/Sacred Heart) documented as such rather than silently assumed correct. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017XMSokiTD2Qc5vPP2YQu3Q
This commit is contained in:
@@ -188,13 +188,22 @@ export function decideOccurrence(
|
||||
};
|
||||
|
||||
case 'privileged-sunday':
|
||||
if (isAtLeast(sanctoral.rank, 'duplex-majus')) {
|
||||
// Never displaced, but a sufficiently high feast still gets a nod.
|
||||
return { winner: temporalWinner, commemorations: [sanctoralCommemoration(sanctoral)] };
|
||||
}
|
||||
// Below duplex-majus, a privileged Sunday wants nothing at all —
|
||||
// not even the bare commemoration an ordinary Sunday would allow a
|
||||
// Simplex — so everything here transfers.
|
||||
// A privileged Sunday wants nothing at all, no matter how high the
|
||||
// candidate ranks — not even the bare commemoration an ordinary
|
||||
// Sunday would allow a Simplex, and no exception for duplex-majus+ —
|
||||
// everything transfers. Live-verified 2026-09-01, three independent
|
||||
// dates: the Immaculate Conception (Duplex I. classis) transfers off
|
||||
// Advent II with no commemoration at all (real dates 2024/2030/2041),
|
||||
// and the Annunciation (also Duplex I. classis) transfers off both
|
||||
// Palm Sunday and Easter Sunday itself the same way (2029/2035/2040/
|
||||
// 2046) — confirmed by direct instruction as the correct behavior,
|
||||
// correcting an earlier, never-actually-verified "duplex-majus+
|
||||
// still gets a nod" guess. (Where a transferred candidate actually
|
||||
// lands is a separate, still-generic `transferDirectionOf`/next-
|
||||
// open-day mechanism — the Annunciation's own real rule of jumping
|
||||
// *past* the whole Easter Octave rather than landing inside it is a
|
||||
// known follow-on, blocked on the not-yet-built Easter-octave
|
||||
// mechanism; see TODO.md.)
|
||||
return {
|
||||
winner: temporalWinner,
|
||||
commemorations: [],
|
||||
|
||||
@@ -202,12 +202,23 @@ export function adventEmberDayOffset(isoDate: string): number | undefined {
|
||||
* the Christmas vigil (Dec 24 can land on a Sunday) — and a Sunday's own
|
||||
* privileged/ordinary status should win in that case regardless, so
|
||||
* Sundays are resolved straight from `bySeason` without consulting the
|
||||
* overrides at all.
|
||||
* overrides at all. The one deliberate exception is Easter Sunday itself
|
||||
* (offset 0): `eastertide`'s own `bySeason` default is `ordinary-sunday`
|
||||
* (live-verified for the *ordinary* Sundays that follow it — see that
|
||||
* entry's own comment), but Easter Day needs the stronger
|
||||
* `privileged-sunday` tier instead (live-verified 2026-09-01: the
|
||||
* Annunciation, Duplex I. classis, transfers off Easter Day itself in
|
||||
* years they coincide, the same "transfers, no exception" behavior as
|
||||
* every other privileged-sunday case) — checked directly here rather
|
||||
* than via `offsets`, since offsets are never consulted for a Sunday.
|
||||
*/
|
||||
export function resolveTemporalCategory(isoDate: string, season: Season, weekday: Weekday): TemporalCategory {
|
||||
const bySeasonEntry = temporalCategories.bySeason[season];
|
||||
const base = bySeasonEntry ? (weekday === 'sunday' ? bySeasonEntry.sunday : bySeasonEntry.feria) : 'ordinary-feria';
|
||||
if (weekday === 'sunday') {
|
||||
if (season === 'eastertide' && easterOffsetOf(isoDate) === 0) {
|
||||
return 'privileged-sunday';
|
||||
}
|
||||
return base;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user