calendar: pull December's sanctoral calendar (pre-1955 pull, 12/12 -- complete)

16 saints, plus a propers-slug update for the pre-existing Immaculate
Conception entry. Also extends the Advent temporal-category fix
(previous commit) to Christmastide: St. Thomas of Canterbury, only
Semiduplex, wins outright within the Christmas Octave in the real
Monastic 1617 engine, which the stronger privileged-feria tier would
have wrongly forbidden -- Christmastide now shares Advent's
privileged-feria-minor tier instead. Every real winner this month falls
within one of these two newly-corrected seasons.

This completes the first pass of the pre-1955 sanctoral calendar pull
across all twelve months.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-11 06:34:37 -04:00
parent 08f94823f7
commit 2785aa2a4e
19 changed files with 233 additions and 6 deletions
@@ -0,0 +1,11 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2026-12-28) -- wins outright, Duplex II. classis, within
# Christmas's Octave (privileged-feria-minor), Octave day commemorated in
# return. About the Innocents slain at Christ's birth, not a feast of the
# Lord/BVM directly, so kept in scope like every other real saint's day
# this pull has found. Own proper collect and antiphon.
id: holy-innocents
name: "The Holy Innocents, Martyrs"
rank: duplex-2-classis
common: common-of-several-martyrs
propers: "holy-innocents"
@@ -1,7 +1,9 @@
# Verified against Divinum Officium (web/www/horas/Latin/Sancti/12-08.txt,
# untagged/default [Rank] block).
# untagged/default [Rank] block). Propers backfilled during the December
# pull now that the collect-pulling methodology exists -- own proper
# collect and antiphon.
id: immaculate-conception
name: "The Immaculate Conception of the Blessed Virgin Mary"
rank: duplex-1-classis
common: common-of-the-bvm
propers: null
propers: "immaculate-conception"
+12
View File
@@ -0,0 +1,12 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2026-12-07) -- an ordinary Advent feria
# (privileged-feria-minor), Duplex easily wins outright, feria
# commemorated in return. No unique collect: the raw file's own [Rule] is
# a plain cross-reference to a generic Common formula ("vide C4a"), not
# unique text -- genuinely his own file, just entirely Common-based, not
# a naming mismatch this time.
id: st-ambrose
name: "St. Ambrose, Bishop, Confessor and Doctor of the Church"
rank: duplex
common: common-of-a-confessor-bishop
propers: null
+13
View File
@@ -0,0 +1,13 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-04) -- an ordinary Advent feria
# (privileged-feria-minor), so this Simplex saint is only ever
# commemorated here, the feria staying primary. No unique collect: the
# raw file at this MM-DD slot (Sancti/12-04.txt) is actually St. Peter
# Chrysologus's (a later Doctor-of-the-Church addition to this filename
# slot) -- a live prayTertia query for the Monastic 1617 track returns no
# Oratio at all, confirming propers: null is correct.
id: st-barbara
name: "St. Barbara, Virgin and Martyr"
rank: simplex
common: common-of-a-virgin-martyr
propers: null
+11
View File
@@ -0,0 +1,11 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-02) -- an ordinary (non-Ember) Advent feria
# (privileged-feria-minor, see calendar/types.ts), so this Simplex saint
# is only ever commemorated here, the feria itself staying primary; the
# concrete case that led to this month's temporal-category fix. Own
# proper collect, no unique antiphon of her own.
id: st-bibiana
name: "St. Bibiana, Virgin and Martyr"
rank: simplex
common: common-of-a-virgin-martyr
propers: "st-bibiana"
+11
View File
@@ -0,0 +1,11 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-11) -- an ordinary Advent feria
# (privileged-feria-minor), Semiduplex wins outright, feria commemorated
# in return. Own proper collect (Latin only -- see
# propers/common/st-damasus-collect.yml for the missing-English note), no
# unique antiphon of his own.
id: st-damasus
name: "St. Damasus I, Pope and Confessor"
rank: semiduplex
common: common-of-a-confessor-bishop
propers: "st-damasus"
@@ -0,0 +1,16 @@
# A monastic-calendar-specific placement: the base Tridentine table
# (1570.txt) doesn't have this saint at all; the monastic-specific delta
# table (M1617.txt) places him here via a same-day redirect notation
# ("12-15=12-16=..."). Verified live (Monastic Tridentinum 1617,
# 2025-12-15) -- an ordinary Advent feria (privileged-feria-minor),
# Semiduplex wins outright, feria commemorated in return. No unique
# collect: the raw file actually found at this MM-DD slot
# (Sancti/12-15.txt) is the later (post-1854) Octave of the Immaculate
# Conception's, not this saint's at all -- a live prayTertia query for
# the Monastic 1617 track returns no Oratio, confirming propers: null is
# correct.
id: st-eusebius-of-vercelli
name: "St. Eusebius of Vercelli, Bishop and Martyr"
rank: semiduplex
common: common-of-a-martyr-bishop
propers: null
@@ -0,0 +1,9 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-27) -- wins outright, Duplex II. classis, within
# Christmas's Octave (privileged-feria-minor), Octave day commemorated in
# return. Own proper collect and antiphon.
id: st-john-apostle
name: "St. John, Apostle and Evangelist"
rank: duplex-2-classis
common: common-of-an-evangelist
propers: "st-john-apostle"
+12
View File
@@ -0,0 +1,12 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-13) -- an ordinary Advent feria
# (privileged-feria-minor), Duplex wins outright, feria commemorated in
# return. Own proper antiphon; its own [Oratio] is a plain cross-
# reference to a generic Common formula (@Commune/C7a), not unique text,
# so getDayCollect resolves honestly missing for her despite propers
# being set -- same pattern as February's St. Agatha.
id: st-lucy
name: "St. Lucy, Virgin and Martyr"
rank: duplex
common: common-of-a-virgin-martyr
propers: "st-lucy"
@@ -0,0 +1,10 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-10) -- an ordinary Advent feria
# (privileged-feria-minor), so this Simplex saint is only ever
# commemorated here, the feria staying primary. No unique collect: no raw
# file exists at all at this MM-DD slot (Sancti/12-10.txt).
id: st-melchiades
name: "St. Melchiades, Pope and Martyr"
rank: simplex
common: common-of-a-martyr-bishop
propers: null
+12
View File
@@ -0,0 +1,12 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-06) -- an ordinary Advent feria
# (privileged-feria-minor); Semiduplex is enough to win outright here
# (unlike the stricter privileged-feria/Ember tier), with the feria
# itself commemorated in return -- the concrete case that revealed this
# month's temporal-category fix. Own proper collect, no unique antiphon
# of his own.
id: st-nicholas
name: "St. Nicholas, Bishop and Confessor"
rank: semiduplex
common: common-of-a-confessor-bishop
propers: "st-nicholas"
+10
View File
@@ -0,0 +1,10 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-05) -- an ordinary Advent feria
# (privileged-feria-minor), so this Simplex saint is only ever
# commemorated here, the feria staying primary. No unique collect: the
# raw file at this MM-DD slot (Sancti/12-05.txt) is empty.
id: st-sabbas
name: "St. Sabbas, Abbot"
rank: simplex
common: common-of-an-abbot
propers: null
@@ -0,0 +1,12 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-31) -- wins outright, Duplex, within Christmas's
# Octave (privileged-feria-minor), Octave day commemorated in return.
# Distinct from November's St. Silvester, Abbot (st-silvester-abbot.yml,
# Sylvester Gozzolini) -- this is Pope St. Sylvester I. No unique collect:
# the raw file's own [Oratio] is a plain cross-reference to a generic
# Common formula (@Commune/C4), not unique text.
id: st-silvester-i
name: "St. Silvester I, Pope and Confessor"
rank: duplex
common: common-of-a-confessor-bishop
propers: null
@@ -0,0 +1,12 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-26) -- wins outright, Duplex II. classis, within
# Christmas's own Octave (privileged-feria-minor, see this month's
# temporal-category fix), with the Octave day itself commemorated in
# return. Own proper collect and antiphon -- his Dec 26 own feast, the
# canonical source August's finding-of-st-stephen.yml and this pull's
# other Stephen-related feasts cross-reference or duplicate from.
id: st-stephen-protomartyr
name: "St. Stephen, Protomartyr"
rank: duplex-2-classis
common: common-of-a-martyr
propers: "st-stephen-protomartyr"
@@ -0,0 +1,9 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2026-12-21) -- an ordinary Advent feria
# (privileged-feria-minor), Duplex II. classis wins outright easily, feria
# commemorated in return. Own proper collect and antiphon.
id: st-thomas-apostle
name: "St. Thomas, Apostle"
rank: duplex-2-classis
common: common-of-an-apostle
propers: "st-thomas-apostle"
@@ -0,0 +1,13 @@
# Verified against Divinum Officium (Monastic Tridentinum 1617), live
# kalendar check (2025-12-29) -- wins outright, Semiduplex, within
# Christmas's Octave (privileged-feria-minor) -- the concrete case that
# revealed this month's temporal-category fix (Semiduplex, not just
# Duplex+, wins outright here, which the original single-tier
# `privileged-feria` model would have wrongly forbidden). Octave day
# commemorated in return. Own proper collect, no unique antiphon of his
# own.
id: st-thomas-becket
name: "St. Thomas of Canterbury, Bishop and Martyr"
rank: semiduplex
common: common-of-a-martyr-bishop
propers: "st-thomas-becket"
@@ -0,0 +1,15 @@
# A real vigil, landing on Advent's Ember Saturday every year (Dec 20 is
# fixed, and Advent Ember Saturday is defined relative to it -- see the
# raw table's own "(in missa tantum)" tag, meaning the *real* engine
# commemorates this vigil at Mass only, keeping Ember Saturday
# (privileged-feria, see calendar/types.ts) as the Office's primary. This
# app doesn't model the Mass-vs-Office distinction anywhere (same known
# simplification as September's Vigil of St. Matthew), so here it simply
# follows the ordinary privileged-feria/vigil transfer rule instead. No
# unique collect: the raw file at this MM-DD slot (Sancti/12-20.txt) is
# empty.
id: vigil-of-st-thomas
name: "Vigil of St. Thomas"
rank: vigil
common: common-of-a-vigil
propers: null
+32
View File
@@ -304,4 +304,36 @@ days:
"11-26": [st-silvester-abbot, st-peter-of-alexandria]
"11-29": [vigil-of-st-andrew, st-saturninus]
"11-30": [st-andrew]
# December — 12/12, the final month of the pre-1955 pull. Every
# non-excluded date this month falls within a season this app now
# models as `privileged-feria-minor` (Advent through Dec 20, Christmas's
# own Octave from Dec 26) -- this month's own pull is what surfaced and
# verified that temporal-category fix (see calendar/types.ts and this
# repo's commit history). Immaculate Conception's own propers were
# backfilled this month. Excluded: Dec 24 (Vigil of Christmas) and Dec
# 25 (Christmas itself) aren't sanctoral entries at all -- Christmas is
# a fixed-date temporal anchor (see data/calendar/fixed-date-
# calendar.yml) and its Vigil is a distinct privileged-feria-major
# temporal category, neither modeled as a saint. St. Eusebius of
# Vercelli (Dec 15) is a monastic-calendar-specific placement, reached
# via a same-day redirect notation in M1617.txt rather than a plain
# date entry. The Vigil of St. Thomas (Dec 20) always lands on Advent's
# Ember Saturday -- a known Mass-vs-Office simplification, same pattern
# as September's Vigil of St. Matthew.
"12-02": [st-bibiana]
"12-04": [st-barbara]
"12-05": [st-sabbas]
"12-06": [st-nicholas]
"12-07": [st-ambrose]
"12-08": [immaculate-conception]
"12-10": [st-melchiades]
"12-11": [st-damasus]
"12-13": [st-lucy]
"12-15": [st-eusebius-of-vercelli]
"12-20": [vigil-of-st-thomas]
"12-21": [st-thomas-apostle]
"12-26": [st-stephen-protomartyr]
"12-27": [st-john-apostle]
"12-28": [holy-innocents]
"12-29": [st-thomas-becket]
"12-31": [st-silvester-i]
+9 -4
View File
@@ -39,10 +39,15 @@ bySeason:
# comment) -- weaker than the Ember-day `privileged-feria` tier, but real
# standing nonetheless, unlike a plain `ordinary-feria`.
advent: { sunday: privileged-sunday, feria: privileged-feria-minor }
# Christmastide's ferias are folded into the privileged-feria default for
# the whole season as a simplification of "the Octave of Christmas (Dec
# 25 - Jan 1) is privileged" — slightly overbroad into Jan 2-5, harmless.
christmastide: { sunday: privileged-sunday, feria: privileged-feria }
# Christmastide's ferias are folded into the privileged-feria-minor
# default for the whole season as a simplification of "the Octave of
# Christmas (Dec 25 - Jan 1) is privileged" — slightly overbroad into Jan
# 2-5, harmless. Verified `privileged-feria-minor` specifically (not the
# stronger `privileged-feria`) during the December pull: St. Thomas of
# Canterbury, Semiduplex, wins outright within the Octave (Dec 29) in the
# real Monastic 1617 engine, which `privileged-feria`'s Duplex+ threshold
# would wrongly forbid.
christmastide: { sunday: privileged-sunday, feria: privileged-feria-minor }
epiphanytide: { sunday: ordinary-sunday, feria: ordinary-feria }
septuagesima: { sunday: privileged-sunday, feria: ordinary-feria }
lent: { sunday: privileged-sunday, feria: ordinary-feria }