Fix privileged-feria-major: nothing is ever commemorated, any rank
Deploy / deploy (push) Successful in 1m32s

The Easter octave cascade built last commit reused the existing
"duplex-majus+ still gets a bare commemoration" branch unchanged,
trusting its own citation (St. Mark within the Easter Octave). That
citation was a misreading. Live-verified: the Annunciation (Duplex I.
classis) transfers with zero commemoration on Holy Thursday itself, and
Chair of St. Peter at Antioch does the same on Ash Wednesday - the
exception was wrong everywhere this category is used, not just Holy
Week. privileged-feria-major now matches privileged-sunday exactly:
unconditional transfer, no exceptions, any rank.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017XMSokiTD2Qc5vPP2YQu3Q
This commit is contained in:
2026-09-01 14:08:15 -04:00
parent d6c8e8b7a8
commit fc4ac33903
6 changed files with 105 additions and 36 deletions
+23 -6
View File
@@ -18,12 +18,29 @@ describe('April sanctoral pull (first pass)', () => {
expect(getDayCollect(day).status.en).toBe('verified');
});
it('St. Mark is only ever commemorated, never wins, within the Easter Octave', () => {
const day = resolveDay('2030-04-25');
expect(day.winner.kind).toBe('temporal');
expect(day.commemorations).toEqual([
{ kind: 'sanctoral', id: 'st-mark', name: 'St. Mark, Evangelist', nameLa: 'Sanctus Marcus, Evangelista', rank: 'duplex-2-classis' },
]);
it('St. Mark gets nothing at all within the Easter Octave — not even a bare commemoration — and transfers past it instead', () => {
// Corrected 2026-09-01: nothing is ever commemorated anywhere from
// Palm Sunday through Low Sunday, no exception for any rank (direct
// instruction; live-verified against the Annunciation on Holy
// Thursday and Chair of St. Peter at Antioch on Ash Wednesday, both
// Duplex-majus+ and both transferring with zero commemoration). Mark
// (Duplex II. classis) transfers off Apr 25, 2030 the same way; vu's
// own dense calendar that week pushes his actual landing all the way
// to May 5 (every day in between already spoken for).
const native = resolveDay('2030-04-25');
expect(native.winner).toEqual({ kind: 'temporal', id: 'easter-sunday' });
expect(native.commemorations).toEqual([]);
expect(native.transferredAway?.candidate.id).toBe('st-mark');
const landing = resolveDay('2030-05-05');
expect(landing.winner).toEqual({
kind: 'sanctoral',
id: 'st-mark',
name: 'St. Mark, Evangelist',
nameLa: 'Sanctus Marcus, Evangelista',
rank: 'duplex-2-classis',
transferredFrom: '2030-04-25',
});
});
it('St. Robert beats St. Catherine of Siena on their shared monastic-calendar date', () => {