Add Our Lady of the Snows (Aug 5) to the calendar
Deploy / deploy (push) Successful in 1m5s

Previously excluded entirely under a stale "fixed BVM feasts aren't
modeled" note -- wrong: this app already models three other fixed BVM
feasts (assumption, immaculate-conception, nativity-bvm), and this one
has real, complete content too. Sancti/08-05.txt's untagged rank block
gives her Duplex Majus with real Nocturn 2/3 content (the
miraculous-snowfall founding legend of St. Mary Major); SanctiM/08-05.txt
confirms she's on the Monastic 1617 track too, reslicing the same
Lectio4-6.

Unlike the other three BVM feasts, she has no proper collect or
Benedictus antiphon of her own (her Rule says "ex C11" -- Common of
Feasts of the BVM) -- collect-c11.yml and
benedictus-antiphon-common-of-the-bvm.yml are real, reusable Common
templates, wired via collectCommon/benedictusCommon like any other
Common-only saint, not a private per-saint duplicate.

Live-checked via direct resolution: she wins outright on 2026-08-05 and
2027-08-05, with antiphon, collect, and Matins reading all resolving
verified. npm test (365 tests) and tsc --noEmit both pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-17 14:21:14 -04:00
parent 99617bcea5
commit 42d0b21c2a
6 changed files with 193 additions and 5 deletions
+45 -3
View File
@@ -46,9 +46,10 @@ across every hour and content type in this app.
silently dropped: St. Frances of Rome's and St. Bibiana's Benedictus antiphons silently dropped: St. Frances of Rome's and St. Bibiana's Benedictus antiphons
(structurally can't win their own day under this app's calendar in any near-term year, (structurally can't win their own day under this app's calendar in any near-term year,
needs a very late test year to check); Ss. Ursula and Companions' Benedictus antiphon needs a very late test year to check); Ss. Ursula and Companions' Benedictus antiphon
(a category-of-one, no live rendering to verify against); "Our Lady of the Snows" (not (a category-of-one, no live rendering to verify against); the four "…benedícta…"
modeled at all); the four "…benedícta…" octave-day Ant+V/R+collect blocks (not yet octave-day Ant+V/R+collect blocks (not yet modeled). "Our Lady of the Snows" — formerly
modeled). listed here as "not modeled at all" — is now added; see "Our Lady of the Snows added"
below.
3. **Known, deliberate simplifications** — flagged as intentional, not a bug, no plan to 3. **Known, deliberate simplifications** — flagged as intentional, not a bug, no plan to
revisit unless priorities change: see "Known, deliberate simplifications" at the end of revisit unless priorities change: see "Known, deliberate simplifications" at the end of
@@ -1609,6 +1610,47 @@ Adding these introduced no new lesson-count regressions in `tests/hours/matins.t
of its fixed proof dates fall on Jan 5/11 or Jun 23/Aug 9). `npm test` (365 tests) and `tsc of its fixed proof dates fall on Jan 5/11 or Jun 23/Aug 9). `npm test` (365 tests) and `tsc
--noEmit` both pass. --noEmit` both pass.
### Aug 5 martyrology English gap, and "Our Lady of the Snows" added (2026-08)
Two separate fixes, both discovered by re-checking a claim in this file that turned out stale.
**Martyrology, Aug 5**: `src/data/martyrology/08-05.yml`'s Latin text opens with "Romæ, in
Exquíliis, Dedicátio Basílicæ sanctæ Maríæ ad Nives" (the dedication of St. Mary Major, i.e.
Our Lady of the Snows) — but the file's own English translation silently dropped the
corresponding sentence, starting straight in on the day's other martyrs instead, even though
the reference engine's own `English/Martyrologium/08-05.txt` has it ("Upon the 5th day of
August is kept the dedication of the Church of St. Mary in the Snow upon the Esquiline Hill at
Rome, in the year 366."). Restored.
**"Our Lady of the Snows" (Aug 5) added to the calendar.** `sanctoral-calendar.yml`'s own
August comment had excluded her entirely as "a fixed BVM feast, same convention as
Purification/Annunciation" — wrong, on re-reading the actual source: unlike the truly
unmodeled cases in that same comment (saints permanently subordinate to an unmodeled octave or
to the fixed Transfiguration), she isn't blocked by any of that, and this app already models
three other fixed BVM feasts identically (`assumption`, `immaculate-conception`,
`nativity-bvm`). `Sancti/08-05.txt`'s untagged `[Rank]` block gives her a real Duplex Majus
rank with real Nocturn 2/3 content (`Lectio4-6`, the miraculous-snowfall founding legend of the
basilica of St. Mary Major — both Latin and English present, plus a simplex-fallback
`[Lectio94]` retelling not separately authored). `SanctiM/08-05.txt` confirms she's on the
Monastic 1617 track too, inheriting `@Sancti/08-05` and reslicing the same Lectio4-6 into its
own 12-lesson structure — no separate Monastic-only content.
Unlike the other three BVM feasts, she has **no proper collect or Benedictus antiphon of her
own** — her `[Rule]` says `ex C11` (Common of Feasts of the BVM), and `Commune/C11.txt`'s own
`[Oratio]`/`[Ant 1]` (with full English) supplied both. First pass at this wrongly authored
that Common text as if it were her own private file via `propers:` — corrected per direct
feedback: `collect-c11.yml` and `benedictus-antiphon-common-of-the-bvm.yml` are real, reusable
Common templates now, wired in via `SaintRecord.collectCommon`/`benedictusCommon` exactly like
any other Common-only saint (e.g. St. Barbara), not a one-off duplicate. `collect-c11`'s own
text has no `{N}` name placeholder (it addresses "fámulis tuis" generically, not the saint by
name, unlike every other `collect-c*.yml`) — `collectName` is still required by
`getDayCollect`'s own lookup, so set to empty arrays, never actually substituted.
Live-checked via direct resolution (not a browser query, per
[[vu-reference-engine-file-layout]]): she wins outright on 2026-08-05 and 2027-08-05, with her
Benedictus antiphon, day collect, and Matins reading all resolving `verified`. `npm test` (365
tests) and `tsc --noEmit` both pass.
### Bible-plan TSV — bulk conversion done (2026-08) ### Bible-plan TSV — bulk conversion done (2026-08)
All ~369 non-blank rows of the user's own bible-plan TSV (`~/Downloads/bible-plan.tsv`, 390 All ~369 non-blank rows of the user's own bible-plan TSV (`~/Downloads/bible-plan.tsv`, 390
@@ -0,0 +1,31 @@
# Read directly from the reference engine (`../divinum-officium-reference`,
# per memory vu-reference-engine-file-layout, not a live query): untagged/
# default [Rank] block of `web/www/horas/Latin/Sancti/08-05.txt` --
# "Sanctæ Mariæ Virginis ad Nives;;Duplex majus;;4;;ex C11". Previously
# excluded from this app's calendar entirely under a stale "fixed BVM
# feasts aren't modeled" note in sanctoral-calendar.yml's own August
# comment -- wrong: this app already models three other fixed BVM feasts
# the same way (assumption, immaculate-conception, nativity-bvm), and
# this one has real, complete content too (Matins readings, sourced
# directly; collect/antiphon via the Common-of-the-BVM fallback her own
# `[Rule]` already points to, `ex C11` -- see collect-c11.yml and
# benedictus-antiphon-common-of-the-bvm.yml). No `propers` of her own:
# unlike the other three BVM feasts (each of which has real unique
# collect/antiphon text), her file has none, so `collectCommon`/
# `benedictusCommon` is the correct mechanism here, same as any other
# `propers: null` saint falling back to a shared Common.
id: our-lady-of-the-snows
name: "Our Lady of the Snows (Dedication of St. Mary Major)"
rank: duplex-majus
common: common-of-the-bvm
propers: null
collectCommon: collect-c11
# collect-c11's own text has no {N} placeholder to substitute (it
# addresses "fámulis tuis" generically, not the saint by name) --
# collectName is still required by getDayCollect's own lookup, but its
# value is never actually used for this particular Common.
collectName:
la: []
en: []
minorHoursCommon: common-of-the-bvm
benedictusCommon: common-of-the-bvm
+8 -2
View File
@@ -172,12 +172,18 @@ days:
# 11), St. Clare (Aug 12 -- notable: a genuinely major saint, not an # 11), St. Clare (Aug 12 -- notable: a genuinely major saint, not an
# obscure one, caught by this same gap), Ss. Hippolytus and Cassian # obscure one, caught by this same gap), Ss. Hippolytus and Cassian
# (Aug 13), St. Agapitus (Aug 18), Ss. Timothy/Hippolytus/Symphorian # (Aug 13), St. Agapitus (Aug 18), Ss. Timothy/Hippolytus/Symphorian
# (Aug 22). Also excluded: Our Lady of the Snows (Aug 5, fixed BVM # (Aug 22). Our Lady of the Snows (Aug 5) was also excluded here at
# feast, same convention as Purification/Annunciation). # first under the same "fixed BVM feast" reasoning -- wrong, corrected
# 2026-08: unlike the genuinely-unmodeled cases above, she has real,
# complete content (Matins readings + Common-of-the-BVM collect/
# antiphon) and this app already models three other fixed BVM feasts
# the same way (assumption, immaculate-conception, nativity-bvm) -- see
# our-lady-of-the-snows.yml's own header. Added below.
"08-01": [st-peter-ad-vincula, ss-machabees] "08-01": [st-peter-ad-vincula, ss-machabees]
"08-02": [st-stephen-i] "08-02": [st-stephen-i]
"08-03": [finding-of-st-stephen] "08-03": [finding-of-st-stephen]
"08-04": [st-dominic] "08-04": [st-dominic]
"08-05": [our-lady-of-the-snows]
"08-07": [st-donatus] "08-07": [st-donatus]
"08-08": [ss-cyriacus-largus-and-smaragdus] "08-08": [ss-cyriacus-largus-and-smaragdus]
"08-09": [vigil-of-st-lawrence, st-romanus] "08-09": [vigil-of-st-lawrence, st-romanus]
@@ -0,0 +1,13 @@
# Verified against the reference engine's own source data files:
# web/www/horas/Latin/Commune/C11.txt's own [Ant 1] ("In Festis Beatae
# Mariae Virginis" -- Common of Feasts of the BVM) and its English
# counterpart. Reusable by any BVM feast keyed to `common: common-of-
# the-bvm` (SaintRecord.benedictusCommon) that has no proper Benedictus
# antiphon of its own -- e.g. our-lady-of-the-snows.yml.
id: benedictus-antiphon-common-of-the-bvm
text:
la: "Sancta María, * succúrre míseris, juva pusillánimes, réfove flébiles, ora pro pópulo, intérveni pro clero, intercéde pro devóto femíneo sexu: séntiant omnes tuum juvámen, quicúmque célebrant tuam sanctam festivitátem."
en: "O Holy Mary, * be thou an help to the helpless, a strength to the fearful, a comfort to the sorrowful; pray for the people, plead for the clergy, make intercession for all women vowed to God: may all that are keeping this thine holy Feast-day feel the might of thine assistance."
status:
la: verified
en: verified
+24
View File
@@ -0,0 +1,24 @@
# Verified against the reference engine's own source data files:
# web/www/horas/Latin/Commune/C11.txt ("In Festis Beatae Mariae
# Virginis" -- Common of Feasts of the BVM) and its English counterpart.
# Unlike the collect-c*.yml martyr/confessor/virgin Commons, this
# formula addresses "fámulis tuis" generically rather than naming the
# saint (`beátæ N.`) -- no `{N}` placeholder, nothing to substitute; a
# saint using this via SaintRecord.collectCommon still needs
# `collectName` set (getDayCollect requires both), but its value is
# never actually inserted into this particular template.
id: collect-c11
text:
la: |
Orémus.
Concéde nos fámulos tuos, quǽsumus, Dómine Deus, perpétua mentis et córporis sanitáte gaudére: et, gloriósa beátæ Maríæ semper Vírginis intercessióne, a præsénti liberári tristítia, et ætérna pérfrui lætítia.
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 Lord God, unto all thy servants, that they may remain continually in the enjoyment of soundness both of mind and body, and by the glorious intercession of the Blessed Mary, always a Virgin, may be delivered from present sadness, and enter into the joy of thine eternal gladness.
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,72 @@
# Matins Nocturn 2 reading for Our Lady of the Snows (Dedication of St.
# Mary Major), Aug 5 — Duplex Majus. `Sancti/08-05.txt`'s untagged
# [Rank] block. SanctiM/08-05.txt inherits the whole day (`@Sancti/08-05`)
# with no Nocturn 2/3 override (just reslicing Lectio4-6 into a 12-lesson
# Monastic structure via `@Sancti/08-05:LectioN` cross-references), so
# this feast's own content is sourced from the Tridentine track directly.
# web/www/horas/Latin/Sancti/08-05.txt, English/Sancti/08-05.txt.
# Lectio4-6 combined into one reading — the miraculous-snowfall founding
# legend of the basilica of St. Mary Major, one continuous narrative, no
# genuine source break. (The source's own `[Lectio94]` is a shorter,
# alternate simplex-rank retelling of the same story, not additional
# content — not authored separately.)
id: our-lady-of-the-snows
readings:
- nocturn: 2
isGospel: false
text:
la: >-
Liberio summo Pontifice, Joánnes patricius Romanus et uxor pari nobilitate, cum
liberos non suscepíssent, quos bonórum herédes relínquerent, suam hereditátem
sanctíssimæ Virgini Dei Matri vovérunt, ab ea summis precibus assidue peténtes, ut in
quod pium opus eam pecúniam potíssimum erogari vellet aliquo modo significaret.
Quorum preces et vota, ex animo facta, beáta Virgo Maria, benígne áudiens, miraculo
comprobávit.
Nonis ígitur Augusti, quo témpore in Urbi maximi calóres esse solent, noctu nix
partem collis Exquilini contéxit. Qua nocte Dei Mater separatim Joánnem et conjugem
in somnis admonuit ut quem locum nive conspersum vidérent, in eo ecclésiam
ædificarent, quæ Maríæ vírginis nómine dedicarétur; se enim ita velle ab ipsis
herédem institui. Quod Joánnes ad Libérium Pontificem détulit, qui idem per sómnium
sibi contigisse affirmávit.
Quare solemni sacerdotum et pópuli supplicatióne ad collem venit nive coopertum, et
in eo locum ecclésiæ designávit, quæ Joánnis et uxoris pecúnia exstructa est, póstea
a Xysto tertio restituta. Variis nomínibus primum est appellata, basilica Liberii,
sancta Maria ad Præsepe; sed, cum multæ jam essent in Urbe ecclésiæ sub nómine sanctæ
Maríæ Vírginis, ut quæ basilica novitate miraculi ac dignitate ceteris ejusdem
nóminis basilicis præstaret, vocabuli étiam excelléntia significarétur, ecclésia
sanctæ Maríæ majoris dicta est. Cujus dedicatiónis memória ex nive, quæ hac die
mirabíliter cécidit, anniversaria celebritate cólitur.
en: >-
In the time of Pope Liberius, there lived at Rome a certain nobleman named John and a
noble lady his wife, who had no children to whom to leave their substance. Then they
vowed that they would make the most holy Virgin Mother of God their heiress, and
earnestly besought her in some way to make known to them upon what godly work she
would that the money should be spent. The Blessed Virgin Mary graciously listened to
their prayers and heart-felt earnestness, and by a miracle assured them of her will.
On the 5th day of August, which is that time when the heat of summer waxeth greatest
in Rome, a part of the Esquiline Hill was covered by night with snow. And on this
same night the Mother of God appeared in a dream to John and his wife separately, and
told them that on that spot, which in the morning they should see clad with snow,
they should build a Church, to be dedicated in the name of the Virgin Mary, for that
this was the way in which she chose that they should make her their heiress. John
went and told it to Pope Liberius, who declared that he also had been visited by a
like dream.
Therefore he came in a solemn procession of Priests and people to the snow-clad hill,
and traced upon that spot the plan of a Church which was built with the money of John
and his wife. It was afterwards rebuilt by Sixtus III. At the beginning it was called
by diverse names, sometimes the Liberian Basilica, sometimes the Church of St.
Mary-at-the-Manger. Howbeit, since there are in Rome many Churches called after the
Holy Virgin Mary, and this Church doth excel them all, both in honour, and because of
the strange sign wherewith it was dedicated, it hath come to be called the Church of
St. Mary, the Greater. The memory of the dedication thereof is kept every year by a
Feast-day that taketh name from the wonderful fall of snow which on this day took
place.
status: { la: verified, en: verified }