Add 4 more fixed Lord's/BVM feasts, and fix Our Lady of the Snows' Nocturn 3
Deploy / deploy (push) Successful in 1m6s
Deploy / deploy (push) Successful in 1m6s
Finding of the Holy Cross (May 3), the Transfiguration (Aug 6), the Exaltation of the Holy Cross (Sep 14), and Dedication of the Basilica of the Most Holy Savior (Nov 9, the Lateran) were all excluded under the same stale "fixed feast of the Lord, not modeled" note that turned out wrong for Our Lady of the Snows. All four have real, complete content in the reference engine. Presentation of the BVM (Nov 21) was excluded under the equivalent "fixed BVM feast" note and is added the same way. - finding-of-the-holy-cross: fully proprium, own collect/antiphon/Matins throughout; now correctly outranks ss-alexander-eventius-theodulus-and-juvenal, matching what that saint's own file already documented as the live reality. - transfiguration: same proprium shape. Its subordinate saints (Ss. Xystus/Felicissimus/Agapitus) stay excluded -- blocked by the real, separate octave/subordination-rendering gap, not by an unmodeled Transfiguration. - exaltation-of-the-holy-cross: reuses the Finding of the Holy Cross's content wholesale (ex Sancti/05-03) -- collect/antiphon via a cross-id `propers` pointer, Matins nocturn-readings duplicated (no cross-id lookup exists for that mechanism). - dedication-of-the-basilica-of-the-most-holy-savior: reuses the existing Common-of-a-Dedication (collect-c8, benedictus-antiphon- common-of-a-dedication), real unique Nocturn 2 vita of her own. Her secondary, St. Theodore, stays excluded for the same octave/subordination reason as above. - presentation-of-the-bvm: real unique collect of her own; her Benedictus antiphon is a substituted Common reference (truncate-and-add-alleluia edit specific to this feast), authored as her own file. Also: our-lady-of-the-snows.yml was missing its own Nocturn 3 (she defers to Commune/C11's own Gospel-incipit-plus-Bede-homily, same as Presentation of the BVM) -- added. Test updates (not regressions): three tests had fixed proof dates colliding with the newly-added feasts, updated to reflect the new, correct behavior. npm test (365 tests) and tsc --noEmit both pass. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -50,7 +50,16 @@ describe('getDayLabel — resumed post-Epiphany Sunday (overflow years)', () =>
|
||||
// Sundays) -- see calendar/temporal-id.test.ts for the id-level
|
||||
// coverage this label check builds on.
|
||||
expect(getDayLabel(resolveDay('2026-11-08'))).toBe('The 5th Sunday after Epiphany');
|
||||
expect(getDayLabel(resolveDay('2026-11-09'))).toBe('Monday in the 5th week after Epiphany');
|
||||
// 2026-11-09 is also the Dedication of the Basilica of the Most Holy
|
||||
// Savior (Duplex II Classis, added 2026-08 — see
|
||||
// dedication-of-the-basilica-of-the-most-holy-savior.yml) — an
|
||||
// ordinary (non-privileged) Monday fully yields to a real winning
|
||||
// saint, so the label is just her name, not the ferial fallback; the
|
||||
// 11-16 assertion below covers that fallback format on a genuinely
|
||||
// saint-free day instead.
|
||||
expect(getDayLabel(resolveDay('2026-11-09'))).toBe(
|
||||
'Dedication of the Basilica of the Most Holy Savior (the Lateran)',
|
||||
);
|
||||
expect(getDayLabel(resolveDay('2026-11-15'))).toBe('The 6th Sunday after Epiphany');
|
||||
expect(getDayLabel(resolveDay('2026-11-16'))).toBe('Monday in the 6th week after Epiphany');
|
||||
});
|
||||
@@ -63,7 +72,14 @@ describe('getDayLabel — resumed post-Epiphany Sunday (overflow years)', () =>
|
||||
// before Advent, so this ordinal is fixed, not overflow-year-specific
|
||||
// -- confirmed against a non-overflow year (1943) too.
|
||||
expect(getDayLabel(resolveDay('2026-11-22'))).toBe('The 23rd Sunday after Trinity');
|
||||
expect(getDayLabel(resolveDay('1943-11-21'))).toBe('The 23rd Sunday after Trinity');
|
||||
// 1943-11-21 is also the Presentation of the BVM (Duplex Majus, added
|
||||
// 2026-08 — see presentation-of-the-bvm.yml), which meets this app's
|
||||
// existing privileged-Sunday rank threshold (commemorations.ts's
|
||||
// `privileged-sunday` case requires only duplex-majus+) and so wins
|
||||
// outright rather than being commemorated — a pre-existing rule, not
|
||||
// new behavior from adding her. 2026-11-22 above (no saint collision)
|
||||
// still covers the fixed-ordinal label itself.
|
||||
expect(getDayLabel(resolveDay('1943-11-21'))).toBe('The Presentation of the Blessed Virgin Mary');
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -18,20 +18,27 @@ describe('May sanctoral pull (first pass)', () => {
|
||||
expect(getDayCollect(day).status.en).toBe('verified');
|
||||
});
|
||||
|
||||
it('two stubs are genuinely unwinnable in the real historical calendar, not just an artifact of the year checked', () => {
|
||||
it('genuinely unwinnable stubs correctly lose to their real competitor, now that both are modeled', () => {
|
||||
// Ss. Alexander/Eventius/Theodulus/Juvenal always lose to the Finding
|
||||
// of the Holy Cross (May 3) in real practice — but that's a fixed
|
||||
// feast of the Lord, which this app doesn't model at all (same known
|
||||
// gap as Circumcision/Epiphany/Purification/Annunciation), so the stub
|
||||
// wins by default here rather than being displaced the way it really
|
||||
// would be.
|
||||
// of the Holy Cross (May 3) in real practice — both are now modeled
|
||||
// (see finding-of-the-holy-cross.yml), so the collision engine
|
||||
// correctly demotes the stub to a commemoration instead of letting it
|
||||
// win by default.
|
||||
const may3 = resolveDay('2033-05-03');
|
||||
expect(may3.winner).toEqual({
|
||||
kind: 'sanctoral',
|
||||
id: 'ss-alexander-eventius-theodulus-and-juvenal',
|
||||
name: 'Ss. Alexander I, Eventius, and Theodulus, Martyrs, and Juvenal, Bishop and Confessor',
|
||||
rank: 'simplex',
|
||||
id: 'finding-of-the-holy-cross',
|
||||
name: 'The Finding of the Holy Cross',
|
||||
rank: 'duplex-2-classis',
|
||||
});
|
||||
expect(may3.commemorations).toEqual([
|
||||
{
|
||||
kind: 'sanctoral',
|
||||
id: 'ss-alexander-eventius-theodulus-and-juvenal',
|
||||
name: 'Ss. Alexander I, Eventius, and Theodulus, Martyrs, and Juvenal, Bishop and Confessor',
|
||||
rank: 'simplex',
|
||||
},
|
||||
]);
|
||||
|
||||
// St. Pudentiana always loses to St. Peter Celestine (May 19, also fixed-date) —
|
||||
// this one *is* modeled (both are real sanctoral records), so it
|
||||
|
||||
Reference in New Issue
Block a user