calendar: fix transferred candidates blindly winning outright

Found via real data (the May sanctoral pull): a transfer landing on a day
whose own native winner was temporal blindly took over as winner,
regardless of that day's own precedence category — so a transferred-in
Simplex saint (St. Felix I, impeded by Pentecost's Ember Saturday) was
overwriting Trinity Sunday itself instead of being merely commemorated,
the way a native Simplex candidate on an ordinary Sunday already
correctly is.

Fixes applyIncomingTransfer to run the arriving candidate through
decideOccurrence using the receiving day's own temporalCategory, the same
rules a native occurrence there would use, instead of assuming an empty
temporal slot means automatic victory.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-10 17:25:27 -04:00
parent 88074cdfe6
commit f0e32ae0c1
3 changed files with 38 additions and 2 deletions
+5 -1
View File
@@ -11,7 +11,11 @@ describe('getDayLabel — ordinal temporal label', () => {
});
it('names the anchor day itself, not "day after itself"', () => {
expect(getDayLabel(resolveDay('2026-05-31'))).toBe('Trinity Sunday');
// St. Felix I (May 30, Simplex) is impeded by that date's own Pentecost
// Ember Saturday and transfers forward into Trinity Sunday, where he's
// commemorated (not displacing the Sunday) — real sanctoral content
// now populates this date, so the label reflects both, feast name first.
expect(getDayLabel(resolveDay('2026-05-31'))).toBe('St. Felix I, Pope and Martyr — Trinity Sunday');
expect(getDayLabel(resolveDay('2026-04-05'))).toBe('Easter');
expect(getDayLabel(resolveDay('2026-02-18'))).toBe('Ash Wednesday');
});