Commit Graph

31 Commits

Author SHA1 Message Date
will 1ad55d49a4 propers: Benedictus antiphons for October's sanctoral entries (7/7)
Deploy / deploy (push) Successful in 53s
All 7 authored fresh: Francis of Assisi, Callistus I, Luke, Ss.
Chrysanthus and Daria, the Vigil of Ss. Simon and Jude, Ss. Simon and
Jude, the Vigil of All Saints.

Luke and Simon/Jude both needed the same register fix as Matthias/
Barnabas/James the Greater/Bartholomew/Matthew (Matt 19:27ff, same
verse): the source's own English existed but read jarringly modern
next to everything else, reworded to match and marked draft.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 21:32:10 -04:00
will 1a82a67b15 propers: Benedictus antiphons for September's sanctoral entries (5/5)
Deploy / deploy (push) Successful in 54s
4 authored fresh (Matthew, Ss. Cyprian and Justina, Ss. Cosmas and
Damian, Jerome), 1 corrected (the Nativity of the BVM -- confirmed
sourced from the Roman rite's raw [Ant 1] rather than a real Monastic
1617 rendering, same pattern as every month so far).

Matthew needed the same register fix as Matthias/Barnabas/James the
Greater/Bartholomew (Matt 19:27ff, same verse): the source's own
English existed but read jarringly modern next to everything else,
reworded to match and marked draft.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 21:29:12 -04:00
will 7dfc5a81ea propers: Benedictus antiphons for August's sanctoral entries (12/12)
Deploy / deploy (push) Successful in 53s
9 authored fresh (Dominic, Ss. Cyriacus/Largus/Smaragdus, Assumption,
Bernard, Bartholomew, Louis, Zephyrinus, Augustine), 1 corrected
(Peter's Chains -- confirmed sourced from the Roman rite's raw [Ant 1]
rather than a real Monastic 1617 rendering, same pattern as every
month so far). Two already matched the live query as found (Finding
of St. Stephen, the Decollation of St. John the Baptist) and needed no
change.

Bartholomew needed the same register fix as Matthias/Barnabas/James
the Greater (Matt 19:27ff, same verse): the source's own English
existed but read jarringly modern next to everything else, reworded
to match and marked draft.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 21:26:40 -04:00
will 36e1181b85 propers: Benedictus antiphons for July's sanctoral entries (9/9)
Deploy / deploy (push) Successful in 52s
8 authored fresh (the Seven Brothers/Rufina/Secunda, Symphorosa and
Her Seven Sons, Margaret of Antioch, Apollinaris, James the Greater,
Anne, Nazarius/Celsus/Victor I/Innocent I, Abdon and Sennen), 1
corrected (Mary Magdalene -- confirmed sourced from the Roman rite's
raw [Ant 1] rather than a real Monastic 1617 rendering, same pattern
as every month so far).

James the Greater needed the same register fix as Matthias/Barnabas
(Matt 19:27ff, same verse): the source's own English existed but read
jarringly modern next to everything else, reworded to match and
marked draft.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 21:22:06 -04:00
will ab52cfda69 propers: Benedictus antiphons for June's sanctoral entries (16/16)
Deploy / deploy (push) Successful in 53s
11 authored fresh (Ss. Marcellinus/Peter/Erasmus, Ss. Primus and
Felicianus, Barnabas, Anthony of Padua, Basil the Great, Ss. Vitus/
Modestus/Crescentia, Ss. Mark and Marcellian, Ss. Gervase and Protase,
Paulinus of Nola, William Abbot, Leo II), 5 corrected (Ss. Basilides/
Cyrinus/Nabor/Nazarius, the Nativity of St. John the Baptist, Ss. John
and Paul, Ss. Peter and Paul, Commemoration of St. Paul -- each
confirmed sourced from the Roman rite's raw [Ant 1] rather than a real
Monastic 1617 rendering, same pattern as every month so far).

Barnabas needed the same register fix as Matthias (Matt 19:27ff, same
verse): the source's own English existed but read jarringly modern
next to everything else, reworded to match and marked draft.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 21:18:34 -04:00
will af4b703f77 propers: Benedictus antiphons for May's sanctoral entries (13/13)
Deploy / deploy (push) Successful in 54s
10 authored fresh (Athanasius, Monica, Stanislaus, Ss. Nereus/
Achilleus/Domitilla/Pancras, Boniface, Ubald, Peter Celestine, Urban I,
Eleutherius, John I), 3 corrected (Ss. Philip and James, John Before
the Latin Gate, the Apparition of St. Michael -- each confirmed
sourced from the Roman rite's raw [Ant 1] rather than a real Monastic
1617 rendering, same pattern as every month so far).

Urban I, Eleutherius, and John I (all late May) needed 2038 to find a
year not swallowed by Ascensiontide/Pentecost/Trinity/Corpus Christi
in some combination -- the latest year needed yet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 21:12:46 -04:00
will 1b57e4fe9c propers: Benedictus antiphons for April's sanctoral entries (8/8)
Deploy / deploy (push) Successful in 55s
All 8 authored fresh: Francis of Paola, Leo I, Ss. Tiburtius/Valerian/
Maximus, George, Mark, Vitalis, Robert, Peter Martyr. Several share
one Eastertide Common-of-Several-Martyrs antiphon word for word
(Tiburtius/Valerian/Maximus, George, Vitalis, Peter Martyr) -- each
confirmed independently via its own live query rather than assumed
from the others.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 21:08:19 -04:00
will aa6ca21938 propers: Benedictus antiphons for March's sanctoral entries (5/6)
Deploy / deploy (push) Successful in 52s
4 authored fresh (Lucius I, Thomas Aquinas, the Forty Holy Martyrs,
Gregory the Great), 1 corrected (Joseph -- confirmed sourced from the
Roman rite's raw [Ant 1] rather than a real Monastic 1617 rendering,
same pattern as January/February's corrections).

Gregory the Great's antiphon (the "non Angli sed Angeli" episode) had
no English in the source at all -- translated fresh, marked draft.

St. Frances of Rome left honestly missing: Simplex rank, and her day
(March 9) falls within Lent in every year tested 2026-2035, so she can
never win outright under this app's own privileged-feria-major rule --
there's no live-rendered antiphon to source, ever, not just this year.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 21:05:02 -04:00
will 93bcee414e propers: Benedictus antiphons for February's sanctoral entries (7/7)
Deploy / deploy (push) Successful in 55s
5 authored fresh (Dorothea, Apollonia, Scholastica, Valentine,
Matthias), 2 corrected (Agatha, Chair of St. Peter at Antioch -- both
confirmed sourced from the Roman rite's raw [Ant 1] rather than a real
Monastic 1617 rendering, same pattern as January's corrections).

Two needed translation/rewording, not just transcription: Scholastica
had no English at all in the source (translated fresh, marked draft);
Matthias's own English existed but was jarringly modern next to every
other antiphon's archaic register, so reworded to match (the
underlying verse's standard Douay-Rheims wording) and marked draft
rather than presented as a straight source transcription.

Also noted in TODO.md, not fixed: splitNamedAntiphon always marks its
output verified regardless of input status, so a draft antiphon
currently renders as if fully verified wherever it's actually
displayed -- a pre-existing issue across every hour, only now surfaced
by content with a real draft status going through it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 21:02:00 -04:00
will cc0d8cc892 calendar: move St. Hilary of Poitiers to his real date, Jan 14
Deploy / deploy (push) Successful in 53s
Confirmed against the raw [Officium] file directly: Jan 14 is Hilary
(Latin/Sancti/01-14.txt), Jan 23 is St. Raymond of Peñafort
(Latin/Sancti/01-23.txt) -- not Hilary at all. The original Jan-23
placement wasn't fabricated, just misled by its own source: 2029 is a
real year where Jan 14 falls on a Sunday and every day through the
22nd is already occupied by another feast, so Hilary genuinely
transfers all the way to the 23rd that one year -- the app had
mistaken that transfer-year artifact for his real, fixed date.

His collect text is unaffected (a feast's collect doesn't change based
on which day it's said), re-confirmed identical on his real date.
Benedictus antiphon pulled fresh, completing January's antiphon pass
(9/9).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 20:57:43 -04:00
will 0878c3d60c propers: Benedictus antiphons for January's sanctoral entries (9/9)
Deploy / deploy (push) Successful in 50s
All 9 January saints with a propers id: 5 authored fresh (Marcellus I,
Paul the Hermit, Fabian & Sebastian, Vincent & Anastasius, John
Chrysostom), 3 corrected (Chair of St. Peter at Rome, Agnes,
Conversion of St. Paul -- each confirmed sourced from the Roman rite's
raw [Ant 1] rather than a real Monastic 1617 rendering, same mistake
as St. Lawrence's earlier fix), 1 left honestly missing (Hilary of
Poitiers -- this app's calendar has him Jan 23, but Divinum Officium's
own calendar has him Jan 14; flagged in TODO.md rather than guessed
at). See TODO.md for the full remaining scope and the method this
settled on after automated matching proved unreliable on real edge
cases (shared dates, saints the reference engine doesn't carry at
all).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 16:58:18 -04:00
will 0404642614 calendar: add Christ the King, last Sunday of October
Deploy / deploy (push) Successful in 51s
A 1925 addition, so nowhere in the Monastic Tridentinum 1617 base this
project otherwise targets -- content sourced from "Monastic Divino
1930" instead, the Monastic-lineage version of the era that actually
carries it. Always wins outright (Duplex I. classis, confirmed live),
commemorating whichever Sunday after Pentecost it displaces -- same
additive-layering shape as applyOctaves/applyMarianSaturday, run last
so nested commemorations (e.g. a Simplex saint already commemorated
under that Sunday) survive underneath it.

Extended the Lauds psalmody-override mechanism (both the psalm groups
and, newly, the chapter/responsory/hymn/versicle bundle) to recognize
named temporal winners as unconditionally override-eligible, not just
duplex-majus+ sanctoral ones -- generalizing what had been a Marian-
Saturday-only special case. Suffrages needed their own explicit check
too: isDoubleOrHigher only ever looks at a sanctoral rank, and a named
temporal winner has no FeastClass to check at all.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 14:13:22 -04:00
will 747a078580 calendar: model Our Lady's Saturday as a real occurrence outcome
Deploy / deploy (push) Successful in 49s
On a free Saturday (nothing privileged already claims it, no active
octave), the day's own identity is now "Our Lady's Saturday" rather
than an anonymous ordinary-feria -- mirrors privileged-feria-minor
exactly, per direct instruction: Semiduplex-or-higher still wins
outright (Marian Saturday doesn't apply at all); below that (Simplex,
and Vigil, both under semiduplex on the FeastClass scale) loses and is
commemorated instead. Layered additively after decideOccurrence, same
shape as applyOctaves -- never touches decideOccurrence's own rules.

Needed a real winner identity (not just the plain temporal feria id)
so day-label/antiphon/collect sourcing can recognize it -- added a
temporal-feasts record purely for that, and taught getDayLabel to
check it for any named temporal winner (a small, free improvement for
Christmas/Pentecost's own labels too, previously unhandled).

hours: build the duplex-majus+ Lauds psalmody override (per-feast)

lauds-psalmody no longer unconditionally uses the plain weekday
default: a duplex-majus-or-higher sanctoral winner, or Our Lady's
Saturday (unconditional, no rank threshold -- it isn't competing with
the weekday default the way a saint is), now substitutes its own
proper psalm groups/antiphons/canticle. Per-feast, not per-Common, per
direct instruction, even though most duplex-majus+ saints across the
year don't have one authored yet and fall back to the plain weekday
default until they do.

Content for the worked example (St. Lawrence's own day) surfaced a
real bug while sourcing it: st-lawrence-antiphon.yml had been read
from the Roman/secular rite's own [Ant 1], not Monastic 1617's actual
Benedictus antiphon for that day -- corrected from a fresh live query.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 14:02:55 -04:00
will 73f9c1aebe hours: use the Marian Sabbato hymn as Saturday's own Lauds default
Deploy / deploy (push) Successful in 47s
By explicit choice, not the honest-missing placeholder from before: a
genuinely per-annum, unprivileged Saturday isn't achievable (every one
is either Marian-Sabbato-overridden or in a privileged season with its
own swapped hymn), so Sanctae Mariae Sabbato's own hymn ("O gloriosa
Domina") becomes Saturday's default rather than leaving a gap.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 11:57:57 -04:00
will 70fbdd12d0 propers: transcribe Lauds' fixed and weekday content
Every fixed and weekday-variable text Lauds needs beyond the psalms/
canticles themselves: per-weekday antiphons (data/hours/lauds-
antiphons.yml, reconstructed with an embedded '*' from the engine's
separately-rendered incipit/full lines), the weekday capitulum/
responsory/hymn/versicle bundle (shared verbatim Mon-Fri for the
capitulum, confirmed against the live engine), the fixed Benedictus
text, the Kyrie/Pater-noster short litany, the four Tridentine
suffrages, the conclusio, and the closing versicle.

Saturday's hymn is left honestly `missing`: every ordinary-time
Saturday is either Marian-Sabbato-overridden or falls in a privileged
season whose hymn is itself swapped for the season's own, so there's
no achievable date showing a genuinely per-annum, unprivileged
Saturday Lauds hymn to source it from.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 11:45:08 -04:00
will c0413a44dc propers: add December's collect and antiphon text
Deploy / deploy (push) Successful in 45s
10 collects, 5 antiphons -- including backfilling the pre-existing
Immaculate Conception entry. St. Damasus's collect is Latin-only (no
English translation exists in the reference source at all); a few
others (All Saints, Bibiana, Immaculate Conception) needed their English
read directly from the raw source file after the live query's English
side either omitted the Oratio translation or rendered the wrong Marian
feast's text -- caught by cross-checking, not assumed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 06:34:45 -04:00
will 7cc6adfb55 propers: add November's collect and antiphon text
Deploy / deploy (push) Successful in 44s
9 collects, 3 antiphons -- including backfilling the pre-existing All
Saints entry. Also updates two pre-existing tests whose shared date
(2025-11-30, Advent I Sunday) now correctly shows St. Andrew commemorated
alongside it, confirmed against the live reference engine.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 06:18:12 -04:00
will 14227c7afe propers: add October's collect text
Deploy / deploy (push) Successful in 46s
7 collects. Also moves two pre-existing tests' dates off Oct 4-5, which
now carry real sanctoral content (St. Francis, Ss. Placid and
Companions) that changes their governing behavior -- same class of
collision as previous months.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 06:07:51 -04:00
will 3376036779 propers: add September's collect and antiphon text
Deploy / deploy (push) Successful in 43s
6 collects, 1 antiphon -- including backfilling the pre-existing Nativity
of the BVM entry now that the pulling methodology exists.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 21:20:44 -04:00
will a492be961b propers: add August's collect and antiphon text
Deploy / deploy (push) Successful in 44s
11 collects, 4 antiphons -- including backfilling the three pre-existing
August entries (Lawrence, Assumption, Augustine) now that the pulling
methodology exists. Also updates three pre-existing tests whose dates
collided with this month's new real content: the vigil-of-St.-Lawrence
backward-transfer case now runs into a real feast at its landing day
instead of an empty one (confirmed correct against the live reference
engine, including the surviving commemoration on the impeded Sunday
itself), and two other tests moved off Aug 9/10 to dates unaffected by
the new data.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 21:11:56 -04:00
will c03d6a227d propers: add July's collect and antiphon text
Deploy / deploy (push) Successful in 42s
Real collect text for all 9 July saints that have one, plus St. Mary
Magdalene's own antiphon — same extraction method as prior months.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 18:38:50 -04:00
will 9b8dc200a1 propers: add June's collect and antiphon text
Deploy / deploy (push) Successful in 42s
Real collect text for all 16 June saints that have one, plus a real
antiphon for 4 of them and a fifth (Ss. Peter and Paul) that deliberately
reuses the Chair-of-Peter-at-Antioch antiphon text, matching the source's
own cross-reference — same extraction method as prior months.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 17:37:27 -04:00
will a6a72f277d propers: add May's collect and antiphon text
Deploy / deploy (push) Successful in 42s
Real collect text for all 13 May saints that have one, plus a real
antiphon for the 3 that have one of their own (Ss. Philip and James, St.
John Before the Latin Gate, the Apparition of St. Michael) — same
extraction method as prior months. Two saints (St. Peter Celestine, St.
Urban I) have an [Ant 1] in the source that turned out to just be a
cross-reference to the generic Common template, not real unique text, so
no antiphon file was authored for them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 17:25:56 -04:00
will 88074cdfe6 propers: add April's collect text
Deploy / deploy (push) Successful in 41s
Real collect text for all 8 April saints that have one — same extraction
method as prior months. One correction to St. Robert's own English
translation in the source, which left his name in Latin genitive form
("blessed Robérti") rather than translating it — fixed, flagged in the
file as a transcription artifact, not a deliberate style choice.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 17:14:12 -04:00
will a2d86a4879 propers: add March's collect and antiphon text
Deploy / deploy (push) Successful in 40s
Real collect text for all 6 March saints that have one, plus St. Joseph's
own antiphon — same extraction method as January/February.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 15:38:11 -04:00
will 8cb10e57de propers: add February's collect and antiphon text
Deploy / deploy (push) Successful in 38s
Real collect text for the 6 February saints that have one, plus a real
antiphon for the 2 that have one of their own — same extraction method
as January (fully-rendered live-engine output, not the raw source files'
own shorthand endings).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 15:33:29 -04:00
will c1d99ea70b propers: add January's collect and antiphon text
Deploy / deploy (push) Successful in 41s
Real collect text for the 9 January saints that have one, plus a real
antiphon for the 3 that have one of their own (as opposed to falling back
to a generic Common-of-Saints text) — read directly from the reference
engine's fully-rendered output, not reconstructed from the raw source
files' own shorthand endings ($Per Dominum, $Qui vivis, etc.).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 15:26:16 -04:00
will 813d173f5c hours: build Terce, Sext, and None
Deploy / deploy (push) Successful in 39s
Three separate resolver files (terce.ts/sext.ts/none.ts), not a shared
little-hour module — they're structurally identical but kept independent
by choice. Ordo verified against Divinum Officium (Monastic Tridentinum
1617): opening versicle, self-contained hymn, one antiphon framing three
psalms (no closing repeat, unlike Prime), a capitulum with its own
embedded short versicle/response, the day's own collect, and a closing
identical across all three hours.

Also fills in psalter-distribution.yml's previously-missing Sunday/
Monday/Tuesday psalm entries (Ps 118 sections for Sunday/Monday; Tuesday
turns out to share Wednesday/Thursday's native gradual-psalm set, not a
distinct one). Friday/Saturday's antiphons are derived from each day's
first psalm rather than reusing the native gradual antiphons, since
those two days already use a redistributed, non-native psalm set.

hours/types.ts gains a 'day-collect' part kind — the first ordo to use
the day's own Proper collect rather than a fixed text.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 13:51:08 -04:00
will 7a932b40be propers: add the Terce/Sext/None hymns
Fixed, self-contained text (including each hymn's own final doxology
stanza) — unlike Prime's/Compline's hymns, these don't change by season,
so there's no appendDoxology split. Verified against Divinum Officium
(Monastic Tridentinum 1617).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 13:50:49 -04:00
will ec448bc35b compline: build the full hour, sharing Prime's resolver helpers
Deploy / deploy (push) Successful in 38s
Ordo is Monastic 1617 as a base, with deliberate Tridentine 1906
additions: the "In manus tuas" short responsory, the Nunc Dimittis
with its "Salva nos" antiphon, the fuller Preces (Monastic's own is
shorter), and Lent's "Christe, qui lux es et dies" hymn replacement
(English translation marked draft, pending a real historical one).
Psalms 4, 90, 133 are fixed daily with real verified text, unlike
Prime's weekday-rotated psalms.

The closing Marian antiphon now picks Alma Redemptoris Mater / Ave
Regina Caelorum / Regina Caeli / Salve Regina by real season, using
the calendar work from the previous commit — except Ave Regina
Caelorum's own window (Candlemas through the day before Maundy
Thursday) doesn't align to any single season value, so that one case
checks the real date directly instead of going through the by-season
table.

resolve-common.ts extracts the resolve/status/doxology/antiphon
helpers Prime already had into something Compline can share; a few
propers files lose their "prime-" prefix now that both hours use them.
2026-08-10 05:27:40 -04:00
will 58958aa847 Prime: real content (psalms, Martyrology, Regula) and ordo corrections
Deploy / deploy (push) Failing after 21s
Pulls in verified content from Divinum Officium rather than placeholders:
17 psalms (2, 6, 7-19, 118, 129), 365 days of the Martyrology, and the full
121-reading Regula cycle, plus the Athanasian Creed.

Ordo corrections driven by review against the real engine output:
- Capitulum and Preces now pick a Sunday/feast vs. ferial form
  (calendar/isSundayOrFeast); ferial Preces said every ferial day by choice.
- Chapter responsory, hymn doxology, and the opening versicle's
  Alleluia/Laus tibi all vary by season via a shared resolver
  (hours/seasonal-propers.ts).
- Real Roman Kalends/Nones/Ides Latin dating (calendar/roman-date.ts,
  verified against 363/365 real Martyrology headings) plus the historical
  "bis sextus" Feb 29 handling, and the Martyrology's Luna (moon-day)
  heading (a ported Golden-Number calculation).
- Fixed responsory structure (was missing its initial full repeat),
  weekday psalm antiphons (opening as incipit-or-full by rank, full
  repeat after the psalms/Creed as its own part, "*" chant mark kept),
  scripture citations on the capitulum/lectio brevis, and V./R. markers
  switched from Unicode symbols to plain text for reliable font rendering.
- Dropped Pretiosa and the dead-commemoration psalm (129) for time;
  trimmed section headings down to the ones that are actually named
  things (Preces, Chapter Office, etc. no longer relabel connective text).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-09 20:03:53 -04:00