Compare commits

..

2 Commits

Author SHA1 Message Date
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 67915b6c81 calendar: pull March's sanctoral calendar (pre-1955 pull, 3/12)
7 saints for March, all winning outright on a clean per-annum date. Notably
St. Benedict himself (Mar 21, Duplex I. classis, the founder — "S. P. N."
in the source) turns out to have no unique Oratio/Antiphon at all in this
date's source file, only Common-of-an-Abbot cross-references — flagged in
his own file to check his second (July) feast when that month comes up.

Two Benedictine-oblate saints (Frances of Rome, Gregory the Great) are
marked "O. N." (Ordinis Nostri) in the source — real significance for a
monastic calendar. St. Frances also needed a new common category,
common-of-a-widow (she's neither virgin nor martyr).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 15:38:04 -04:00
16 changed files with 252 additions and 0 deletions
@@ -0,0 +1,8 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live kalendar
# check (2033-03-10, no Sunday collision) -- winner outright, Semiduplex.
# Own proper collect, no unique antiphon of their own.
id: forty-holy-martyrs
name: "The Forty Holy Martyrs"
rank: semiduplex
common: common-of-several-martyrs
propers: "forty-holy-martyrs"
+14
View File
@@ -0,0 +1,14 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live kalendar
# check (2033-03-21, no Sunday collision) -- winner outright, Duplex I.
# classis, the highest rank short of a first-class feast of the Lord. The
# founder himself ("S. P. N." -- Sanctus Pater Noster, "Our Holy Father" --
# in the source), yet his own March file (web/www/horas/Latin/Sancti/
# 03-21.txt) has no unique Oratio/Antiphon at all, only Commune-of-an-Abbot
# cross-references. Benedict has a second feast in July ("Confessio") not
# yet pulled -- worth checking there for content this March date lacks,
# when that month's turn comes.
id: st-benedict
name: "St. Benedict, Abbot (Transitus)"
rank: duplex-1-classis
common: common-of-an-abbot
propers: null
@@ -0,0 +1,12 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live kalendar
# check (2038-03-09, clear of the movable Lenten Ember Wednesday that
# usually overshadows this date, and not a Sunday) -- winner outright,
# Simplex. Marked "O. N." (Ordinis Nostri, "of Our Order") in the source --
# a Benedictine oblate, real significance for a monastic calendar
# specifically. Own proper collect, no unique antiphon of her own. A widow
# rather than a virgin or martyr, so a new category: "common-of-a-widow".
id: st-frances-of-rome
name: "St. Frances of Rome, Widow"
rank: simplex
common: common-of-a-widow
propers: "st-frances-of-rome"
@@ -0,0 +1,10 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live kalendar
# check (2033-03-12, no Sunday collision) -- winner outright, Duplex.
# Marked "O. N." (Ordinis Nostri) in the source, like St. Frances of Rome --
# traditionally counted among Benedictine oblates/associates despite not
# being a monk himself. Own proper collect, no unique antiphon of his own.
id: st-gregory-the-great
name: "St. Gregory the Great, Pope, Confessor and Doctor of the Church"
rank: duplex
common: common-of-a-confessor-bishop
propers: "st-gregory-the-great"
+10
View File
@@ -0,0 +1,10 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live kalendar
# check (2033-03-19, no Sunday collision) -- winner outright, Duplex. About
# St. Joseph the person, kept in the sanctoral store like the two
# Chair-of-Peter feasts, not treated as a Lord/BVM feast despite the close
# association. Own proper collect and antiphon.
id: st-joseph
name: "St. Joseph, Spouse of the Blessed Virgin Mary, Confessor"
rank: duplex
common: common-of-a-confessor
propers: "st-joseph"
+13
View File
@@ -0,0 +1,13 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live kalendar
# check (2038-03-04, a year Ash Wednesday falls after this date, and not a
# Sunday) -- winner outright, Simplex. In most years he's instead
# overshadowed by the movable Lenten calendar (any Lenten feria, not just
# post-Ash-Wednesday specifically, seems to outrank him in this app's
# engine -- same kind of privileged-feria precedence gap already flagged
# for St. Matthias, not re-litigated here). Own proper collect, no unique
# antiphon of his own.
id: st-lucius-i
name: "St. Lucius I, Pope and Martyr"
rank: simplex
common: common-of-a-martyr-bishop
propers: "st-lucius-i"
@@ -0,0 +1,9 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live kalendar
# check (2033-03-07, no Sunday collision) -- winner outright, Duplex. Own
# proper collect, no unique antiphon of his own. Not a bishop, so
# "common-of-a-confessor" rather than the -bishop variant.
id: st-thomas-aquinas
name: "St. Thomas Aquinas, Confessor and Doctor of the Church"
rank: duplex
common: common-of-a-confessor
propers: "st-thomas-aquinas"
+11
View File
@@ -56,6 +56,17 @@ days:
"02-22": [chair-of-st-peter-at-antioch]
"02-23": [vigil-of-st-matthias]
"02-24": [st-matthias]
# March — 3/12 of the pre-1955 pull. Same exclusions as before (fixed
# BVM feast: Annunciation Mar 25). St. Benedict's own day (Mar 21,
# Duplex I. classis, the highest rank in this set so far) has no
# unique propers in the source at all — see st-benedict.yml.
"03-04": [st-lucius-i]
"03-07": [st-thomas-aquinas]
"03-09": [st-frances-of-rome]
"03-10": [forty-holy-martyrs]
"03-12": [st-gregory-the-great]
"03-19": [st-joseph]
"03-21": [st-benedict]
"08-09": [vigil-of-st-lawrence]
"08-10": [st-lawrence]
"08-15": [assumption]
@@ -0,0 +1,19 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2033-03-10, a
# year that date doesn't collide with a Sunday). Same convention as
# data/propers/temporal/*-collect.yml.
id: forty-holy-martyrs-collect
text:
la: |
Orémus.
Præsta, quǽsumus, omnípotens Deus: ut, qui gloriósos Mártyres fortes in sua confessióne cognóvimus, pios apud te in nostra intercessióne sentiámus.
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
℟. Amen.
en: |
Let us pray.
Grant, we beseech thee, O Almighty God, that we who know thy glorious Martyrs to have been in their testimony leal and true towards thee, may, now that they are with thee, feel them to be in their petitions pitiful towards us.
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
℟. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,19 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2038-03-09, a
# year that date doesn't collide with a Sunday). Same convention as
# data/propers/temporal/*-collect.yml.
id: st-frances-of-rome-collect
text:
la: |
Orémus.
Deus, qui beátam Francíscam fámulam tuam, inter cétera grátiæ tuæ dona, familiári Angeli consuetúdine decorásti: concéde, quǽsumus; ut, intercessiónis ejus auxílio, Angelórum consórtium cónsequi mereámur.
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
℟. Amen.
en: |
Let us pray.
O God, Who along with other gifts of thy grace honored blessed Frances, thy handmaid, with the close companionship of an angel, grant, we beseech thee, that by the help of her intercession we may be made worthy to attain the companionship of angels.
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
℟. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,19 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2033-03-12, a
# year that date doesn't collide with a Sunday). Same convention as
# data/propers/temporal/*-collect.yml.
id: st-gregory-the-great-collect
text:
la: |
Orémus.
Deus, qui ánimæ fámuli tui Gregórii ætérnæ beatitúdinis prǽmia contulísti: concéde propítius; ut, qui peccatórum nostrórum póndere prémimur, ejus apud te précibus sublevémur.
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
℟. Amen.
en: |
Let us pray.
O God, who hast blessed the soul of thy servant Gregory with an everlasting blessing, mercifully grant that we, who groan under the burden of our sins, may by his prayers be relieved.
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
℟. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,10 @@
# Verified against Divinum Officium (Latin/English Sancti/03-19.txt's own
# [Ant 1] — the Lauds-hour antiphon, not Terce's, which falls back to a
# generic Common text instead.
id: st-joseph-antiphon
text:
la: "Exsúrgens Joseph a somno, * fecit sicut præcépit ei Angelus Dómini, et accépit cónjugem suam."
en: "Joseph, being raised * from sleep, did as the Angel of the Lord had bidden him, and took unto him his wife."
status:
la: verified
en: verified
@@ -0,0 +1,19 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2033-03-19, a
# year that date doesn't collide with a Sunday). Same convention as
# data/propers/temporal/*-collect.yml.
id: st-joseph-collect
text:
la: |
Orémus.
Sanctíssimæ Genitrícis tuæ sponsi, quǽsumus, Dómine, méritis adjuvémur; ut quod possibílitas nostra non óbtinet, ejus nobis intercessióne donétur.
Qui vivis et regnas cum Deo Patre, in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
℟. Amen.
en: |
Let us pray.
Help us, we beseech thee, O Lord, for the sake of the Husband of thy most holy Mother, that what we cannot for ourselves obtain, Thou mayest grant us at his petition.
Who livest and reignest with God the Father in the unity of the Holy Spirit, God, world without end.
℟. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,19 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2038-03-04, a
# year that date doesn't collide with a Sunday). Same convention as
# data/propers/temporal/*-collect.yml.
id: st-lucius-i-collect
text:
la: |
Orémus.
Deus, qui nos beáti Lúcii Mártyris tui atque Pontíficis ánnua solemnitáte lætíficas: concéde propítius; ut, cujus natalítia cólimus, de ejúsdem étiam protectióne gaudeámus.
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
℟. Amen.
en: |
Let us pray.
O God, who year by year dost gladden us by the solemn feast day of thy Blessed Martyr and Bishop Lucius, mercifully grant that we who keep his birthday, may ever feel the joyful effects of his protection.
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
℟. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,19 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2033-03-07, a
# year that date doesn't collide with a Sunday). Same convention as
# data/propers/temporal/*-collect.yml.
id: st-thomas-aquinas-collect
text:
la: |
Orémus.
Deus, qui Ecclésiam tuam beáti Thomæ Confessóris tui mira eruditióne claríficas, et sancta operatióne fœcúndas: da nobis, quǽsumus; et quæ dócuit, intelléctu conspícere, et quæ egit, imitatióne complére.
Per Dóminum nostrum Jesum Christum, Fílium tuum: qui tecum vivit et regnat in unitáte Spíritus Sancti, Deus, per ómnia sǽcula sæculórum.
℟. Amen.
en: |
Let us pray.
O God, Who dost enlighten thy Church by the wonderful learning of thy blessed Confessor Thomas, and quickenest her through his godly labours, grant unto thy people, we humbly beseech thee, ever to apprehend by their understanding what he teacheth, and in their life faithfully to practice the same.
Through Jesus Christ, thy Son our Lord, Who liveth and reigneth with thee, in the unity of the Holy Ghost, God, world without end.
℟. Amen.
status:
la: verified
en: verified
+41
View File
@@ -0,0 +1,41 @@
import { describe, expect, it } from 'vitest';
import { resolveDay } from '../../src/calendar';
import { getDayCollect } from '../../src/hours/resolve-common';
// Clean per-annum years for these dates (no Sunday collision; for Mar 4/9
// specifically, clear of the movable Lenten ferias that usually overshadow
// them) — see data/calendar/saints/*.yml for per-saint source detail.
describe('March sanctoral pull (first pass)', () => {
it('St. Joseph wins outright with a real proper collect and antiphon', () => {
const day = resolveDay('2033-03-19');
expect(day.winner).toEqual({
kind: 'sanctoral',
id: 'st-joseph',
name: 'St. Joseph, Spouse of the Blessed Virgin Mary, Confessor',
rank: 'duplex',
});
expect(getDayCollect(day).status.en).toBe('verified');
});
it('the Forty Holy Martyrs (one feast, several martyrs) resolve like any other saint', () => {
const day = resolveDay('2033-03-10');
expect(day.winner).toEqual({
kind: 'sanctoral',
id: 'forty-holy-martyrs',
name: 'The Forty Holy Martyrs',
rank: 'semiduplex',
});
expect(getDayCollect(day).status.en).toBe('verified');
});
it("St. Benedict wins outright at Duplex I. classis despite having no unique propers at all", () => {
const day = resolveDay('2033-03-21');
expect(day.winner).toEqual({
kind: 'sanctoral',
id: 'st-benedict',
name: 'St. Benedict, Abbot (Transitus)',
rank: 'duplex-1-classis',
});
expect(getDayCollect(day).status.en).toBe('missing');
});
});