Correct stale "no Requiem/funeral rite" claim, log All Souls' Day work
Deploy / deploy (push) Successful in 1m55s
Deploy / deploy (push) Successful in 1m55s
An earlier comment in sanctoral-calendar.yml claimed this app deliberately avoids modeling the Requiem/funeral rite as a genre at all. That was wrong — confirmed not sourced from CLAUDE.md, and corrected per direct instruction: a reusable Office-for-the-Dead mechanism (funerals, anniversaries, not just Nov 2) is real wanted future scope. Updates the November sanctoral-calendar.yml header accordingly and logs the All Souls' Day build + same-day generalization into office-of-the-dead.ts as a dated TODO.md entry. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LGsATZvfnpQ81HQuoF5JuL
This commit is contained in:
@@ -6318,3 +6318,64 @@ ferial canticle id/split when an override omits it, keeping the override's own a
|
|||||||
category is affected (all author a fixed id already).
|
category is affected (all author a fixed id already).
|
||||||
|
|
||||||
`npm test` and `tsc --noEmit` both pass.
|
`npm test` and `tsc --noEmit` both pass.
|
||||||
|
|
||||||
|
### All Souls' Day (Nov 2) — Office of the Dead built (2026-09-05)
|
||||||
|
|
||||||
|
Closed the long-standing exclusion noted in `sanctoral-calendar.yml`'s November header ("a
|
||||||
|
fundamentally different liturgical genre... not a saint's feast at all"). This first pass is a
|
||||||
|
one-off hardcoded day, not a reusable mechanism — **correction, 2026-09-05**: an earlier version
|
||||||
|
of this entry and of that YAML comment both claimed the app deliberately avoids modeling the
|
||||||
|
Requiem/funeral rite as a genre at all; the user explicitly corrected this after reading the
|
||||||
|
initial report — a real, reusable Office-for-the-Dead mechanism (funerals, anniversaries, not
|
||||||
|
just Nov 2) is wanted future scope, not out of bounds. Today's `hours/all-souls.ts`
|
||||||
|
exports `isAllSouls(date)` (true only for `MM-DD === '11-02'`, every year, never impeded) plus a
|
||||||
|
`build{Matins,Lauds,Vespers,Prime,Terce,Sext,None,Compline}Parts()` per hour, and each of the 8
|
||||||
|
hour files' own `resolveOrdo` branches to it before any of the normal season/winner/psalmody
|
||||||
|
machinery runs. `resolveGloriaPatri` (`hours/resolve-common.ts`) now also special-cases
|
||||||
|
`isAllSouls` the same way it already special-cases the Triduum, substituting "Réquiem
|
||||||
|
ætérnam/Et lux perpétua" for the ordinary Gloria Patri after every psalm/canticle all day (the
|
||||||
|
"Requiem gloria" rubric) — centralized there rather than per-part.
|
||||||
|
|
||||||
|
Content sourced from the reference engine's `Commune/C9.txt` ("Officium Defunctorum" — the
|
||||||
|
Vespers/Matins/Lauds skeleton: 9 Job/Augustine/1-Corinthians lessons and their own 9
|
||||||
|
responsories, the 5 Vespers psalms, Lauds' 5 psalms including the Canticle of Ezechias in place
|
||||||
|
of a numbered psalm) plus `Sancti/11-02.txt`'s own specifics (the day's two extra
|
||||||
|
Prime/Compline collects, the special Martyrology introduction, the special reduced form of the
|
||||||
|
minor hours). Live-verified hour-by-hour against the reference engine's own rendering
|
||||||
|
(`command=pray{Hora}`, `version=Rubrics 1960 - 1960`, 2026-11-02) rather than trusting the raw
|
||||||
|
per-rubric-conditional source text blind — this caught two things the static files alone would
|
||||||
|
have gotten wrong: (1) Lauds' "Ps 222" tag isn't a psalm at all but the reference engine's own
|
||||||
|
internal id for the Canticle of Ezechias (Isa 38:10-24, confirmed by live-rendering its actual
|
||||||
|
text); (2) Compline's raw `&psalm(233)` 4th special psalm never actually renders under any
|
||||||
|
selectable version of the engine (every version either keeps Compline's ordinary Nunc Dimittis
|
||||||
|
outright, per genuine Divino Afflatu/Tridentine-1906 rubric, or — under the one version that does
|
||||||
|
apply the special reduced Compline — substitutes Nunc Dimittis for that 4th psalm instead) —
|
||||||
|
dropped from this app's own content as apparently-dead/unreachable in the source itself, rather
|
||||||
|
than invented. (An unrelated false alarm along the way: querying `date=11-2` under the
|
||||||
|
"Tridentine 1910"/"Monastic Tridentinum 1617"/"Divino Afflatu - 1954" version strings resolved to
|
||||||
|
day 2/3 of the All Saints octave instead of All Souls' Day at all — a reference-engine
|
||||||
|
calendar-computation quirk for those specific tracks, not a real liturgical fact; the correctly-
|
||||||
|
resolving "Rubrics 1960" render was used as the source of truth for content instead, since the
|
||||||
|
actual antiphon/psalm/lesson texts are rubric-track-independent.)
|
||||||
|
|
||||||
|
Per user's explicit 2026-09-05 scope decision: all 8 hours get genuinely special content
|
||||||
|
(Prime/Terce/Sext/None/Compline included, not just Vespers/Matins/Lauds — confirmed for real via
|
||||||
|
the live-verification above, not just assumed), and only Nov 2's own Second Vespers is the
|
||||||
|
Office of the Dead (Nov 1 evening stays First Vespers of All Saints, untouched — All Souls' Day
|
||||||
|
has no First Vespers of its own). Vespers' Magnificat antiphon reuse of Lauds' own Benedictus
|
||||||
|
antiphon ("Ego sum resurrectio et vita") is the one text not independently live-re-verified —
|
||||||
|
it's the well-known standard convention for this office's Second Vespers, and the source only
|
||||||
|
defines this text once, but flagged here as an inference rather than a direct citation.
|
||||||
|
|
||||||
|
New test file `tests/hours/all-souls.test.ts` (all 8 hours, two different years, plus confirming
|
||||||
|
Nov 1 First Vespers is unaffected). `npm test` (2046 passed) and `tsc --noEmit` both pass.
|
||||||
|
|
||||||
|
**Generalized same day**, per direct user instruction: split into `hours/office-of-the-dead.ts`
|
||||||
|
(the reusable engine — Commune C9's own generic content: Vespers/Matins/Lauds psalmody, Nocturn
|
||||||
|
1's fixed Job lessons + all 9 responsories, Terce/Sext/None/Compline's bare psalms, the two
|
||||||
|
generic collects, `REQUIEM_GLORIA_PATRI`/`CONCLUSIO`; nothing here references a date, so it's
|
||||||
|
usable for a future funeral/anniversary occasion) and a thinned `hours/all-souls.ts` (only Nov
|
||||||
|
2's own specifics: Matins' Augustine/1-Cor Lessons 4-9 override, the Martyrology introduction,
|
||||||
|
Prime/Compline's own day-specific collects). No new calendar trigger added — still only Nov 2
|
||||||
|
exercises this. All 8 hour files' wiring unchanged; full suite (2051 passed) and `tsc --noEmit`
|
||||||
|
both still pass with no behavior change.
|
||||||
|
|||||||
@@ -372,12 +372,19 @@ days:
|
|||||||
"10-28": [ss-simon-and-jude]
|
"10-28": [ss-simon-and-jude]
|
||||||
"10-31": [vigil-of-all-saints]
|
"10-31": [vigil-of-all-saints]
|
||||||
# November — 11/12 of the pre-1955 pull. All Saints' own propers were
|
# November — 11/12 of the pre-1955 pull. All Saints' own propers were
|
||||||
# backfilled this month (see all-saints-collect.yml). New exclusion
|
# backfilled this month (see all-saints-collect.yml). All Souls' Day
|
||||||
# categories this month: All Souls' Day (Nov 2) is a fundamentally
|
# (Nov 2) — a fundamentally different liturgical genre, the Office of
|
||||||
# different liturgical genre -- the Office of the Dead, not a saint's
|
# the Dead, not a saint's feast at all — is not modeled through this
|
||||||
# feast at all, no Common-of-Saints structure to fall back on -- out of
|
# sanctoral-calendar/Common-of-Saints table, but is built as a one-off,
|
||||||
# scope the same way this app doesn't model the Requiem/funeral rite
|
# hardcoded day: see hours/all-souls.ts, wired into every one of the 8
|
||||||
# anywhere else. Nov 3-7 are pure All-Saints-octave continuations (no
|
# hours directly (bypassing this file and the whole calendar/
|
||||||
|
# resolve-common machinery for that one date). This is NOT a statement
|
||||||
|
# that the app avoids the Office of the Dead as a genre generally — a
|
||||||
|
# reusable Office-for-the-Dead mechanism (for funerals/anniversaries
|
||||||
|
# beyond just Nov 2) is real wanted future scope, corrected 2026-09-05
|
||||||
|
# after an earlier, wrong assumption to the contrary; see TODO.md and
|
||||||
|
# the vu_office_of_the_dead_scope memory. Nov 3-7 are pure
|
||||||
|
# All-Saints-octave continuations (no
|
||||||
# named saint). Ss. Four Crowned Martyrs (Nov 8, the octave's own final
|
# named saint). Ss. Four Crowned Martyrs (Nov 8, the octave's own final
|
||||||
# day) hit the same unmodeled-octave gap as several saints in August/
|
# day) hit the same unmodeled-octave gap as several saints in August/
|
||||||
# September. The Dedication of the Basilica of the Most Holy Savior
|
# September. The Dedication of the Basilica of the Most Holy Savior
|
||||||
|
|||||||
Reference in New Issue
Block a user