From 87d28a14bde67f89d0922fe54e2447299ca09bc6 Mon Sep 17 00:00:00 2001 From: Will Estes Date: Fri, 28 Aug 2026 04:31:47 -0400 Subject: [PATCH] Fix St. Gabriel's Lauds/Vespers capitulum copy-paste bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lauds-capitulum-st-gabriel-archangel.yml carried Apparition of St. Michael's own capitulum ("Significávit Deus...") under Gabriel's id -- found in passing while authoring his Matins psalmody. His real capitulum, read directly from the reference engine's Sancti/03-24.txt ([Capitulum Laudes]), is Daniel's own account of the angel's visitation (Dan 9:21-22), genuinely proper to Gabriel, not shared with Apparition despite sharing the same hymn. No separate vespers-capitulum file exists for this id, so the fix covers both hours via vespersCapitulumForOverride. Updated tests/hours/lauds.test.ts: removed Gabriel from the shared- chapter assertion loop (Guardian Angels/Raphael still legitimately share Apparition's chapter, confirmed via their own saint files' explicit source cross-references) and added a dedicated test for his own chapter. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01PhysogLP9eCeKS7JEwRi6y --- .../lauds-capitulum-st-gabriel-archangel.yml | 20 ++++++++++++------ tests/hours/lauds.test.ts | 21 +++++++++++++++++-- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/data/propers/common/lauds-capitulum-st-gabriel-archangel.yml b/src/data/propers/common/lauds-capitulum-st-gabriel-archangel.yml index df63424..55486ce 100644 --- a/src/data/propers/common/lauds-capitulum-st-gabriel-archangel.yml +++ b/src/data/propers/common/lauds-capitulum-st-gabriel-archangel.yml @@ -1,12 +1,20 @@ -# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds -# live query, 2026-05-08, clean year. +# Was a copy-paste bug carrying Apparition of St. Michael's own capitulum +# ("Significávit Deus...") under Gabriel's id -- found in passing while +# authoring his Matins psalmody (see matins-psalmody-overrides/saints/ +# st-gabriel-archangel.yml's own header). His real capitulum, read +# directly from the reference engine's `web/www/horas/{Latin,English}/ +# Sancti/03-24.txt` (`[Capitulum Laudes]`), is proper to Gabriel +# specifically -- Daniel's own account of the angel's visitation, not +# shared with Apparition. `03-24.txt`'s whole-file default is "ex +# Sancti/05-08" but this block is one of its own explicit overrides, +# same pattern as his Matins antiphons. id: lauds-capitulum-st-gabriel-archangel text: - la: "Significávit Deus, quæ opórtet fíeri cito, loquens per Angelum suum servo suo Joánni, qui testimónium perhíbuit verbo Dei, et testimónium Jesu Christi, quæcúmque vidit." - en: "God gave unto Jesus Christ to show unto His servants the things which must shortly come to pass and He sent and signified it by His Angel unto His servant John, who bare witness of the Word of God and of the testimony of Jesus Christ, of all the things which he saw." + la: "Ecce vir Gábriel, quem víderam in visióne a princípio, cito volans tétigit me in témpore sacrifícii vespertíni. Et dócuit me, et locútus est mihi, dixítque: Dániel, nunc egréssus sum ut docérem te, et intellégeres." + en: "Behold, the man Gabriel, whom I had seen in the vision at the beginning, being caused to fly swiftly, touched me about the time of the evening oblation; and he informed me, and talked with me, and said: O Daniel, I am now come forth to give thee skill and understanding." citation: - la: "Apo 1:1-2" - en: "Rev 1:1-2" + la: "Dan 9:21-22" + en: "Dan 9:21-22" status: la: verified en: verified diff --git a/tests/hours/lauds.test.ts b/tests/hours/lauds.test.ts index 47a6ada..f0ba5bb 100644 --- a/tests/hours/lauds.test.ts +++ b/tests/hours/lauds.test.ts @@ -261,10 +261,11 @@ describe('resolveOrdo("lauds", ...)', () => { // source's own SanctiM/10-02.txt cross-references St. Michael's // Apparition (Sancti/05-08) directly for the chapter/responsory at // every hour -- real proper content, not a Common fallback. See - // lauds-capitulum-guardian-angels.yml's header. + // lauds-capitulum-guardian-angels.yml's header. St. Gabriel is NOT + // part of this group (see below) -- his own chapter is genuinely + // proper, not shared, despite sharing the same hymn. for (const [date, id] of [ ['2026-10-02', 'guardian-angels'], - ['2026-03-24', 'st-gabriel-archangel'], ['2026-10-24', 'st-raphael-archangel'], ] as const) { const ordo = resolveOrdo('lauds', date); @@ -275,6 +276,22 @@ describe('resolveOrdo("lauds", ...)', () => { } }); + it("resolves St. Gabriel's own genuinely proper chapter (Dan 9:21-22), not Apparition's", () => { + // lauds-capitulum-st-gabriel-archangel.yml previously carried + // Apparition's own capitulum ("Significávit Deus...") under + // Gabriel's id by mistake -- a copy-paste bug found while authoring + // his Matins psalmody (2026-08-28). His real Lauds/Vespers capitulum, + // read directly from Sancti/03-24.txt's own [Capitulum Laudes] + // block, is Daniel's account of the angel's visitation -- shares the + // hymn with the other Archangel feasts, but not this chapter. + const ordo = resolveOrdo('lauds', '2026-03-24'); + const chapter = ordo.parts.find((p) => p.kind === 'chapter'); + expect(chapter?.kind === 'chapter' ? chapter.text.citation?.en : undefined).toBe('Dan 9:21-22'); + expect(chapter?.kind === 'chapter' ? chapter.text.text.la : undefined).toContain('Ecce vir Gábriel'); + const hymn = ordo.parts.find((p) => p.kind === 'hymn'); + expect(hymn?.kind === 'hymn' ? hymn.text.text.la : undefined).toContain('Christe sanctórum decus Angelórum'); + }); + it("uses common-of-several-confessors's real office bundle (= Confessor-Not-Bishop content) on Ss. Seven Founders' own day", () => { // Read directly from the source (Sancti/02-12.txt): its own [Rule] // says plain "vide C5" -- see lauds-capitulum-common-of-several-