Model Trinity Sunday as a real feast, not just a cosmetic label
Trinity Sunday wasn't modeled at all: getDayLabel had a purely
cosmetic "Trinity Sunday" label overlay for the Sunday after
Pentecost, but resolveTemporalId just fell back to post-pentecost-01
(ordinary-sunday category), so any Duplex+ saint assigned that date
(e.g. the Queenship of the BVM, fixed May 31) won outright, real
Trinity Sunday content never appearing anywhere.
Added a real temporal-feasts/trinity-sunday.yml record (Easter+56,
Duplex II. classis, live-verified). Per direct instruction,
unconditional: true (same shape as christ-the-king.yml) -- a
principal Sunday shouldn't lose a same-rank fixed-date collision, and
the one real collision case (Queenship of the BVM) isn't
independently verifiable against Monastic 1617 at all (that calendar
doesn't carry the Queenship feast -- May 31 there is St. Petronilla
instead).
Authored the full office and registered trinity-sunday in
ALWAYS_OVERRIDE_TEMPORAL_IDS -- the same generic mechanism already
built for the Pentecost-cluster fix, no new code needed: collect,
Benedictus/Magnificat antiphons, Matins hymn ("Summæ Deus cleméntiæ"),
Lauds/Vespers chapter (shared, Rom 11:33) and hymn (shared, "O lux
beáta Trínitas", already the pre-Urban VIII text), each hour's own
distinct responsory/versicle -- all live-verified 2026-05-31.
Fixed 3 pre-existing tests written around the old cosmetic-label
behavior, two of which had never-verified guesses baked in as if
correct: day-label.test.ts's "names the anchor day itself" test and
its "outranks an active octave" test (was asserting "Duplex I Class",
a guess -- the real live-verified rank is Duplex II);
transfer.test.ts's St. Felix I test.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
This commit is contained in:
@@ -88,22 +88,20 @@ describe('transfer mechanism (resolveDay integration)', () => {
|
||||
|
||||
// Felix doesn't reach Trinity Sunday at all now. Trinity Sunday 2026
|
||||
// (May 31) is also the Queenship of the Blessed Virgin Mary's own
|
||||
// fixed day (Duplex II Classis) -- since this app models Trinitytide
|
||||
// Sundays as plain `ordinary-sunday` (no special first-class standing
|
||||
// of their own, see temporal-categories.yml), a Duplex+ sanctoral
|
||||
// feast wins outright here per the normal ordinary-Sunday rule, with
|
||||
// both the day's own temporal id and Pentecost's octave commemorated
|
||||
// in return.
|
||||
expect(sunday.winner).toEqual({
|
||||
kind: 'sanctoral',
|
||||
id: 'queenship-of-the-bvm',
|
||||
name: 'The Queenship of the Blessed Virgin Mary',
|
||||
nameLa: 'Beata Maria Virgo Regina',
|
||||
rank: 'duplex-2-classis',
|
||||
});
|
||||
// fixed day (Duplex II Classis). Trinity Sunday used to be modeled as
|
||||
// plain `ordinary-sunday` (no special first-class standing of its
|
||||
// own), so the Duplex+ Queenship won outright there -- fixed
|
||||
// 2026-09-04 with a real `trinity-sunday` temporal-feast record,
|
||||
// `unconditional: true` (a principal Sunday shouldn't lose to a
|
||||
// same-rank fixed-date collision, same shape as christ-the-king.yml).
|
||||
// Trinity Sunday now wins outright; the Queenship, the day's own
|
||||
// plain temporal id, and Pentecost's octave are all commemorated in
|
||||
// return.
|
||||
expect(sunday.winner).toEqual({ kind: 'temporal', id: 'trinity-sunday' });
|
||||
expect(sunday.commemorations).toEqual([
|
||||
{ kind: 'temporal', id: 'post-pentecost-01' },
|
||||
{ kind: 'octave', id: 'pentecost-sunday', name: 'Pentecost', nameLa: 'Dominica Pentecostes' },
|
||||
{ kind: 'sanctoral', id: 'queenship-of-the-bvm', name: 'The Queenship of the Blessed Virgin Mary', nameLa: 'Beata Maria Virgo Regina', rank: 'duplex-2-classis' },
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user