Author common-of-a-confessor Lauds/Vespers bundle (= Confessor-Not-Bishop content)
Deploy / deploy (push) Successful in 1m20s
Deploy / deploy (push) Successful in 1m20s
Fixed a real audit-methodology bug first: the bulk gap-audit was sampling each saint's own date via prayVespera, which reflects whatever saint claims First Vespers that evening (often a neighboring day's), not the sampled saint's own category. Redid it via prayLaudes (no anticipation). That surfaced the real finding: common-of-a-confessor (37 saints, this app's largest remaining gap) isn't a distinct liturgical Common -- it's common-of-a-confessor-not-bishop under a different label. St. Joseph's and St. Thomas Aquinas's chapter is byte-identical to the already- authored Sir 31:8-9 text, and several of the 37 saints' own file comments already say "vide C5" (Confessor Not a Bishop) directly. Not relabeled across the 37 saint files, since matins-hymn-common-of-a-confessor.yml and benedictus-antiphon-common-of-a-confessor.yml already establish this plain id as the real, working one for those saints' Matins/Benedictus content -- duplicated the Lauds/Vespers bundle under this id too, to match that existing convention. Updates two existing tests whose dates collided with this fix: the FERIAL_MONDAY constant (moved off St. Raymond Nonnatus's own day) and a new Vespers proof on St. Joseph's First Vespers. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014axryJBrRswYh2niA7WCUc
This commit is contained in:
@@ -5,7 +5,7 @@ import { resolveOrdo } from '../../src/hours';
|
||||
// and src/hours/lauds.ts's own generation-script provenance comments for
|
||||
// why these particular dates.
|
||||
const FERIAL_SUNDAY = '2026-06-21';
|
||||
const FERIAL_MONDAY = '2026-08-31';
|
||||
const FERIAL_MONDAY = '2026-06-08'; // not 08-31 -- St. Raymond Nonnatus's own day (common-of-a-confessor)
|
||||
const FERIAL_TUESDAY = '2026-06-16';
|
||||
const LAWRENCE_OCTAVE_DAY = '2026-08-11'; // Semiduplex -- exercises isDoubleOrHigher's false branch differently than a plain feria only in rank, not in psalms (Commune override not modeled, see below)
|
||||
|
||||
@@ -181,6 +181,18 @@ describe('resolveOrdo("lauds", ...)', () => {
|
||||
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Jesu Redémptor ómnium');
|
||||
});
|
||||
|
||||
it("uses common-of-a-confessor's real office bundle on St. Joseph's own day, not the ferial default", () => {
|
||||
// St. Joseph (Mar 19, `common: common-of-a-confessor`) -- see
|
||||
// lauds-capitulum-common-of-a-confessor.yml's header for the finding
|
||||
// that this plain id is really Common-of-a-Confessor-Not-Bishop
|
||||
// under a different label in this app's own data.
|
||||
const ordo = resolveOrdo('lauds', '2026-03-19');
|
||||
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
||||
expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Sir 31:8-9');
|
||||
const hymn = ordo.parts.find((p) => p.kind === 'hymn');
|
||||
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Jesu coróna célsior');
|
||||
});
|
||||
|
||||
it('includes the Kyrie + Our Father lead-in right after the Benedictus, before the day collect (either form)', () => {
|
||||
const ordo = resolveOrdo('lauds', FERIAL_TUESDAY);
|
||||
const litanyIndex = ordo.parts.findIndex((p) => p.kind === 'preces' && p.text.text.la?.includes('Kýrie, eléison'));
|
||||
|
||||
@@ -263,6 +263,19 @@ describe('resolveOrdo("vespers", ...)', () => {
|
||||
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Iste Conféssor Dómini sacrátus');
|
||||
});
|
||||
|
||||
it("uses common-of-a-confessor's real office bundle for St. Joseph's First Vespers, not the ferial default", () => {
|
||||
// St. Joseph (Mar 19, Duplex, `common: common-of-a-confessor` --
|
||||
// vu's own data label for what's really the Common-of-a-Confessor-
|
||||
// Not-Bishop category, confirmed live 2026-08-26) claims First
|
||||
// Vespers over Mar 18's own evening. See lauds-capitulum-common-of-
|
||||
// a-confessor.yml's header for the fuller finding.
|
||||
const ordo = resolveOrdo('vespers', '2026-03-18');
|
||||
const chapter = ordo.parts.find((p) => p.kind === 'chapter');
|
||||
expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Sir 31:8-9');
|
||||
const hymn = ordo.parts.find((p) => p.kind === 'hymn');
|
||||
expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Iste Conféssor Dómini sacrátus');
|
||||
});
|
||||
|
||||
it("renders Passiontide's seasonal office, with the Gloria Patri omitted from the responsory", () => {
|
||||
// 2026-03-25 is a Wednesday in Passiontide (Passion Sunday 2026-03-22
|
||||
// through Holy Saturday 2026-04-04).
|
||||
|
||||
Reference in New Issue
Block a user