Author real proper Matins/Vespers content for the Nativity of St. John the Baptist
Deploy / deploy (push) Successful in 1m30s
Deploy / deploy (push) Successful in 1m30s
nativity-of-st-john-the-baptist.yml's `common` field (common-of-an-apostle)
was the same mistaken placeholder as the Beheading's, but this feast
needed a different fix: the reference engine assigns it no Commune at
all -- every [Rule] line in Sancti/06-24.txt and SanctiM/06-24.txt points
to proper text, never a Commune category -- so there's no better-fitting
id to swap in either.
Authored the real proper content that was still falling through to the
apostle Common, live-verified against the local Divinum Officium CGI
instance (Monastic Tridentinum 1617):
- Matins invitatory antiphon ("Regem Præcursóris Dóminum")
- Matins hymn ("Antra desérti téneris," with the Monastic doxology
substitution already used by this feast's own Lauds/Vespers hymns)
- Full Matins Nocturn 1-3 psalmody + nocturn versicles (Nocturn 1/2 reuse
St. Lawrence's own shared psalm-number pool per "Psalmi Dominica";
Nocturn 3 reuses St. Lawrence's own canticle scripture files verbatim,
since the citations are identical)
- Vespers psalmody (only 4 psalm slots at this Monastic rank, not 5 as a
naive reading of the raw Ant Vespera list would suggest)
- Nocturn 2/3 responsories on the existing nocturn-readings file
`common: common-of-an-apostle` is left in place as a fully inert
placeholder (a non-optional field with no better id available) with an
updated comment explaining why.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WvnBMq7HGfXRyMsVLu2v4D
This commit is contained in:
@@ -705,3 +705,37 @@ describe('resolveOrdo("matins", ...) remaining Common categories\' Matins hymns
|
||||
expect(hymnLatin('2026-08-06')).toContain('Quicúmque Christum quǽritis');
|
||||
});
|
||||
});
|
||||
|
||||
describe('resolveOrdo("matins", ...) Nativity of St. John the Baptist (2026-06-24) real proper content', () => {
|
||||
// Regression test: nativity-of-st-john-the-baptist.yml's `common`
|
||||
// field (common-of-an-apostle) used to leak into the invitatory, hymn,
|
||||
// and Nocturn psalmody since no proper override existed for any of
|
||||
// them. The reference engine assigns this feast no Commune at all, so
|
||||
// real proper text was authored for each instead of swapping the
|
||||
// Common id.
|
||||
const ordo = resolveOrdo('matins', '2026-06-24');
|
||||
|
||||
it("resolves the invitatory antiphon to its own proper text, not the apostle Common's", () => {
|
||||
const antiphonParts = ordo.parts.filter((p) => p.kind === 'antiphon') as { text: { text: Record<string, string> } }[];
|
||||
const invitatoryLatin = antiphonParts[0]?.text.text.la;
|
||||
expect(invitatoryLatin).toContain('Regem Præcursóris Dóminum');
|
||||
expect(invitatoryLatin).not.toContain('Regem Apostolórum');
|
||||
});
|
||||
|
||||
it("resolves the Matins hymn to its own proper text, not the apostle Common's", () => {
|
||||
const hymn = ordo.parts.find((p) => p.kind === 'hymn') as { text: { text: { la: string } } } | undefined;
|
||||
expect(hymn?.text.text.la).toContain('Antra desérti téneris sub annis');
|
||||
expect(hymn?.text.text.la).not.toContain('Ætérna Christi múnera');
|
||||
});
|
||||
|
||||
it("resolves Nocturn 1/2 psalmody to its own proper antiphons over the shared Sunday psalm pool, not the apostle Common's antiphons", () => {
|
||||
const psalms = ordo.parts.filter((p) => p.kind === 'psalm') as {
|
||||
psalmNumber: number;
|
||||
antiphon?: { text: Record<string, string> };
|
||||
}[];
|
||||
const psalm1 = psalms.find((p) => p.psalmNumber === 1);
|
||||
const psalm63 = psalms.find((p) => p.psalmNumber === 63);
|
||||
expect(psalm1?.antiphon?.text.la).toContain('Priúsquam te formárem');
|
||||
expect(psalm63?.antiphon?.text.la).toContain('Nazarǽus');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user