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);
|
||||
}
|
||||
|
||||
@@ -10,5 +10,16 @@ rank: duplex-1-classis
|
||||
common: common-of-the-bvm
|
||||
propers: "assumption"
|
||||
# Has a real octave (Aug 15-22) -- see calendar/types.ts's OctaveConfig.
|
||||
# Strengthened to `wins: duplex` (2026-08 user decision), same pattern
|
||||
# as pentecost-sunday.yml's own override -- a Semiduplex saint no
|
||||
# longer just ties (and, by the ordinary-day tie rule, wins) an
|
||||
# ordinary octave day here; it loses outright to the octave instead.
|
||||
# Concrete motivation: st-john-eudes.yml's demotion to Semiduplex only
|
||||
# actually cedes Aug 19 to the octave because of this. Side effect
|
||||
# accepted by the user: st-damasus.yml (Dec 11, Immaculate Conception's
|
||||
# octave) and st-nicholas-of-tolentino.yml (Sep 10, Nativity of the
|
||||
# BVM's octave) are unrelated octaves not touched by this change, so
|
||||
# they're unaffected -- this only strengthens Assumption's own octave.
|
||||
octave:
|
||||
enabled: true
|
||||
wins: duplex
|
||||
|
||||
@@ -4,9 +4,16 @@
|
||||
# No [Ant 1] of his own -- benedictusCommon/minorHoursCommon fall back
|
||||
# to the plain Common of a Confessor. No Lectio7-9 in his own file --
|
||||
# defers to the Common's own Nocturn 3, not transcribed here.
|
||||
#
|
||||
# Deliberately demoted from the reference engine's own Duplex to
|
||||
# Semiduplex (2026-08 user decision) -- a minor confessor of no
|
||||
# particular standing shouldn't outrank the Assumption's own octave,
|
||||
# now strengthened to `wins: duplex` (see assumption.yml) specifically
|
||||
# so this demotion actually takes effect on his day (Aug 19, the
|
||||
# octave's 5th day) instead of merely tying and still winning.
|
||||
id: st-john-eudes
|
||||
name: "St. John Eudes, Confessor"
|
||||
rank: duplex
|
||||
rank: semiduplex
|
||||
common: common-of-a-confessor
|
||||
propers: "st-john-eudes"
|
||||
benedictusCommon: common-of-a-confessor
|
||||
|
||||
@@ -6,9 +6,15 @@
|
||||
# `privileged-feria` model would have wrongly forbidden). Octave day
|
||||
# commemorated in return. Own proper collect, no unique antiphon of his
|
||||
# own.
|
||||
#
|
||||
# Deliberately promoted from the reference engine's own Semiduplex to
|
||||
# Duplex (2026-08 user decision, made alongside assumption.yml's octave
|
||||
# strengthening to `wins: duplex`) -- purely to keep him winning Dec 29
|
||||
# outright once the common octave-vs-saint default is no longer
|
||||
# uniformly Semiduplex everywhere; not a reference-engine finding.
|
||||
id: st-thomas-becket
|
||||
name: "St. Thomas of Canterbury, Bishop and Martyr"
|
||||
rank: semiduplex
|
||||
rank: duplex
|
||||
common: common-of-a-martyr-bishop
|
||||
propers: "st-thomas-becket"
|
||||
# P/T/S/N: no [Ant Prima]/etc of its own in the source (12-29o.txt) --
|
||||
|
||||
Reference in New Issue
Block a user