Show a commemorated Sunday's name in the day label

collectCommemorations dropped the plain temporal commemoration name
unconditionally whenever anything else won the day, treating a
commemorated Sunday the same as a commemorated ferial weekday. But a
Sunday isn't "just an ordinary weekday" the way a ferial Tuesday is --
it's real information a reader can't infer from the winner+rank alone,
and it's exactly why a bare commemoration collect (now a full bundle,
previous commit) is being said in the first place. Divino Afflatu
1954's own commemoration line for a comparable case (St. Joachim
winning a Sunday, Aug 16 2026) confirms this: it names the Sunday, no
octave -- restoring that instead of a 2026-09-05 change that had
over-corrected past the actual rule.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LGsATZvfnpQ81HQuoF5JuL
This commit is contained in:
2026-09-05 20:07:30 -04:00
parent 7f97934282
commit 3e7af0b0a4
2 changed files with 26 additions and 13 deletions
+12 -1
View File
@@ -509,12 +509,23 @@ function collectCommemorations(
// pass wrongly scoped this to "only when an Ember commemoration is // pass wrongly scoped this to "only when an Ember commemoration is
// also present" — user, 2026-09-05: "it has nothing to do with // also present" — user, 2026-09-05: "it has nothing to do with
// ember-ness"); this plain generic label is dropped unconditionally // ember-ness"); this plain generic label is dropped unconditionally
// whenever it shows up as a mere commemoration, Ember day or not. // whenever it shows up as a mere commemoration on an ordinary
// ferial weekday, Ember day or not.
//
// A commemorated *Sunday* is the one exception (user, 2026-09-05):
// unlike a plain ferial Tuesday, "this is also a Sunday" is real
// information a reader can't infer from the winner+rank alone — it's
// why the Sunday's own collect is being said at all (getDayCollects'
// temporalCommemorationPart), and nothing else in the header hints
// at it. Shown via the same plain, rank-free `temporalLabel` a
// winning Sunday would use for itself.
if (c.id !== temporalId) { if (c.id !== temporalId) {
const emberName = emberDayLabel(c.id); const emberName = emberDayLabel(c.id);
if (emberName) { if (emberName) {
temporal.push(emberName); temporal.push(emberName);
} }
} else if (day.weekday === 'sunday') {
temporal.push(temporalLabel(day));
} }
} else if (opts.showOctaves && c.id !== opts.excludeOctaveId) { } else if (opts.showOctaves && c.id !== opts.excludeOctaveId) {
const octave = activeOctaves.find((a) => a.id === c.id); const octave = activeOctaves.find((a) => a.id === c.id);
+14 -12
View File
@@ -185,12 +185,12 @@ describe('getDayLabel — resumed post-Epiphany Sunday (overflow years)', () =>
// commemorations.ts's `ordinary-sunday` case's plain Duplex+ threshold // commemorations.ts's `ordinary-sunday` case's plain Duplex+ threshold
// is what lets her win outright rather than being commemorated — a // is what lets her win outright rather than being commemorated — a
// pre-existing rule, not new behavior from adding her. The displaced // pre-existing rule, not new behavior from adding her. The displaced
// Sunday is still commemorated internally (day.commemorations), using // Sunday is commemorated both internally (day.commemorations) and in
// the same fixed 23rd-after-Trinity ordinal, not a raw elapsed-week // the label itself, using the same fixed 23rd-after-Trinity ordinal,
// count recomputed for 1943 — but per the 2026-09-05 label rule, a // not a raw elapsed-week count recomputed for 1943.
// plain temporal commemoration like this one is no longer shown in the expect(getDayLabel(resolveDay('1943-11-21')).en).toBe(
// label once something else already has the primary slot. 'The Presentation of the Blessed Virgin Mary (Duplex Majus) — The 23rd Sunday after Trinity',
expect(getDayLabel(resolveDay('1943-11-21')).en).toBe('The Presentation of the Blessed Virgin Mary (Duplex Majus)'); );
}); });
}); });
@@ -293,7 +293,7 @@ describe('getDayLabel — active octave', () => {
); );
}); });
it('a sanctoral winner on a Sunday still leaves the Sunday commemorated internally, but neither octave it also happens to overlap -- not an octave name at all, nor the plain Sunday ordinal any more', () => { it('a sanctoral winner on a Sunday still shows the Sunday commemorated, but neither octave it also happens to overlap', () => {
// 2026-08-16 is a Sunday genuinely within both St. Lawrence's and the // 2026-08-16 is a Sunday genuinely within both St. Lawrence's and the
// Assumption's overlapping octave windows -- St. Joachim (Duplex II // Assumption's overlapping octave windows -- St. Joachim (Duplex II
// Class) wins outright per the ordinary-Sunday Duplex+ threshold, not // Class) wins outright per the ordinary-Sunday Duplex+ threshold, not
@@ -304,14 +304,16 @@ describe('getDayLabel — active octave', () => {
// Pentecost-counted number, so "11th ... after Trinity" internally) -- // Pentecost-counted number, so "11th ... after Trinity" internally) --
// no octave named at all, even though both are technically active, // no octave named at all, even though both are technically active,
// same as this app's own established `ordinary-feria`-only gate for // same as this app's own established `ordinary-feria`-only gate for
// octave mentions alongside a sanctoral winner. Per the 2026-09-05 // octave mentions alongside a sanctoral winner. A 2026-09-05 change
// label rule, the plain Sunday commemoration itself is now also // had wrongly dropped the Sunday name from the label too (not just
// dropped from the label (still present in day.commemorations) once // the octave) -- corrected 2026-09-05 (user: "the label for the day
// a sanctoral winner already has the primary slot. // doesn't mention the sunday being commemorated"), restoring exactly
// what the reference's own commemoration line shows: the Sunday
// named, no octave.
const day = resolveDay('2026-08-16'); const day = resolveDay('2026-08-16');
expect(day.weekday).toBe('sunday'); expect(day.weekday).toBe('sunday');
expect(getDayLabel(day).en).toBe( expect(getDayLabel(day).en).toBe(
'St. Joachim, Confessor, Father of the Blessed Virgin Mary (Duplex II Class)', 'St. Joachim, Confessor, Father of the Blessed Virgin Mary (Duplex II Class) — The 11th Sunday after Trinity',
); );
expect(getDayLabel(day).en).not.toContain('Octave'); expect(getDayLabel(day).en).not.toContain('Octave');
}); });