diff --git a/TODO.md b/TODO.md index 2c99bb7..b102042 100644 --- a/TODO.md +++ b/TODO.md @@ -44,15 +44,28 @@ hymn). Worth fixing even before tackling the other 32. ### Benedictus antiphons for temporal (non-sanctoral) days — done -`-benedictus-antiphon.yml` in `data/propers/temporal/` — all 53 +`-benedictus-antiphon.yml` in `data/propers/temporal/` — all 54 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. +earlier, the 51 numbered Sundays/seasons done in one pass, plus +`christmas-octave-sunday` itself, corrected below). + +**`christmas-octave-sunday` correction**: originally left unauthored +here, on the theory that every date this id can resolve to collides with +a specific octave-day saint. Wrong — the reference engine has its own +dedicated proper for this Sunday specifically, `Tempora/Nat1-0` +(`web/www/horas/Latin/Tempora/Nat1-0.txt` in the reference repo, and its +Monastic counterpart under `TemporaM/`), distinct from the individual +per-weekday octave pages (`Nat02`..`Nat09` = the ferias, keyed by day +offset from Christmas). Most years the Sunday does lose outright to a +Duplex-II-classis octave saint (St. Stephen/St. John/Holy Innocents, +whichever Dec 26–28 lands on) and only gets a bare commemoration — that's +what the earlier searches kept finding — but 2029-12-30 is a clean year +where the Sunday itself wins outright (`Dominica Infra Octavam +Nativitatis ~ Semiduplex Dominica minor`, no commemoration line at all), +so that's the date the content was pulled from. Benedictus antiphon: +"Dum médium siléntium" / "While all things were in quiet silence" — note +the source's own English translation genuinely omits the closing +"alleluia" that the Latin has; transcribed as-is, not smoothed over. 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 diff --git a/src/data/propers/temporal/christmas-octave-sunday-benedictus-antiphon.yml b/src/data/propers/temporal/christmas-octave-sunday-benedictus-antiphon.yml new file mode 100644 index 0000000..bc2a4dc --- /dev/null +++ b/src/data/propers/temporal/christmas-octave-sunday-benedictus-antiphon.yml @@ -0,0 +1,20 @@ +# Verified against Divinum Officium (Monastic Tridentinum 1617), Lauds +# live query, 2029-12-30 -- the Sunday within the Octave of Christmas, +# found via the reference engine's own dedicated Tempora/Nat1-0 proper +# (its actual identity in the reference engine, distinct from any of the +# individual octave-day saints' own pages, e.g. Nat02/Nat03/Nat04 for +# Dec 26/27/28). This particular date was picked because it's the one +# clean case in range where the Sunday actually wins outright with no +# saint commemorated at all ("Dominica Infra Octavam Nativitatis ~ +# Semiduplex Dominica minor", no Commemoratio line) -- on most years the +# Sunday instead falls on one of the Duplex-II-classis octave-day feasts +# (St. Stephen, St. John, Holy Innocents) and is itself only commemorated, +# which is what earlier searches this session kept running into and +# concluded (wrongly) meant there was no clean date at all. +id: christmas-octave-sunday-benedictus-antiphon +text: + la: "Dum médium siléntium * tenérent ómnia, et nox in suo cursu médium iter perágeret, omnípotens Sermo tuus, Dómine, a regálibus sédibus venit, allelúja." + en: "While all things were in quiet silence * and that night was in the midst of her swift course, thine Almighty Word, O Lord, leapt down out of thy Royal Throne." +status: + la: verified + en: verified diff --git a/tests/hours/lauds.test.ts b/tests/hours/lauds.test.ts index 8d78c2a..261ec1e 100644 --- a/tests/hours/lauds.test.ts +++ b/tests/hours/lauds.test.ts @@ -140,10 +140,11 @@ describe('resolveOrdo("lauds", ...)', () => { 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", () => { + it('resolves a real Benedictus antiphon for christmas-octave-sunday too, pulled from the reference engine\'s own dedicated Tempora/Nat1-0 proper rather than any individual octave-day saint\'s page', () => { 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(); + expect(canticle?.kind === 'canticle' ? canticle.antiphon?.text.la : undefined).toContain('Dum médium siléntium'); + expect(canticle?.kind === 'canticle' ? canticle.antiphon?.status?.la : undefined).toBe('verified'); }); it("resolves a real Benedictus antiphon on St. Lawrence's own day, from the saint's already-authored proper", () => {