Strengthen the Assumption's octave against a demoted St. John Eudes
Demote St. John Eudes (Aug 19) from Duplex to Semiduplex -- too minor a confessor to keep outranking the Assumption's octave. To make that demotion actually cede the day, raise the Assumption's octave to `wins: duplex` (same pattern already used by Pentecost's octave), so an ordinary-day tie no longer automatically favors the occurring saint. Promote St. Thomas of Canterbury (Dec 29) to Duplex so he keeps winning against the Christmas octave stack now that ordinary-day ties are no longer a given. Also add a closing-day tie-break to octave-vs-octave precedence (pickWinningOctave): when two active octaves tie in rank, the one on its own closing day now wins the label contest, ahead of the existing "more recently started" tie-break. Needed because Assumption's day 3 and St. Lawrence's own closing day (Aug 17) now tie at Duplex, and the closing day should still govern that date's label. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+16
-5
@@ -115,11 +115,19 @@ export function strictestThreshold(octaves: ActiveOctave[]): FeastClass {
|
||||
*
|
||||
* - Highest effective rank (`wins`, already elevated on either octave's
|
||||
* own closing day) wins outright.
|
||||
* - Tied rank: the more recently *started* octave wins (smaller
|
||||
* `dayNumber` today) — the reasoning given was that day 1 of a newly
|
||||
* started octave needs to be fully present, which is the whole point
|
||||
* of it starting; the older octave that's already been running is
|
||||
* commemorated instead, same as any octave that loses this comparison.
|
||||
* - Tied rank, one of them on its own closing day: the closing day wins
|
||||
* — its "in Octava" day is the octave's own culminating day, so it
|
||||
* takes precedence over an ordinary day of an equally-ranked octave
|
||||
* even if that other octave started more recently (2026-08 user
|
||||
* instruction, concrete case: Aug 17, St. Lawrence's own closing day,
|
||||
* vs. the Assumption's ordinary day 3, both `duplex` once Assumption's
|
||||
* octave was strengthened — Lawrence's closing day wins).
|
||||
* - Tied rank, neither (or both) on their own closing day: the more
|
||||
* recently *started* octave wins (smaller `dayNumber` today) — the
|
||||
* reasoning given was that day 1 of a newly started octave needs to be
|
||||
* fully present, which is the whole point of it starting; the older
|
||||
* octave that's already been running is commemorated instead, same as
|
||||
* any octave that loses this comparison.
|
||||
*
|
||||
* Undefined when no octave is active at all. Every other active octave
|
||||
* still gets commemorated regardless of which one wins here — this
|
||||
@@ -187,6 +195,9 @@ export function pickWinningOctave(active: ActiveOctave[]): ActiveOctave | undefi
|
||||
if (rankCmp < 0) {
|
||||
return best;
|
||||
}
|
||||
if (candidate.isClosingDay !== best.isClosingDay) {
|
||||
return candidate.isClosingDay ? candidate : best;
|
||||
}
|
||||
return candidate.dayNumber < best.dayNumber ? candidate : best;
|
||||
}, undefined);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user