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
+25 -6
View File
@@ -42,12 +42,30 @@ proper psalms but the plain ferial capitulum/hymn, which is inconsistent
with what the live engine actually shows for him (`2 Cor 9:6`, his own
hymn). Worth fixing even before tackling the other 32.
### Benedictus antiphons for temporal (non-sanctoral) days
### Benedictus antiphons for temporal (non-sanctoral) days — done
`<id>-benedictus-antiphon.yml` in `data/propers/temporal/`only
`marian-saturday` and `christ-the-king` exist. Every plain numbered Sunday
(52 of them) and feria is `missing`. Real practice has a proper antiphon
for every one of these; not started, and it's a big pull if done exhaustively.
`<id>-benedictus-antiphon.yml` in `data/propers/temporal/`all 53
temporal ids now have one (`marian-saturday`/`christ-the-king` from
earlier, plus the 51 numbered Sundays/seasons done in one pass), except
**`christmas-octave-sunday`**, left deliberately unauthored: every
possible date this id can resolve to in the real calendar collides with
a specific named octave-day feast (St. John's own octave on Jan 3, e.g.)
— there's no date where the live engine shows generic "Sunday within the
Christmas Octave" content rather than that day's own specific saint, so
there's nothing honest to source.
Method: rather than hunting for "clean years" one at a time, wrote a
script that iterates every day of a test year through this app's own
`resolveDay`, buckets each Sunday by which temporal id actually won, and
picks one real date per id straight from the app's own logic — then
cross-checked each date's *live* D.O. title for a saint collision before
trusting the content (a handful, mostly on privileged Eastertide/
post-Pentecost Sundays, needed a different year: this app's own
privileged-Sunday rule never lets a saint displace those Sundays, but the
live reference engine's calendar is bigger than this app's and does let
some by-date saint win there, e.g. St. Mark on Easter V some years, "Our
Lady of the Snows" — not modeled in this app at all — landing on
Post-Pentecost XI whenever the date lines up with Aug 5).
### Octave collects
@@ -182,7 +200,8 @@ Urban I/Eleutherius/John I do have content -- they just needed a very
late test year). Every pre-existing antiphon file that predated this
pass has now been checked against a live Monastic query; most needed
correction (confirmed Roman-rite sourced), a handful already matched.
- **~52 temporal entries: not started.**
- **All ~52 temporal entries: done** (see the section above for method and
the one deliberate exception, `christmas-octave-sunday`).
- **94 `propers: null` saints: not started** — need a collect authored (a
bigger, separate task) before an antiphon id even has anywhere to attach.