Revert ordinary-Sunday Semiduplex to transferring, per direct instruction
Deploy / deploy (push) Successful in 1m9s
Deploy / deploy (push) Successful in 1m9s
Keeps Simplex commemorating in place, but a Semiduplex feast on an ordinary Sunday goes back to transferring off to the next open day — this app's own design choice, not a correction against a reference engine. The transfer mechanism is already generic: this file's `decideOccurrence` only signals "couldn't hold onto this candidate" for the day itself; calendar/index.ts's resolveDay is what independently checks each neighboring day's own native occurrence for an incoming transfer and claims it — no separate lookback logic needed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -159,22 +159,28 @@ export function decideOccurrence(
|
||||
// Duplex+ wins outright; the Sunday itself is commemorated in return.
|
||||
return { winner: sanctoralWinner(sanctoral), commemorations: [{ kind: 'temporal', id: temporalId }] };
|
||||
}
|
||||
if (sanctoral.rank !== 'vigil') {
|
||||
// Semiduplex or Simplex: commemorated, not transferred — live-
|
||||
// verified (both Tridentine 1906 and Divino Afflatu 1954, the two
|
||||
// calendar tracks this app blends): St. Gregory Thaumaturgus
|
||||
// (Semiduplex) lands on the 6th Sunday after Epiphany, 2024-11-17,
|
||||
// and is commemorated right there ("Commemoratio: S. Gregorii
|
||||
// Thaumaturgi..."), not pushed to the next open day. Corrects an
|
||||
// earlier, unverified guess that Semiduplex was "too important to
|
||||
// merely commemorate" — Monastic Tridentinum 1617's own structural
|
||||
// rubric *does* transfer him, but precedence here follows Divino
|
||||
// Afflatu, not Monastic 1617's own (see CLAUDE.md).
|
||||
if (sanctoral.rank === 'simplex') {
|
||||
// Too minor to warrant its own day, but a plain commemoration
|
||||
// doesn't cheapen it the way it would a Semiduplex.
|
||||
return { winner: temporalWinner, commemorations: [sanctoralCommemoration(sanctoral)] };
|
||||
}
|
||||
// A Vigil still transfers (backward, per transferDirectionOf) — a
|
||||
// distinct rule from Semiduplex/Simplex above, not verified against
|
||||
// this same live case and left as-is.
|
||||
// Semiduplex or Vigil: no room here at all, in either direction —
|
||||
// per direct instruction, an ordinary Sunday's own standing pushes
|
||||
// a Semiduplex feast off to the next open day (typically the
|
||||
// Monday right after) rather than downgrading it to a bare
|
||||
// commemoration. This `transfer` signal is only half of the
|
||||
// mechanism: it's just this day noting "I couldn't hold onto this
|
||||
// candidate." The other half — a later day actually claiming a
|
||||
// transferred-in candidate — lives entirely in calendar/index.ts's
|
||||
// resolveDay: for *every* date it resolves, it independently
|
||||
// recomputes `resolveNativeOccurrence` for both the day before and
|
||||
// the day after, checks whether *that* neighbor's own native
|
||||
// occurrence produced a `transfer` pointed this direction, and only
|
||||
// then folds it in via `applyIncomingTransfer`. So "Monday looks
|
||||
// back at the sanctoral calendar to see if Sunday's own candidate
|
||||
// needs a home" isn't a separate mechanism to build — it's the
|
||||
// existing generic transfer-consumption check, which already runs
|
||||
// for every day regardless of category.
|
||||
return {
|
||||
winner: temporalWinner,
|
||||
commemorations: [],
|
||||
|
||||
Reference in New Issue
Block a user