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>
This commit is contained in:
2026-08-10 21:11:56 -04:00
parent 5230e661c0
commit a492be961b
20 changed files with 387 additions and 11 deletions
@@ -0,0 +1,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2025-08-15).
id: assumption-collect
text:
la: |
Orémus.
Famulórum tuórum, quǽsumus, Dómine, delíctis ignósce: ut qui tibi placére de áctibus nostris non valémus: Genitrícis Fílii tui Dómini nostri intercessióne salvémur:
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 Lord, we beseech thee, forgive the transgressions of thy servants, and, forasmuch as by our own deeds we cannot please thee, may we find safety through the prayers of the Mother of thy Son and our Lord.
Who with thee liveth and reigneth, in the unity of the Holy Spirit, God, world without end.
℟. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,9 @@
# Verified against Divinum Officium (Latin/English Sancti/08-29.txt's own
# [Ant 1] — the Lauds-hour antiphon, not Terce's.
id: decollation-of-st-john-baptist-antiphon
text:
la: "Misso Heródes * spiculatóre, præcépit amputári caput Joánnis in cárcere. Quo audíto, discípuli ejus venérunt, et tulérunt corpus ejus, et posuérunt illud in monuménto."
en: "Herod sent * an executioner, and commanded that John's head should be cut off in the prison. When they heard thereof, his disciples came and took up his body and laid it in a tomb."
status:
la: verified
en: verified
@@ -0,0 +1,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2025-08-29).
id: decollation-of-st-john-baptist-collect
text:
la: |
Orémus.
Sancti Joánnis Baptístæ Præcursóris et Mártyris tui, quǽsumus, Dómine, veneránda festívitas: salutáris auxílii nobis præstet efféctum:
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.
Lord, we beseech thee, that the keeping of this honourable feastday in memory of the holy Baptist John, thy Fore-runner, and thy Martyr, may be a mean to draw upon us the effectual outpouring of thy saving help.
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,11 @@
# Verified against Divinum Officium (Latin/English Sancti/08-03.txt's own
# [Ant 1] — a deliberate, unmodified cross-reference to St. Stephen's own
# Dec 26 antiphon. Duplicated content, not a shared reference, matching
# this project's one-file-per-id convention.
id: finding-of-st-stephen-antiphon
text:
la: "Stéphanus autem * plenus grátia et fortitúdine, faciébat signa magna in pópulo."
en: "And Stephen, full of grace * and fortitude, did great signs among the people."
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 (2026-08-03),
# which auto-expands the raw file's cross-reference to St. Stephen's Dec
# 26 collect with "natalícia" substituted for "Inventiónem".
id: finding-of-st-stephen-collect
text:
la: |
Orémus.
Da nobis, quǽsumus, Dómine, imitári quod cólimus: ut discámus et inimícos dilígere; quia ejus Inventiónem celebrámus, qui novit étiam pro persecutóribus exoráre 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 us, we beseech thee, O Lord, so to imitate what we revere, that we may learn to love even our enemies; for we celebrate the Finding of the holy body of him who knew how to pray for his very persecutors to our Lord Jesus Christ:
Who with thee liveth and reigneth, in the unity of the Holy Spirit, God, world without end.
℟. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2025-08-08).
id: ss-cyriacus-largus-and-smaragdus-collect
text:
la: |
Orémus.
Deus, qui nos ánnua sanctórum Mártyrum tuórum Cyríaci, Largi et Smarágdi sollemnitáte lætíficas: concéde propítius; ut, quorum gaudémus méritis, accendámur exémplis.
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 gladden us by the annual festival of Your Martyrs Cyriacus, Largus, and Smaragdus, grant that we may be inspired by the example of those in whose merits we rejoice.
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,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2025-08-28).
id: st-augustine-collect
text:
la: |
Orémus.
Adésto supplicatiónibus nostris, omnípotens Deus: et, quibus fidúciam sperándæ pietátis indúlges, intercedénte beáto Augustíno Confessóre tuo atque Pontífice, consuétæ misericórdiæ tríbue benígnus efféctum.
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.
Graciously hear our supplications, O Almighty God, and as Thou hast given unto us the hope that we are of the number of them upon whom Thou wilt show mercy, grant unto us in thy goodness, that, helped by the prayers of thy blessed Confessor and Bishop Augustine, we may experience the fulfillment of thine accustomed loving-kindness.
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,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2026-08-24).
id: st-bartholomew-collect
text:
la: |
Orémus.
Omnípotens sempitérne Deus, qui hujus diéi venerándam sanctámque lætítiam in beáti Apóstoli tui Bartholomǽi festivitáte tribuísti: da Ecclésiæ tuæ, quǽsumus; et amáre quod crédidit, et prædicáre quod dócuit.
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 Almighty and everlasting God, Who hast given unto us this day to be a day worshipful, and holy, and joyful, because of the Feast of thy blessed Apostle Bartholomew, grant, we beseech thee, unto thy Church both to love that which he believed, and to preach that which he taught.
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,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2025-08-20).
id: st-bernard-collect
text:
la: |
Orémus.
Intercéssio nos, quǽsumus, Dómine, beáti Bernárdi Abbátis comméndet: ut, quod nostris méritis non valémus, ejus patrocínio assequá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.
May the pleading of blessed Bernard, the Abbot, make us acceptable unto thee, O Lord, we pray; that what we may not have through any merits of ours, we may gain by means of his patronage.
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,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2025-08-04).
id: st-dominic-collect
text:
la: |
Orémus.
Deus, qui Ecclésiam tuam beáti Domínici Confessóris tui illumináre dignátus es méritis et doctrínis: concéde; ut ejus intercessióne temporálibus non destituátur auxíliis, et spirituálibus semper profíciat increméntis.
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 been pleased to shed throughout thy Church the light of the worthy deeds and healthful teaching of thy blessed Confessor Dominic, grant unto the same, with the help of his prayers, that she may never be either helpless in things temporal, or barren in things spiritual.
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,9 @@
# Verified against Divinum Officium (Latin/English Sancti/08-10.txt's own
# [Ant 1] — the Lauds-hour antiphon, not Terce's.
id: st-lawrence-antiphon
text:
la: "Levíta Lauréntius * bonum opus operátus est, qui per signum crucis cæcos illuminávit, et thesáuros Ecclésiæ dedit paupéribus."
en: "Lawrence the Deacon * performed a pious act by giving sight to the blind through the Sign of the Cross, and by bestowing on the poor the riches of the Church."
status:
la: verified
en: verified
@@ -0,0 +1,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2026-08-10).
id: st-lawrence-collect
text:
la: |
Orémus.
Da nobis, quǽsumus, omnípotens Deus: vitiórum nostrórum flammas exstínguere; qui beáto Lauréntio tribuísti tormentórum suórum incéndia superá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 Almighty God, Who didst give unto Blessed Lawrence power to be more than conqueror in his fiery torment, grant unto us, we beseech thee, the power to quench the flames of our sinful lusts.
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,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2025-08-25).
id: st-louis-collect
text:
la: |
Orémus.
Deus, qui beátum Ludovícum Confessórem tuum de terréno regno ad cæléstis regni glóriam transtulísti: ejus, quǽsumus, méritis et intercessióne; Regis regum Jesu Christi, Fílii tui, fácias nos esse consórtes:
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 didst give unto thy blessed Confessor Louis a glorious change from an earthly kingdom unto an heavenly, grant unto us, we beseech thee, for his sake and by his prayers, one day to enter like him into the Presence of the King of kings, even thy Son Jesus Christ.
Who with thee liveth and reigneth, in the unity of the Holy Spirit, God, world without end.
℟. Amen.
status:
la: verified
en: verified
@@ -0,0 +1,12 @@
# Verified against Divinum Officium (Latin/English Sancti/08-01.txt's own
# [Ant 1] — a deliberate cross-reference to the Chair-of-Peter-at-Antioch
# antiphon (Feb 22, see chair-of-st-peter-at-antioch-antiphon.yml), same
# reuse pattern as Ss. Peter and Paul in June. Duplicated content, not a
# shared reference, matching this project's one-file-per-id convention.
id: st-peter-ad-vincula-antiphon
text:
la: "Tu es pastor óvium, * Princeps Apostolórum, tibi tráditæ sunt claves regni cælórum."
en: "Thou art the Shepherd * of the sheep, and the Prince of the Apostles, and unto thee are given the keys of the kingdom of heaven."
status:
la: verified
en: verified
@@ -0,0 +1,17 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2026-08-01).
id: st-peter-ad-vincula-collect
text:
la: |
Orémus.
Deus, qui beátum Petrum Apóstolum, a vínculis absolútum, illǽsum abíre fecísti: nostrórum, quæsumus, absólve víncula peccatórum; et ómnia mala a nobis propitiátus exclúde.
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 didst loose the blessed Apostle, Peter, from his chains and didst make him go forth unharmed, loose, we pray, the chains of our sins, and in thy mercy ward off from us every evil.
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,21 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617) — read
# directly from the reference engine's own real-date output (2025-08-26).
# The English "so his example may be of betterment" is corrected from a
# dropped mid-word "e" ("exampl / may be of betterment") present in both
# the raw source file and the live query output -- a transcription
# artifact, not a stylistic choice.
id: st-zephyrinus-collect
text:
la: |
Orémus.
Præsta, quǽsumus, omnípotens Deus: ut beáti Zephyríni, Mártyris tui atque Pontíficis, cujus gaudémus méritis, instruámur exémplis.
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 as the worthy acts of thy blessed Bishop and martyr Zephyrinus are made unto us a cause of joy, so his example may be of betterment.
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
+101
View File
@@ -0,0 +1,101 @@
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) — see
// data/calendar/saints/*.yml for per-saint source detail.
describe('August sanctoral pull (first pass)', () => {
it('St. Peter\'s Chains wins outright at Duplex majus with a real proper collect and antiphon, over a genuinely unwinnable stub', () => {
const day = resolveDay('2026-08-01');
expect(day.winner).toEqual({
kind: 'sanctoral',
id: 'st-peter-ad-vincula',
name: "St. Peter's Chains",
rank: 'duplex-majus',
});
expect(day.commemorations).toEqual([
{ kind: 'sanctoral', id: 'ss-machabees', name: 'Ss. Machabees, Martyrs', rank: 'simplex' },
]);
expect(getDayCollect(day).status.en).toBe('verified');
});
it('a saint normally blocked by the generic Saturday-of-Mary votive wins independently once the date falls on another weekday', () => {
const day = resolveDay('2027-08-02'); // a Monday
expect(day.winner).toEqual({
kind: 'sanctoral',
id: 'st-stephen-i',
name: 'St. Stephen I, Pope and Martyr',
rank: 'simplex',
});
expect(day.commemorations).toEqual([]);
});
it('St. Donatus wins outright every year in this app, unlike the real reference engine where he is occasionally displaced by a multi-day forward transfer this app does not model', () => {
// In the real Monastic 1617 engine, when Aug 3 (the Finding of St.
// Stephen) falls on a Sunday, it transfers forward past several
// higher-rank fixed feasts (Dominic, Our Lady of the Snows, the
// Transfiguration) and lands on Aug 7, displacing Donatus for that
// year (confirmed live for 2025 and 2031, both Aug-3-Sunday years).
// This app's transfer machinery doesn't chase a multi-day skip search
// like that -- see st-donatus.yml -- so Donatus wins here in every
// year, including ones where the real engine would displace him; a
// known, documented simplification rather than a guess.
const ordinary = resolveDay('2026-08-07');
const wouldHaveTransferredInReality = resolveDay('2031-08-07');
for (const day of [ordinary, wouldHaveTransferredInReality]) {
expect(day.winner).toEqual({
kind: 'sanctoral',
id: 'st-donatus',
name: 'St. Donatus, Bishop and Martyr',
rank: 'simplex',
});
}
});
it("the Vigil of St. Lawrence's own vigil rank forces primacy over a real, otherwise-unranked secondary saint", () => {
const day = resolveDay('2025-08-09');
expect(day.winner).toEqual({
kind: 'sanctoral',
id: 'vigil-of-st-lawrence',
name: 'Vigil of St. Lawrence',
rank: 'vigil',
});
expect(day.commemorations).toEqual([
{ kind: 'sanctoral', id: 'st-romanus', name: 'St. Romanus, Martyr', rank: 'simplex' },
]);
});
it('St. Lawrence wins outright at Duplex II. classis, distinct from his own Vigil the day before', () => {
const day = resolveDay('2026-08-10');
expect(day.winner).toEqual({
kind: 'sanctoral',
id: 'st-lawrence',
name: 'St. Lawrence, Martyr',
rank: 'duplex-2-classis',
});
expect(getDayCollect(day).status.en).toBe('verified');
});
it('dates within St. Lawrence and the Assumption\'s own octaves are excluded entirely, even where the source names a real secondary saint (St. Clare, Aug 12), pending octave support', () => {
const clareDay = resolveDay('2025-08-12');
expect(clareDay.winner.kind).toBe('temporal');
expect(clareDay.commemorations).toEqual([]);
const assumptionOctaveDay = resolveDay('2025-08-22');
expect(assumptionOctaveDay.winner.kind).toBe('temporal');
expect(assumptionOctaveDay.commemorations).toEqual([]);
});
it('the Beheading of St. John the Baptist wins outright at Duplex with a real proper collect and antiphon, over a genuinely unwinnable stub', () => {
const day = resolveDay('2025-08-29');
expect(day.winner).toEqual({
kind: 'sanctoral',
id: 'decollation-of-st-john-baptist',
name: 'The Beheading of St. John the Baptist',
rank: 'duplex',
});
expect(day.commemorations).toEqual([
{ kind: 'sanctoral', id: 'st-sabina', name: 'St. Sabina, Martyr', rank: 'simplex' },
]);
expect(getDayCollect(day).status.en).toBe('verified');
});
});
+25 -7
View File
@@ -6,22 +6,40 @@ describe('transfer mechanism (resolveDay integration)', () => {
// added to exercise this — Aug 9, 2026 is a Sunday, so the vigil (rank
// 'vigil') can't win or be commemorated there (see
// commemorations.ts's ordinary-sunday rule) and must transfer backward.
it('a vigil impeded by an ordinary Sunday transfers backward to Saturday, leaving the Sunday untouched', () => {
// Since the August pull, Aug 8 is no longer an empty landing day — Ss.
// Cyriacus, Largus, and Smaragdus (Semiduplex, a fixed, non-movable
// date) natively occupy it every year, so the backward-transferred
// vigil runs into collision.ts's sanctoral-vs-sanctoral rules instead of
// landing untouched: Semiduplex outranks 'vigil' on the shared
// FeastClass scale, so Cyriacus wins and the vigil is commemorated
// rather than displacing him — real transfer+collision interaction, not
// a data error, same class of finding as July's Apollinaris/Vigil-of-
// St.-James case.
it('a vigil impeded by an ordinary Sunday transfers backward to Saturday and collides with the real feast already there', () => {
const saturday = resolveDay('2026-08-08');
const sunday = resolveDay('2026-08-09');
const monday = resolveDay('2026-08-10');
expect(saturday.winner).toEqual({
kind: 'sanctoral',
id: 'vigil-of-st-lawrence',
name: 'Vigil of St. Lawrence',
rank: 'vigil',
id: 'ss-cyriacus-largus-and-smaragdus',
name: 'Ss. Cyriacus, Largus, and Smaragdus, Martyrs',
rank: 'semiduplex',
});
expect(saturday.commemorations).toEqual([]);
expect(saturday.commemorations).toEqual([
{ kind: 'sanctoral', id: 'vigil-of-st-lawrence', name: 'Vigil of St. Lawrence', rank: 'vigil' },
]);
// The Sunday's own resolution is exactly as if the vigil didn't exist.
// The Sunday's own winner is unaffected by the vigil, but St. Romanus
// (the vigil's own stub secondary, see st-romanus.yml) still surfaces
// as a commemoration here: he lost his own local clash against the
// vigil before the vigil transferred away, and that loss stands
// independently of the transfer -- confirmed against the live
// reference engine, which shows the same commemoration on this date.
expect(sunday.winner).toEqual({ kind: 'temporal', id: 'post-pentecost-11' });
expect(sunday.commemorations).toEqual([]);
expect(sunday.commemorations).toEqual([
{ kind: 'sanctoral', id: 'st-romanus', name: 'St. Romanus, Martyr', rank: 'simplex' },
]);
// St. Lawrence's own day (Monday) is unaffected by the backward transfer.
expect(monday.winner).toEqual({
+9 -3
View File
@@ -32,10 +32,16 @@ describe('weekdayOf', () => {
describe('resolveDay', () => {
it('resolves a plain Sunday with no occurring feast', () => {
const day = resolveDay('2026-08-09');
expect(day.date).toBe('2026-08-09');
// Not 2026-08-09 (also a Sunday): since the August sanctoral pull, that
// date does carry a real commemoration (St. Romanus, impeded from
// winning by the Vigil of St. Lawrence, itself impeded by the Sunday
// and transferred away — see tests/calendar/transfer.test.ts, and
// confirmed against the live reference engine, which shows the same
// commemoration despite the vigil's own absence that day).
const day = resolveDay('2026-10-04');
expect(day.date).toBe('2026-10-04');
expect(day.weekday).toBe('sunday');
expect(day.winner).toEqual({ kind: 'temporal', id: 'post-pentecost-11' });
expect(day.winner.kind).toBe('temporal');
expect(day.commemorations).toEqual([]);
});
});
+1 -1
View File
@@ -18,7 +18,7 @@ describe('getDayCollect', () => {
});
it('resolves as honestly missing for a saint with no authored propers yet', () => {
const day = resolveDay('2026-08-10'); // St. Lawrence wins outright, propers: null
const day = resolveDay('2026-08-07'); // St. Donatus wins outright, propers: null
expect(day.winner.kind).toBe('sanctoral');
const collect = getDayCollect(day);
expect(collect.status.la).toBe('missing');