Author Benedictus antiphons for all 51 remaining temporal ids
Deploy / deploy (push) Successful in 50s

Pulls the Lauds Benedictus antiphon (Latin + English) for every
temporal-id proper except christmas-octave-sunday, completing the
"every sanctoral and temporal entry needs its antiphons" task
(sanctoral side finished in prior commits this session).

Dates were found programmatically: a Node script iterated resolveDay()
over full years to find, for each temporal id, the first date this
app's own calendar logic resolves to it, then each candidate date was
cross-checked against a live Divinum Officium (Monastic Tridentinum
1617) query to confirm the title has no saint collision before pulling
content. Four ids (easter-5, easter-6, post-pentecost-11,
post-pentecost-14) needed a second, alternate date after the first
candidate turned out to collide with a saint modeled in the live
reference engine but not in this app (St. Mark, St. Athanasius, Our
Lady of the Snows).

christmas-octave-sunday is deliberately left unauthored: every date it
can resolve to collides with a specific named octave-day feast in the
real calendar, so there's no clean generic content to source -- see
TODO.md.

Also updates tests/hours/lauds.test.ts: the old "falls back to missing
on a plain temporal day" test used a date that now has real content
(post-pentecost-11), so it's replaced with a test confirming that
content resolves correctly plus a new test specifically covering the
christmas-octave-sunday exception.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 21:50:55 -04:00
parent 346a5c65eb
commit 5a76f2198c
53 changed files with 644 additions and 7 deletions
+7 -1
View File
@@ -134,9 +134,15 @@ describe('resolveOrdo("lauds", ...)', () => {
expect(repeat?.kind).toBe('antiphon');
});
it("falls back to a missing Benedictus antiphon on a plain temporal day (no per-Sunday antiphon authored yet)", () => {
it('resolves a real Benedictus antiphon on a plain temporal day, now that every temporal id has one', () => {
const ordo = resolveOrdo('lauds', FERIAL_TUESDAY);
const canticle = ordo.parts.find((p) => p.kind === 'canticle' && p.canticleId === 'benedictus');
expect(canticle?.kind === 'canticle' ? canticle.antiphon?.status?.la : undefined).toBe('verified');
});
it("falls back to a missing Benedictus antiphon for christmas-octave-sunday specifically -- every possible date for it collides with a specific named octave-day feast in the real calendar, so there's no clean generic content to source", () => {
const ordo = resolveOrdo('lauds', '2026-12-30');
const canticle = ordo.parts.find((p) => p.kind === 'canticle' && p.canticleId === 'benedictus');
expect(canticle?.kind === 'canticle' ? canticle.antiphon?.status?.la : undefined).toBeUndefined();
});