From 96aed1b6f04ef89e8f3d18af8b13e6fd30dbd4d2 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Sat, 22 Aug 2026 15:11:43 +0200 Subject: test(fiuv-ordo): add the FIUV universal Ordo as a second, independent witness MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wires in the FIUV (Foederatio Internationalis Una Voce) Ordo for 2025-2026 as validation layer seven -- the first UNIVERSAL (not diocesan) source in this project, and the first compiled by someone other than the LMS editions' own Peter Day-Milne (Joseph Shaw, FIUV President). tools/extract_fiuv_ordo.ml hand-parses pdftotext's -layout dump of the Latin-language ordo (no Str/regex, frozen deps). Three real parsing traps were found and fixed by tracing actual false results against the raw source, not assumed in advance: - "Gloria" is also the first word of "Gloria Patri" (the psalm doxology), which can appear INSIDE the very Mass clause being scanned (Good Friday: "...omittuntur ps. Iudica me et Gloria Patri), Gloria, sine Credo..."). Guarded by rejecting any "Gloria" hit whose next token is "Patri". - Christmas Day's own rubric uses the PLURAL "Missae"/"Missae" ("tres Missae celebrantur..."), never the singular "Missa" every other real day anchors on -- silently produced gloria=None/credo=None on the one most doctrinally unambiguous day in the calendar until traced and fixed, guarded in turn against "Missae defunctorum" (an unrelated Requiem-prohibition notice appearing at the end of many day-blocks). - The Vespers boundary (bounding the primary Mass option before a second "Vel Missa" alternative or before Vespers information) missed the ligature spelling "VESPERÆ", the dominant form in this source, letting a whole day's trailing prose leak into the captured [praef] field on the task brief's own worked example day (19 September). A distinct second stop-marker bug: the malformed trailing entry this source shares structurally with the LMS PDFs (a stray, mislabelled duplicate of 1 January) was initially over-matched by a generic "first token is 4 digits" heuristic, which false-positived on an indulgence-decree date citation wrapped mid-sentence in October ("...20 augusti / 1885, 26 augusti 1886..."), truncating the extraction to 308 of 400 real days. Fixed by anchoring on the tail entry's own distinctive "1st Jan" opening instead. Five opposite-prediction Creed probes are re-verified by the tool itself against its own extracted rows (a failed probe is a hard exit, not a printed claim) before the fixture is written. test/test_fiuv_ordo.ml compares the Creed against colitur across all 399 comparable days (Holy Saturday excluded, no Mass that day) -- CLEAN, zero unexplained divergences, a genuine second confirmation of {!Rite_ef.Rubrics_ef.creed} independent of the LMS lineage. [praef], [te_deum] and [class_] (including the FIUV ordo's own "III cl." vs "III cl. (Priv.)" Cum Sanctissima convention, stated on its title page) are captured into the fixture but deliberately not compared -- colitur has no Gloria/preface predicate yet, and its default configuration models no Cum Sanctissima overlay to compare the class convention against. All 634 tests green (dune test), 635 with the exhaustive sweep and make check. No lib/ file touched. Claude-Session: https://claude.ai/code/session_017ZBxCCRM2ojnBupp3SBxV9 --- test/fixtures/fiuv-ordo-2025-2026.sexp | 1558 ++++++++++++++++++++++++++++++++ 1 file changed, 1558 insertions(+) create mode 100644 test/fixtures/fiuv-ordo-2025-2026.sexp (limited to 'test/fixtures/fiuv-ordo-2025-2026.sexp') diff --git a/test/fixtures/fiuv-ordo-2025-2026.sexp b/test/fixtures/fiuv-ordo-2025-2026.sexp new file mode 100644 index 0000000..7b72ca3 --- /dev/null +++ b/test/fixtures/fiuv-ordo-2025-2026.sexp @@ -0,0 +1,1558 @@ +; test/fixtures/fiuv-ordo-2025-2026.sexp -- Witnesses task (2026-08-22-colitur- +; celebrant-rubrics-phase1)'s SEVENTH validation layer, and the first +; UNIVERSAL (non-diocesan), SECOND-COMPILER witness: the FIUV (Foederatio +; Internationalis Una Voce) Ordo, compiled independently of the Latin Mass +; Society's own three editions (test/test_lms_ordo.ml) -- see +; docs/research/ordo/PROVENANCE-ordo-corpus.md for the full four-reasons +; account of why this source is the more valuable of the two newly- +; acquired ones. +; +; Generator: tools/extract_fiuv_ordo.ml -- do not hand-edit; re-run +; against a fresh pdftotext dump and commit the diff instead. +; +; Source: "Ordo Divini Officii recitandi sacrique peragendi secundum +; antiquam Ritus Romani formam pro anno Domini 2026", Foederatio +; Internationalis Una Voce, compiled by Joseph Shaw (Praefatio signed +; "Joseph Shaw, President", Feast of the Nativity of Our Lady [8 Sept] +; 2025) -- title page and Praefatio, verified directly against the PDF's +; own extracted text. 2025 is stated as the Federation's own 60th +; anniversary year. +; PDF metadata: Creator "TeX", Producer "pdfTeX-1.40.22", CreationDate +; 2025-11-08, 128 pages. +; URL: identified via web search as +; https://lms.org.uk/sites/default/files/u5374/fiuv_ordo_2025-2026_1.1_a5_format.pdf +; (hosted by the Latin Mass Society's own site alongside its own three +; editions -- Joseph Shaw is both FIUV President and LMS Chairman, which +; plausibly also explains why this PDF's own trailing malformed entry +; (see COVERAGE below) is structurally identical to the LMS PDFs' own, +; despite the two being compiled by different people); NOT independently +; re-downloaded and byte-compared in this session -- recorded honestly +; rather than presented as verified, the same discipline the LMS +; fixtures' own headers use. +; The local PDF (docs/research/ordo/fiuv-ordo-2025-2026.pdf) is gitignored (CLAUDE.md: "docs/ +; is gitignored"), so this header, not git, is this fixture's only record +; of where it came from. +; SHA-256 of docs/research/ordo/fiuv-ordo-2025-2026.pdf: 4335cc112b5fb6ec4d9511465ccc9381bed9b6056a56bc82dbaa5b2d85d0d855 +; Extracted (UTC): 2026-08-22 +; Exact commands: +; pdftotext -layout docs/research/ordo/fiuv-ordo-2025-2026.pdf /tmp/fiuv.txt +; dune exec tools/extract_fiuv_ordo.exe -- /tmp/fiuv.txt \ +; docs/research/ordo/fiuv-ordo-2025-2026.pdf test/fixtures/fiuv-ordo-2025-2026.sexp +; +; COVERAGE: 400 day-rows, 2025-11-27 through 2026-12-31. Starts at the book's own first +; real content line ("November MMXXV", the FIRST month header found with +; a parseable Roman-numeral year -- used as this parser's sole date +; anchor, see the tool's own header on why no LATER header's year is ever +; read, the second one being a publisher typo, "December MMXV" for 2025). +; Stops before a malformed trailing entry, structurally the SAME artefact +; found in all three LMS editions (a stray, mislabelled duplicate of the +; fixture's own already-extracted 1 January row, headed "1st Jan / 2025." +; -- see extract_lms_ordo.ml's own COVERAGE section for the fuller +; account of this shared publisher-side quirk). +; +; CHARACTERISATION FINDINGS (non-negotiable per the task brief -- the +; extraordinaryform.org Ordo silently omitted St Lawrence's vigil on +; EVERY date it covered, which nearly produced a false corroboration +; during the RG 33 work; this Ordo was probed with the same discipline +; before a single divergence was adjudicated): +; +; 1. UNIVERSAL, not diocesan: unlike the three LMS editions (which had to +; exclude diocesan variants from every comparison, quantified in each +; of their own fixture headers), this Ordo carries ONE block per day, +; always. There is no [has_diocesan_variant] field in this fixture's +; own [row] at all -- there is nothing to exclude. +; +; 2. OPPOSITE-PREDICTION PROBES against Rite_ef.Rubrics_ef.creed (RG +; 475-476), RE-CHECKED BY THIS TOOL RUN against its own extracted +; [rows] before this header was even written -- a failed probe is a +; hard [die], never a printed claim: +; 2025-11-30 (Advent Sunday, I class, RG 475(a)) -> TRUE +; 2025-12-01 (ordinary Advent feria, III class, RG 476(b)/(d)) -> FALSE +; 2025-12-26 (St Stephen, II class, inside the Nativity octave, RG 475(d)) -> TRUE +; 2026-08-10 (St Laurence, II class martyr, no Lord/BVM/apostle clause applies, RG 476(b)) -> FALSE +; 2026-08-15 (the Assumption, I class, RG 475(b)) -> TRUE +; All 5 predictions confirmed, both directions -- this source is +; discriminating, not a constant, on the Creed. +; +; 3. THE SUBSTRING TRAP this parser defends against, found live in this +; corpus: "Gloria" is also the first word of "Gloria Patri" (the psalm +; doxology), which can appear INSIDE the very Mass clause being +; scanned (Good Friday, 3 April 2026: "Missa pr., (omittuntur ps. +; Iudica me et Gloria Patri), Gloria, sine Credo, praef. comm." -- the +; real, standalone Gloria mention follows immediately after). See +; [find_word]'s own citation. +; +; 4. RAW SUBSTRING COUNTS measured against this session's own pdftotext +; dump, for comparison against the task brief's own figures (328 +; Gloria / 132 sine Gloria / 119 Credo / 260 sine Credo, 262 Te Deum): +; "sine Gloria" 132 (EXACT match), "sine Credo" 260 (EXACT match), raw +; "Te Deum" substring 262 (EXACT match, includes negated occurrences +; as substring hits -- 42 of them are "non dicitur Te Deum"). Raw +; "Gloria"/"Credo" substring totals (494/411) do NOT match the brief's +; implied positive totals (328/119) even after subtracting the 25 +; "Gloria Patri" occurrences (469, still 9 over) -- not chased further +; here; this extractor's own token-scoped, Missa-clause-bounded counts +; below are what this fixture actually asserts, not a forced match to +; the brief's approximate figures. +; +; MEASURED DISTRIBUTION (this extraction, not the brief's figures): Gloria +; true=269 false=130 unresolved=1; Credo true=116 false=283 unresolved=1; +; Te Deum true=231 false=42 unresolved=127. +(((date 2025-11-27) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. XXIV & Ultima post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2025-11-28) (class_ ("IV cl.")) + (title "Vir Feria VI post Dom. XXIV & Ultima post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2025-11-29) (class_ ("IV cl.")) + (title "Alb Sabb. S. Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + ((date 2025-11-30) (class_ ("I cl.")) + (title "Viol DOM. I ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) + (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2025-12-01) (class_ ("III cl.")) + (title "Viol Feria II post Dom. I Adventus, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2025-12-02) (class_ ("III cl.")) + (title "Rub Feria III. S Bibianae Virg. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. AD"))) + ((date 2025-12-03) (class_ ("III cl. (Priv.)")) + (title "Alb Feria IV. S Francisci Xavierii Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. AD"))) + ((date 2025-12-04) (class_ ("III cl.")) + (title "Alb Feria V. S Petri Chrysologi Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Barbarae Virg. et Mart. (rub.) Loquebar de testimoniis tuis, Gloria, comm. 1\194\170 Feriae, comm. 2\194\170 S Petri Chrysologi Ep., Conf. et Eccl. Doct., praef. comm. vel de Martyribus. AD"))) + ((date 2025-12-05) (class_ ("III cl.")) + (title "Viol Feria VI post Dom. I Adventus, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("comm. Feria VI prima in mense."))) + ((date 2025-12-06) (class_ ("III cl. (Priv.)")) + (title "Alb Sabb. S Nicolai Ep. et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. Sabbatum primum in mense. I"))) + ((date 2025-12-07) (class_ ("I cl.")) + (title "Viol DOM. II ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) + (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2025-12-08) (class_ ("I cl.")) + (title "Alb Feria II. IN CONCEPTIONE IMMACULATA B. MARIAE VIRGINIS,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("BMV Et te in Conceptione Immaculata. AD"))) + ((date 2025-12-09) (class_ ("III cl.")) + (title "Viol Feria III post Dom. II Adventus, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2025-12-10) (class_ ("III cl.")) + (title "Viol Feria IV post Dom. II Adventus, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2025-12-11) (class_ ("III cl. (Priv.)")) + (title "Alb Feria V. S Damasi I Papae et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. AD"))) + ((date 2025-12-12) (class_ ("III cl.")) + (title "Viol Feria VI post Dom. II Adventus, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2025-12-13) (class_ ("III cl. (Priv.)")) + (title "Rub Sabb. S Luciae Virg. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I"))) + ((date 2025-12-14) (class_ ("I cl.")) + (title "Viol/ DOM. III ADVENTUS (GAUDETE), De ea,") (te_deum (true)) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2025-12-15) (class_ ("III cl.")) + (title "Viol Feria II post Dom. III Adventus (Gaudete), De ea,") + (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2025-12-16) (class_ ("III cl.")) + (title "Alb Feria III. S Eusebii Ep. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. AD"))) + ((date 2025-12-17) (class_ ("II cl.")) + (title "Viol FERIA IV QUATTUOR TEMP., De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("comm.\226\128\147 Quoad Flectamus genua vide RM 440."))) + ((date 2025-12-18) (class_ ("II cl.")) + (title "Viol FERIA V POST DOM. III ADVENTUS (GAUDETE), De ea,") + (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2025-12-19) (class_ ("II cl.")) + (title "Viol FERIA VI QUATTUOR TEMP., De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2025-12-20) (class_ ("II cl.")) + (title "Viol SABB. QUATTUOR TEMP., De eo,") (te_deum ()) (gloria (false)) + (credo (false)) + (praef + ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) + ((date 2025-12-21) (class_ ("I cl.")) + (title "Viol DOM. IV ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) + (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2025-12-22) (class_ ("II cl.")) + (title "Viol FERIA II POST DOM. IV ADVENTUS, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2025-12-23) (class_ ("II cl.")) + (title "Viol FERIA III POST DOM. IV ADVENTUS, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2025-12-24) (class_ ("I cl.")) + (title "Viol Feria IV. VIGILIA NATIVITATIS DOMINI,") (te_deum (true)) + (gloria (false)) (credo (false)) (praef ("comm. I"))) + ((date 2025-12-25) (class_ ("I cl.")) + (title "Alb Feria V. IN NATIVITATE DOMINI,") (te_deum ()) (gloria (true)) + (credo (true)) + (praef + ("et Communic. pr. per totam oct. \226\128\147 In Communicantes: in 1\194\170 Missa dicitur Noctem sacratissimam celebrantes, qua, in 2\194\170 et 3\194\170 Missa et per octavam Diem sacratissimum celebrantes, quo. \226\128\147 In 2\194\170 Missa (etiam in cantu) fit comm. S. Anastasi\195\166 * M. \226\128\147 In Missis in cantu, ad verba symboli Et incarnatus est\226\128\166 et homo factus est, omnes genuflectunt versus altare, non tantum cum a celebrante recitantur, sed etiam cum a choro canuntur (RM 518 b). II"))) + ((date 2025-12-26) (class_ ("II cl.")) + (title "Rub Feria VI. S STEPHANI * PROTOMARTYRIS,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. AD"))) + ((date 2025-12-27) (class_ ("II cl.")) + (title "Alb Sabb. S IOANNIS * AP. ET EV.,") (te_deum ()) (gloria (true)) + (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. AD"))) + ((date 2025-12-28) (class_ ("II cl.")) + (title "Alb DOM. INFRA OCTAVAM NATIVITATIS, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad II"))) + ((date 2025-12-29) (class_ ("II cl.")) + (title "Alb FERIA II DOM. INFRA OCTAVAM NATIVITATIS, De ea,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum."))) + ((date 2025-12-30) (class_ ("II cl.")) + (title "Alb FERIA III DOM. INFRA OCTAVAM NATIVITATIS, De ea,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum."))) + ((date 2025-12-31) (class_ ()) + (title + "Alb FERIA IV DOM. INFRA OCTAVAM NATIVITATIS, De ea. \226\128\147 Off. semifestivum. \226\128\147 Ad MAT. invit., hymnus, 9 antt. et 9 pss. cum ultimo V de festo Nativ., Ll. de Scr. occ. cum suis RR (ad 2um additur Gloria Patri)\226\128\147 Ad Laudes antt. de Nativ., pss. de dom., comm. S Silvestri I Papae et Conf. \226\128\147 Ad HORAS ant. et pss. de feria curr., rel ut in festo Nativ. \226\128\147 Ad Primam in R Br. V Qui natus es de Maria Virgine. Missa Puer natus de diebus infra octavam, Gloria, Credo, comm. S Silvestri I Papae et Conf., praef. de Nativ., Communic. de Nativ. diem sacratissimum. I VESPER\195\134 de seq. \226\128\147 Compl. de dom. Hodie ad solemnem recitationem hymni Te Deum, indulgentia plenaria lucrari potest. 16") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. I"))) + ((date 2026-01-01) (class_ ("I cl.")) + (title "Al Feria V. OCTAVA NATIVITATIS,") (te_deum ()) (gloria (true)) + (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. II"))) + ((date 2026-01-02) (class_ ("IV cl.")) + (title "Alb Feria VI post Octavam Nativitatis, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("de Nativ., sine Communic. pr. Feria VI prima in mense."))) + ((date 2026-01-03) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + ((date 2026-01-04) (class_ ("II cl.")) + (title "Alb Dom. SS.MI NOMINIS IESU,") (te_deum ()) (gloria (true)) + (credo (true)) (praef ("de Nativ., sine Communic. pr. II"))) + ((date 2026-01-05) (class_ ("IV cl.")) + (title "Alb Feria II post Octavam Nativitatis, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("de Nativ., sine Communic. pr. \226\128\147"))) + ((date 2026-01-06) (class_ ("I cl.")) + (title "Alb Feria III. IN EPIPHANIA DOMINI,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("et Communic pr. II"))) + ((date 2026-01-07) (class_ ("IV cl.")) + (title "Alb Feria IV post Epiphaniam, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("de Epiphania."))) + ((date 2026-01-08) (class_ ("IV cl.")) + (title "Alb Feria V post Epiphaniam, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("de Epiphania."))) + ((date 2026-01-09) (class_ ("IV cl.")) + (title "Alb Feria VI post Epiphaniam, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("de Epiphania."))) + ((date 2026-01-10) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione. I"))) + ((date 2026-01-11) (class_ ("II cl.")) + (title + "Alb Dom. I post Epiphaniam. SANCT\195\134 FAMILI\195\134 IESU, MARI\195\134, IOSEPH *,") + (te_deum ()) (gloria (true)) (credo (true)) (praef ("de Epiphania. II"))) + ((date 2026-01-12) (class_ ("IV cl.")) + (title "Alb Feria II post Dom. I post Epiphaniam, De ea,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("de Epiphania."))) + ((date 2026-01-13) (class_ ("II cl.")) + (title "Alb Feria III. IN COMMEMORATIONE BAPTISMATIS D.N.I.C.,") + (te_deum ()) (gloria (true)) (credo (true)) (praef ("de Epiphania. Ad"))) + ((date 2026-01-14) (class_ ("III cl.")) + (title "Alb Feria IV. S Hilarii Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Felicis Presbyt. et Mart. (rub.) L\195\166tabitur iustus, Gloria, ors. pr., comm. S Hilarii Ep., Conf. et Eccl. Doct., praef. comm. vel de Martyribus. Ad"))) + ((date 2026-01-15) (class_ ("III cl.")) + (title "Alb Feria V. S Pauli Primi Eremitae Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Mauri Abbatis. (alb.) Os iusti de Comm. Abb., Gloria, comm. S Pauli Primi Eremitae Conf., praef. comm."))) + ((date 2026-01-16) (class_ ("III cl.")) + (title "Rub Feria VI. S Marcelli I Papae et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + ((date 2026-01-17) (class_ ("III cl. (Priv.)")) + (title "Alb Sabb. S Antonii Abb.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("comm. I"))) + ((date 2026-01-18) (class_ ("II cl.")) + (title "Vir DOM. II POST EPIPHANIAM, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-01-19) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. II post Epiphaniam, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-01-20) (class_ ("III cl. (Priv.)")) + (title "Rub Feria III. SS Fabiani Papae et Sebastiani Mm.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. vel de Martyribus."))) + ((date 2026-01-21) (class_ ("III cl. (Priv.)")) + (title "Rub Feria IV. S Agnetis * Virg. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad"))) + ((date 2026-01-22) (class_ ("III cl.")) + (title "Rub Feria V. SS Vincentii et Anastasii Mm.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + ((date 2026-01-23) (class_ ("III cl.")) + (title "Alb Feria VI. S Raymundi de Pe\195\177afort Conf.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Emerentianae Virg. et Mart. (rub.) Me exspectaverunt, Gloria, comm. S Raymundi de Pe\195\177afort Conf., praef. comm. vel de Martyribus. \226\128\147"))) + ((date 2026-01-24) (class_ ("III cl. (Priv.)")) + (title "Rub Sabb. S Timothei Ep. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I"))) + ((date 2026-01-25) (class_ ("II cl.")) + (title "Vir DOM. III POST EPIPHANIAM, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-01-26) (class_ ("III cl. (Priv.)")) + (title "Rub Feria II. S Polycarpi Ep. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + ((date 2026-01-27) (class_ ("III cl. (Priv.)")) + (title "Alb Feria III. S Ioannis Chrysostomi Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + ((date 2026-01-28) (class_ ("III cl.")) + (title "Alb Feria IV. S Petri Nolasci Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. S Agnetis * Virg. et Mart. secundo. (rub.), Gloria, comm. S Petri Nolasci Conf., praef. comm. vel de Martyribus."))) + ((date 2026-01-29) (class_ ("III cl. (Priv.)")) + (title "Alb Feria V. S Francisci Salesii Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-01-30) (class_ ("III cl.")) + (title "Rub Feria VI. S Martinae Virg. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + ((date 2026-01-31) (class_ ("III cl. (Priv.)")) + (title "Alb Sabb. S Ioannis Bosco Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. I"))) + ((date 2026-02-01) (class_ ("II cl.")) + (title "Viol DOM. SEPTUAGESIMAE, De ea,") (te_deum (true)) + (gloria (false)) (credo (true)) (praef ("Trinit. II"))) + ((date 2026-02-02) (class_ ("II cl.")) + (title "Alb Feria II. IN PURIFICATIONE B. MARIAE VIRG.,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef ("de Nativ. Ad benedictionem candelarum: ut in Missali. Ad"))) + ((date 2026-02-03) (class_ ("IV cl.")) + (title "Viol Feria III Dom. Septuagesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("comm. \226\128\147"))) + ((date 2026-02-04) (class_ ("III cl.")) + (title "Alb Feria IV. S Andreae Corsini Ep. et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-02-05) (class_ ("III cl. (Priv.)")) + (title "Rub Feria V. S Agathae * Virg. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad"))) + ((date 2026-02-06) (class_ ("III cl. (Priv.)")) + (title "Alb Feria VI. S Titi Ep. et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. Feria VI prima in mense."))) + ((date 2026-02-07) (class_ ("III cl.")) + (title "Alb Sabb. S Romualdi Abb.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("comm. Sabbatum primum in mense. I"))) + ((date 2026-02-08) (class_ ("II cl.")) + (title "Viol DOM. SEXAGESIMAE, De ea,") (te_deum (true)) (gloria (false)) + (credo (true)) (praef ("Trinit. II"))) + ((date 2026-02-09) (class_ ("III cl.")) + (title "Alb Feria II. S Cyrilli Ep. Alexandrini, Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Apolloniae Virg. et Mart. (rub.) Loquebar de testimoniis tuis, Gloria, comm. S Cyrilli Ep. Alexandrini, Conf. et Eccl. Doct., tractus, praef. comm. vel de Martyribus. Ad"))) + ((date 2026-02-10) (class_ ("III cl.")) + (title "Alb Feria III. S Scholasticae Virg.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-02-11) (class_ ("III cl.")) + (title "Alb Feria IV. In Apparitione B. Mariae Virg. Immaculatae,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("BMV Et te in Conceptione Immaculata."))) + ((date 2026-02-12) (class_ ("III cl.")) + (title + "Alb Feria V. SS Septem Fundatorum Ordinis Servorum B. Mariae Virg., Cc.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + ((date 2026-02-13) (class_ ("IV cl.")) + (title "Viol Feria VI Dom. Sexagesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-02-14) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + ((date 2026-02-15) (class_ ("II cl.")) + (title "Viol DOM. QUINQUAGESIMAE, De ea,") (te_deum (true)) + (gloria (false)) (credo (true)) (praef ("Trinit. II"))) + ((date 2026-02-16) (class_ ("IV cl.")) + (title "Viol Feria II Dom. Quinquagesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-02-17) (class_ ("IV cl.")) + (title "Viol Feria III Dom. Quinquagesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-02-18) (class_ ("I cl.")) + (title "Viol FERIA IV CINERUM, De ea,") (te_deum ()) (gloria (false)) + (credo (false)) + (praef + ("Quadr., or. super populum. In Missa qu\195\166 dicitur post benedictionem et impositionem cinerum omittuntur omnes preces ad gradus altaris dicend\195\166, necnon ors. Aufer a nobis et Oramus te, Domine, non autem osculum altaris (RM, 424 a)."))) + ((date 2026-02-19) (class_ ("III cl.")) + (title "Viol Feria V Dom. Quinquagesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-02-20) (class_ ("III cl.")) + (title "Viol Feria VI Dom. Quinquagesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-02-21) (class_ ("III cl.")) + (title "Viol Sabb. Dom. Quinquagesimae, De eo,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum. I"))) + ((date 2026-02-22) (class_ ("I cl.")) + (title "Viol DOM. I QUADRAGESIMAE, De ea,") (te_deum (true)) + (gloria (false)) (credo (true)) (praef ("Quadr. II"))) + ((date 2026-02-23) (class_ ("III cl.")) + (title "Viol Feria II post Dom. I Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-02-24) (class_ ("II cl.")) + (title "Rub Feria III. S MATTHIAE AP.,") (te_deum ()) (gloria (true)) + (credo (true)) (praef ("App. Ad"))) + ((date 2026-02-25) (class_ ("II cl.")) + (title "Viol FERIA IV QUATTUOR TEMP., De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef + ("Quadr., or. super populum. \226\128\147 Quoad Flectamus genua vide RM 440."))) + ((date 2026-02-26) (class_ ("III cl.")) + (title "Viol Feria V post Dom. I Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-02-27) (class_ ("II cl.")) + (title "Viol FERIA VI QUATTUOR TEMP., De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-02-28) (class_ ("II cl.")) + (title "Viol SABB. QUATTUOR TEMP., De eo,") (te_deum ()) (gloria (false)) + (credo (false)) + (praef + ("Quadr., or. super populum. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) + ((date 2026-03-01) (class_ ("I cl.")) + (title "Viol DOM. II QUADRAGESIMAE, De ea,") (te_deum (true)) + (gloria (false)) (credo (true)) (praef ("Quadr. II"))) + ((date 2026-03-02) (class_ ("III cl.")) + (title "Viol Feria II post Dom. II Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-03-03) (class_ ("III cl.")) + (title "Viol Feria III post Dom. II Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-03-04) (class_ ("III cl.")) + (title "Viol Feria IV post Dom. II Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-03-05) (class_ ("III cl.")) + (title "Viol Feria V post Dom. II Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-03-06) (class_ ("III cl.")) + (title "Viol Feria VI post Dom. II Quadragesimae, De ea,") + (te_deum (true)) (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum. Feria VI prima in mense."))) + ((date 2026-03-07) (class_ ("III cl.")) + (title "Viol Sabb. post Dom. II Quadragesimae, De eo,") (te_deum (true)) + (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum. Sabbatum primum in mense. I"))) + ((date 2026-03-08) (class_ ("I cl.")) + (title "Viol DOM. III QUADRAGESIMAE, De ea,") (te_deum (true)) + (gloria (false)) (credo (true)) (praef ("Quadr. II"))) + ((date 2026-03-09) (class_ ("III cl.")) + (title "Viol Feria II post Dom. III Quadragesimae, De ea,") + (te_deum (true)) (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum."))) + ((date 2026-03-10) (class_ ("III cl.")) + (title "Viol Feria III post Dom. III Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-03-11) (class_ ("III cl.")) + (title "Viol Feria IV post Dom. III Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-03-12) (class_ ("III cl.")) + (title "Viol Feria V post Dom. III Quadragesimae, De ea,") + (te_deum (true)) (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum."))) + ((date 2026-03-13) (class_ ("III cl.")) + (title "Viol Feria VI post Dom. III Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + ((date 2026-03-14) (class_ ("III cl.")) + (title "Viol Sabb. post Dom. III Quadragesimae, De eo,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum. I"))) + ((date 2026-03-15) (class_ ("I cl.")) + (title "Viol/ DOM. IV QUADRAGESIMAE (LAETARE), De ea,") (te_deum (true)) + (gloria (false)) (credo (true)) (praef ("Quadr. II"))) + ((date 2026-03-16) (class_ ("III cl.")) + (title "Viol Feria II post Dom. IV Quadragesimae (Laetare), De ea,") + (te_deum ()) (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum."))) + ((date 2026-03-17) (class_ ("III cl.")) + (title "Viol Feria III post Dom. IV Quadragesimae (Laetare), De ea,") + (te_deum ()) (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum."))) + ((date 2026-03-18) (class_ ("III cl.")) + (title "Viol Feria IV post Dom. IV Quadragesimae (Laetare), De ea,") + (te_deum ()) (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum. I"))) + ((date 2026-03-19) (class_ ("I cl.")) + (title + "Alb Feria V. S IOSEPH * SPONSI B. MARIAE VIRG., CONF. ET ECCLESIAE UNIVERSAE PATRONI,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("de S Iosepho Et te in festivitate. II"))) + ((date 2026-03-20) (class_ ("III cl.")) + (title "Viol Feria VI post Dom. IV Quadragesimae (Laetare), De ea,") + (te_deum ()) (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum."))) + ((date 2026-03-21) (class_ ("III cl.")) + (title "Viol Sabb. post Dom. IV Quadragesimae (Laetare), De eo,") + (te_deum (true)) (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum. I"))) + ((date 2026-03-22) (class_ ("I cl.")) + (title "Viol DOM. I PASSIONIS, De ea,") (te_deum (true)) (gloria (false)) + (credo (true)) (praef ("de Sancta Cruce. II"))) + ((date 2026-03-23) (class_ ("III cl.")) + (title "Viol Feria II post Dom. I Passionis, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("de Sancta Cruce or. super populum."))) + ((date 2026-03-24) (class_ ("III cl.")) + (title "Viol Feria III post Dom. I Passionis, De ea,") (te_deum (true)) + (gloria (false)) (credo (false)) + (praef ("de Sancta Cruce or. super populum. I"))) + ((date 2026-03-25) (class_ ("I cl.")) + (title "Alb Feria IV. IN ANNUNTIATIONE B. MARIAE VIRG.,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef + ("BMV Et te in Annuntiatione \226\128\147 In Missis in cantu, ad verba symboli Et incarnatus est\226\128\166 et homo factus est, omnes genuflectunt versus altare, non tantum cum a celebrante recitantur, sed etiam cum a choro canuntur (RM 518 b). II"))) + ((date 2026-03-26) (class_ ("III cl.")) + (title "Viol Feria V post Dom. I Passionis, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("de Sancta Cruce or. super populum."))) + ((date 2026-03-27) (class_ ("III cl.")) + (title "Viol Feria VI post Dom. I Passionis, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("de Sancta Cruce or. super populum."))) + ((date 2026-03-28) (class_ ("III cl.")) + (title "Viol Sabb. post Dom. I Passionis, De eo,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("de Sancta Cruce or. super populum. I"))) + ((date 2026-03-29) (class_ ("I cl.")) + (title + "Rub in Officio, Rub. ad Bened. ramorum et in Processione, Viol. in Missa. DOM. IN PALMIS, De ea,") + (te_deum (true)) (gloria (false)) (credo (true)) + (praef + ("de Sancta Cruce. \194\171Asperges\194\187 omittitur. \226\128\147 Benedictio palmorum et processio ante missam principalem celebrandae sunt. \226\128\147 Orationes praeparatoriae omittuntur. \226\128\147 Evangelium de passione secundum S Matthiam 26, 36-75; 27,1-60 legitur. Munda cor dicitur, celebrans autem (vel diaconus chronista) signum crucis nec super libro nec super se facit, necque librum osculatur, necque Laus tibi Domine dicit. \226\128\147 Evangelium finale omittitur. \226\128\147 In Missis sine processione, legitur in fine Evangelium Cum appropinquasset de benedictione ramorum. Sacerdotibus plures quam unam missam dicentibus licet Evangelium S Matthi\195\166 27, 45-52 legere potius quam Evangelium Passionis. II"))) + ((date 2026-03-30) (class_ ("I cl.")) + (title "Viol FERIA II HEBDOMADAE SANCTAE, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("de Sancta Cruce or. super populum."))) + ((date 2026-03-31) (class_ ("I cl.")) + (title "Viol FERIA II HEBDOMADAE SANCTAE, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef + ("de Sancta Cruce or. super populum. Passio secundum S Marcum 14, 32-72; 15,1-46. Munda cor dicitur, celebrans autem (vel diaconus chronista) signum crucis nec super libro nec super se facit, necque librum osculatur, necque Laus tibi Domine dicit."))) + ((date 2026-04-01) (class_ ("I cl.")) + (title "Viol FERIA IV HEBDOMADAE SANCTA, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef + ("de Sancta Cruce or. super populum. Passio secundum S Lucam 22, 39-71; 23, 1-53. Munda cor dicitur, celebrans autem (vel diaconus chronista) signum crucis nec super libro nec super se facit, necque librum osculatur, necque Laus tibi Domine dicit."))) + ((date 2026-04-02) (class_ ("I cl.")) + (title "Viol. in Off., Alb. in Missa. FERIA V IN CENA DOMINI, De ea,") + (te_deum ()) (gloria (true)) (credo (false)) + (praef + ("de Sancta Cruce, Communicantes, Hanc igitur et Qui pridie pr., ad triplex Agnus Dei ter respondetur miserere nobis. Osculum pacis non datur, et omittitur or. Domine Iesu Christe, qui dixisti."))) + ((date 2026-04-03) (class_ ("I cl.")) + (title + "Nig in Actione liturgica usque ad 4am partem, Viol. in S. Communione. FERIA VI IN PASSIONE ET MORTE DOMINI, De ea,") + (te_deum ()) (gloria (true)) (credo (false)) + (praef ("comm. Feria VI prima in mense."))) + ((date 2026-04-04) (class_ ("I cl.")) + (title "Viol in Vig. pasch., Alb. in Missa. SABBATUM SANCTUM, De eo,") + (te_deum ()) (gloria ()) (credo ()) (praef ())) + ((date 2026-04-05) (class_ ("I cl.")) + (title "Alb DOM. RESURRECTIONIS, De ea,") (te_deum ()) (gloria (true)) + (credo (true)) + (praef + ("Pasch. (in hac potissimum die), Communic. et Hanc igitur pr., ad Ite, missa est additur duplex Alleluia. Hodie prohibentur omnes Missae defunctorum, etiam exsequialis."))) + ((date 2026-04-06) (class_ ("I cl.")) + (title "Alb FERIA II INFRA OCTAVAM PASCHATIS, De ea,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia."))) + ((date 2026-04-07) (class_ ("I cl.")) + (title "Alb FERIA III INFRA OCTAVAM PASCHATIS, De ea,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia."))) + ((date 2026-04-08) (class_ ("I cl.")) + (title "Alb FERIA IV INFRA OCTAVAM PASCHATIS, De ea,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia."))) + ((date 2026-04-09) (class_ ("I cl.")) + (title "Alb FERIA V INFRA OCTAVAM PASCHATIS, De ea,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia."))) + ((date 2026-04-10) (class_ ("I cl.")) + (title "Alb FERIA VI INFRA OCTAVAM PASCHATIS, De ea,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia."))) + ((date 2026-04-11) (class_ ("I cl.")) + (title "Alb SABBATUM IN ALBIS, De eo,") (te_deum ()) (gloria (true)) + (credo (true)) + (praef + ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia. I"))) + ((date 2026-04-12) (class_ ("I cl.")) (title "Alb DOM. IN ALBIS,") + (te_deum (true)) (gloria (true)) (credo (true)) + (praef ("Pasch. \226\128\147 Ite Missa est sine Alleluia. II"))) + ((date 2026-04-13) (class_ ("III cl.")) + (title "Rub Feria II. S Hermenegildi Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus. Ad"))) + ((date 2026-04-14) (class_ ("III cl. (Priv.)")) + (title "Rub Feria III. S Iustini Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus."))) + ((date 2026-04-15) (class_ ("IV cl.")) + (title "Alb Feria IV Dom. in Albis, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (Pasch.))) + ((date 2026-04-16) (class_ ("IV cl.")) + (title "Alb Feria V Dom. in Albis, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + ((date 2026-04-17) (class_ ("IV cl.")) + (title "Alb Feria VI Dom. in Albis, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + ((date 2026-04-18) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione. I"))) + ((date 2026-04-19) (class_ ("II cl.")) + (title "Alb DOM. III PASCHATIS, De ea,") (te_deum (true)) (gloria (true)) + (credo (true)) (praef ("Pasch. II"))) + ((date 2026-04-20) (class_ ("IV cl.")) + (title "Alb Feria II post Dom. III Paschatis, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (Pasch.))) + ((date 2026-04-21) (class_ ("III cl.")) + (title "Alb Feria III. S Anselmi Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("Pasch. Ad"))) + ((date 2026-04-22) (class_ ("III cl.")) + (title "Rub Feria IV. SS Soteris et Caii Pp. et Mm.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus."))) + ((date 2026-04-23) (class_ ("IV cl.")) + (title "Alb Feria V post Dom. III Paschatis, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + ((date 2026-04-24) (class_ ("III cl.")) + (title "Rub Feria VI. S Fidelis de Sigmaringa Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus."))) + ((date 2026-04-25) (class_ ("II cl.")) + (title "Rub Sabb. LITANIA MAIOR. S MARCI EVANGELISTAE,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("App. Ad"))) + ((date 2026-04-26) (class_ ("II cl.")) + (title "Alb DOM. IV PASCHATIS, De ea,") (te_deum (true)) (gloria (true)) + (credo (true)) (praef ("Pasch. II"))) + ((date 2026-04-27) (class_ ("III cl.")) + (title "Alb Feria II. S Petri Canisii Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("Pasch. Ad"))) + ((date 2026-04-28) (class_ ("III cl.")) + (title "Alb Feria III. S Pauli a Cruce Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + ((date 2026-04-29) (class_ ("III cl.")) + (title "Rub Feria IV. S Petri Mart.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("Pasch. vel de Martyribus \226\128\147"))) + ((date 2026-04-30) (class_ ("III cl. (Priv.)")) + (title "Alb Feria V. S Catharinae Senensis Virg.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. I"))) + ((date 2026-05-01) (class_ ("I cl.")) + (title + "Alb Feria VI. S IOSEPH * OPIFICIS SPONSI B. MARIAE VIRG., CONF.,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef + ("de S Iosepho Et te in solemnitate \226\128\147 Etiam dici potest Missa Adiutor (cfr. in Missis votivis), cum Alleluia pasch., praef. S Ioseph Et et in solemnitate. Feria VI prima in mense. II"))) + ((date 2026-05-02) (class_ ("III cl. (Priv.)")) + (title "Alb Sabb. S Athanasii Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("Pasch. Sabbatum primum in mense. I"))) + ((date 2026-05-03) (class_ ("II cl.")) + (title "Alb DOM. V PASCHATIS, De ea,") (te_deum (true)) (gloria (true)) + (credo (true)) (praef ("Pasch. II"))) + ((date 2026-05-04) (class_ ("III cl. (Priv.)")) + (title "Alb Feria II. S Monicae Vid.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef (Pasch.))) + ((date 2026-05-05) (class_ ("III cl. (Priv.)")) + (title "Alb Feria III. S Pii V Papae et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. Ad"))) + ((date 2026-05-06) (class_ ("IV cl.")) + (title "Alb Feria IV post Dom. V Paschatis, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + ((date 2026-05-07) (class_ ("III cl.")) + (title "Rub Feria V. S Stanislai Ep. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus."))) + ((date 2026-05-08) (class_ ("IV cl.")) + (title "Alb Feria VI post Dom. V Paschatis, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + ((date 2026-05-09) (class_ ("III cl. (Priv.)")) + (title "Alb Sabb. S Gregorii Nazianzeni Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("Pasch. I"))) + ((date 2026-05-10) (class_ ("II cl.")) + (title "Alb DOM. VI PASCHATIS, De ea,") (te_deum (true)) (gloria (true)) + (credo (true)) (praef ("Pasch. II"))) + ((date 2026-05-11) (class_ ("II cl.")) + (title "Rub Feria II. SS PHILIPPI * & IACOBI * APP,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("App. Ad"))) + ((date 2026-05-12) (class_ ("III cl.")) + (title + "Rub Feria III. SS Nerei, Achillei, Domitillae Virg., & Pancratii Mm.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("Pasch. vel de Martyribus."))) + ((date 2026-05-13) (class_ ("II cl.")) + (title "Alb Feria IV. VIGILIA ASCENSIONIS,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Pasch. I"))) + ((date 2026-05-14) (class_ ("I cl.")) + (title "Alb Feria V. IN ASCENSIONE DOMINI NOSTRI IESU CHRISTI,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef + ("Ascensionis, Communic pr. In Missa principali post Evangelium exstinguitur cereus paschalis. II"))) + ((date 2026-05-15) (class_ ("III cl.")) + (title "Alb Feria VI. S Ioannis Baptistae de la Salle Conf.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("Ascensionis \226\128\147"))) + ((date 2026-05-16) (class_ ("III cl.")) + (title "Alb Sabb. S Ubaldi Ep. et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Ascensionis \226\128\147"))) + ((date 2026-05-17) (class_ ("II cl.")) + (title "Alb DOM. POST ASCENSIONEM, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) + (praef + ("Ascensionis. Hodie prohibentur omnes Missae defunctorum, excepta exsequiali."))) + ((date 2026-05-18) (class_ ("III cl.")) + (title "Rub Feria II. S Venantii Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("Ascensionis vel de Martyribus."))) + ((date 2026-05-19) (class_ ("III cl.")) + (title "Alb Feria III. S Petri Caelestini Papae et Conf.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef + ("Ascensionis \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Pudentianae Virg. (alb.) Dilexisti iustitiam, Gloria, comm. S Petri Caelestini Papae et Conf., praef. Ascensionis. Ad"))) + ((date 2026-05-20) (class_ ("III cl.")) + (title "Alb Feria IV. S Bernardini Senensis Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (Ascensionis.))) + ((date 2026-05-21) (class_ ("IV cl.")) + (title "Alb Feria V Dom. post Ascensionem, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (Ascensionis.))) + ((date 2026-05-22) (class_ ("IV cl.")) + (title "Alb Feria VI Dom. post Ascensionem, De ea,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("Ascensionis \226\128\147"))) + ((date 2026-05-23) (class_ ("I cl.")) + (title "Rub Sabb. VIGILIA PENTECOSTES,") (te_deum (true)) (gloria (true)) + (credo (false)) + (praef + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. I"))) + ((date 2026-05-24) (class_ ("I cl.")) (title "Rub Dom. PENTECOSTES,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur. II"))) + ((date 2026-05-25) (class_ ("I cl.")) + (title "Rub FERIA II INFRA OCTAVAM PENTECOSTES, De ea,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur."))) + ((date 2026-05-26) (class_ ("I cl.")) + (title "Rub FERIA III INFRA OCTAVAM PENTECOSTES, De ea,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur."))) + ((date 2026-05-27) (class_ ("I cl.")) + (title + "Rub FERIA IV QUATTUOR TEMPORUM INFRA OCTAVAM PENTECOSTES, De ea,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur."))) + ((date 2026-05-28) (class_ ("I cl.")) + (title "Rub FERIA V INFRA OCTAVAM PENTECOSTES, De ea,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur."))) + ((date 2026-05-29) (class_ ("I cl.")) + (title + "Rub FERIA VI QUATTUOR TEMPORUM INFRA OCTAVAM PENTECOSTES, De ea,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur."))) + ((date 2026-05-30) (class_ ("I cl.")) + (title + "Rub SABBATUM QUATTUOR TEMPORUM II INFRA OCTAVAM PENTECOSTES, De eo,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur (quae in forma Miss\195\166 longiori post sixtam lectionem dicitur). Post Nonam exspirat tempus paschale. Compl de dom., cum antiphona finali de B. V. M. Salve Regina, quae dicitur ad Feriam VI ante Dom. I Adventus inclusive. Hodie prohibentur omnes Missae defunctorum, excepta exsequiali."))) + ((date 2026-05-31) (class_ ("I cl.")) + (title "Alb Dom. I post Pentecosten. IN FESTO SANCTISSIMAE TRINITATIS,") + (te_deum ()) (gloria (true)) (credo (true)) (praef ("Trinit. II"))) + ((date 2026-06-01) (class_ ("III cl.")) + (title "Alb Feria II. S Angelae Mericiae Virg.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-06-02) (class_ ("IV cl.")) + (title "Vir Feria III post Dom. I post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-06-03) (class_ ("IV cl.")) + (title "Vir Feria IV post Dom. I post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I"))) + ((date 2026-06-04) (class_ ("I cl.")) + (title "Alb Feria V. CORPORIS CHRISTI,") (te_deum ()) (gloria (true)) + (credo (true)) + (praef + ("comm. vel de Cor Sacratissimo. \226\128\147 Si processio cum benedicto sacramento post missam principalem fit, in Missa Benedicamus Domino dicitur, sed benedictio et evangelium finale omittuntur. II"))) + ((date 2026-06-05) (class_ ("III cl. (Priv.)")) + (title "Rub Feria VI. S Bonifatii Ep. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. vel de Martyribus. Feria VI prima in mense."))) + ((date 2026-06-06) (class_ ("III cl.")) + (title "Alb Sabb. S Norberti Ep. et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. Sabbatum primum in mense. I"))) + ((date 2026-06-07) (class_ ("II cl.")) + (title "Vir DOM. II POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-06-08) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. II post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-06-09) (class_ ("IV cl.")) + (title "Vir Feria III post Dom. II post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-06-10) (class_ ("III cl.")) + (title "Alb Feria IV. S Margaritae Reginae, Vid.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-06-11) (class_ ("III cl. (Priv.)")) + (title "Rub Feria V. S Barnabae Apostoli,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("App. I"))) + ((date 2026-06-12) (class_ ("I cl.")) + (title "Alb Feria VI. SACRATISSIMI CORDIS IESU,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef + ("de Ss.mi Corde Iesu. Hodie, in qualibet ecclesia, coram Ss. Sacramento exposito, legatur formula reparationis et cantentur vel recitentur Litani\195\166 Sacratissimi Cordis Iesu (cfr. Enchiridion Indulgentiarum. Preces et pia opera, 1952, n.256, p.163). II"))) + ((date 2026-06-13) (class_ ("III cl. (Priv.)")) + (title "Alb Sabb. S Antonii de Padua Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-06-14) (class_ ("II cl.")) + (title "Vir DOM. III POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-06-15) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. III post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-06-16) (class_ ("IV cl.")) + (title "Vir Feria III post Dom. III post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-06-17) (class_ ("III cl.")) + (title "Alb Feria IV. S Gregorii Barbadici Ep. et Conf.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-06-18) (class_ ("III cl.")) + (title "Alb Feria V. S Ephraem Syri Diaconi, Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. SS Marci et Marcelliani Mm. (rub.), Gloria, comm. S Ephraem Syri Diaconi, Conf. et Eccl. Doct., praef. comm. vel de Martyribus. Ad"))) + ((date 2026-06-19) (class_ ("III cl.")) + (title "Alb Feria VI. S Iulianae De Falconeriis Virg.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. SS Gervasii et Protasii Mm. (rub.), Gloria, comm. S Iulianae De Falconeriis Virg., praef. comm. vel de Martyribus."))) + ((date 2026-06-20) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + ((date 2026-06-21) (class_ ("II cl.")) + (title "Vir DOM. IV POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-06-22) (class_ ("III cl.")) + (title "Alb Feria II. S Paulini Ep. et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-06-23) (class_ ("II cl.")) + (title "Viol Feria III. VIGILIA NATIVITATIS S IOANNIS * BAPTISTAE,") + (te_deum (true)) (gloria (false)) (credo (false)) (praef ("comm. I"))) + ((date 2026-06-24) (class_ ("I cl.")) + (title "Alb Feria IV. IN NATIVITATE S IOANNIS * BAPTISTAE,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef ("comm. vel de S Ioanni Baptista. II"))) + ((date 2026-06-25) (class_ ("III cl.")) + (title "Alb Feria V. S Gulielmi Abb.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef (comm.))) + ((date 2026-06-26) (class_ ("III cl.")) + (title "Rub Feria VI. SS Ioannis * et Pauli * Mm.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + ((date 2026-06-27) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + ((date 2026-06-28) (class_ ("II cl.")) + (title "Vir DOM. V POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. I"))) + ((date 2026-06-29) (class_ ("I cl.")) + (title "Rub Feria II. SS PETRI * ET PAULI * APP.,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("App. II"))) + ((date 2026-06-30) (class_ ("III cl. (Priv.)")) + (title "Rub Feria III. In Commemoratione S Pauli * Ap.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("App. I"))) + ((date 2026-07-01) (class_ ("I cl.")) + (title "Rub Feria IV. PRETIOSISSIMI SANGUINIS D. N. I. C.,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("de Sancta Cruce. II"))) + ((date 2026-07-02) (class_ ("II cl.")) + (title "Alb Feria V. IN VISITATIONE B. MARIAE VIRG.,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Visitatione. Ad"))) + ((date 2026-07-03) (class_ ("III cl.")) + (title "Rub Feria VI. S Iren\195\166i Ep. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. vel de Martyribus. Feria VI prima in mense."))) + ((date 2026-07-04) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + ((date 2026-07-05) (class_ ("II cl.")) + (title "Vir DOM. VI POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-07-06) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. VI post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-07-07) (class_ ("III cl. (Priv.)")) + (title "Alb Feria III. SS Cyrilli et Methodii Epp. et Cc.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + ((date 2026-07-08) (class_ ("III cl.")) + (title "Alb Feria IV. S Elisabeth Reginae, Vid.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + ((date 2026-07-09) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. VI post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-07-10) (class_ ("III cl.")) + (title + "Rub Feria VI. SS Septem Fratrum Mm., Ac SS Rufinae et Secundae Vv. et Mm.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. vel de Martyribus."))) + ((date 2026-07-11) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + ((date 2026-07-12) (class_ ("II cl.")) + (title "Vir DOM. VII POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-07-13) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. VII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-07-14) (class_ ("III cl. (Priv.)")) + (title "Alb Feria III. S Bonaventurae Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + ((date 2026-07-15) (class_ ("III cl.")) + (title "Alb Feria IV. S Henrici Imperatoris Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-07-16) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. VII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-07-17) (class_ ("IV cl.")) + (title "Vir Feria VI post Dom. VII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-07-18) (class_ ("III cl.")) + (title "Alb Sabb. S Camilli de Lellis Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa SS Symphorosae et septem filiorum eius Mm. (rub.) Clamaverunt (ut in festo Ss. duodecim Fratrum Mm., die 1 sept.), Gloria, ors. pr., comm. S Camilli de Lellis Conf., praef. comm. vel de Martyribus. I"))) + ((date 2026-07-19) (class_ ("II cl.")) + (title "Vir DOM. VIII POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-07-20) (class_ ("III cl.")) + (title "Alb Feria II. S Hieronymi \211\148miliani Conf.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Margaritae Virg. et Mart. (rub.) Me exspectaverunt, Gloria, comm. S Hieronymi \211\148miliani Conf., praef. comm. vel de Martyribus."))) + ((date 2026-07-21) (class_ ("III cl.")) + (title "Alb Feria III. S Laurentii de Brundusio Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. S Praexedis Virg. (alb.), Gloria, comm. S Laurentii de Brundusio Conf. et Eccl. Doct., praef. comm. \226\128\147"))) + ((date 2026-07-22) (class_ ("III cl. (Priv.)")) + (title "Alb Feria IV. S Mariae Magdalenae P\197\147nitentis,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + ((date 2026-07-23) (class_ ("III cl.")) + (title "Rub Feria V. S Apollinaris Ep. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. vel de Martyribus \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Liborii Ep. et Conf. (alb.) Statuit de Comm. Confessoris Pontificis, Gloria, comm. S Apollinaris Ep. et Mart., praef. comm."))) + ((date 2026-07-24) (class_ ("IV cl.")) + (title "Vir Feria VI post Dom. VIII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-07-25) (class_ ("II cl.")) + (title "Rub Sabb. S IACOBI * APOSTOLI,") (te_deum ()) (gloria (true)) + (credo (true)) (praef ("App. Ad"))) + ((date 2026-07-26) (class_ ("II cl.")) + (title "Vir DOM. IX POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-07-27) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. IX post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-07-28) (class_ ("III cl.")) + (title + "Rub Feria III. SS Nazarii et Celsi, Mm., Victoris I Papae et Mart. ac Inocentii I Papae et Conf.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. vel de Martyribus."))) + ((date 2026-07-29) (class_ ("III cl. (Priv.)")) + (title "Alb Feria IV. S Marthae Virg.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef (comm.))) + ((date 2026-07-30) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. IX post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-07-31) (class_ ("III cl. (Priv.)")) + (title "Alb Feria VI. S Ignatii Conf.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef (comm.))) + ((date 2026-08-01) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + ((date 2026-08-02) (class_ ("II cl.")) + (title "Vir DOM. X POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-08-03) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. X post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-08-04) (class_ ("III cl. (Priv.)")) + (title "Alb Feria III. S Dominici Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-08-05) (class_ ("III cl. (Priv.)")) + (title "Alb Feria IV. In Dedicatione S Mariae ad Nives,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("BMV Et te in Festivitate."))) + ((date 2026-08-06) (class_ ("II cl.")) + (title "Alb Feria V. IN TRANSFIGURATIONE D. N. I. C.,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("comm. II"))) + ((date 2026-08-07) (class_ ("III cl.")) + (title "Alb Feria VI. S Caietani Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. S Donati, Ep. et Mart. (rub.), Gloria, comm. S Caietani Conf., praef. comm. vel de Martyribus. Feria VI prima in mense."))) + ((date 2026-08-08) (class_ ("III cl. (Priv.)")) + (title "Alb Sabb. S Ioannis Mariae Vianney Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147"))) + ((date 2026-08-09) (class_ ("II cl.")) + (title "Vir DOM. XI POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-08-10) (class_ ("II cl.")) + (title "Rub Feria II. S LAURENTII * MART.,") (te_deum ()) (gloria (true)) + (credo (false)) (praef ("comm. vel de Martyribus. II"))) + ((date 2026-08-11) (class_ ("IV cl.")) + (title "Vir Feria III post Dom. XI post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-08-12) (class_ ("III cl. (Priv.)")) + (title "Alb Feria IV. S Clarae Virg.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef (comm.))) + ((date 2026-08-13) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. XI post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-08-14) (class_ ("II cl.")) + (title "Viol Feria VI. VIGILIA ASSUMPTIONIS B. MARIAE VIRG.,") + (te_deum (true)) (gloria (false)) (credo (false)) (praef ("comm. I"))) + ((date 2026-08-15) (class_ ("I cl.")) + (title "Alb Sabb. IN ASSUMPTIONE B. MARIAE VIRG.,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Assumptione. Ad"))) + ((date 2026-08-16) (class_ ("II cl.")) + (title "Vir DOM. XII POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-08-17) (class_ ("III cl.")) + (title "Alb Feria II. S Hyacinthi Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-08-18) (class_ ("IV cl.")) + (title "Vir Feria III post Dom. XII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-08-19) (class_ ("III cl.")) + (title "Alb Feria IV. S Ioannis Eudes Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-08-20) (class_ ("III cl. (Priv.)")) + (title "Alb Feria V. S Bernardi Abb. et Eccl. Doct.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147"))) + ((date 2026-08-21) (class_ ("III cl.")) + (title + "Alb Feria VI. S Ioannae Franciscae Fr\195\169miot de Chantal Vid.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-08-22) (class_ ("II cl.")) + (title "Alb Sabb. IMMACULATI CORDIS B. MARIAE VIRG.,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Festivitate. Ad"))) + ((date 2026-08-23) (class_ ("II cl.")) + (title "Vir DOM. XIII POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-08-24) (class_ ("II cl.")) + (title "Rub Feria II. S BARTHOLOMAEI * AP.,") (te_deum ()) + (gloria (true)) (credo (true)) (praef (App.))) + ((date 2026-08-25) (class_ ("III cl.")) + (title "Alb Feria III. S Ludovici Regis Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-08-26) (class_ ("IV cl.")) + (title "Vir Feria IV post Dom. XIII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-08-27) (class_ ("III cl.")) + (title "Alb Feria V. S Iosephi Calasanctii Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-08-28) (class_ ("III cl. (Priv.)")) + (title "Alb Feria VI. S Augustini Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-08-29) (class_ ("III cl. (Priv.)")) + (title "Rub Sabb. In Decollatione S Ioannis * Baptistae,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. vel de S Ioanni Baptista \226\128\147"))) + ((date 2026-08-30) (class_ ("II cl.")) + (title "Vir DOM. XIV POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-08-31) (class_ ("III cl.")) + (title "Alb Feria II. S Raymundi Nonnati Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-09-01) (class_ ("IV cl.")) + (title "Vir Feria III post Dom. XIV post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-09-02) (class_ ("III cl.")) + (title "Alb Feria IV. S Stephani Regis Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-09-03) (class_ ("III cl. (Priv.)")) + (title "Alb Feria V. S Pii X Papae et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + ((date 2026-09-04) (class_ ("IV cl.")) + (title "Vir Feria VI post Dom. XIV post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-09-05) (class_ ("III cl.")) + (title "Alb Sabb. S Laurentii Iustiniani Ep. et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. Sabbatum primum in mense. I"))) + ((date 2026-09-06) (class_ ("II cl.")) + (title "Vir DOM. XV POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-09-07) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. XV post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-09-08) (class_ ("II cl.")) + (title "Alb Feria III. IN NATIVITATE B. MARIAE VIRG.,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Nativitate. Ad"))) + ((date 2026-09-09) (class_ ("IV cl.")) + (title "Vir Feria IV post Dom. XV post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-09-10) (class_ ("III cl.")) + (title "Alb Feria V. S Nicolai de Tolentino Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-09-11) (class_ ("IV cl.")) + (title "Vir Feria VI post Dom. XV post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-09-12) (class_ ("III cl. (Priv.)")) + (title "Alb Sabb. Sanctissimi Nominis Mariae,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("BMV Et te in Festivitate. I"))) + ((date 2026-09-13) (class_ ("II cl.")) + (title "Vir DOM. XVI POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-09-14) (class_ ("II cl.")) + (title "Rub Feria II. IN EXALTATIONE S CRUCIS,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef + ("de Sancta Cruce. In Epistola ad verba Ut in nomine Iesu usque ad infernorum inclusive genuflectitur, item in Choro ab omnibus in Missa in cantu. II"))) + ((date 2026-09-15) (class_ ("II cl.")) + (title "Alb Feria III. SEPTEM DOLORUM B. MARIAE VIRGINIS,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Transfixione. Ad"))) + ((date 2026-09-16) (class_ ("III cl. (Priv.)")) + (title "Rub Feria IV. SS Cornelis * Papae et Cypriani * Ep., Mm.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. vel de Martyribus."))) + ((date 2026-09-17) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. XVI post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-09-18) (class_ ("III cl.")) + (title "Alb Feria VI. S Iosephi de Cupertino Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-09-19) (class_ ("III cl.")) + (title "Rub Sabb. SS Ianuarii Ep. et Sociorum Mm.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I"))) + ((date 2026-09-20) (class_ ("II cl.")) + (title "Vir DOM. XVII POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-09-21) (class_ ("II cl.")) + (title "Rub Feria II. S MATTHAEI * AP. ET EV.,") (te_deum ()) + (gloria (true)) (credo (true)) (praef (App.))) + ((date 2026-09-22) (class_ ("III cl.")) + (title "Alb Feria III. S Thomae de Villanova Ep. et Conf.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa SS Mauritii et Sociorum Mm. (rub.) Intret in conspectu tuo, Gloria, ors. et Evangelium pr., comm. S Thomae de Villanova Ep. et Conf., praef. comm. vel de Martyribus."))) + ((date 2026-09-23) (class_ ("II cl.")) + (title "Viol FERIA IV QUATTUOR TEMP., De ea,") (te_deum (true)) + (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147 Quoad Flectamus genua vide RM 440."))) + ((date 2026-09-24) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. XVII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-09-25) (class_ ("II cl.")) + (title "Viol FERIA VI QUATTUOR TEMP., De ea,") (te_deum (true)) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-09-26) (class_ ("II cl.")) + (title "Viol SABB. QUATTUOR TEMP., De eo,") (te_deum (true)) + (gloria (false)) (credo (false)) + (praef + ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) + ((date 2026-09-27) (class_ ("II cl.")) + (title "Vir DOM. XVIII POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-09-28) (class_ ("III cl.")) + (title "Rub Feria II. S Wenceslai Ducis Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I"))) + ((date 2026-09-29) (class_ ("I cl.")) + (title "Alb Feria III. IN DEDICATIONE S MICHA\195\139LIS ARCHANGELI,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("comm. vel de Angelis. II"))) + ((date 2026-09-30) (class_ ("III cl. (Priv.)")) + (title "Alb Feria IV. S Hieronymi Presbyteri, Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + ((date 2026-10-01) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. XVIII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-10-02) (class_ ("III cl. (Priv.)")) + (title "Alb Feria VI. SS Angelorum Custodum,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. vel de Angelis. Feria VI prima in mense. Vesper\195\166 pr."))) + ((date 2026-10-03) (class_ ("III cl. (Priv.)")) + (title "Alb Sabb. S Teresiae a Iesu Infante Virg.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. Sabbatum primum in mense. I Vesper\195\166 de seq. dom., ut in Psalt. de sabb, ad Magn. ant. Adaperiat (dom. I octobris), or. pr., sine comm. \226\128\147 Compl. de sabb."))) + ((date 2026-10-04) (class_ ("II cl.")) + (title "Vir DOM. XIX POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-10-05) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. XIX post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-10-06) (class_ ("III cl. (Priv.)")) + (title "Alb Feria III. S Brunonis Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. Vesper\195\166 de festo. 100"))) + ((date 2026-10-07) (class_ ("II cl.")) + (title "Alb Feria IV. B. MARIAE VIRG. A ROSARIO,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Festivitate. Ad"))) + ((date 2026-10-08) (class_ ("III cl.")) + (title "Alb Feria V. S Birgittae Vid.,") (te_deum (true)) (gloria (true)) + (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa SS Sergii, Bacchi, Marcelli et Apuleii Mm. (rub.) Sapientiam Sanctorum, Gloria, ors. pr., comm. S Birgittae Vid., praef. comm. vel de Martyribus. Vesper\195\166 de festo, sine comm."))) + ((date 2026-10-09) (class_ ("III cl.")) + (title "Alb Feria VI. S Ioannis Leonardi Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. SS Dionysii Ep., Rustici et Eleutherii Mm. (rub.), Gloria, comm. S Ioannis Leonardi Conf., praef. comm. vel de Martyribus. Vesper\195\166 de festo, sine comm."))) + ((date 2026-10-10) (class_ ("III cl.")) + (title "Alb Sabb. S Francisci Borgiae Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. I Vesper\195\166 de seq. dom., ut in Psalt. de sabb, ad Magn. ant. Refulsit sol (dom. II octobris), or. pr., sine comm. \226\128\147 Compl. de sabb."))) + ((date 2026-10-11) (class_ ("II cl.")) + (title "Vir DOM. XX POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-10-12) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. XX post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. Vesper\195\166 de feria or. dom. pr\195\166c."))) + ((date 2026-10-13) (class_ ("III cl.")) + (title "Alb Feria III. S Eduardis Regis Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. Vesper\195\166 de festo."))) + ((date 2026-10-14) (class_ ("III cl. (Priv.)")) + (title "Rub Feria IV. S Callisti I Papae et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. vel de Martyribus. Vesper\195\166 de festo."))) + ((date 2026-10-15) (class_ ("III cl. (Priv.)")) + (title "Alb Feria V. S Teresiae Virg.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("comm. \226\128\147"))) + ((date 2026-10-16) (class_ ("III cl.")) + (title "Alb Feria VI. S Hedwigis Vid.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("comm. Vesper\195\166 de festo."))) + ((date 2026-10-17) (class_ ("III cl.")) + (title "Alb Sabb. S Margaritae Mariae Alacoque Virg.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. I Vesper\195\166 de seq. dom., ut in Psalt. de sabb, ad Magn. ant. Exaudiat Dominus (dom. IV octobris), or. pr., sine comm. \226\128\147 Compl. de sabb."))) + ((date 2026-10-18) (class_ ("II cl.")) + (title "Vir DOM. XXI POST PENTECOSTEN, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-10-19) (class_ ("III cl.")) + (title "Alb Feria II. S Petri de Alcantara Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. Vesper\195\166 de festo."))) + ((date 2026-10-20) (class_ ("III cl.")) + (title "Alb Feria III. S Ioannis Cantii Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. Vesper\195\166 de festo."))) + ((date 2026-10-21) (class_ ("IV cl.")) + (title "Vir Feria IV post Dom. XXI post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-10-22) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. XXI post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. Vesper\195\166 de feria or. dom. pr\195\166c."))) + ((date 2026-10-23) (class_ ("III cl.")) + (title "Alb Feria VI. S Antonii Mariae Claret Ep. et Conf.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-10-24) (class_ ("III cl.")) + (title "Alb Sabb. S Rapha\195\171lis Archangeli,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. vel de Angelis. I Vesper\195\166 de seq., sine comm. \226\128\147 Compl. de dom. 104"))) + ((date 2026-10-25) (class_ ("I cl.")) + (title "Alb Dom. DOMINI NOSTRI JESU CHRISTI REGIS,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef + ("de Domino Nostro Jesu Rege. Hodie, in omnibus ecclesiis, coram Ss.mo Sacramento exposito, recitetur formula consecrationis generis humani Christo Regi, cum Litaniis de eodem Sacro Corde. II Vesper\195\166 pr. Hodie prohibentur omnes Missae defunctorum, etiam exsequialis."))) + ((date 2026-10-26) (class_ ("IV cl.")) + (title "Vir Feria II post Dom. XXII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-10-27) (class_ ("IV cl.")) + (title "Vir Feria III post Dom. XXII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. Vesper\195\166 de feria, or. dom. XXII post Pent."))) + ((date 2026-10-28) (class_ ("II cl.")) + (title "Rub Feria IV. SS SIMONIS * ET IUD\195\134 * APP.,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef + ("App. In Canone Miss\195\166, nomen S. Apostoli Iud\195\166 inscribitur cum nomine Thadd\195\166i: ergo inclinatur caput quando dicitur Thadd\195\166i. Vesper\195\166 de Comm. \226\128\147 Compl. de dom. Hodie permittuntur tantum Missae votivae et defunctorum I et II classis."))) + ((date 2026-10-29) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. XXII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. Vesper\195\166 de feria or. dom. XXII post Pent."))) + ((date 2026-10-30) (class_ ("IV cl.")) + (title "Vir Feria VI post Dom. XXII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. Vesper\195\166 de feria or. dom. XXII post Pent."))) + ((date 2026-10-31) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) + (praef + ("BMV Et te in Veneratione. I Vesper\195\166 de seq. \226\128\147 Compl. de dom. 106"))) + ((date 2026-11-01) (class_ ("I cl.")) (title "Alb Dom. OMNIUM SANCTORUM,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("Trinit. vel de Omnibus Sanctis et Patronis. II"))) + ((date 2026-11-02) (class_ ("I cl.")) + (title "Nig Feria II. IN COMMEMORATIONE OMNIUM FIDELIUM DEFUNCTORUM,") + (te_deum ()) (gloria (false)) (credo (false)) + (praef + ("defunctorum, unica or. \226\128\147 Benedictio non dicitur. \226\128\147 Si tres Miss\195\166 celebrantur sine intermissione, sequentia dici debet tantum in Missa principali; si minus, dici debet in Missa prima. In aliis Missis, nisi sint in cantu, sequentia omitti potest."))) + ((date 2026-11-03) (class_ ("IV cl.")) + (title "Vir Feria III post Dom. XXIII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-11-04) (class_ ("III cl. (Priv.)")) + (title "Alb Feria IV. S Caroli Ep. et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147"))) + ((date 2026-11-05) (class_ ("IV cl.")) + (title "Vir Feria V post Dom. XXIII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-11-06) (class_ ("IV cl.")) + (title "Vir Feria VI post Dom. XXIII post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. Feria VI prima in mense."))) + ((date 2026-11-07) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) + (praef ("BMV Et te in Veneratione. Sabbatum primum in mense. I"))) + ((date 2026-11-08) (class_ ("II cl.")) + (title "Vir DOM. V QUI SUPERFUIT POST EPIPHANIAM, De ea,") + (te_deum (true)) (gloria (true)) (credo (true)) + (praef + ("Trinit. Dicitur Missa qu\195\166 inscribitur \194\171Dominica. V qui superfuit post Epiphaniam\194\187. Antiphonae ad Introitum, ad Offertorium et ad Communionem, necnon graduale et Alleluia cum suo versu, sumuntur e Dom. XXIII post Pent.; orationes, Epistola et Evangelium, e Dom. V qui superfuit post Epiphaniam. Ad II"))) + ((date 2026-11-09) (class_ ("II cl.")) + (title + "Alb Feria II. IN DEDICATIONE ARCHIBASILICAE SANCTISSIMI SALVATORIS,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("comm. vel de Dedicatione ecclesi\195\166."))) + ((date 2026-11-10) (class_ ("III cl.")) + (title "Alb Feria III. S Andreae Avellini Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. SS Tryphonis, Respicii et Nymphae Virg., Mm. (rub.), Gloria, comm. S Andreae Avellini Conf., praef. comm. vel de Martyribus."))) + ((date 2026-11-11) (class_ ("III cl. (Priv.)")) + (title "Alb Feria IV. S Martini Ep. et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-11-12) (class_ ("III cl.")) + (title "Rub Feria V. S Martini I Papae et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + ((date 2026-11-13) (class_ ("III cl.")) + (title "Alb Feria VI. S Didaci Conf.,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("comm. \226\128\147"))) + ((date 2026-11-14) (class_ ("III cl. (Priv.)")) + (title "Rub Sabb. S Iosaphat Ep. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("comm. vel de Martyribus \226\128\147"))) + ((date 2026-11-15) (class_ ("II cl.")) + (title "Vir DOM. VI QUI SUPERFUIT POST EPIPHANIAM, De ea,") + (te_deum (true)) (gloria (true)) (credo (true)) + (praef + ("Trinit. Dicitur Missa qu\195\166 inscribitur \194\171Dominica. VI qui superfuit post Epiphaniam\194\187. Antiphonae ad Introitum, ad Offertorium et ad Communionem, necnon graduale et Alleluia cum suo versu, sumuntur e Dom. XXIII post Pent.; orationes, Epistola et Evangelium, e Dom. VI qui superfuit post Epiphaniam. Ad II"))) + ((date 2026-11-16) (class_ ("III cl.")) + (title "Alb Feria II. S Gertrudis Virg.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-11-17) (class_ ("III cl.")) + (title "Alb Feria III. S Gregorii Thaumaturgi Ep. et Conf.,") + (te_deum (true)) (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-11-18) (class_ ("III cl. (Priv.)")) + (title + "Alb Feria IV. In Dedicatione Basilicarum SS Petri et Pauli App.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. vel de Dedicatione ecclesi\195\166."))) + ((date 2026-11-19) (class_ ("III cl.")) + (title "Alb Feria V. S Elisabeth Vid.,") (te_deum (true)) (gloria (true)) + (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Pontiani Papae et Mart. (rub.) Si diligis, Gloria, comm. S Elisabeth Vid., praef. comm. vel de Martyribus."))) + ((date 2026-11-20) (class_ ("III cl.")) + (title "Alb Feria VI. S Felicis de Valois Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef (comm.))) + ((date 2026-11-21) (class_ ("III cl.")) + (title "Alb Sabb. In Praesentatione B. Mariae Virg.,") (te_deum (true)) + (gloria (true)) (credo (false)) + (praef ("BMV Et te in Pr\195\166sentatione. I"))) + ((date 2026-11-22) (class_ ("II cl.")) + (title "Vir DOM. XXIV & ULTIMA POST PENTECOSTEN, De ea,") + (te_deum (true)) (gloria (true)) (credo (true)) + (praef ("Trinit. Ad II"))) + ((date 2026-11-23) (class_ ("III cl. (Priv.)")) + (title "Rub Feria II. S Clementis I * Papae et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad"))) + ((date 2026-11-24) (class_ ("III cl. (Priv.)")) + (title "Alb Feria III. S Ioannis a Cruce Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-11-25) (class_ ("III cl.")) + (title "Rub Feria IV. S Catharinae Virg. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + ((date 2026-11-26) (class_ ("III cl.")) + (title "Alb Feria V. S Silvestri Abb.,") (te_deum (true)) (gloria (true)) + (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Petri Alexandrini Ep. et Mart. (rub.) Statuit ei, Gloria, comm. S Silvestri Abb., praef. comm. vel de Martyribus. \226\128\147"))) + ((date 2026-11-27) (class_ ("IV cl.")) + (title "Vir Feria VI post Dom. XXIV & Ultima post Pentecosten, De ea,") + (te_deum (false)) (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-11-28) (class_ ("IV cl.")) + (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) + (credo (false)) (praef ("BMV Et te in Veneratione. I"))) + ((date 2026-11-29) (class_ ("I cl.")) + (title "Viol DOM. I ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) + (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-11-30) (class_ ("II cl.")) + (title "Rub Feria II. S ANDREAE * APOSTOLI,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("App. Ad"))) + ((date 2026-12-01) (class_ ("III cl.")) + (title "Viol Feria III post Dom. I Adventus, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-12-02) (class_ ("III cl.")) + (title "Rub Feria IV. S Bibianae Virg. et Mart.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad"))) + ((date 2026-12-03) (class_ ("III cl. (Priv.)")) + (title "Alb Feria V. S Francisci Xavierii Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + ((date 2026-12-04) (class_ ("III cl.")) + (title "Alb Feria VI. S Petri Chrysologi Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef + ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Barbarae Virg. et Mart. (rub.) Loquebar de testimoniis tuis, Gloria, comm. 1\194\170 Feriae, comm. 2\194\170 S Petri Chrysologi Ep., Conf. et Eccl. Doct., praef. comm. vel de Martyribus. Feria VI prima in mense. Ad"))) + ((date 2026-12-05) (class_ ("III cl.")) + (title "Viol Sabb. post Dom. I Adventus, De eo,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("comm. Sabbatum primum in mense. I"))) + ((date 2026-12-06) (class_ ("I cl.")) + (title "Viol DOM. II ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) + (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-12-07) (class_ ("III cl. (Priv.)")) + (title "Alb Feria II. S Ambrosii Ep., Conf. et Eccl. Doct.,") + (te_deum (true)) (gloria (true)) (credo (false)) + (praef ("comm. \226\128\147"))) + ((date 2026-12-08) (class_ ("I cl.")) + (title "Alb Feria III. IN CONCEPTIONE IMMACULATA B. MARIAE VIRGINIS,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("BMV Et te in Conceptione Immaculata. Ad"))) + ((date 2026-12-09) (class_ ("III cl.")) + (title "Viol Feria IV post Dom. II Adventus, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-12-10) (class_ ("III cl.")) + (title "Viol Feria V post Dom. II Adventus, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-12-11) (class_ ("III cl. (Priv.)")) + (title "Alb Feria VI. S Damasi I Papae et Conf.,") (te_deum (true)) + (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + ((date 2026-12-12) (class_ ("III cl.")) + (title "Viol Sabb. post Dom. II Adventus, De eo,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("comm. I"))) + ((date 2026-12-13) (class_ ("I cl.")) + (title "DOM. III ADVENTUS (GAUDETE), De ea,") (te_deum (true)) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-12-14) (class_ ("III cl.")) + (title "Viol Feria II post Dom. III Adventus (Gaudete), De ea,") + (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-12-15) (class_ ("III cl.")) + (title "Viol Feria III post Dom. III Adventus (Gaudete), De ea,") + (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-12-16) (class_ ("II cl.")) + (title "Viol FERIA IV QUATTUOR TEMP., De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("comm. \226\128\147 Quoad Flectamus genua vide RM 440."))) + ((date 2026-12-17) (class_ ("II cl.")) + (title "Viol FERIA V POST DOM. III ADVENTUS (GAUDETE), De ea,") + (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-12-18) (class_ ("II cl.")) + (title "Viol FERIA VI QUATTUOR TEMP., De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-12-19) (class_ ("II cl.")) + (title "Viol SABB. QUATTUOR TEMP., De eo,") (te_deum ()) (gloria (false)) + (credo (false)) + (praef + ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) + ((date 2026-12-20) (class_ ("I cl.")) + (title "Viol DOM. IV ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) + (credo (true)) (praef ("Trinit. Ad II"))) + ((date 2026-12-21) (class_ ("II cl.")) + (title "Rub Feria II. S THOM\195\134 * APOSTOLI,") (te_deum ()) + (gloria (true)) (credo (true)) (praef ("App. Ad"))) + ((date 2026-12-22) (class_ ("II cl.")) + (title "Viol FERIA III POST DOM. IV ADVENTUS, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-12-23) (class_ ("II cl.")) + (title "Viol FERIA IV POST DOM. IV ADVENTUS, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef (comm.))) + ((date 2026-12-24) (class_ ("I cl.")) + (title "Viol Feria V. VIGILIA NATIVITATIS DOMINI,") (te_deum (true)) + (gloria (false)) (credo (false)) (praef ("comm. I"))) + ((date 2026-12-25) (class_ ("I cl.")) + (title "Alb Feria VI. IN NATIVITATE DOMINI,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef + ("et Communic. pr. per totam oct. \226\128\147 In Communicantes: in 1\194\170 Missa dicitur Noctem sacratissimam celebrantes, qua, in 2\194\170 et 3\194\170 Missa et per octavam Diem sacratissimum celebrantes, quo. \226\128\147 In 2\194\170 Missa (etiam in cantu) fit comm. S. Anastasi\195\166 * M. \226\128\147 In Missis in cantu, ad verba symboli Et incarnatus est\226\128\166 et homo factus est, omnes genuflectunt versus altare, non tantum cum a celebrante recitantur, sed etiam cum a choro canuntur (RM 518 b). II"))) + ((date 2026-12-26) (class_ ("II cl.")) + (title "Rub Sabb. S STEPHANI * PROTOMARTYRIS,") (te_deum ()) + (gloria (true)) (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad"))) + ((date 2026-12-27) (class_ ("II cl.")) + (title "Alb DOM. INFRA OCTAVAM NATIVITATIS, De ea,") (te_deum (true)) + (gloria (true)) (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad II"))) + ((date 2026-12-28) (class_ ("II cl.")) + (title "Rub Feria II. SS INNOCENTIUM MM.,") (te_deum ()) (gloria (true)) + (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad"))) + ((date 2026-12-29) (class_ ("II cl.")) + (title "Alb FERIA III DOM. INFRA OCTAVAM NATIVITATIS, De ea,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum."))) + ((date 2026-12-30) (class_ ("II cl.")) + (title "Alb FERIA IV DOM. INFRA OCTAVAM NATIVITATIS, De ea,") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum."))) + ((date 2026-12-31) (class_ ()) + (title + "Alb FERIA V DOM. INFRA OCTAVAM NATIVITATIS, De ea. \226\128\147 Off. semifestivum. \226\128\147 Ad MAT. invit., hymnus, 9 antt. et 9 pss. cum ultimo V de festo Nativ., Ll. de Scr. occ. cum suis RR (ad 2um additur Gloria Patri)\226\128\147 Ad Laudes antt. de Nativ., pss. de dom., comm. S Silvestri I Papae et Conf. \226\128\147 Ad HORAS ant. et pss. de feria curr., rel ut in festo Nativ. \226\128\147 Ad Primam in R Br. V Qui natus es de Maria Virgine. Missa Puer natus de diebus infra octavam, Gloria, Credo, comm. S Silvestri I Papae et Conf., praef. de Nativ., Communic. de Nativ. diem sacratissimum. I VESPER\195\134 de seq. \226\128\147 Compl. de dom. Hodie ad solemnem recitationem hymni Te Deum, indulgentia plenaria lucrari potest. 126") + (te_deum ()) (gloria (true)) (credo (true)) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. I")))) -- cgit v1.3 From f4cc032d7e812d716ff6b5df8192f79a2560e8f0 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Sat, 22 Aug 2026 17:56:42 +0200 Subject: feat(ef): the Gloria in excelsis, RG 431-432, deferring to Breviary 237-238 Phase 2 of celebrant-rubrics-phase1: colitur rubrics gains a fifth column, whether the Gloria is said. Follows the Creed's own seam exactly -- Rite.t.gloria, Liturgical_day.t.gloria, wired through calendar.ml the same way. RG 431(a)/432(a) defer the Gloria to the Breviary's own Te Deum rule (nn. 237-238), so te_deum is implemented as its own named predicate, cited clause by clause, not collapsed into a colour heuristic. 431(c) (Holy Thursday, the Easter Vigil Mass) and 432(b)/(d) (violet; a Requiem) are independent overrides checked ahead of the Te Deum-derived answer. Every clause this engine has no dimension to model (votive Mass classes, the wider n.302 "Missa festiva" categories) is stated as N/A with its own reasoning, not silently dropped. Validated against the FIUV universal Ordo (Gloria and Te Deum) and all three LMS editions (Gloria). A first pass over-trusted a clean-looking 15-for-15 FIUV contradiction of 237(b)'s own Septuagesima exception and replaced it with a blanket "every Sunday" rule; the evidence was itself corrupted -- the FIUV extractor recognised only one of the source's two Te Deum negations ("non dicitur", not "sine"), so every "sine Te Deum" Sunday read wrongly true. Fixed in tools/extract_fiuv_ordo.ml, fixture re-extracted, and the literal 237(b) reading restored once the corrected data confirmed it. A second bug surfaced alongside it (Palm/ Passion Sunday wrongly reading true via Temporal_ef.named's own table membership, then Christ the King wrongly reading false from an over-broad fix) is closed with an explicit two-slug exclusion. Domain-wide 1583-9999: every violet or Rose day is gloria=false except the Easter Vigil (RG 431(c) lex specialis), every Requiem is gloria=false, both measured exhaustively, zero exceptions. Mutation- proved: disabling 431(c) reddens 8 tests including all four oracle comparisons; disabling 238(c)'s feria-I-classis exclusion reddens exactly the dedicated Ash Wednesday unit test, a genuine blind spot in both oracle layers, reported rather than hidden. Two open, cited findings, neither fixed here (out of this task's "follow creed's exact seam" scope): a privileged Lenten/Passiontide feria carrying one commemoration reads Gloria=true in the LMS Ordo but Te-Deum=true/Gloria=false in FIUV -- the two oracles disagree with each other, not merely with colitur (data/ef/expected-divergences-lms.sexp L5, expected-divergences-fiuv.sexp F3); and a pre-existing, uncited Colour.Violet bug on Rogation Monday/Tuesday in Temporal_ef.temporal, surfaced by this comparison but root-caused as a separate defect (L6). day/readings verified byte-identical against a build from the branch tip before this task (v0.10.1's own tag predates an already-landed bissextile fix that legitimately changed both, so it is not the right baseline). 671 tests green (dune test); 678 with the exhaustive sweep (COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force, ~104s). --- bin/main.ml | 26 ++- data/ef/expected-divergences-fiuv.sexp | 108 +++++++++- data/ef/expected-divergences-lms.sexp | 112 ++++++++++ lib/kernel/calendar.ml | 4 + lib/kernel/liturgical_day.ml | 1 + lib/kernel/liturgical_day.mli | 4 + lib/kernel/rite.ml | 1 + lib/kernel/rite.mli | 6 + lib/rites/rite_ef/rite_ef.ml | 3 +- lib/rites/rite_ef/rite_ef.mli | 3 + lib/rites/rite_ef/rubrics_ef.ml | 378 +++++++++++++++++++++++++++++++++ lib/rites/rite_ef/rubrics_ef.mli | 30 +++ man/colitur.1 | 24 ++- test/cli.t | 40 ++-- test/fixtures/fiuv-ordo-2025-2026.sexp | 79 ++++--- test/test_calendar.ml | 9 +- test/test_fiuv_ordo.ml | 169 ++++++++++++++- test/test_lms_ordo.ml | 112 +++++++++- test/test_rubrics_ef.ml | 324 +++++++++++++++++++++++++++- test/test_validate.ml | 16 +- tools/extract_fiuv_ordo.ml | 21 ++ 21 files changed, 1378 insertions(+), 92 deletions(-) (limited to 'test/fixtures/fiuv-ordo-2025-2026.sexp') diff --git a/bin/main.ml b/bin/main.ml index 01410f2..cf8cae2 100644 --- a/bin/main.ml +++ b/bin/main.ml @@ -408,7 +408,12 @@ let readings_line ~lang ~sigla (d : (Rite_ef.Vocab_ef.season, Rite_ef.Vocab_ef.r for a [Votive] day before [said] became honest, and it is a value this function already has in scope regardless of [via]. So this is not "print a placeholder for the missing case", it is "the value was - already available from a different field, and still is". *) + already available from a different field, and still is". + + Task (celebrant-rubrics-phase1, Phase 2): a FIFTH column, whether the + Gloria in excelsis is said (EF: RG 431-432, {!Rite_ef.Rubrics_ef.gloria}) + -- same [string_of_bool] convention as [creed], same plain [bool] with + no [option] to guard, same reasoning throughout. *) let rubrics_line (d : (Rite_ef.Vocab_ef.season, Rite_ef.Vocab_ef.rank) Colitur_kernel.Liturgical_day.t) = let said, via = @@ -421,8 +426,9 @@ let rubrics_line (d : (Rite_ef.Vocab_ef.season, Rite_ef.Vocab_ef.rank) Colitur_k Colitur_kernel.Mass_formulary.source_to_string f.Colitur_kernel.Mass_formulary.via ) | None -> ("-", "-") in - Printf.printf "%s\t%s\t%s\t%s\n" (D.to_iso8601 d.Colitur_kernel.Liturgical_day.date) said via + Printf.printf "%s\t%s\t%s\t%s\t%s\n" (D.to_iso8601 d.Colitur_kernel.Liturgical_day.date) said via (string_of_bool d.Colitur_kernel.Liturgical_day.creed) + (string_of_bool d.Colitur_kernel.Liturgical_day.gloria) (* One civil year, Jan 1 - Dec 31, matching [temporal_report]'s own scan -- NOT one liturgical year: [Colitur_kernel.Calendar.year] resolves a single @@ -1281,8 +1287,8 @@ output formats: 2026-04-05 sunday paschaltide 1 ef-easter-sunday class-1 white readings date slug | Epistle | Gospel [| name] 2026-12-25 ef-nativity | Heb 1:1-12 | John 1:1-14 - rubrics date, formulary slug, source, creed -- TAB-separated - 2026-01-01[TAB]ef-circumcision[TAB]own[TAB]true + rubrics date, formulary slug, source, creed, gloria -- TAB-separated + 2026-01-01[TAB]ef-circumcision[TAB]own[TAB]true[TAB]true A citation contains spaces, so readings uses " | " between its fields while day stays space-separated; that is why they are separate commands rather @@ -1299,14 +1305,16 @@ output formats: (source: proper/own/preceding-sunday/common/votive) -- not always the day's own: a weekday with no proper resumes the preceding Sunday's, a saint with no proper says his assigned Common -- followed by whether the - Creed is said (RG 475-476: "true"/"false", OCaml's own literal, not - "yes"/"no" or "1"/"0"). TAB-separated rather than space or " | ": a + Creed is said (RG 475-476) and whether the Gloria in excelsis is said + (RG 431-432, deferring to the Breviary's own Te Deum rule, nn. 237-238, + for RG 431(a)) -- both "true"/"false", OCaml's own literal, not + "yes"/"no" or "1"/"0". TAB-separated rather than space or " | ": a resolved formulary NAME is a column a later version may add, and it can carry both spaces and punctuation a citation never does, which rules out either alternative already in use above. --overlay is accepted (the - observed celebration it changes decides the formulary and the Creed); - --lang/--raw/--sigla-* are refused -- this row resolves no display name - and no citation for any of them to affect. + observed celebration it changes decides the formulary, the Creed and the + Gloria); --lang/--raw/--sigla-* are refused -- this row resolves no + display name and no citation for any of them to affect. emit one schema (season, week, slug, rank, colour, subject, names, citations, commemorations), rendered five ways: csv (RFC 4180, diff --git a/data/ef/expected-divergences-fiuv.sexp b/data/ef/expected-divergences-fiuv.sexp index 5506e46..6ed9a04 100644 --- a/data/ef/expected-divergences-fiuv.sexp +++ b/data/ef/expected-divergences-fiuv.sexp @@ -15,12 +15,106 @@ ; backs, the SAME convention every other allow-list file in this project ; uses: not always "colitur". ; -; Empty as of this task: the Creed comparison found no unexplained +; The Creed comparison (Task 6/Witnesses task) found no unexplained ; divergence anywhere in the 400-day window (399 comparable days, Holy ; Saturday excluded per test_creed_coverage -- see that test's own -; citation). Kept as a file, not deleted, on the same footing as -; expected-divergences-lms.sexp's own empty-but-live state after L1's -; closure: the machinery that would explain a FUTURE divergence needs -; somewhere to live, and an empty allow-list with a live "every entry -; must be used" check is a real invariant worth keeping, not a -; formality. +; citation) and still does not. Phase 2 (celebrant-rubrics-phase1, +; 2026-08-22) extended this file to two more axes, Gloria and Te Deum -- +; F1 below (Gloria) and F3 (Te Deum). Both prose-only, the same L2/L5/L6 +; convention data/ef/expected-divergences-lms.sexp's own header explains: +; the real enforcement is test_fiuv_ordo.ml's own predicates and count +; assertions, not a machine-loaded [id] record. +; +; F2 and F4 (Te Deum: every vigil; the three September Ember days) were +; found, then CLOSED within the same task: tools/extract_fiuv_ordo.ml's +; own Te Deum parser recognised only ONE of the source's two negative +; phrasings ("non dicitur Te Deum"), so "sine Te Deum" -- how the source +; actually negates a Sunday's/vigil's/Ember-day's own Te Deum -- fell +; through to a bare "Te Deum" substring match and was wrongly read +; [true]. Fixed in the extractor (its own citation has the full account); +; the fixture was re-extracted from the SAME pdftotext dump; 24 of 400 +; rows flipped true->false, and colitur's own answer already matched the +; corrected value on every one of them -- no code change needed for F2/ +; F4 specifically. See test/fixtures/fiuv-ordo-2025-2026.sexp's own +; "RE-EXTRACTED" note and lib/rites/rite_ef/rubrics_ef.ml's own [te_deum] +; header (237(a)'s comment) for the fuller account, including a real, +; separate regression this same fix round found and reverted (a first +; attempt at "every Sunday says Te Deum" wrongly excluded Christ the +; King, caught by the LMS Ordo's own Gloria axis, 2024-10-27). + +; F1 -- OPEN, adjudicated FOR colitur. Fired once: 2026-04-03, Good +; Friday. +; +; The raw source (docs/research/ordo/fiuv-ordo-2025-2026.pdf, page 46, +; verified directly against the PDF, not merely the extracted fixture): +; "3. Nig in Actione liturgica usque ad 4am partem, Viol. in S. +; Communione. FERIA VI IN PASSIONE ET MORTE DOMINI, De ea, I cl. ... +; Missa pr., (omittuntur ps. Iudica me et Gloria Patri), Gloria, sine +; Credo, praef. comm." -- read LITERALLY, this states the Gloria IS said +; on Good Friday. colitur says [false] (RG 432(d)'s own {!Colour.Black} +; proxy this Mass shares with the Requiem population, {!Rite_ef.Rubrics_ +; ef.gloria}'s own header). +; +; ADJUDICATED FOR COLITUR: Good Friday's own liturgical action has no +; Mass at all in the 1955-restored Holy Week (RG 28's own "non sit dies +; liturgicus" framing for the Paschal Vigil is the closest parallel this +; project already cites, {!Rite_ef.Rubrics_ef.creed}'s own RG 28-34 +; comment) -- no Consecration, no Communion under both species by the +; celebrant, only Communion from the reserved Sacrament. That the Gloria +; is NOT said on Good Friday is among the most widely and consistently +; attested facts in the whole of 1962-rite literature (O'Connell, +; Fortescue, every published Ordo this project has touched, and this +; author's own independent knowledge of the rite) -- essentially +; undisputed. The printed "Missa pr., ..., Gloria, ..." block, structured +; identically to a REAL Mass's own rubric line elsewhere in this same +; Ordo (compare Easter Day's "Missa pr., Gloria, sequentia, Credo, praef. +; Pasch."), most plausibly describes the liturgical action's own +; STRUCTURE using the book's standard notation for bookkeeping +; consistency, or is a genuine single-word compiler error -- neither +; resolvable without contacting the compiler, out of this task's own +; scope. NOT the same failure mode as the Te Deum extractor bug above +; (F2/F4): this is the RAW pdftotext TEXT itself making the claim, not a +; downstream parsing artefact of test_fiuv_ordo.ml's own extraction -- +; re-run directly against a fresh -layout dump for this task, not merely +; trusted from the fixture. The PDF's own page IMAGE was not separately +; inspected (out of this task's own tool access), so a pdftotext-layer +; misread (a stray line from an adjacent block folded into this one) is +; not fully ruled out either -- named as a real possibility, not +; silently excluded. + +; F3 -- OPEN, single-witnessed, colitur's own possible gap (Te Deum +; axis). Fires 6 times, every one of the six dates +; data/ef/expected-divergences-lms.sexp's own L5 already found for +; Gloria: 2026-03-06/07/09/12/21/24, a privileged Lenten or Passiontide +; feria (Class3, RG25) whose own office is impeded and carries exactly +; one commemoration of a Class3 saint. colitur's [te_deum] reads [false] +; (a plain ferial office by every branch {!Rite_ef.Rubrics_ef.te_deum} +; checks); FIUV reads [true] in all six -- confirmed directly against +; the raw pdftotext dump, not merely the fixture: e.g. 12 March, "Ll. 1a +; et 2a (= 2a+3a) de Scr. occ., 3a de festo, Te Deum." -- a genuine, +; unnegated "Te Deum" (neither of the two negative phrasings the +; extractor now checks for), so this is NOT the same failure mode F2/F4 +; were. +; +; CITATION: the same n.302(b)/RG431(b) text L5 already cites (LT.txt -- +; a MISSAL rubric, not a Breviary one, so its literal text governs the +; MASS's own Gloria, not Matins' Te Deum) does not directly license this +; finding at all -- 237/238 (the BREVIARY rubric {!Rite_ef.Rubrics_ef. +; te_deum} actually implements) has no clause naming a commemoration as +; grounds for Te Deum. What this finding suggests, not yet established: +; the DIVINE OFFICE may treat a commemorated day more generously than the +; MASS does for exactly this shape (a commemorated saint's own lessons +; are read at Matins even on an impeded day, which could plausibly extend +; to Te Deum by an unwritten or unlocated convention) -- genuinely +; speculative, offered as a research lead for a follow-on task, not a +; citation this entry treats as settled. +; +; WHY NOT FIXED HERE: SINGLE-WITNESSED (the LMS fixtures never captured +; Te Deum at all, so there is no second Ordo to corroborate this shape +; the way the Sacred-Triduum/BVM-Saturday/vigil findings elsewhere in +; this task were cross-checked). Fixing it would need the SAME kernel +; signature widening L5 already declines for the identical reason +; (`~commemorations` on {!Colitur_kernel.Rite.t.gloria}, and by extension +; a parallel widening of [te_deum] if the two were ever to diverge in +; their own inputs) -- out of a task briefed to follow creed's existing +; seam exactly. Left OPEN for the same follow-on task L5 recommends. diff --git a/data/ef/expected-divergences-lms.sexp b/data/ef/expected-divergences-lms.sexp index 4cb5d2a..df813f9 100644 --- a/data/ef/expected-divergences-lms.sexp +++ b/data/ef/expected-divergences-lms.sexp @@ -6,6 +6,10 @@ ; (2025-11-28..2026-12-31) joined it. L3/L4 below fired only in the ; 2023-2024 window -- neither recurs in the other two, a fact worth ; keeping visible rather than merging away (see [expected_rows] on each). +; L5/L6 (Phase 2, 2026-08-22) extended the comparison to a second axis, +; Gloria (RG431-432) -- both fire in more than one window, at DIFFERENT +; counts per window, so both are prose-only (L2's own precedent), not +; machine-checked [id] records; see each for the real enforcement site. ; ; A SEPARATE file from data/ef/expected-divergences.sexp (the lectio ; allow-list) and data/ef/expected-divergences-missalemeum.sexp (the @@ -228,3 +232,111 @@ (verdict open) (note "2023-12-24 (the 4th Sunday of Advent AND Christmas Eve, a genuinely rare coincidence -- roughly 1 year in 7 -- absent from both the 2024-2025 and 2025-2026 windows, where Christmas Eve falls on a Tuesday and a Wednesday respectively). colitur says the Creed IS said (true), reading [temporal]'s own weekday (Sunday) per RG475(a)'s clause, positioned ahead of the vigil-exclusion check in {!Rite_ef.Rubrics_ef.creed} -- unconditionally, the same way it already does for RG16(a)'s Feast-of-the-Lord case. The Ordo says \"No Gl No Cr\" for this date. ADJUDICATED FOR COLITUR, not merely left open by default: RG30(a)'s own \"locum tenet ... nulla fit commemoratio\" language is textually closer to RG16(a) (which colitur already treats as Creed-preserving) than to an ordinary vigil superseding a Sunday -- the Vigil does not merely WIN THE DAY, it takes the SUNDAY'S OWN IDENTITY, the same shape RG475(a) was written to reach. The COUNTER-reading is real and not dismissed here: RG475(a)'s own text says \"locum cedat ... festo\" (gives way to a FEAST), and RG35 (Caput VI) classifies feria/vigilia/festum as three distinct liturgical-day categories -- a strict textual reading could confine 475(a)'s override to FEAST-displacement only, leaving a VIGIL-displaced Sunday to fall through to the general vigil exclusion (476, via RG33's own \"a vigil is a distinct category\" reasoning already coded elsewhere in {!Rite_ef.Rubrics_ef.creed}). Left OPEN rather than closed on this task's own authority: adjudicating scripture-grade primary-source questions is out of scope for a witness-wiring task, and the two readings are both defensible. Not fixable inside this task's own no-lib-changes constraint regardless of which reading eventually wins.") (expected_rows 1)) + +; L5 -- OPEN, colitur's own gap, found extending this suite to the Gloria +; axis (celebrant-rubrics-phase1 Phase 2, 2026-08-22). NOT an active +; machine-checked [id] entry -- same reasoning L2 above gives: the count +; varies window to window (5 in 2023-2024, 5 in 2024-2025, 6 in +; 2025-2026), so a single static [expected_rows] cannot check it. The REAL +; enforcement is test_lms_ordo.ml's own [is_l5_lenten_commemoration] +; predicate plus [make_suite]'s own ~expected_gloria_l5 parameter, +; asserted per window directly. +; +; SHAPE, identical in all 16 instances found (5+5+6, zero exceptions): +; a privileged Lenten or Passiontide feria (Class3, violet -- RG25, +; {!Rite_ef.Temporal_ef.ferial_rank}) whose own office is impeded and +; carries EXACTLY ONE commemoration, of a Class3 saint colitur's own +; precedence engine (independently validated, layers 3-5) correctly +; reduces to a mere commemoration. colitur's [gloria] reads [false] (the +; day is a plain ferial office by every test [Rite_ef.Rubrics_ef.te_deum] +; runs -- no Sunday, no vigil, no octave, [named] = [None], [subject] = +; [Temporal]); the Ordo reads [true] in every one of the 16 instances. +; +; CITATION (docs/research/LT.txt:2359-2361, "V - De Missis festivis", +; quoted in rubrics_ef.ml's own [gloria] header in full): "302. Sensu +; autem latiore, dicuntur quoque Missae de festo: ... b) Missa de +; commemoratione in Officio diei occurrente" -- in the WIDER sense, a Mass +; "of a commemoration occurring in the day's own Office" is ALSO called a +; "Missa festiva" -- and RG431(b): "Hymnus Gloria in excelsis dicitur ... +; in Missis festivis de quibus n. 302" -- such a Mass says the Gloria. +; Textually, this appears to be EXACTLY the shape found: the day's own +; ferial Office, carrying a commemoration, is elevated to "festive" status +; for the Gloria specifically. +; +; WHY NOT FIXED HERE: n.303(b), the very next paragraph (LT.txt:2359-2367, +; same quote in rubrics_ef.ml), qualifies n.302(b)'s own Masses: "dici +; potest tantum si occurrit dies liturgicus IV classis" -- CAN ONLY BE +; SAID if the liturgical day occurring is IV class. Every instance found +; here is a Class3 PRIVILEGED FERIA (RG25), not IV class, which reads as a +; textual CONTRADICTION of the empirical finding rather than a +; confirmation of it -- unresolved without n.304 onward (not in this +; project's sources), which may clarify that 301-303 govern which Mass a +; priest may freely CHOOSE among several options in one church on one day +; (a dimension colitur does not model -- see [gloria]'s own SCOPE NOTE), +; a different question from \"does THE Mass actually said, once +; determined, say the Gloria\" (431(b)'s own question). Implementing this +; also has a real architectural cost this task's own instructions +; explicitly avoided: [Rite_ef.Rubrics_ef.gloria] would need a FOURTH +; parameter, the day's own {!Colitur_kernel.Liturgical_day.t.commemorations} +; -- a kernel [Rite.t.gloria] signature change, the same shape RG16(a)'s +; own [admit] fix needed a [~temporal] parameter for, and squarely out of +; a task briefed to \"follow exactly how creed was wired -- same seam\". +; Left OPEN, not guessed into a possibly-wrong rule. Recommended for a +; follow-on task, ideally alongside Phase 3's Preface work (RG483 governs +; a DIFFERENT, but textually adjacent, commemoration-vs-Mass-part +; question, so the two may share the same kernel signature widening). +; +; UPDATE (same task, after wiring the FIUV Ordo's own Gloria and Te Deum +; axes, test_fiuv_ordo.ml): this paragraph previously said FIUV's own +; [gloria] axis was not compared at all. It now is, and the result +; WEAKENS this entry's own case rather than strengthening it: FIUV's own +; [gloria] is [false] on all six of these exact dates in its window -- +; AGREEING WITH COLITUR, DIRECTLY CONTRADICTING the LMS Ordo's [true] +; above. So this is not \"colitur has a corroborated gap\", it is \"two +; independent Ordos disagree with EACH OTHER on Gloria for this shape, +; and colitur happens to agree with the universal one, not the diocesan +; one\". What FIUV's OWN Te Deum axis DOES show for the identical six +; dates: [true] -- Te Deum, unlike Gloria, genuinely IS said at Matins on +; these days (data/ef/expected-divergences-fiuv.sexp's own F3), a real, +; single-witness finding that this entry's own n.302(b)/431(b) citation +; may in fact belong to the DIVINE OFFICE, not the MASS -- which would +; mean L5 itself is answering the wrong question, not merely open. +; Genuinely uncertain which of the two Mass-Gloria witnesses (LMS or +; FIUV) is right for this shape; left OPEN, not adjudicated either way, +; for a follow-on task with more primary-source access than this one +; had. + +; L6 -- OPEN, root-caused to a DIFFERENT, PRE-EXISTING bug this Gloria +; comparison merely surfaced, not a Gloria defect itself. Fired once, +; 2023-2024 only (2024-05-06, Rogation Monday) -- absent from the other +; two windows because Rogation Monday/Tuesday is impeded by a real +; sanctoral feast in both of them, so the office's own colour never +; reaches [observed] there. Same non-machine-checked-count reasoning as L5 +; above (count 1/0/0); enforced by test_lms_ordo.ml's own +; [is_l6_rogation_colour] predicate and [make_suite]'s own +; ~expected_gloria_l6 parameter. +; +; {!Rite_ef.Temporal_ef.temporal}'s own Rogation Monday/Tuesday branch +; hardcodes [~colour:Colour.Violet] with NO RG citation at all (verified +; by reading the branch directly, temporal_ef.ml, the Rogation comment +; block). The Ordo shows 2024-05-06 as \"FERIA IV Cl W †\" (white), +; borrowing \"Mass of 5th Sunday after Easter\" (matching colitur's own +; [Mass_formulary.Preceding_sunday] resolution for the identical date) -- +; consistent with RG88 (Caput X, \"De Litaniis maioribus et minoribus\"): +; \"De Litaniis minoribus nihil fit in Officio, sed tantum in Missa\" -- +; nothing changes in the OFFICE for the Minor Litanies, only the Mass +; TEXT is proper, which reads as the Office's own colour (Paschaltide, +; white) staying unchanged, the violet belonging only to the PROCESSION +; that precedes the Mass -- the same PER-ACTION colour nuance this +; project already documents as unmodelled for Palm Sunday's palm +; procession and Good Friday's Communion rite (temporal_ef.ml's own RG126/ +; RG128 citations), not a new kind of gap. +; +; NOT FIXED HERE: out of this task's own scope (Gloria/Te Deum, not the +; temporal cycle's colour assignment), and a real fix needs its own +; measured blast radius across 1583-9999 (every Rogation Monday/Tuesday +; not impeded by a stronger feast) plus a re-check against the +; differential/oracle layers, which already treat Rogation days as +; correctly violet on whatever data they compare against -- a +; cross-layer question, not a one-line patch. Recommended as a follow-on +; task's own first item.") diff --git a/lib/kernel/calendar.ml b/lib/kernel/calendar.ml index db6c58e..7178780 100644 --- a/lib/kernel/calendar.ml +++ b/lib/kernel/calendar.ml @@ -551,6 +551,9 @@ let build_day (rite : ('s, 'r) Rite.t) (idx : 'r Layer.index) let creed = rite.Rite.creed ~temporal ~observed:resolution.Precedence.observed.Precedence.cel ~date in + let gloria = + rite.Rite.gloria ~temporal ~observed:resolution.Precedence.observed.Precedence.cel ~date + in { Liturgical_day.date; rite = rite.Rite.id; @@ -564,6 +567,7 @@ let build_day (rite : ('s, 'r) Rite.t) (idx : 'r Layer.index) citations; formulary; creed; + gloria; } let year (rite : ('s, 'r) Rite.t) (layer : 'r Layer.t) (y : int) : diff --git a/lib/kernel/liturgical_day.ml b/lib/kernel/liturgical_day.ml index 09ac0a1..98c5084 100644 --- a/lib/kernel/liturgical_day.ml +++ b/lib/kernel/liturgical_day.ml @@ -27,5 +27,6 @@ type ('s, 'r) t = { (** which Mass the day says, and how that was decided; [None] only for a rite with no lectionary -- see {!Mass_formulary} *) creed : bool; (** whether the Creed is said at this day's Mass; see {!Rite.t.creed} *) + gloria : bool; (** whether the Gloria in excelsis is said; see {!Rite.t.gloria} *) } [@@deriving sexp] diff --git a/lib/kernel/liturgical_day.mli b/lib/kernel/liturgical_day.mli index eb45e61..939f8f5 100644 --- a/lib/kernel/liturgical_day.mli +++ b/lib/kernel/liturgical_day.mli @@ -37,5 +37,9 @@ type ('s, 'r) t = { (** Whether the Creed is said at this day's Mass -- {!Rite.t.creed}, EF: RG 475-476. A decision, not an [option]: [false] for a rite that has not implemented the rule, same as [creed] itself. *) + gloria : bool; + (** Whether the Gloria in excelsis is said at this day's Mass -- + {!Rite.t.gloria}, EF: RG 431-432. Same seam as [creed] in every + respect. *) } [@@deriving sexp] diff --git a/lib/kernel/rite.ml b/lib/kernel/rite.ml index 738785a..915941d 100644 --- a/lib/kernel/rite.ml +++ b/lib/kernel/rite.ml @@ -20,4 +20,5 @@ type ('s, 'r) t = { temporal_at:(Date.t -> ('s, 'r) Temporal.t) -> Mass_formulary.t option * Citation.t list; creed : temporal:('s, 'r) Temporal.t -> observed:'r Celebration.t -> date:Date.t -> bool; + gloria : temporal:('s, 'r) Temporal.t -> observed:'r Celebration.t -> date:Date.t -> bool; } diff --git a/lib/kernel/rite.mli b/lib/kernel/rite.mli index 0dcf17e..b9d1961 100644 --- a/lib/kernel/rite.mli +++ b/lib/kernel/rite.mli @@ -134,4 +134,10 @@ type ('s, 'r) t = { Easter-relative window (e.g. "within the octave of Easter") needs the civil date and the rite's own Easter to test it, and neither [temporal] nor [observed] alone carries that arithmetic. *) + gloria : temporal:('s, 'r) Temporal.t -> observed:'r Celebration.t -> date:Date.t -> bool; + (** Whether the Gloria in excelsis is said at this day's Mass (EF: RG + 431-432). Same seam as {!creed} in every respect: same three + parameters and the same reasons for each, a [bool] not an + [option], and [false] is the answer a rite that has not + implemented the rule returns explicitly. *) } diff --git a/lib/rites/rite_ef/rite_ef.ml b/lib/rites/rite_ef/rite_ef.ml index ba1274b..d7b3d83 100644 --- a/lib/rites/rite_ef/rite_ef.ml +++ b/lib/rites/rite_ef/rite_ef.ml @@ -51,4 +51,5 @@ let context ~lectionary ~commons : (Vocab_ef.season, Vocab_ef.rank) Rite.t = season_runs = Vocab_ef.seasons; transfer_target = Precedence_ef.transfer_target; readings = Lectionary_ef.readings ~lectionary ~commons; - creed = Rubrics_ef.creed } + creed = Rubrics_ef.creed; + gloria = Rubrics_ef.gloria } diff --git a/lib/rites/rite_ef/rite_ef.mli b/lib/rites/rite_ef/rite_ef.mli index a4b5d87..7025143 100644 --- a/lib/rites/rite_ef/rite_ef.mli +++ b/lib/rites/rite_ef/rite_ef.mli @@ -36,6 +36,9 @@ module Rubrics_ef = Rubrics_ef - [creed]: {!Rubrics_ef.creed}, RG 475-476 -- whether the Creed is said. The first rubric in this phase governing a part of Mass rather than occurrence/precedence. + - [gloria]: {!Rubrics_ef.gloria}, RG 431-432 -- whether the Gloria in + excelsis is said. Reads {!Rubrics_ef.te_deum} (Breviary nn. 237-238) + for RG 431(a)/432(a)'s own deferral. Deliberately carries no [sanctoral]/[lectionary] fields the way the original design-doc sketch of [RITE] does: {!Colitur_kernel.Rite.t} (the diff --git a/lib/rites/rite_ef/rubrics_ef.ml b/lib/rites/rite_ef/rubrics_ef.ml index ab9da32..a497b57 100644 --- a/lib/rites/rite_ef/rubrics_ef.ml +++ b/lib/rites/rite_ef/rubrics_ef.ml @@ -319,3 +319,381 @@ let creed ~(temporal : (Vocab_ef.season, Vocab_ef.rank) Temporal.t) entry on the list (Sts Peter & Paul) is already [true] via 475(b), so this branch is redundant, never wrong, for those. *) List.mem slug creed_apostle_slugs + +(* Breviarium Romanum, 1961 Codex Rubricarum, "N) De hymno Te Deum" + (docs/research/breviary/rubricae-breviarii-1961.txt; docs/research/ + breviary/PROVENANCE.md has this source's own provenance and weakness in + full), quoted here in full so every branch below can cite its own + letter without re-quoting the whole rubric: + + "237. Hymnus Te Deum dicitur ad Matutinum, post ultimam lectionem, loco + noni vel tertii responsorii: + a) in dominica in albis, in dominica Pentecostes, et in Matutino + dominicae Resurrectionis, quod recitatur ab iis qui Vigiliae paschali + non interfuerunt; + b) in dominicis II classis, exceptis dominicis in Septuagesima, in + Sexagesima et in Quinquagesima; + c) in omnibus festis; + d) per octavas Nativitatis Domini, Paschatis et Pentecostes; + e) in Officio feriali temporis natalicii et temporis paschalis; + f) in vigiliis Ascensionis et Pentecostes; + g) in Officio sanctae Mariae in sabbato. + + 238. Omittitur vero hymnus Te Deum: + a) in Officiis de Tempore a dominica I Adventus usque ad vigiliam + Nativitatis Domini inclusive; et a dominica in Septuagesima usque ad + Sabbatum sanctum inclusive; + b) in vigiliis II et III classis, excepta vigilia Ascensionis + Domini; + c) in omnibus feriis per annum; + d) in Officio defunctorum." + + THE WEAKNESS, restated (PROVENANCE.md has the full account): this is a + SINGLE WEB TRANSCRIPTION (ceremoniaire.net), not yet checked against a + photographic scan -- the weakest-sourced rule in this project. Mitigated, + not resolved, by the FIUV universal Ordo's own Te Deum column + (test/fixtures/fiuv-ordo-2025-2026.sexp, 262 "Te Deum" rows out of 400 -- + an independent day-level witness, never itself derived from this + transcription) -- see test_fiuv_ordo.ml, which compares [te_deum]'s own + output against it. A mismatch there may indict this transcription rather + than [te_deum]; adjudicated per that file's own allow-list, not assumed + either way. + + SCOPE: this predicate exists ONLY because RG 431(a) below defers a MASS + question to it. Building it is not the Divine Office arriving in scope -- + CLAUDE.md's own "Divine Office remains out of scope" line, and the + 2026-08-21 design spec's own SS1, are both unchanged: this borrows ONE + Breviary FACT per day (whether Te Deum was said at Matins), never models + Matins/Vespers/the psalter/concurrence. *) +let te_deum ~(temporal : (Vocab_ef.season, Vocab_ef.rank) Temporal.t) + ~(observed : Vocab_ef.rank Celebration.t) ~(date : Date.t) : bool = + let easter = Computus.gregorian_easter (Date.year date) in + let n = Date.to_rata date - Date.to_rata easter in + let m = Date.month date and dd = Date.day date in + let slug = Slug.to_string observed.Celebration.slug in + if + (* 238(d): "in Officio defunctorum" -- checked first, the same position + and the same {!Colour.Black} proxy [creed]'s own 476(f) branch uses + (this file's own header has the full argument for why colour is a + sound proxy for "this is a Requiem" on the shipped data, and + {!test_colour_black_population_is_exactly_two} in test_rubrics_ef.ml + is the SAME two-member population this predicate also depends on -- + no separate test needed). *) + observed.Celebration.colour = Colour.Black + then false + else if + (* 237(a): the three explicitly named Paschaltide days -- Easter + Sunday's own Matins (n=0), Low Sunday (n=7), Pentecost Sunday + (n=49). Pure Easter-offset arithmetic, the same style [creed]'s own + 475(d) uses and for the identical reason: season/rank alone cannot + express "this exact day", and nothing else in 237/238 names these + three individually. + + HISTORY WORTH KEEPING: this task's own FIRST pass REPLACED this + branch (and 237(b) below) with a blanket "every Sunday" rule, + having found what looked like a clean 15-for-15 FIUV Ordo + contradiction of 237(b)'s own Septuagesima/Sexagesima/Quinquagesima + exception. That evidence was ITSELF corrupted: tools/extract_fiuv_ + ordo.ml's own Te Deum parser recognised only ONE of the source's two + negative phrasings ("non dicitur Te Deum"), so every "sine Te Deum" + occurrence -- which is how the source actually negates a SUNDAY's + own Te Deum, found only by reading the raw pdftotext dump by hand, + not by trusting the fixture's own coverage counts -- fell through to + a bare "Te Deum" substring match and was wrongly recorded [true]. + Fixed in the extractor (see its own citation, tools/extract_fiuv_ + ordo.ml); the fixture was regenerated; 24 of the fixture's 400 rows + flipped, EVERY ONE true->false, EVERY ONE a day this branch or + 237(b) below governs. The blanket rule was reverted the moment the + corrected data confirmed the ORIGINAL literal reading instead: + 238(a)'s own window DOES silence Advent/Septuagesima/Lent/ + Passiontide Sundays after all. Left as a worked example, not + scrubbed from history: the failure mode was believing a clean- + looking oracle correlation over re-deriving the primary text, + exactly backwards from what "adjudicate, don't assume" should have + produced -- caught only by cross-checking the raw source directly + once the shape looked suspiciously total. *) + n = 0 || n = 7 || n = 49 + then true + else if + (* 237(f): the vigils of Ascension (n=38) and Pentecost (n=48), checked + BEFORE 238(b)'s general vigil omission below -- both are otherwise + reachable by it (Ascension's vigil is [Class2], squarely inside + 238(b)'s own "II et III classis"; Pentecost's is [Class1], RG 91 + entry 9, so 238(b) could never have reached it regardless, but is + named here anyway rather than left to fall through to 237(c), the + same "cite the specific clause, not a catch-all" discipline this + whole module holds to). *) + n = 38 || n = 48 + then true + else if + (* 237(d): the three privileged octaves -- reuses [creed]'s own three + windows verbatim (that function's own 475(d) comment has the full + citation and the argument for why a season- or rank-based test + would wrongly include the Ascension/Pentecost-Vigil days this + window must exclude). Overlaps 237(a) at n=0/7/49 -- redundant, not + wrong, the same "never the FIRST branch to grant those [true]" + pattern 475(b) documents for I-class Sundays. *) + (m = 12 && dd >= 25 && dd <= 31) + || (m = 1 && dd = 1) + || (n >= 0 && n <= 7) + || (n >= 49 && n <= 56) + then true + else if + (* 238(b): "vigiliis II et III classis" -- {!Precedence_ef.is_omissible_vigil} + is exactly this rank test (Class2 or Class3), reused rather than + re-derived, paired with {!Precedence_ef.is_vigil} the same way + [creed]'s own RG 28-34 branch already pairs them. The Ascension + vigil (237(f) above, already [true]) can never reach this branch; + the four sanctoral vigils (StJohnBaptist, SsPeter&Paul, StLawrence, + the Assumption -- {!Precedence_ef.vigil_feast_table}'s own + population) are exactly what this branch excludes. *) + Precedence_ef.is_omissible_vigil observed.Celebration.rank && Precedence_ef.is_vigil slug + then false + else if + (* NOT 238(b)'s own text (which names only "II et III classis"): the + Nativity Vigil ([Class1], RG 91 entry 5) is excluded here on the + SAME RG 21/35 taxonomy argument [creed]'s own RG 28-34 comment + already makes for the Paschal Vigil -- "vigilia" is its own + liturgical-day category, distinct from "festum", regardless of + class; RG 30's "beyond losing" is a PRECEDENCE exemption (nothing + lesser can displace it), not a claim that a vigil IS a festum for + Breviary purposes. Flagged honestly as an INFERENCE, not a literal + 238(b) citation -- checked against the FIUV Ordo's own Te Deum + marker for 24 December in test_fiuv_ordo.ml, since this is exactly + the shape a transcription gap could get wrong either direction. *) + Precedence_ef.is_vigil slug + then false + else if + (* 238(c)/RG 23: Ash Wednesday and every feria of Holy Week, the Sacred + Triduum included -- reuses [creed]'s own RG 23 test verbatim (that + function's own comment has the full citation and the argument for + why this excludes feria I classis specifically, not ferias in + general). *) + n = -46 || (n >= -6 && n <= -1) + then false + else if + (* 237(b): "in dominicis II classis, exceptis dominicis in Septuagesima, + in Sexagesima et in Quinquagesima" -- colitur's own single + [Septuagesima] season covers exactly those three Sundays (see + [season_colour]'s own grouping, temporal_ef.ml), so the exception is + one season-equality test. RE-VERIFIED, not merely restored: the + corrected FIUV extraction (237(a)'s own comment above has the full + account) shows all three Septuagesima-season Sundays [false], and + every OTHER, ordinary Class2 Sunday the fixture's window reaches + [true] -- exactly this clause's own literal text, no correction + needed here after all. Reads [temporal.weekday]/[.season], not + [observed]'s slug: unlike [creed]'s own 475(a), the Breviary's text + carries NO "even when a feast displaces the Sunday's own Office" + exception -- when a feast genuinely takes the Sunday's place (RG + 16(a)), Matins says the FEAST's own Office, and 237(c) below decides + it on the feast's own terms, not this clause. Advent/Lent/ + Passiontide Sundays are [Class1], never [Class2] ([creed]'s own RG + 11-12 citation, temporal_ef.ml), so this guard correctly excludes + them without a separate season check; [observed.rank], not + [temporal]'s own season-derived rank, is read here on purpose, for + the same RG 16(a) reason [Precedence.rules.admit]'s own + [~temporal] parameter exists: a feast that wins the day can carry a + DIFFERENT rank than the Sunday it displaced. *) + temporal.Temporal.weekday = Date.Sun + && observed.Celebration.rank = Vocab_ef.Class2 + && temporal.Temporal.season <> Vocab_ef.Septuagesima + then true + else if + (* 237(g): the votive Office of the BVM on Saturday, RG 78/91 entry 27 + -- {!Temporal_ef}'s own [subject = Bvm]/[Class4] pairing, the same + shape [creed]'s own 476(d) comment and the register's RG 112(d) fix + already establish as unique to this office (every OTHER + [subject = Bvm] candidate in the shipped data is [Commemoration_only] + and can therefore never be [observed]). *) + observed.Celebration.subject = Subject.Bvm && observed.Celebration.rank = Vocab_ef.Class4 + then true + else if + (* 237(e): "Officio feriali temporis natalicii et temporis paschalis" -- + every remaining (non-octave, non-vigil, non-BVM-Saturday) FERIA of + Christmastide or Paschaltide: the 2-5 January ferias, and the + ordinary weeks of Paschaltide (Rogation Monday/Tuesday included). + [temporal.weekday <> Sun] keeps this to FERIAS only, matching the + clause's own "Officio FERIALI" text; a Sunday in either season is + already [true] via the Sunday rule above regardless, so this guard + changes no OUTCOME, only which clause gets credit for it. *) + (temporal.Temporal.season = Vocab_ef.Christmastide + || temporal.Temporal.season = Vocab_ef.Paschaltide) + && temporal.Temporal.weekday <> Date.Sun + then true + else + (* 237(c): "in omnibus festis" -- every remaining genuine festum. By + this point every named Paschaltide day, every ordinary Sunday + (Class2, outside Septuagesima), every vigil, every feria I classis, + every Christmastide/Paschaltide feria and every BVM Saturday Office + has already been excluded or granted above, so what reaches here is + exactly: {!Temporal_ef.named}'s remaining population + (Epiphany, Ascension, Corpus Christi, the Sacred Heart, Christ the + King -- tested by PRESENCE in that table, since every [named] entry + carries [subject = Temporal] like any other, see [creed]'s own + 475(c) comment); and every genuine sanctoral feast actually observed + ([subject = Saint], or one of the handful of [subject = Lord]/[Bvm] + entries -- Holy Family, Holy Name of Jesus, the six [Lord]-tagged + sanctoral feasts, [most-holy-name-of-mary] -- [creed]'s own 475(c) + comment has the full census). The two ferial exceptions that ALSO + carry [Lord]/[Bvm] (the Sacred Triduum, the BVM Saturday Office) are + unreachable here: both were already excluded above (feria I + classis; 237(g)). + + [Temporal_ef.named]'s FIRST disjunct EXCLUDES Passion Sunday and + Palm Sunday BY THEIR OWN SLUG -- not by [temporal.weekday <> Sun], + which a first pass of this fix tried and had to REVERT: Christ the + King is ALSO always a Sunday (its own [christ_the_king] anchor + IS "the last Sunday of October"), [Class1] like Passion/Palm + Sunday, so a blanket weekday guard wrongly excluded it too -- + caught immediately by the LMS Ordo's own Gloria axis + (2024-10-27, "colitur gloria=false, Ordo gloria=true"), a + regression a same-session review round found before this task + closed. Passion Sunday and Palm Sunday are excluded because + neither is a genuine "festum" (RG 35's own taxonomy makes + "dominica" its own category, distinct from "festum") -- {!Temporal_ + ef.named} carries them anyway (RG 91 entry 6, for its own + occurrence-table reasons), so without SOME exclusion both would + wrongly reach [true] here BY ACCIDENT of table membership -- + confirmed wrong directly against the corrected FIUV extraction + (237(a)'s own comment above has the full account of the extractor + bug this was found alongside): both dates are [false] in the + source. Epiphany, Ascension, Corpus Christi, the Sacred Heart and + Christ the King -- {!Temporal_ef.named}'s only OTHER population -- + are genuine festa and must NOT be excluded, which is exactly why + the exclusion is two named slugs, not a day-of-week predicate. The + SECOND disjunct (subject) carries no such guard: a genuine feast + that has fully displaced a Sunday's own Office (RG16(a)) still + deserves 237(c)'s grant on the FEAST's own terms, regardless of + what day of the week it falls on. + + A plain, unnamed weekday feria (no Sunday, no vigil, no octave, + [named] = [None], [subject = Temporal]) correctly falls through to + [false] here -- 238(c)'s own "in omnibus feriis". *) + (Temporal_ef.named date <> None && slug <> "ef-passion-sunday" && slug <> "ef-palm-sunday") + || observed.Celebration.subject = Subject.Saint + || observed.Celebration.subject = Subject.Lord + || observed.Celebration.subject = Subject.Bvm + +(* Missale Romanum, Rubricae Generales, Caput XVII("De Ritibus servandis in + celebratione Missae"), "C) De hymno Glória in excélsis" (docs/research/ + LT.txt, grep "Hymnus Glória"), quoted here in full: + + "431. Hymnus Gloria in excelsis dicitur: + a) in Missis quae respondent Officio diei, quotiescumque ad + Matutinum dictus est hymnus Te Deum; + b) in Missis festivis de quibus n. 302; + c) in Missis feriae V in Cena Domini, et in Missa Vigiliae + paschalis; + d) in Missis votivis I, II et III classis, nisi adhibeatur color + violaceus paramentorum; + e) in Missis votivis IV classis de Angelis, quocumque die, et de B. + Maria Virg. quae in sabbato celebrantur. + + 432. Hymnus Gloria in excelsis omittitur: + a) in Missis quae respondent Officio diei, quando ad Matutinum + omittitur hymnus Te Deum; + b) in omnibus Missis in quibus adhibetur color violaceus + paramentorum; + c) in Missis votivis IV classis, iis exceptis de quibus n. 431 e; + d) in Missis defunctorum." + + SCOPE NOTE, checked once here rather than at every clause, the same + discipline [creed]'s own header uses: this engine resolves ONE Mass per + civil day (Rite.t.readings' own doc comment) -- it has no separate + "which votive Mass is said" dimension. n. 301-303 (LT.txt, immediately + above 431), quoted in substance: 301 defines "Missa de festo" in the + NARROW sense as the Mass of the day's own Office -- exactly what + [Rite_ef.Lectionary_ef.readings] already resolves for every day, + including a BORROWED formulary (a weekday resuming the preceding + Sunday's Mass, a saint using his assigned Common): still "the Mass which + corresponds to the day's own Office" in 431(a)/432(a)'s own sense, so + 431(a)/432(a) alone already cover it. 302's WIDER sense -- (a) a + III-class feast's own Mass said despite being impeded by another + III-class feast, (b) a commemoration's own Mass said in place of the + day's Office, (c) a saint's Mass said on his Martyrology elogium day -- + are all cases of a DIFFERENT Mass than the day's own resolved Office + being said, which this engine does not model; 431(b) is therefore + genuinely N/A, not merely unread. 431(d)/(e) and 432(c) are about VOTIVE + MASS CLASSES (I-IV), a dimension this engine has no field for at all -- + also N/A, EXCEPT 431(e)'s own "de B. Maria Virg. quae in sabbato + celebrantur" half: colitur does not model that Office as a votive Mass + (it has no votive-Mass dimension to model it AS), it models it as an + ORDINARY Office (RG 78's own text, [te_deum]'s own 237(g) branch above), + so its Gloria is produced as a side effect of 431(a) reading [te_deum], + not by a dedicated 431(e) branch -- checked directly: [te_deum]'s 237(g) + branch is unconditional (not colour-gated), and this Office's own colour + is white (never violet), so 432(b) below can never suppress it either. + 431(e)'s "de Angelis" half (the votive Mass of the Angels) has no data + in this engine at all and stays N/A. *) +let gloria ~(temporal : (Vocab_ef.season, Vocab_ef.rank) Temporal.t) + ~(observed : Vocab_ef.rank Celebration.t) ~(date : Date.t) : bool = + let easter = Computus.gregorian_easter (Date.year date) in + let n = Date.to_rata date - Date.to_rata easter in + if + (* 432(d): "in Missis defunctorum" -- checked first, the same + {!Colour.Black} proxy [creed]'s own 476(f) and [te_deum]'s own + 238(d) branch both use. Correctly also excludes Good Friday + (n=-2, [Colour.Black], temporal_ef.ml's own RG 132 citation) -- + which has no Mass at all in the 1955-restored Holy Week, so the + question is moot there regardless; the same "belt and braces" + stance [creed]'s own 476(f) comment takes for the identical day. *) + observed.Celebration.colour = Colour.Black + then false + else if + (* 431(c): "in Missis feriae V in Cena Domini, et in Missa Vigiliae + paschalis" -- Holy Thursday (n=-3) and the Easter Vigil Mass (n=-1, + Holy Saturday's own date). Checked BEFORE 432(b)'s general violet + exclusion below and before [te_deum] is ever read: this clause is + lex specialis over both. It must outrank 432(b) specifically + because colitur's own per-day colour model gives Holy Saturday + [Colour.Violet] (Passiontide's [season_colour], temporal_ef.ml -- + the historical vestment change from violet to white happens AT the + Gloria itself, a per-action nuance this whole day/colour model + already cannot express, the same acknowledged gap RG 126's palm + procession and RG 128's Good Friday Communion carry, temporal_ef.ml's + own citations) -- without this clause checked first, 432(b) would + wrongly silence the one Mass whose own Gloria is historically + unmistakable (the bells and organ restored at the Vigil). It must + also outrank [te_deum]: neither day's own Matins says Te Deum + (both are governed by [te_deum]'s own feria-I-classis exclusion, + n=-46/[-6,-1], the Sacred Triduum included), so without this + explicit override the Gloria would be wrongly silenced there too. *) + n = -3 || n = -1 + then true + else if + (* 432(b): "in omnibus Missis in quibus adhibetur color violaceus + paramentorum" -- independent and colour-keyed, exactly as the task + brief states; NOT a substitute for [te_deum] below, which still + decides every Mass this clause does not itself silence. Genuinely + unconditional ("in omnibus Missis") -- checked directly against + every violet day in the domain-wide sweep (see the module's own + test file), never merely assumed. + + [Colour.Rose] found and DELIBERATELY NOT added here, a real + "checked, then reverted" episode kept for the record: a first pass + of this task, WHILE the (since-reverted) blanket "every Sunday + says Te Deum" mutation to [te_deum] was in place, found Gaudete + and Laetare ([is_rose_sunday]) wrongly getting [gloria]=true and + fixed it by unioning [Colour.Rose] into this branch. Once + [te_deum] reverted to 237(b)'s own literal [Class2] guard, the + fix became REDUNDANT, not merely coincidentally silent: Rose can + ONLY ever colour a Sunday of Advent or Lent + ({!Temporal_ef.is_rose_sunday}'s own two cases), and EVERY Sunday + of Advent or Lent is [Class1] BY CONSTRUCTION + ({!Temporal_ef.temporal}'s own [match s with Advent | Lent -> + Class1 | _ -> Class2]) -- a structural guarantee, not a + coincidence of the shipped data, so [te_deum]'s own [Class2] guard + ALREADY excludes every Rose day before this branch is ever + reached. Verified, not assumed: removing this branch's own Rose + arm and re-running the full suite (including the two LMS dates, + 2023-12-17 and 2024-03-10, this finding was originally pinned + against) left every test green. Left out rather than kept as + dead code that would misleadingly read as load-bearing. *) + observed.Celebration.colour = Colour.Violet + then false + else + (* 431(a)/432(a): "in Missis quae respondent Officio diei, + quotiescumque/quando... Te Deum [dictus est/omittitur]" -- the + Gloria mirrors [te_deum] exactly for every Mass not already decided + above. This is the ONE call site [te_deum] exists to serve. *) + te_deum ~temporal ~observed ~date diff --git a/lib/rites/rite_ef/rubrics_ef.mli b/lib/rites/rite_ef/rubrics_ef.mli index 7a1284b..618af65 100644 --- a/lib/rites/rite_ef/rubrics_ef.mli +++ b/lib/rites/rite_ef/rubrics_ef.mli @@ -38,3 +38,33 @@ val creed : observed:Vocab_ef.rank Celebration.t -> date:Date.t -> bool + +(** Whether the Te Deum was said at Matins (Breviary 1961 Codex Rubricarum + nn. 237-238) -- NOT the Divine Office arriving in scope, but a single + Breviary fact {!gloria}'s own RG 431(a) defers a Mass question to. See + the .ml's own header for the rubric quoted in full, every branch's own + citation, and this source's own stated weakness (a single, not yet + scan-verified, web transcription -- docs/research/breviary/PROVENANCE.md). + Same three parameters as {!creed}, for the same reasons: [temporal] for + the day's own weekday/season, [observed] for the celebration whose + Office is actually kept, [date] for the Easter-relative window + questions. *) +val te_deum : + temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t -> + observed:Vocab_ef.rank Celebration.t -> + date:Date.t -> + bool + +(** Whether the Gloria in excelsis is said at this day's Mass (RG 431-432). + 431(a)/432(a) defer to {!te_deum}; 431(c) (Holy Thursday, the Easter + Vigil Mass) and 432(b)/(d) (violet vestments; a Requiem) are + independent overrides, checked ahead of the Te Deum-derived answer -- + see the .ml's own header for the full account, including which of + 431/432's own clauses this engine has no votive-Mass-class dimension to + implement and are therefore marked not-applicable rather than silently + skipped. *) +val gloria : + temporal:(Vocab_ef.season, Vocab_ef.rank) Temporal.t -> + observed:Vocab_ef.rank Celebration.t -> + date:Date.t -> + bool diff --git a/man/colitur.1 b/man/colitur.1 index 09414ea..88c5fab 100644 --- a/man/colitur.1 +++ b/man/colitur.1 @@ -122,12 +122,13 @@ occurrence, commemoration and transfer. The Mass reading citations, one line per day. .TP .BI rubrics " YEAR" -Two rubrics of the Mass, one line per day: which formulary is actually +Three rubrics of the Mass, one line per day: which formulary is actually said \(em not always the day's own: a weekday with no proper resumes the preceding Sunday's, a saint with no proper says his assigned Common, and RG 78/309(a)'s votive Saturday Mass of Our Lady is said in place of an -unoccupied office's own \(em and whether the Creed is said (RG 475\-476). -See +unoccupied office's own \(em whether the Creed is said (RG 475\-476), and +whether the Gloria in excelsis is said (RG 431\-432, deferring to the +Breviary's own Te Deum rule, nn. 237\-238, for RG 431(a)). See .B OUTPUT FORMAT below. .TP @@ -460,12 +461,13 @@ own trailing field, above. .SS rubrics .RS .nf -date [TAB] formulary\-slug [TAB] source [TAB] creed +date [TAB] formulary\-slug [TAB] source [TAB] creed [TAB] gloria .fi .RE .PP The day's own Mass formulary (which slug's Mass is actually said, and how -that was decided), followed by whether the Creed is said (RG 475\-476). +that was decided), followed by whether the Creed is said (RG 475\-476) and +whether the Gloria in excelsis is said (RG 431\-432). .B rubrics separates its fields with a literal TAB \(em not a plain space like .B day @@ -489,7 +491,9 @@ leave it unsplittable by field number. is one of .BR proper ", " own ", " preceding\-sunday ", " common " or " votive . .I creed -is +and +.I gloria +are each .B true or .B false @@ -498,15 +502,15 @@ or or .RB \(lq 1/0 \(rq : this row has no other boolean field to be consistent with). A day with no -Mass at all for a rite that has not implemented the rule reads +Mass at all for a rite that has not implemented a rule reads .B false outright \(em it is a decision, never a third \(lqunknown\(rq state. .RS .nf -2026\-01\-01 [TAB] ef\-circumcision [TAB] own [TAB] true -2038\-03\-08 [TAB] john\-of\-god [TAB] proper [TAB] false -2025\-12\-01 [TAB] ef\-advent\-sunday\-1 [TAB] preceding\-sunday [TAB] false +2026\-01\-01 [TAB] ef\-circumcision [TAB] own [TAB] true [TAB] true +2038\-03\-08 [TAB] john\-of\-god [TAB] proper [TAB] false [TAB] true +2025\-12\-01 [TAB] ef\-advent\-sunday\-1 [TAB] preceding\-sunday [TAB] false [TAB] false .fi .RE .PP diff --git a/test/cli.t b/test/cli.t index 5bf8d83..8bd5b9f 100644 --- a/test/cli.t +++ b/test/cli.t @@ -210,9 +210,9 @@ separate command for the same mechanical reason `readings` is: `day`'s row is fixed-width space-separated with a variable-length "+slug" tail. $ colitur rubrics 2026 | head -3 - 2026-01-01 ef-circumcision own true - 2026-01-02 ef-christmas-1-friday own false - 2026-01-03 ef-christmas-1-saturday votive false + 2026-01-01 ef-circumcision own true true + 2026-01-02 ef-christmas-1-friday own false true + 2026-01-03 ef-christmas-1-saturday votive false true $ colitur rubrics 2026 | wc -l 365 @@ -224,19 +224,19 @@ apply to it -- step 2 does (the day's own temporal slug in the lectionary), tagged `own`. Contrast a real sanctoral saint with his own proper: $ colitur rubrics 2038 | grep '^2038-03-08' - 2038-03-08 john-of-god proper false + 2038-03-08 john-of-god proper false true A saint with no proper of his own says his assigned Common (step 4): $ colitur rubrics 2038 | grep '^2038-03-06' - 2038-03-06 common-of-non-virgins-1 common false + 2038-03-06 common-of-non-virgins-1 common false true A weekday with no proper of its own resumes the preceding Sunday's, never its own observed slug -- 1 December 2025 is the Monday after Advent I, and Advent's ferias have no Mass of their own (step 3): $ colitur rubrics 2025 | grep '^2025-12-01' - 2025-12-01 ef-advent-sunday-1 preceding-sunday false + 2025-12-01 ef-advent-sunday-1 preceding-sunday false false 3 January 2026 above ("votive") is the RG 78/309(a) Saturday Mass of Our Lady, said IN PLACE of the day's own office's Mass while the office (an @@ -257,9 +257,9 @@ diocesan overlay's local patron observed instead (no proper or Common of his own in the fixture), the chain falls all the way back to step 3: $ colitur rubrics 2026 --overlay fixtures/overlay-example-diocesan.sexp | grep '^2026-07-11' - 2026-07-11 ef-time-after-pentecost-sunday-6 preceding-sunday false + 2026-07-11 ef-time-after-pentecost-sunday-6 preceding-sunday false true $ colitur rubrics 2026 | grep '^2026-07-11' - 2026-07-11 ef-time-after-pentecost-6-saturday votive false + 2026-07-11 ef-time-after-pentecost-6-saturday votive false true `--lang`/`--raw`/`--sigla-*` are refused rather than silently ignored, unlike `readings`: this row resolves no display name and no citation for any of @@ -343,13 +343,13 @@ prints for the identical day, so the two cannot silently drift apart again in either direction: $ colitur --help | grep '^ rubrics date' - rubrics date, formulary slug, source, creed -- TAB-separated + rubrics date, formulary slug, source, creed, gloria -- TAB-separated $ colitur --help | sed -n '/^ rubrics date/{n;p}' - 2026-01-01[TAB]ef-circumcision[TAB]own[TAB]true + 2026-01-01[TAB]ef-circumcision[TAB]own[TAB]true[TAB]true $ colitur rubrics 2026 | grep '^2026-01-01' | sed $'s/\t/[TAB]/g' - 2026-01-01[TAB]ef-circumcision[TAB]own[TAB]true + 2026-01-01[TAB]ef-circumcision[TAB]own[TAB]true[TAB]true --version prints the version alone, to standard output, exit 0. Deliberately not embedded in the help text above: this pin would then have to be edited @@ -573,10 +573,24 @@ across many lines' own wrap points, not just the days whose DATA changed -- confirmed directly (diffed the full sexp output line by line): every difference is exactly this [said] shape change or a consequent wrap shift, nothing else. Not a claim that [emit]'s FORMAT changed, only that -individual records' pretty-printed SHAPE did: +individual records' pretty-printed SHAPE did. + +9025 -> 9197 (Gloria, celebrant-rubrics-phase1 Phase 2): {!Liturgical_day.t} +gained a [gloria] field, the same seam [creed] already used -- [emit +--format sexp] dumps the whole record ({!Sexplib.Sexp.to_string_hum} over +[Liturgical_day.sexp_of_t]) unlike [csv]/[json]/[xml] (a curated +[View]/[Record] projection that has never included [creed] either, hence +their own line counts above are UNCHANGED by this task -- confirmed by +this cram file's own diff touching only the [sexp] count). All 365 of +2027's records print a new [(gloria )] token (checked directly, +[grep -c gloria]), but the wrap-point mechanics are the same cosmetic +reflow the two entries above describe, not a fixed one-line-per-record +addition: 2027-01-01's own record wraps [gloria] onto its own new line, +while 2027-01-02's fits it on the same line as [creed] and [formulary] -- +172 of 365 records happened to cross a wrap boundary, the rest did not. $ colitur emit --format sexp --from 2027 --to 2027 | wc -l - 9025 + 9197 $ colitur emit --format xml --from 2027 --to 2027 | head -2 diff --git a/test/fixtures/fiuv-ordo-2025-2026.sexp b/test/fixtures/fiuv-ordo-2025-2026.sexp index 7b72ca3..d31c5d5 100644 --- a/test/fixtures/fiuv-ordo-2025-2026.sexp +++ b/test/fixtures/fiuv-ordo-2025-2026.sexp @@ -97,7 +97,24 @@ ; ; MEASURED DISTRIBUTION (this extraction, not the brief's figures): Gloria ; true=269 false=130 unresolved=1; Credo true=116 false=283 unresolved=1; -; Te Deum true=231 false=42 unresolved=127. +; Te Deum true=207 false=66 unresolved=127. +; +; RE-EXTRACTED (celebrant-rubrics-phase1 Phase 2, 2026-08-22): the FIRST +; extraction's own Te Deum parser recognised only ONE of the source's two +; negative phrasings ("non dicitur Te Deum") -- "sine Te Deum" (how the +; source actually negates a SUNDAY's own Te Deum, among others) fell +; through to a bare "Te Deum" substring match and was wrongly read +; [true]. Found by hand, comparing the raw pdftotext dump against this +; fixture's own values directly, not by any coverage check (both counted +; the same 127 unresolved rows before and after). Fixed in +; tools/extract_fiuv_ordo.ml's own [extract_te_deum] (see its own +; citation); this fixture re-extracted from the SAME pdftotext dump +; (SHA-256 of the source PDF unchanged, above). 24 of 400 rows changed, +; every one Te Deum true->false, every one independently confirmed +; against the raw text: true 231->207, false 42->66, unresolved 127 +; unchanged. See lib/rites/rite_ef/rubrics_ef.ml's own [te_deum] header +; (237(a)'s comment) for the full account of what this corrected, and +; the .superpowers task report for the complete before/after date list. (((date 2025-11-27) (class_ ("IV cl.")) (title "Vir Feria V post Dom. XXIV & Ultima post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) @@ -109,7 +126,7 @@ (title "Alb Sabb. S. Maria in Sabbato,") (te_deum (true)) (gloria (true)) (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) ((date 2025-11-30) (class_ ("I cl.")) - (title "Viol DOM. I ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) + (title "Viol DOM. I ADVENTUS, De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) ((date 2025-12-01) (class_ ("III cl.")) (title "Viol Feria II post Dom. I Adventus, De ea,") (te_deum ()) @@ -134,8 +151,8 @@ (gloria (true)) (credo (false)) (praef ("comm. Sabbatum primum in mense. I"))) ((date 2025-12-07) (class_ ("I cl.")) - (title "Viol DOM. II ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) - (credo (true)) (praef ("Trinit. Ad II"))) + (title "Viol DOM. II ADVENTUS, De ea,") (te_deum (false)) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) ((date 2025-12-08) (class_ ("I cl.")) (title "Alb Feria II. IN CONCEPTIONE IMMACULATA B. MARIAE VIRGINIS,") (te_deum ()) (gloria (true)) (credo (true)) @@ -156,7 +173,7 @@ (title "Rub Sabb. S Luciae Virg. et Mart.,") (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I"))) ((date 2025-12-14) (class_ ("I cl.")) - (title "Viol/ DOM. III ADVENTUS (GAUDETE), De ea,") (te_deum (true)) + (title "Viol/ DOM. III ADVENTUS (GAUDETE), De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) ((date 2025-12-15) (class_ ("III cl.")) (title "Viol Feria II post Dom. III Adventus (Gaudete), De ea,") @@ -180,8 +197,8 @@ (praef ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) ((date 2025-12-21) (class_ ("I cl.")) - (title "Viol DOM. IV ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) - (credo (true)) (praef ("Trinit. Ad II"))) + (title "Viol DOM. IV ADVENTUS, De ea,") (te_deum (false)) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) ((date 2025-12-22) (class_ ("II cl.")) (title "Viol FERIA II POST DOM. IV ADVENTUS, De ea,") (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) @@ -189,7 +206,7 @@ (title "Viol FERIA III POST DOM. IV ADVENTUS, De ea,") (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) ((date 2025-12-24) (class_ ("I cl.")) - (title "Viol Feria IV. VIGILIA NATIVITATIS DOMINI,") (te_deum (true)) + (title "Viol Feria IV. VIGILIA NATIVITATIS DOMINI,") (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I"))) ((date 2025-12-25) (class_ ("I cl.")) (title "Alb Feria V. IN NATIVITATE DOMINI,") (te_deum ()) (gloria (true)) @@ -331,7 +348,7 @@ (title "Alb Sabb. S Ioannis Bosco Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. I"))) ((date 2026-02-01) (class_ ("II cl.")) - (title "Viol DOM. SEPTUAGESIMAE, De ea,") (te_deum (true)) + (title "Viol DOM. SEPTUAGESIMAE, De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef ("Trinit. II"))) ((date 2026-02-02) (class_ ("II cl.")) (title "Alb Feria II. IN PURIFICATIONE B. MARIAE VIRG.,") (te_deum ()) @@ -354,8 +371,8 @@ (title "Alb Sabb. S Romualdi Abb.,") (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Sabbatum primum in mense. I"))) ((date 2026-02-08) (class_ ("II cl.")) - (title "Viol DOM. SEXAGESIMAE, De ea,") (te_deum (true)) (gloria (false)) - (credo (true)) (praef ("Trinit. II"))) + (title "Viol DOM. SEXAGESIMAE, De ea,") (te_deum (false)) + (gloria (false)) (credo (true)) (praef ("Trinit. II"))) ((date 2026-02-09) (class_ ("III cl.")) (title "Alb Feria II. S Cyrilli Ep. Alexandrini, Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) @@ -379,7 +396,7 @@ (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) ((date 2026-02-15) (class_ ("II cl.")) - (title "Viol DOM. QUINQUAGESIMAE, De ea,") (te_deum (true)) + (title "Viol DOM. QUINQUAGESIMAE, De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef ("Trinit. II"))) ((date 2026-02-16) (class_ ("IV cl.")) (title "Viol Feria II Dom. Quinquagesimae, De ea,") (te_deum ()) @@ -403,7 +420,7 @@ (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum. I"))) ((date 2026-02-22) (class_ ("I cl.")) - (title "Viol DOM. I QUADRAGESIMAE, De ea,") (te_deum (true)) + (title "Viol DOM. I QUADRAGESIMAE, De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef ("Quadr. II"))) ((date 2026-02-23) (class_ ("III cl.")) (title "Viol Feria II post Dom. I Quadragesimae, De ea,") (te_deum ()) @@ -428,7 +445,7 @@ (praef ("Quadr., or. super populum. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) ((date 2026-03-01) (class_ ("I cl.")) - (title "Viol DOM. II QUADRAGESIMAE, De ea,") (te_deum (true)) + (title "Viol DOM. II QUADRAGESIMAE, De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef ("Quadr. II"))) ((date 2026-03-02) (class_ ("III cl.")) (title "Viol Feria II post Dom. II Quadragesimae, De ea,") (te_deum ()) @@ -451,7 +468,7 @@ (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum. Sabbatum primum in mense. I"))) ((date 2026-03-08) (class_ ("I cl.")) - (title "Viol DOM. III QUADRAGESIMAE, De ea,") (te_deum (true)) + (title "Viol DOM. III QUADRAGESIMAE, De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef ("Quadr. II"))) ((date 2026-03-09) (class_ ("III cl.")) (title "Viol Feria II post Dom. III Quadragesimae, De ea,") @@ -475,7 +492,7 @@ (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum. I"))) ((date 2026-03-15) (class_ ("I cl.")) - (title "Viol/ DOM. IV QUADRAGESIMAE (LAETARE), De ea,") (te_deum (true)) + (title "Viol/ DOM. IV QUADRAGESIMAE (LAETARE), De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef ("Quadr. II"))) ((date 2026-03-16) (class_ ("III cl.")) (title "Viol Feria II post Dom. IV Quadragesimae (Laetare), De ea,") @@ -503,8 +520,8 @@ (te_deum (true)) (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum. I"))) ((date 2026-03-22) (class_ ("I cl.")) - (title "Viol DOM. I PASSIONIS, De ea,") (te_deum (true)) (gloria (false)) - (credo (true)) (praef ("de Sancta Cruce. II"))) + (title "Viol DOM. I PASSIONIS, De ea,") (te_deum (false)) + (gloria (false)) (credo (true)) (praef ("de Sancta Cruce. II"))) ((date 2026-03-23) (class_ ("III cl.")) (title "Viol Feria II post Dom. I Passionis, De ea,") (te_deum ()) (gloria (false)) (credo (false)) @@ -533,7 +550,7 @@ ((date 2026-03-29) (class_ ("I cl.")) (title "Rub in Officio, Rub. ad Bened. ramorum et in Processione, Viol. in Missa. DOM. IN PALMIS, De ea,") - (te_deum (true)) (gloria (false)) (credo (true)) + (te_deum (false)) (gloria (false)) (credo (true)) (praef ("de Sancta Cruce. \194\171Asperges\194\187 omittitur. \226\128\147 Benedictio palmorum et processio ante missam principalem celebrandae sunt. \226\128\147 Orationes praeparatoriae omittuntur. \226\128\147 Evangelium de passione secundum S Matthiam 26, 36-75; 27,1-60 legitur. Munda cor dicitur, celebrans autem (vel diaconus chronista) signum crucis nec super libro nec super se facit, necque librum osculatur, necque Laus tibi Domine dicit. \226\128\147 Evangelium finale omittitur. \226\128\147 In Missis sine processione, legitur in fine Evangelium Cum appropinquasset de benedictione ramorum. Sacerdotibus plures quam unam missam dicentibus licet Evangelium S Matthi\195\166 27, 45-52 legere potius quam Evangelium Passionis. II"))) ((date 2026-03-30) (class_ ("I cl.")) @@ -858,7 +875,7 @@ (gloria (true)) (credo (false)) (praef (comm.))) ((date 2026-06-23) (class_ ("II cl.")) (title "Viol Feria III. VIGILIA NATIVITATIS S IOANNIS * BAPTISTAE,") - (te_deum (true)) (gloria (false)) (credo (false)) (praef ("comm. I"))) + (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I"))) ((date 2026-06-24) (class_ ("I cl.")) (title "Alb Feria IV. IN NATIVITATE S IOANNIS * BAPTISTAE,") (te_deum ()) (gloria (true)) (credo (true)) @@ -1041,7 +1058,7 @@ (praef ("comm. \226\128\147"))) ((date 2026-08-14) (class_ ("II cl.")) (title "Viol Feria VI. VIGILIA ASSUMPTIONIS B. MARIAE VIRG.,") - (te_deum (true)) (gloria (false)) (credo (false)) (praef ("comm. I"))) + (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I"))) ((date 2026-08-15) (class_ ("I cl.")) (title "Alb Sabb. IN ASSUMPTIONE B. MARIAE VIRG.,") (te_deum ()) (gloria (true)) (credo (true)) (praef ("BMV Et te in Assumptione. Ad"))) @@ -1176,7 +1193,7 @@ (praef ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa SS Mauritii et Sociorum Mm. (rub.) Intret in conspectu tuo, Gloria, ors. et Evangelium pr., comm. S Thomae de Villanova Ep. et Conf., praef. comm. vel de Martyribus."))) ((date 2026-09-23) (class_ ("II cl.")) - (title "Viol FERIA IV QUATTUOR TEMP., De ea,") (te_deum (true)) + (title "Viol FERIA IV QUATTUOR TEMP., De ea,") (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. \226\128\147 Quoad Flectamus genua vide RM 440."))) ((date 2026-09-24) (class_ ("IV cl.")) @@ -1184,10 +1201,10 @@ (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. \226\128\147"))) ((date 2026-09-25) (class_ ("II cl.")) - (title "Viol FERIA VI QUATTUOR TEMP., De ea,") (te_deum (true)) + (title "Viol FERIA VI QUATTUOR TEMP., De ea,") (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) ((date 2026-09-26) (class_ ("II cl.")) - (title "Viol SABB. QUATTUOR TEMP., De eo,") (te_deum (true)) + (title "Viol SABB. QUATTUOR TEMP., De eo,") (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) @@ -1441,7 +1458,7 @@ (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) (credo (false)) (praef ("BMV Et te in Veneratione. I"))) ((date 2026-11-29) (class_ ("I cl.")) - (title "Viol DOM. I ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) + (title "Viol DOM. I ADVENTUS, De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) ((date 2026-11-30) (class_ ("II cl.")) (title "Rub Feria II. S ANDREAE * APOSTOLI,") (te_deum ()) @@ -1465,8 +1482,8 @@ (gloria (false)) (credo (false)) (praef ("comm. Sabbatum primum in mense. I"))) ((date 2026-12-06) (class_ ("I cl.")) - (title "Viol DOM. II ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) - (credo (true)) (praef ("Trinit. Ad II"))) + (title "Viol DOM. II ADVENTUS, De ea,") (te_deum (false)) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) ((date 2026-12-07) (class_ ("III cl. (Priv.)")) (title "Alb Feria II. S Ambrosii Ep., Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) @@ -1488,7 +1505,7 @@ (title "Viol Sabb. post Dom. II Adventus, De eo,") (te_deum ()) (gloria (false)) (credo (false)) (praef ("comm. I"))) ((date 2026-12-13) (class_ ("I cl.")) - (title "DOM. III ADVENTUS (GAUDETE), De ea,") (te_deum (true)) + (title "DOM. III ADVENTUS (GAUDETE), De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) ((date 2026-12-14) (class_ ("III cl.")) (title "Viol Feria II post Dom. III Adventus (Gaudete), De ea,") @@ -1512,8 +1529,8 @@ (praef ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) ((date 2026-12-20) (class_ ("I cl.")) - (title "Viol DOM. IV ADVENTUS, De ea,") (te_deum (true)) (gloria (false)) - (credo (true)) (praef ("Trinit. Ad II"))) + (title "Viol DOM. IV ADVENTUS, De ea,") (te_deum (false)) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) ((date 2026-12-21) (class_ ("II cl.")) (title "Rub Feria II. S THOM\195\134 * APOSTOLI,") (te_deum ()) (gloria (true)) (credo (true)) (praef ("App. Ad"))) @@ -1524,7 +1541,7 @@ (title "Viol FERIA IV POST DOM. IV ADVENTUS, De ea,") (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) ((date 2026-12-24) (class_ ("I cl.")) - (title "Viol Feria V. VIGILIA NATIVITATIS DOMINI,") (te_deum (true)) + (title "Viol Feria V. VIGILIA NATIVITATIS DOMINI,") (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I"))) ((date 2026-12-25) (class_ ("I cl.")) (title "Alb Feria VI. IN NATIVITATE DOMINI,") (te_deum ()) diff --git a/test/test_calendar.ml b/test/test_calendar.ml index 0d402e6..157841b 100644 --- a/test/test_calendar.ml +++ b/test/test_calendar.ml @@ -104,10 +104,11 @@ module Fixture = struct the sanctoral side. *) let readings ~observed:_ ~temporal:_ ~date:_ ~temporal_at:_ = (None, []) - (* No fixture here exercises the Creed rubric either -- a rite that has - not implemented it returns [false] explicitly, {!Rite.t.creed}'s own - documented default. *) + (* No fixture here exercises the Creed or Gloria rubrics either -- a rite + that has not implemented them returns [false] explicitly, + {!Rite.t.creed}/{!Rite.t.gloria}'s own documented default. *) let creed ~temporal:_ ~observed:_ ~date:_ = false + let gloria ~temporal:_ ~observed:_ ~date:_ = false let rite : (season, rank) Rite.t = { Rite.id = "synthetic-calendar"; vocab; year_start; temporal; anchors = (fun _ -> []); @@ -119,7 +120,7 @@ module Fixture = struct (* Not a Roman rite either, so no bissextile-doubling convention: identity, {!Rite.t.fixed_key}'s own documented default. *) fixed_key = (fun d -> Some (D.month d, D.day d)); - rules; season_runs = [ A; B ]; transfer_target; readings; creed } + rules; season_runs = [ A; B ]; transfer_target; readings; creed; gloria } let entry ~month ~day ~slug ~rank = { Layer.date = (match Date_spec.fixed ~month ~day with Ok d -> d | Error e -> failwith e); diff --git a/test/test_fiuv_ordo.ml b/test/test_fiuv_ordo.ml index 8b3e942..24eeed0 100644 --- a/test/test_fiuv_ordo.ml +++ b/test/test_fiuv_ordo.ml @@ -68,7 +68,7 @@ let sha256_of_file path = | Some i -> String.sub line 0 i | None -> Alcotest.failf "unexpected sha256sum output for %s: %S" path line) -let fixture_sha256 = "becadaad43b3a42c4eb820cb4e93d68f9b1c07a2c8e5273167cd599758af5c67" +let fixture_sha256 = "a52cc4dae32ce4d07446c9daa86287cb99796f6584b3d571e3a3cbdc93fca396" let real_layer () = let layer = @@ -132,7 +132,7 @@ let window_last = "2026-12-31" (* late). *) (* ---------------------------------------------------------------------- *) -type colitur_row = { c_date : string; c_creed : bool } +type colitur_row = { c_date : string; c_creed : bool; c_gloria : bool } let colitur_rows () = let layer = real_layer () in @@ -148,7 +148,50 @@ let colitur_rows () = let stop = mk window_last in while Date.compare !d stop <= 0 do (match Hashtbl.find_opt by_rata (Date.to_rata !d) with - | Some day -> rows := { c_date = Date.to_iso8601 day.LD.date; c_creed = day.LD.creed } :: !rows + | Some day -> + rows := + { c_date = Date.to_iso8601 day.LD.date; c_creed = day.LD.creed; c_gloria = day.LD.gloria } :: !rows + | None -> Alcotest.failf "no colitur day resolved for %s" (Date.to_iso8601 !d)); + d := Date.add_days !d 1 + done; + List.rev !rows + +(* Te Deum has no colitur-side [Liturgical_day.t] field of its own -- it is + a Breviary fact {!Rite_ef.Rubrics_ef.gloria} reads internally, not a Mass + part {!Colitur_kernel.Rite.t} exposes. Resolved separately, straight from + {!Rite_ef.Rubrics_ef.te_deum}, over the identical window/day set. *) +type colitur_te_deum_row = { + t_date : string; + t_te_deum : bool; + t_rank : V.rank; + t_slug : string; + t_has_commemoration : bool; +} + +let colitur_te_deum_rows () = + let layer = real_layer () in + let rite = Rite_ef.context ~lectionary:(real_lectionary ()) ~commons:(real_commons ()) in + let by_rata : (int, (V.season, V.rank) LD.t) Hashtbl.t = Hashtbl.create 800 in + for y = 2024 to 2027 do + let days = Cal.year rite layer y in + Array.iter (fun (d : (V.season, V.rank) LD.t) -> Hashtbl.replace by_rata (Date.to_rata d.LD.date) d) days + done; + let mk s = match Date.of_iso8601 s with Ok d -> d | Error e -> Alcotest.failf "%s: %s" s e in + let rows = ref [] in + let d = ref (mk window_first) in + let stop = mk window_last in + while Date.compare !d stop <= 0 do + (match Hashtbl.find_opt by_rata (Date.to_rata !d) with + | Some day -> + let te_deum = + Rite_ef.Rubrics_ef.te_deum ~temporal:day.LD.temporal ~observed:day.LD.observed ~date:day.LD.date + in + rows := + { t_date = Date.to_iso8601 day.LD.date; t_te_deum = te_deum; + t_rank = day.LD.observed.Colitur_kernel.Celebration.rank; + t_slug = Colitur_kernel.Slug.to_string day.LD.observed.Colitur_kernel.Celebration.slug; + t_has_commemoration = day.LD.commemorations <> [] } + :: !rows | None -> Alcotest.failf "no colitur day resolved for %s" (Date.to_iso8601 !d)); d := Date.add_days !d 1 done; @@ -258,11 +301,129 @@ let test_creed_matches_or_is_explained () = Alcotest.failf "allow-list entry %s is declared but never matched a real divergence" e.id) allow_list +(* ---------------------------------------------------------------------- *) +(* Gloria (RG 431-432, {!Rite_ef.Rubrics_ef.gloria}) -- Phase 2. Same shape *) +(* as the Creed comparison above, over the identical 400-row window. *) +(* ---------------------------------------------------------------------- *) + +let test_gloria_coverage () = + let ordo = ordo_rows () in + let no_gloria = List.filter (fun o -> o.gloria = None) ordo in + Alcotest.(check int) "exactly one day has no Ordo Gloria marker" 1 (List.length no_gloria) + +let describe_gloria_mismatch (o : ordo_row) (c : colitur_row) = + Printf.sprintf "%s %S: colitur gloria=%b, Ordo gloria=%b" o.date o.title c.c_gloria (Option.get o.gloria) + +(* F1 -- OPEN, adjudicated FOR colitur. The single Gloria mismatch found: + Good Friday (2026-04-03). See data/ef/expected-divergences-fiuv.sexp's + own F1 for the full citation and the raw source text this was checked + against directly (docs/research/ordo/fiuv-ordo-2025-2026.pdf, page 46). *) +let is_f1_good_friday (o : ordo_row) = String.equal o.date "2026-04-03" + +let test_gloria_matches_or_is_explained () = + let ordo = ordo_rows () in + let colitur = colitur_rows () in + let unexplained = ref [] in + let f1_count = ref 0 in + List.iter2 + (fun (o : ordo_row) (c : colitur_row) -> + if not (String.equal o.date c.c_date) then Alcotest.failf "misaligned: ordo %s vs colitur %s" o.date c.c_date; + match o.gloria with + | None -> () + | Some ogloria -> + if Bool.equal ogloria c.c_gloria then () + else if is_f1_good_friday o then incr f1_count + else unexplained := describe_gloria_mismatch o c :: !unexplained) + ordo colitur; + Alcotest.(check (list string)) "every Gloria mismatch is named in the allow-list -- none unexplained" [] + (List.rev !unexplained); + Alcotest.(check int) "F1 (Good Friday) count" 1 !f1_count + +(* ---------------------------------------------------------------------- *) +(* Te Deum (Breviary 237-238, {!Rite_ef.Rubrics_ef.te_deum}) -- Phase 2, *) +(* the mitigation the task brief names for this source's own stated *) +(* weakness (a single, not yet scan-verified, web transcription). A *) +(* SEPARATE colitur-side resolution ({!colitur_te_deum_rows}), since Te *) +(* Deum has no {!Colitur_kernel.Liturgical_day.t} field of its own. *) +(* *) +(* The SUNDAY shape this same comparison originally found (237(b)'s own *) +(* literal Septuagesima/Sexagesima/Quinquagesima exception, contradicted *) +(* 15/15) is FIXED at the source ({!Rite_ef.Rubrics_ef.te_deum}'s own *) +(* header has the correction and its full citation) -- not allow-listed, *) +(* because it no longer diverges. Three OTHER shapes remain OPEN, *) +(* single-witnessed (never captured by the LMS fixtures, which do not *) +(* record Te Deum at all) -- see data/ef/expected-divergences-fiuv.sexp's *) +(* own F2/F3/F4 for the full citations. Matched by PREDICATE, the same *) +(* "varies by shape, not by a fixed date list" reasoning L5/L6 already *) +(* establish for the LMS suite. *) +(* ---------------------------------------------------------------------- *) + +let test_te_deum_coverage () = + let ordo = ordo_rows () in + let no_te_deum = List.filter (fun o -> o.te_deum = None) ordo in + Alcotest.(check int) "the unresolved-Te-Deum population matches this fixture's own measured figure" 127 + (List.length no_te_deum) + +let describe_te_deum_mismatch (o : ordo_row) (t : colitur_te_deum_row) = + Printf.sprintf "%s %S: colitur te_deum=%b, Ordo te_deum=%b (rank=%s commemoration=%b)" o.date o.title t.t_te_deum + (Option.get o.te_deum) (V.rank_to_string t.t_rank) t.t_has_commemoration + +(* F2 (every I-class and omissible vigil) and F4 (the three September + Ember days) were BOTH found against the FIRST, buggy extraction (see + the fixture's own provenance header, "RE-EXTRACTED" note, and + {!Rite_ef.Rubrics_ef.te_deum}'s own 237(a) comment for the full + account of the extractor bug and its fix) -- re-run against the + corrected data, NEITHER fires any more: colitur's own answer already + matched the CORRECTED Ordo on every one of those 7 dates, all along. + Removed rather than kept as dead code with an [expected 0] pin, the + same "an entry that stops firing is a real change, not silently + absorbed" discipline data/ef/expected-divergences-lms.sexp's own L1/L3 + closures already establish -- see that file's own history for the + precedent this follows. + + F3, the privileged-Lenten/Passiontide-feria-plus-commemoration shape + L5 (data/ef/expected-divergences-lms.sexp) already found for Gloria, + REMAINS: 6 instances, unaffected by the extractor fix (none of the six + raw source lines used "sine Te Deum" at all -- confirmed directly + against the pdftotext dump, see F3's own citation). CONTRADICTS L5, + not corroborates it: FIUV's own [gloria] is [false] on all six dates + (agreeing with colitur), while its [te_deum] is [true] on the same six + -- see F3's own citation in data/ef/expected-divergences-fiuv.sexp for + the full account of why Gloria and Te Deum diverge on the identical + day. *) +let is_f3_lenten_commemoration (_ : ordo_row) (t : colitur_te_deum_row) = + t.t_has_commemoration && t.t_rank = V.Class3 + +let test_te_deum_matches_or_is_explained () = + let ordo = ordo_rows () in + let colitur = colitur_te_deum_rows () in + let unexplained = ref [] in + let f3_count = ref 0 in + List.iter2 + (fun (o : ordo_row) (t : colitur_te_deum_row) -> + if not (String.equal o.date t.t_date) then Alcotest.failf "misaligned: ordo %s vs colitur %s" o.date t.t_date; + match o.te_deum with + | None -> () + | Some otd -> + if Bool.equal otd t.t_te_deum then () + else if is_f3_lenten_commemoration o t then incr f3_count + else unexplained := describe_te_deum_mismatch o t :: !unexplained) + ordo colitur; + Alcotest.(check (list string)) "every Te Deum mismatch is named in the allow-list -- none unexplained" [] + (List.rev !unexplained); + Alcotest.(check int) "F3 (Lenten privileged feria + commemoration) count" 6 !f3_count + let suite = ( "fiuv-ordo", [ Alcotest.test_case "fixture SHA-256 matches its provenance note" `Quick test_fixture_checksum; Alcotest.test_case "streams are 400 rows each, dates aligned 1:1" `Quick test_dates_align; Alcotest.test_case "only Holy Saturday has no Ordo Creed marker" `Quick test_creed_coverage; Alcotest.test_case "every Creed difference is named in the cited allow-list -- none unexplained" `Quick - test_creed_matches_or_is_explained + test_creed_matches_or_is_explained; + Alcotest.test_case "Ordo Gloria coverage matches the measured figure" `Quick test_gloria_coverage; + Alcotest.test_case "every Gloria difference is named in the cited allow-list -- none unexplained" `Quick + test_gloria_matches_or_is_explained; + Alcotest.test_case "Ordo Te Deum coverage matches the measured figure" `Quick test_te_deum_coverage; + Alcotest.test_case "every Te Deum difference is named in the cited allow-list -- none unexplained" `Quick + test_te_deum_matches_or_is_explained ] ) diff --git a/test/test_lms_ordo.ml b/test/test_lms_ordo.ml index 219e51f..42dc31d 100644 --- a/test/test_lms_ordo.ml +++ b/test/test_lms_ordo.ml @@ -173,6 +173,13 @@ type colitur_row = { c_season : V.season; c_formulary : MF.t option; c_creed : bool; + c_gloria : bool; + c_rank : V.rank; + c_slug : string; + c_has_commemoration : bool; + (** whether {!Colitur_kernel.Liturgical_day.t.commemorations} is + non-empty -- needed by the Gloria comparison's own L5 shape + (RG 431(b)/n.302(b)), not by anything Task 6 built. *) } let colitur_rows ~year_lo ~year_hi ~window_first ~window_last = @@ -194,7 +201,10 @@ let colitur_rows ~year_lo ~year_hi ~window_first ~window_last = | Some day -> rows := { c_date = Date.to_iso8601 day.LD.date; c_season = day.LD.temporal.Colitur_kernel.Temporal.season; - c_formulary = day.LD.formulary; c_creed = day.LD.creed } + c_formulary = day.LD.formulary; c_creed = day.LD.creed; c_gloria = day.LD.gloria; + c_rank = day.LD.observed.Colitur_kernel.Celebration.rank; + c_slug = Colitur_kernel.Slug.to_string day.LD.observed.Colitur_kernel.Celebration.slug; + c_has_commemoration = day.LD.commemorations <> [] } :: !rows | None -> Alcotest.failf "no colitur day resolved for %s" (Date.to_iso8601 !d)); d := Date.add_days !d 1 @@ -434,9 +444,19 @@ let check_formulary_overrides ordo colitur = (* not noise to silence. *) (* ---------------------------------------------------------------------- *) +(* No Str/regex (frozen deps) -- the same hand-rolled substring test every + other file in this codebase reaches for (rubrics_ef.ml's own + [contains_substring], precedence_ef.ml's [contains_substring]). Local to + this file, not shared, on the same "no common .mli to hang it from" + footing those other copies already document. *) +let contains_substring s ~needle = + let ls = String.length s and ln = String.length needle in + let rec at i = i + ln <= ls && (String.sub s i ln = needle || at (i + 1)) in + ln = 0 || at 0 + let make_suite ~label ~fixture_path ~fixture_sha256 ~window_first ~window_last ~year_lo ~year_hi ~allow_list_path ~expected_rows ~expected_bvm_votive ~expected_proper ~expected_common ~expected_preceding_sunday - ~expected_ascension_week = + ~expected_ascension_week ~expected_gloria_l5 ~expected_gloria_l6 = let test_fixture_checksum () = Alcotest.(check string) "fixture SHA-256 matches its provenance note" fixture_sha256 (sha256_of_file fixture_path) @@ -540,6 +560,84 @@ let make_suite ~label ~fixture_path ~fixture_sha256 ~window_first ~window_last ~ Alcotest.(check int) (Printf.sprintf "%s: expected_rows matches the actual count" id) e.expected_rows n) explained_counts in + (* ---- Gloria (RG 431-432, {!Rite_ef.Rubrics_ef.gloria}) -- Phase 2 of + this task. Same shape as the Creed comparison immediately above: + coverage (which dates carry no Ordo "Gl"/"No Gl" marker at all) is + checked separately from the value comparison, and both are + date-keyed against their own allow-list ids, never a loose "some + divergence is fine" check. *) + let test_gloria_coverage () = + let ordo = ordo_rows fixture_path in + let no_gloria = List.filter (fun o -> o.gloria = None) ordo in + let expected = window_good_fridays () in + Alcotest.(check (list string)) "only this window's own Good Friday has no Ordo Gloria marker" expected + (List.map (fun o -> o.date) no_gloria) + in + let describe_gloria_mismatch (o : ordo_row) (c : colitur_row) = + Printf.sprintf "%s %S: colitur gloria=%b, Ordo gloria=%b (rank=%s commemoration=%b formulary=%s)" o.date o.title + c.c_gloria (Option.get o.gloria) (V.rank_to_string c.c_rank) c.c_has_commemoration + (match c.c_formulary with + | Some { MF.said = Some s; _ } -> Colitur_kernel.Slug.to_string s + | Some { MF.said = None; via = MF.Votive } -> "votive (said unnamed in the data)" + | Some { MF.said = None; _ } -> "NONE (said, unexpectedly outside Votive)" + | None -> "NONE") + in + (* Two REAL, STRUCTURAL shapes found running this comparison (see + data/ef/expected-divergences-lms.sexp's own L5/L6 for the full + citations) -- neither is a fixed date list, both a property of the + day itself, because both recur every year the underlying condition + holds, not on a fixed calendar date the way L4 above does. Matched + by PREDICATE, not by date, for the same reason L2's own note gives + for why it is prose-only rather than wired through the shared + [expected_rows] mechanism: the count varies window to window (L5: + 6/5/6; L6: 1/0/0), so a single static count cannot check it, and + [make_suite] threads the per-window expected totals directly + (~expected_gloria_l5/~expected_gloria_l6 below) instead. *) + let is_l5_lenten_commemoration (o : ordo_row) (c : colitur_row) = + (* RG 431(b)/n.302(b): "Missa de commemoratione in Officio diei + occurrente" says the Gloria. Every instance found is a privileged + Lenten/Passiontide feria (Class3, violet -- {!TE}'s own + [ferial_rank], RG25) carrying exactly one commemoration of an + impeded Class3 saint, colitur reading [gloria]=false (the ferial + Mass on its own) where the Ordo reads [true]. *) + (not c.c_gloria) && Option.value o.gloria ~default:false && c.c_has_commemoration && c.c_rank = V.Class3 + in + let is_l6_rogation_colour (o : ordo_row) (c : colitur_row) = + (* Root-caused to a DIFFERENT, pre-existing bug this comparison merely + surfaced -- {!Rite_ef.Temporal_ef.temporal}'s own Rogation Monday/ + Tuesday branch hardcodes [Colour.Violet] with no RG citation at + all, but the Ordo shows this exact date "FERIA IV Cl W" (white, + matching Paschaltide's own [season_colour] and RG88's "nihil fit in + Officio" -- the Office, hence its colour, is unchanged by the + Rogation, only the Mass TEXT is proper) -- so [gloria]'s own 432(b) + violet guard wrongly fires. NOT a Gloria defect and NOT fixed here + (out of this task's own scope; see the task report). *) + (not c.c_gloria) && Option.value o.gloria ~default:false + && (contains_substring c.c_slug ~needle:"rogation-monday" || contains_substring c.c_slug ~needle:"rogation-tuesday") + in + let test_gloria_matches_or_is_explained ~expected_gloria_l5 ~expected_gloria_l6 () = + let ordo = ordo_rows fixture_path in + let colitur = colitur_rows ~year_lo ~year_hi ~window_first ~window_last in + let unexplained = ref [] in + let l5_count = ref 0 and l6_count = ref 0 in + List.iter2 + (fun (o : ordo_row) (c : colitur_row) -> + if not (String.equal o.date c.c_date) then Alcotest.failf "misaligned: ordo %s vs colitur %s" o.date c.c_date; + match o.gloria with + | None -> () + | Some ogloria -> + if Bool.equal ogloria c.c_gloria then () + else if is_l5_lenten_commemoration o c then incr l5_count + else if is_l6_rogation_colour o c then incr l6_count + else unexplained := describe_gloria_mismatch o c :: !unexplained) + ordo colitur; + Alcotest.(check (list string)) (Printf.sprintf "[%s] every Gloria mismatch is named in the allow-list -- none unexplained" label) + [] (List.rev !unexplained); + Alcotest.(check int) (Printf.sprintf "[%s] L5 (Lenten privileged feria + commemoration) count" label) + expected_gloria_l5 !l5_count; + Alcotest.(check int) (Printf.sprintf "[%s] L6 (Rogation Monday/Tuesday colour bug) count" label) expected_gloria_l6 + !l6_count + in let test_bvm_seasonal_selection () = let ordo = ordo_rows fixture_path in let colitur = colitur_rows ~year_lo ~year_hi ~window_first ~window_last in @@ -635,6 +733,10 @@ let make_suite ~label ~fixture_path ~fixture_sha256 ~window_first ~window_last ~ Alcotest.test_case "only this window's own Good Friday has no Ordo Creed marker" `Quick test_creed_coverage; Alcotest.test_case "every Creed difference is named in the cited allow-list -- none unexplained" `Quick test_creed_matches_or_is_explained; + Alcotest.test_case "only this window's own Good Friday has no Ordo Gloria marker" `Quick + test_gloria_coverage; + Alcotest.test_case "every Gloria difference is named in the cited allow-list -- none unexplained" `Quick + (test_gloria_matches_or_is_explained ~expected_gloria_l5 ~expected_gloria_l6); Alcotest.test_case "every BVM-Saturday numeral matches its season" `Quick test_bvm_seasonal_selection; Alcotest.test_case "every Ordo BVM numeral day is a colitur Votive day" `Quick test_bvm_numeral_implies_votive; @@ -676,18 +778,18 @@ let suite_2023_2024 = I-class Sunday that admits him not even as a commemoration (RG16(a)), so his own Mass is not said anywhere in this window any more. *) ~expected_bvm_votive:12 ~expected_proper:181 ~expected_common:2 ~expected_preceding_sunday:61 - ~expected_ascension_week:1 + ~expected_ascension_week:1 ~expected_gloria_l5:5 ~expected_gloria_l6:1 let suite_2024_2025 = make_suite ~label:"lms-ordo-2024-2025" ~fixture_path:"fixtures/lms-ordo-2024-2025.sexp" ~fixture_sha256:"da817b75c5bf40ed3be1d5f6890b199705e02ce4d42111253ab8547bccabc3f7" ~window_first:"2024-11-27" ~window_last:"2025-12-31" ~year_lo:2023 ~year_hi:2026 ~allow_list_path ~expected_rows:400 ~expected_bvm_votive:14 ~expected_proper:179 ~expected_common:2 ~expected_preceding_sunday:66 - ~expected_ascension_week:3 + ~expected_ascension_week:3 ~expected_gloria_l5:5 ~expected_gloria_l6:0 let suite_2025_2026 = make_suite ~label:"lms-ordo-2025-2026" ~fixture_path:"fixtures/lms-ordo-2025-2026.sexp" ~fixture_sha256:"8839a61e0c7d1e6c8326114f4f45a5c183551287a88f4ed01127154add6ae5a5" ~window_first:"2025-11-28" ~window_last:"2026-12-31" ~year_lo:2024 ~year_hi:2027 ~allow_list_path ~expected_rows:399 ~expected_bvm_votive:13 ~expected_proper:174 ~expected_common:2 ~expected_preceding_sunday:68 - ~expected_ascension_week:2 + ~expected_ascension_week:2 ~expected_gloria_l5:6 ~expected_gloria_l6:0 diff --git a/test/test_rubrics_ef.ml b/test/test_rubrics_ef.ml index a778a5a..71f180d 100644 --- a/test/test_rubrics_ef.ml +++ b/test/test_rubrics_ef.ml @@ -46,6 +46,23 @@ let creed_on y m d = (Cal.day ctx layer (mk y m d)).LD.creed let check name y m d expected = Alcotest.(check bool) name expected (creed_on y m d) +(* ------------------------------------------------------------------------ *) +(* Breviary 237-238 (Te Deum) and RG 431-432 (Gloria) -- Phase 2 of the *) +(* celebrant-rubrics-phase1 design. See lib/rites/rite_ef/rubrics_ef.ml for *) +(* both rubrics quoted in full and every branch's own citation. One *) +(* end-to-end test per clause, resolved against REAL calendar dates through *) +(* the shipped data -- every expected value below was read off *) +(* `colitur rubrics `'s real output BEFORE being pinned here, the *) +(* same discipline the Creed tests above already establish. *) + +let day_on y m d = Cal.day ctx layer (mk y m d) +let gloria_on y m d = (day_on y m d).LD.gloria +let te_deum_on y m d = RE.te_deum ~temporal:(day_on y m d).LD.temporal ~observed:(day_on y m d).LD.observed + ~date:(mk y m d) + +let check_gloria name y m d expected = Alcotest.(check bool) name expected (gloria_on y m d) +let check_te_deum name y m d expected = Alcotest.(check bool) name expected (te_deum_on y m d) + (* ---- RG 475(a): "in qualibet dominica, etsi eius Officium alicui festo locum cedat" ---- *) @@ -440,6 +457,277 @@ let test_ferial_origin_never_carries_lord_bvm_or_apostle_slug () = Alcotest.(check bool) "span reached Lenten/Passiontide III-class ferias" true (!lenten_passiontide_class3 > 0) +(* ---- 237(a): the three named Paschaltide days ---- *) + +let test_237a_easter_sunday () = check_te_deum "237(a): Easter Sunday" 2026 4 5 true +let test_237a_low_sunday () = check_te_deum "237(a): Low Sunday" 2026 4 12 true +let test_237a_pentecost () = check_te_deum "237(a): Pentecost Sunday" 2026 5 24 true + +(* ---- 237(f): the vigils of Ascension and Pentecost, both otherwise + reachable by 238(b) (the Ascension vigil is Class2) or moot to it + (the Pentecost vigil is Class1) ---- *) + +let test_237f_ascension_vigil () = check_te_deum "237(f): Vigil of the Ascension" 2026 5 13 true +let test_237f_pentecost_vigil () = check_te_deum "237(f): Vigil of Pentecost" 2026 5 23 true + +(* ---- 237(d): the three privileged octaves, reusing [creed]'s own windows + -- a day within the Nativity octave whose OWN office is a real saint + (RG 67's "Com. octavae Nativitatis"), and an Easter-week feria outside + the narrower 237(a) list ---- *) + +let test_237d_nativity_octave_saint () = + check_te_deum "237(d): St John within the Nativity octave" 2026 12 27 true + +let test_237d_easter_week_feria () = check_te_deum "237(d): Easter Tuesday" 2026 4 7 true + +(* ---- 238(b): the omissible (Class2/Class3) vigils -- St Lawrence's own, + picked in a year where nothing displaces it, confirmed via + `colitur day 2026` first the same way the Creed tests were derived ---- *) + +let test_238b_omissible_vigil () = + (* 9 August 2026 is itself a Sunday (the vigil impeded, see 237(b)'s own + test below, which reuses that exact date) -- 2027 is picked instead, + confirmed via `colitur day 2027` first, the same discipline every + other date in this file follows. *) + check_te_deum "238(b): Vigil of St Lawrence" 2027 8 9 false + +(* ---- The Nativity Vigil (I class): NOT literally named by 238(b)'s own + "II et III classis" text -- excluded here on the structural RG 21/35 + taxonomy inference [te_deum]'s own comment states explicitly as an + inference, not a citation. Flagged the same way in the task report; + checked against the FIUV Ordo's own Te Deum marker for 24 December in + test_fiuv_ordo.ml, which is this inference's real corroboration. ---- *) + +let test_nativity_vigil_excluded_by_inference () = + check_te_deum "Nativity Vigil (I class): excluded, inference not literal 238(b)" 2026 12 24 false + +(* ---- 238(c)/RG23: Ash Wednesday and Good Friday (moot -- no Mass, but the + RG23 feria-I-classis exclusion still answers [false] regardless of + colour) ---- *) + +let test_238c_ash_wednesday () = check_te_deum "238(c)/RG23: Ash Wednesday" 2026 2 18 false +let test_238c_good_friday () = check_te_deum "238(c)/RG23: Good Friday" 2026 4 3 false + +(* ---- 237(g): the votive Office of the BVM on Saturday -- reused directly + from test/cli.t's own pinned example ---- *) + +let test_237g_bvm_saturday () = check_te_deum "237(g): BVM Saturday Office" 2026 7 11 true + +(* ---- 237(e): a plain, non-octave, non-Sunday feria of Christmastide (2-5 + January) ---- *) + +let test_237e_christmastide_feria () = + check_te_deum "237(e): 2 January, a Christmastide feria" 2026 1 2 true + +(* ---- 237(b): an ordinary II-class Sunday outside Septuagesima, and its + own explicit exception (a Septuagesima/Sexagesima Sunday, [Class2], + excepted by name) ---- *) + +let test_237b_ordinary_class2_sunday () = + check_te_deum "237(b): an ordinary Time-after-Pentecost Sunday" 2026 8 9 true + +(* RE-VERIFIED against the CORRECTED FIUV extraction ([te_deum]'s own + 237(a) comment has the full account of the extractor bug an earlier + pass of this task found and fixed): 237(b)'s own literal "exceptis + dominicis in Septuagesima, in Sexagesima et in Quinquagesima" holds + after all -- these two Sundays do NOT say the Te Deum, confirmed + against the corrected data, not merely the original transcription + alone. *) +let test_237b_septuagesima_exception () = + check_te_deum "237(b)'s own exception: Septuagesima Sunday" 2027 1 24 false + +let test_237b_sexagesima_exception () = + check_te_deum "237(b)'s own exception: Sexagesima Sunday" 2027 1 31 false + +(* ---- 237(c): a genuine sanctoral feast kept during a penitential season + (St Paul of the Cross, Class3, outside any privileged window) and one in + Ordinary Time (Lawrence, Class2) ---- *) + +let test_237c_sanctoral_feast () = check_te_deum "237(c): a sanctoral feast (Lawrence)" 2026 8 10 true + +(* Found alongside the FIUV extractor-bug fix ([te_deum]'s own 237(c) + comment has the full account): Passion Sunday and Palm Sunday are BOTH + entries in {!Temporal_ef.named} (named individually for RG 91 entry 6), + which without the [temporal.weekday <> Sun] guard on 237(c)'s own + [named<>None] disjunct would wrongly grant them [true] by ACCIDENT of + table membership -- neither is a genuine "festum" (RG 35's own "dies + dominica" is its own category), and both are [Class1] Sundays 237(b)'s + own [Class2] guard already excludes. Confirmed [false] directly against + the corrected FIUV extraction. *) +let test_passion_sunday_not_a_festum () = check_te_deum "Passion Sunday is not a festum for 237(c)" 2026 3 22 false +let test_palm_sunday_not_a_festum () = check_te_deum "Palm Sunday is not a festum for 237(c)" 2026 3 29 false + +(* ---- 238(d): the Requiem proxy, shared with [creed]'s own 476(f) and the + SAME two-member {!Colour.Black} population + {!test_colour_black_population_is_exactly_two} already asserts ---- *) + +let test_238d_all_souls () = check_te_deum "238(d): All Souls' Day (transferred)" 2025 11 3 false + +(* ---- RG 431(c): Holy Thursday and the Easter Vigil Mass say the Gloria + even though neither day's own Matins says the Te Deum (both are + feria-I-classis, [te_deum]'s own 238(c) branch) -- the one place [gloria] + and [te_deum] genuinely disagree on real data. Holy Saturday also proves + 431(c) outranks 432(b): its own colour is [Violet] + (Passiontide's [season_colour]), yet the Gloria is still said. ---- *) + +let test_431c_holy_thursday () = check_gloria "431(c): Holy Thursday" 2026 4 2 true +let test_431c_easter_vigil () = check_gloria "431(c): the Easter Vigil Mass (Holy Saturday)" 2026 4 4 true + +(* ---- RG 432(b): violet vestments -- independent of [te_deum], checked + against an Advent Sunday (I class, so [te_deum] would ALSO answer + [false] here via its own 237(b) rank guard: this is a same-answer + witness, not proof of independent teeth -- see the task report for why + no fully independent (te_deum=true, violet) witness exists anywhere in + the shipped 1583-9999 domain: every real [Colour.Violet] [Feast] entry + is one of the five sanctoral vigils, already excluded by [te_deum]'s + own [is_vigil] branch either way). ---- *) + +let test_432b_violet_sunday () = check_gloria "432(b): Advent I Sunday, violet" 2026 11 29 false + +(* ---- RG 432(d): the Requiem proxy, same population as 238(d) above ---- *) + +let test_432d_all_souls () = check_gloria "432(d): All Souls' Day (transferred)" 2025 11 3 false + +(* ---- RG 431(a)/432(a): mirrors [te_deum] for everything not already + decided above -- one true, one false, neither reachable via 431(c)/432(b)/ + 432(d) ---- *) + +let test_431a_mirrors_te_deum_true () = + check_gloria "431(a): mirrors [te_deum]=true (a sanctoral feast, Lawrence)" 2026 8 10 true + +let test_432a_mirrors_te_deum_false () = + check_gloria "432(a): mirrors [te_deum]=false (an ordinary Advent feria)" 2025 12 1 false + +(* ---- Domain-wide sanity, task requirement 5: "every violet day must be + false (RG 432 b), and every Requiem must be false (432 d)". Two + invariants, checked over every day {!Cal.year} resolves -- [Cal.year], + not [Cal.day] in a loop, for the same cost reason + {!test_every_sunday_in_2026_says_the_creed} above already gives. + + FAST (default suite): a fixed 200-year span, 1583-1782 -- large enough + to cross multiple Easter cycles and every season repeatedly, cheap + enough to stay in `dune test`'s own budget. EXHAUSTIVE (gated the same + way {!test_validate.test_exhaustive_domain_sweep} already is, via + COLITUR_EXHAUSTIVE_SWEEP): the full 1583-9999 domain, also tallying and + printing the true/false distribution so the measurement this task asks + for is not merely "did the invariant hold" but has a number attached -- + see the task report for the printed figures. *) +(* NOT a blanket "every violet day is [gloria]=false" (the task brief's own + phrasing, taken literally, is one exception too strong): RG 431(c) is a + NAMED, lex-specialis override for the Easter Vigil Mass, and colitur's + own per-day colour model gives Holy Saturday [Colour.Violet] + ([gloria]'s own header has the full argument for why -- the historical + violet-to-white vestment change happens AT the Gloria itself, a + per-action nuance this whole day/colour model already cannot express). + So the real invariant, checked here, is "every violet day is + [gloria]=false EXCEPT the Easter Vigil (Easter offset -1), which is + [gloria]=true BY DESIGN" -- and the exception is asserted to be EXACTLY + that one shape, every year, nothing else: [n = -1] is checked directly + rather than merely excluded, so a second, unexpected (violet, + gloria=true) day anywhere in the domain still fails loudly. Pushed back + on the task brief's own simplified phrasing rather than silently + special-cased -- see the task report. *) +let check_gloria_invariants_for_year y (counts : (int * int * int * int) ref) = + let days = Cal.year ctx layer y in + (* Per-date, NOT once per loop iteration off [y]: a liturgical year + "opening in civil year y" ({!Rite.t.year_start}'s own doc comment) + runs from that year's Advent into MOST of civil year y+1 -- so + [Cal.year ctx layer y]'s own array holds dates whose civil year is + y+1 for the whole Christmas-to-Pentecost span, governed by EASTER OF + y+1, not y. A single [Computus.gregorian_easter y] computed once here + wrongly used year y's own Easter for those dates -- found live: it + misidentified 1584-03-31 (Holy Saturday, governed by 1584's Easter, + surfaced while processing loop iteration y=1583) as an ordinary + violet day instead of the Vigil's own 431(c) exception, because + Easter 1583 (not 1584) was subtracted. Fixed by keying off + [Date.year d.LD.date] instead, which is always safe here: Holy + Saturday and Easter Sunday are never more than a few days apart and + never cross a civil-year boundary. *) + let violet, black, gloria_true, gloria_false = !counts in + let violet = ref violet + and black = ref black + and gloria_true = ref gloria_true + and gloria_false = ref gloria_false in + Array.iter + (fun (d : (V.season, V.rank) LD.t) -> + (if d.LD.gloria then incr gloria_true else incr gloria_false); + if d.LD.observed.Cel.colour = Colour.Violet then begin + incr violet; + let easter = Computus.gregorian_easter (Date.year d.LD.date) in + let n = Date.to_rata d.LD.date - Date.to_rata easter in + if n = -1 then + Alcotest.(check bool) + (Printf.sprintf "%s: the Easter Vigil's own 431(c) override, [gloria]=true despite violet" + (Date.to_iso8601 d.LD.date)) + true d.LD.gloria + else + Alcotest.(check bool) + (Printf.sprintf "%s: violet -> [gloria]=false (RG 432(b))" (Date.to_iso8601 d.LD.date)) + false d.LD.gloria + end; + if d.LD.observed.Cel.colour = Colour.Rose then + (* Gaudete/Laetare -- [gloria] reads [false] here via [te_deum]'s + own [Class2] guard on 237(b) (both Rose Sundays are [Class1] BY + CONSTRUCTION -- {!Rite_ef.Rubrics_ef.gloria}'s own 432(b) + citation has the full "checked, then found redundant, then + removed" account of why 432(b) itself does NOT need its own + Rose branch). Not folded into the [violet] counter above: + keeping the two colours separately tallied is what let this + invariant catch the Gaudete/Laetare gap live in the first place + (found via the LMS Ordo, 2023-12-17 and 2024-03-10) rather than + silently averaging it away inside one shared bucket. *) + Alcotest.(check bool) + (Printf.sprintf "%s: Rose (Gaudete/Laetare) -> [gloria]=false" (Date.to_iso8601 d.LD.date)) + false d.LD.gloria; + if d.LD.observed.Cel.colour = Colour.Black then begin + incr black; + Alcotest.(check bool) + (Printf.sprintf "%s: Requiem (black) -> [gloria]=false (RG 432(d))" (Date.to_iso8601 d.LD.date)) + false d.LD.gloria + end) + days; + counts := (!violet, !black, !gloria_true, !gloria_false) + +let test_domain_violet_implies_no_gloria_sample () = + let counts = ref (0, 0, 0, 0) in + for y = 1583 to 1782 do + check_gloria_invariants_for_year y counts + done; + let violet, _, _, _ = !counts in + Alcotest.(check bool) "the 200-year sample reached a real number of violet days" true (violet > 1000) + +let test_domain_requiem_implies_no_gloria_sample () = + (* Separate test name, same underlying sweep as the one immediately above + -- {!Cal.year} is only computed once per year regardless (module-level + [ctx]/[layer], no per-test reload), so this is not a second pass over + the domain, only a second, independently-named assertion on the same + tally, matching how {!test_colour_black_population_is_exactly_two} + above separates its own DATA and CODE checks into one function while + this pair keeps violet and black as two named outcomes. *) + let counts = ref (0, 0, 0, 0) in + for y = 1583 to 1782 do + check_gloria_invariants_for_year y counts + done; + let _, black, _, _ = !counts in + Alcotest.(check bool) "the 200-year sample reached at least one Requiem day" true (black > 0) + +let colitur_exhaustive_sweep_env = "COLITUR_EXHAUSTIVE_SWEEP" + +let test_exhaustive_gloria_domain_sweep () = + if Sys.getenv_opt colitur_exhaustive_sweep_env = None then Alcotest.skip () + else begin + let counts = ref (0, 0, 0, 0) in + for y = 1583 to 9999 do + check_gloria_invariants_for_year y counts + done; + let violet, black, gloria_true, gloria_false = !counts in + Printf.printf + "gloria domain sweep 1583..9999: violet=%d black=%d gloria_true=%d gloria_false=%d total=%d\n%!" + violet black gloria_true gloria_false (gloria_true + gloria_false); + Alcotest.(check bool) "the full domain reached a real number of violet days" true (violet > 100_000); + Alcotest.(check bool) "the full domain reached a real number of Requiem days" true (black > 1_000) + end + let suite = ( "Rubrics_ef", [ Alcotest.test_case "475(a): ordinary Sunday" `Quick test_475a_ordinary_sunday; @@ -477,4 +765,38 @@ let suite = Alcotest.test_case "every Sunday in 2026 says the Creed" `Quick test_every_sunday_in_2026_says_the_creed; Alcotest.test_case "RG 24/25: no ferial-origin office carries Lord/Bvm or an apostle slug" `Quick - test_ferial_origin_never_carries_lord_bvm_or_apostle_slug ] ) + test_ferial_origin_never_carries_lord_bvm_or_apostle_slug; + Alcotest.test_case "237(a): Easter Sunday" `Quick test_237a_easter_sunday; + Alcotest.test_case "237(a): Low Sunday" `Quick test_237a_low_sunday; + Alcotest.test_case "237(a): Pentecost Sunday" `Quick test_237a_pentecost; + Alcotest.test_case "237(f): Vigil of the Ascension" `Quick test_237f_ascension_vigil; + Alcotest.test_case "237(f): Vigil of Pentecost" `Quick test_237f_pentecost_vigil; + Alcotest.test_case "237(d): St John within the Nativity octave" `Quick + test_237d_nativity_octave_saint; + Alcotest.test_case "237(d): Easter Tuesday" `Quick test_237d_easter_week_feria; + Alcotest.test_case "238(b): Vigil of St Lawrence" `Quick test_238b_omissible_vigil; + Alcotest.test_case "Nativity Vigil excluded by structural inference, not literal 238(b)" `Quick + test_nativity_vigil_excluded_by_inference; + Alcotest.test_case "238(c)/RG23: Ash Wednesday" `Quick test_238c_ash_wednesday; + Alcotest.test_case "238(c)/RG23: Good Friday" `Quick test_238c_good_friday; + Alcotest.test_case "237(g): BVM Saturday Office" `Quick test_237g_bvm_saturday; + Alcotest.test_case "237(e): 2 January, a Christmastide feria" `Quick test_237e_christmastide_feria; + Alcotest.test_case "237(b): an ordinary Class2 Sunday" `Quick test_237b_ordinary_class2_sunday; + Alcotest.test_case "237(b)'s own exception: Septuagesima Sunday" `Quick test_237b_septuagesima_exception; + Alcotest.test_case "237(b)'s own exception: Sexagesima Sunday" `Quick test_237b_sexagesima_exception; + Alcotest.test_case "237(c): a sanctoral feast (Lawrence)" `Quick test_237c_sanctoral_feast; + Alcotest.test_case "Passion Sunday is not a festum for 237(c)" `Quick test_passion_sunday_not_a_festum; + Alcotest.test_case "Palm Sunday is not a festum for 237(c)" `Quick test_palm_sunday_not_a_festum; + Alcotest.test_case "238(d): All Souls' Day (transferred)" `Quick test_238d_all_souls; + Alcotest.test_case "431(c): Holy Thursday" `Quick test_431c_holy_thursday; + Alcotest.test_case "431(c): the Easter Vigil Mass" `Quick test_431c_easter_vigil; + Alcotest.test_case "432(b): Advent I Sunday, violet" `Quick test_432b_violet_sunday; + Alcotest.test_case "432(d): All Souls' Day (transferred)" `Quick test_432d_all_souls; + Alcotest.test_case "431(a): mirrors [te_deum]=true" `Quick test_431a_mirrors_te_deum_true; + Alcotest.test_case "432(a): mirrors [te_deum]=false" `Quick test_432a_mirrors_te_deum_false; + Alcotest.test_case "domain sanity: every violet day has [gloria]=false (sample)" `Quick + test_domain_violet_implies_no_gloria_sample; + Alcotest.test_case "domain sanity: every Requiem day has [gloria]=false (sample)" `Quick + test_domain_requiem_implies_no_gloria_sample; + Alcotest.test_case "domain sweep 1583..9999: violet/Requiem invariants, committed not sampled" + `Slow test_exhaustive_gloria_domain_sweep ] ) diff --git a/test/test_validate.ml b/test/test_validate.ml index 671c706..b53f915 100644 --- a/test/test_validate.ml +++ b/test/test_validate.ml @@ -324,15 +324,17 @@ module Synthetic = struct { Colitur_kernel.Mass_formulary.said = Some (Slug.of_string_exn "syn-formulary"); via = Colitur_kernel.Mass_formulary.Own_slug } - (* No fixture here exercises the Creed rubric -- a rite that has not - implemented it returns [false] explicitly, {!Rite.t.creed}'s own - documented default. Made overridable ([?creed] below) on the same - footing as [?readings] just above, for Task 6's own fixtures. *) + (* No fixture here exercises the Creed or Gloria rubrics -- a rite that + has not implemented them returns [false] explicitly, + {!Rite.t.creed}/{!Rite.t.gloria}'s own documented default. Made + overridable ([?creed]/[?gloria] below) on the same footing as + [?readings] just above, for Task 6's own fixtures. *) let creed ~temporal:_ ~observed:_ ~date:_ = false + let gloria ~temporal:_ ~observed:_ ~date:_ = false let rite ?(vocab = vocab) ?(anchors = fun _ -> []) ?(season_runs = [ A; B ]) ?(rules = rules) - ?(transfer_target = fun _ origin _ -> origin) ?(readings = readings) ?(creed = creed) temporal - : (season, rank) Rite.t = + ?(transfer_target = fun _ origin _ -> origin) ?(readings = readings) ?(creed = creed) + ?(gloria = gloria) temporal : (season, rank) Rite.t = { Rite.id = "synthetic"; vocab; year_start; temporal; anchors; rules; season_runs; (* Not a Roman rite, but a Rite.t must supply SOME Easter now that movable Date_spec variants exist. The Gregorian one is as good as @@ -342,7 +344,7 @@ module Synthetic = struct (* Not a Roman rite either, so no bissextile-doubling convention: identity, {!Rite.t.fixed_key}'s own documented default. *) fixed_key = (fun d -> Some (D.month d, D.day d)); - transfer_target; readings; creed } + transfer_target; readings; creed; gloria } (* Empty by default: every check built before Task 12 exercises the TEMPORAL-only pass, where an empty layer is exactly the fixture that diff --git a/tools/extract_fiuv_ordo.ml b/tools/extract_fiuv_ordo.ml index 42d3b96..c9688a7 100644 --- a/tools/extract_fiuv_ordo.ml +++ b/tools/extract_fiuv_ordo.ml @@ -292,7 +292,28 @@ let extract_te_deum full_text = | None -> String.length full_text in let span = String.sub full_text mat_start (laudes_start - mat_start) in + (* TWO negative phrasings the source actually uses, found live + (celebrant-rubrics-phase1 Phase 2, 2026-08-22): "non dicitur Te + Deum" (e.g. ordinary Time-after-Pentecost ferias, 27/28 November) + AND, separately, "sine Te Deum" (e.g. every Sunday, every Ember + day, every privileged Lenten/Passiontide feria carrying a + commemoration -- Advent I, 30 November: "...3a de homilia (cum + suo R), sine Te Deum."). The ORIGINAL version of this function + checked only the first phrasing, so "sine Te Deum" fell through + to the bare "Te Deum" substring test and was wrongly read as a + POSITIVE hit -- confirmed by grepping the raw pdftotext dump + directly against a first, uncorrected run's own output: EVERY + date this bug affected showed "sine Te Deum" in the source and + [Some true] in the fixture, a 100% correlation, not a handful of + coincidences. This is the SAME "does the source negate the + hymn's own name with a DIFFERENT word than the one this parser + already checks for" shape [find_word]'s own "Gloria Patri" + substring trap already documents for Gloria -- this trap simply + went unnoticed until Phase 2 actually compared the extracted + values against colitur's own output and against the raw text by + hand, rather than only checking coverage counts. *) if contains span ~sub:"non dicitur Te Deum" then Some false + else if contains span ~sub:"sine Te Deum" then Some false else if contains span ~sub:"Te Deum" then Some true else None) -- cgit v1.3 From e5e304c4004089ea75ea472ebd56414197a4190f Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Sat, 22 Aug 2026 18:46:27 +0200 Subject: fix(ordo): correct L5/F3 misadjudication -- Cum Sanctissima, not a gap data/ef/expected-divergences-lms.sexp's L5 (16 dates, LMS Ordo Gloria=true vs colitur's false) and data/ef/expected-divergences-fiuv.sexp's F3 (6 dates, FIUV Te Deum=true vs colitur's false) were both misadjudicated as colitur's own gap under an RG 302(b)/431(b) hypothesis. Both are wrong. These are occurrence differences from the 2020 decree Cum Sanctissima, which colitur excludes from its 1962 core by binding design (CLAUDE.md decision 2). RG 303(b) ("dici potest tantum si occurrit dies liturgicus IV classis") already prohibits 302(b) on the Class3 privileged ferias both entries cover -- the original text quoted 303(b) but never followed it to its conclusion. Decisively, the FIUV Ordo prints BOTH readings on the six shared dates, separated by a literal "-VEL-" token: the primary, strict- 1962 reading (feria wins, sine Gloria, no Te Deum) matches colitur exactly; the second, Cum-Sanctissima reading (saint kept, Gloria, Te Deum) matches the LMS Ordo exactly. F3 itself was never a real Te Deum finding: tools/extract_fiuv_ordo.ml's extract_te_deum scanned each block unbounded for "Ad Mat.", so on these six days -- whose primary office states no "Ad Mat." of its own -- it silently read the second office's own Te Deum instead. Fixed with a new split_at_alt_office, cutting every block at "-VEL-" before any field extraction runs; the alternative is captured, not discarded, in a new alt_te_deum field. A hard characterisation probe asserts the split fires on exactly the six known dates. Auditing for the same trap elsewhere (this is the third such manufactured divergence in this project) found a related but narrower marker, "Vel (sec. decretum <>) Missa ...", offering an alternate Mass formulary within a single office. It never corrupted Gloria/Credo (always stated before the marker on all 20 real instances, confirmed by diff), only the uncompared praef field; hardened defensively anyway, before it could ever fire live. The LMS Ordo (all three editions) carries no equivalent dual-print mechanism at all. expected-divergences-missalemeum.sexp's M27 is the same genus but was already correctly adjudicated, not touched. Both allow-list entries are rewritten, not deleted: the original SHAPE/ CITATION/WHY-NOT-FIXED-HERE reasoning is preserved verbatim as a recorded, superseded hypothesis, matching this project's own correction convention. test_lms_ordo.ml's matching predicate is unchanged (the 16-date population still fires, and always will, because it reflects a standing exclusion, not a bug); only its citation comment is corrected. test_fiuv_ordo.ml's F3-specific predicate/count assertion is removed, matching this file's own prior F2/F4 closure discipline. lib/ is untouched. dune test: 676/676. make check (COLITUR_EXHAUSTIVE_SWEEP=1, full 1583-9999 domain): 678/678. --- data/ef/expected-divergences-fiuv.sexp | 148 +++- data/ef/expected-divergences-lms.sexp | 140 +++- test/fixtures/fiuv-ordo-2025-2026.sexp | 1162 +++++++++++++++++++------------- test/test_fiuv_ordo.ml | 77 ++- test/test_lms_ordo.ml | 22 +- tools/extract_fiuv_ordo.ml | 221 +++++- 6 files changed, 1210 insertions(+), 560 deletions(-) (limited to 'test/fixtures/fiuv-ordo-2025-2026.sexp') diff --git a/data/ef/expected-divergences-fiuv.sexp b/data/ef/expected-divergences-fiuv.sexp index 6a40838..c8f1e21 100644 --- a/data/ef/expected-divergences-fiuv.sexp +++ b/data/ef/expected-divergences-fiuv.sexp @@ -41,6 +41,14 @@ ; separate regression this same fix round found and reverted (a first ; attempt at "every Sunday says Te Deum" wrongly excluded Christ the ; King, caught by the LMS Ordo's own Gloria axis, 2024-10-27). +; +; F3 was ALSO found to be the same GENUS of extractor bug -- a different +; PARSER shape (not a negation word, an unbounded scan reading a second, +; "-VEL-"-separated printed office instead of the primary one) -- and is +; likewise now CLOSED (l5-f3-readjudication task, 2026-08-22). See F3's +; own rewritten entry below for the full account, including why the +; original finding was misadjudicated as "colitur's own gap" rather than +; recognised as an extraction defect from the start. ; F1 -- OPEN, adjudicated FOR colitur. Fired once: 2026-04-03, Good ; Friday. @@ -108,39 +116,111 @@ ; itself rather than on "every other authority disagrees" -- which is the ; stronger footing, and the one this project's own standard asks for. -; F3 -- OPEN, single-witnessed, colitur's own possible gap (Te Deum -; axis). Fires 6 times, every one of the six dates -; data/ef/expected-divergences-lms.sexp's own L5 already found for -; Gloria: 2026-03-06/07/09/12/21/24, a privileged Lenten or Passiontide -; feria (Class3, RG25) whose own office is impeded and carries exactly -; one commemoration of a Class3 saint. colitur's [te_deum] reads [false] -; (a plain ferial office by every branch {!Rite_ef.Rubrics_ef.te_deum} -; checks); FIUV reads [true] in all six -- confirmed directly against -; the raw pdftotext dump, not merely the fixture: e.g. 12 March, "Ll. 1a -; et 2a (= 2a+3a) de Scr. occ., 3a de festo, Te Deum." -- a genuine, -; unnegated "Te Deum" (neither of the two negative phrasings the -; extractor now checks for), so this is NOT the same failure mode F2/F4 -; were. +; F3 -- CLOSED, MISADJUDICATED, NOW FIXED AT THE SOURCE +; (l5-f3-readjudication task, 2026-08-22). This entry previously read +; "OPEN, single-witnessed, colitur's own possible gap" -- WRONG, and not +; a Te Deum question at all: it was tools/extract_fiuv_ordo.ml's own +; [extract_te_deum] reading the WRONG PRINTED OFFICE on these six dates. +; +; THE ORIGINAL, SUPERSEDED FINDING -- preserved below verbatim, the same +; "retain the wrong reading and say why it was wrong" convention this +; file's own F1 history and data/ef/expected-divergences-lms.sexp's own +; L3/L5 already establish, NOT deleted: fires 6 times, every one of the +; six dates data/ef/expected-divergences-lms.sexp's own L5 already found +; for Gloria: 2026-03-06/07/09/12/21/24, a privileged Lenten or +; Passiontide feria (Class3, RG25) whose own office is impeded and +; carries exactly one commemoration of a Class3 saint. colitur's +; [te_deum] reads [false] (a plain ferial office by every branch +; {!Rite_ef.Rubrics_ef.te_deum} checks); FIUV reads [true] in all six -- +; confirmed directly against the raw pdftotext dump, not merely the +; fixture: e.g. 12 March, "Ll. 1a et 2a (= 2a+3a) de Scr. occ., 3a de +; festo, Te Deum." -- a genuine, unnegated "Te Deum" (neither of the two +; negative phrasings the extractor now checks for), so this is NOT the +; same failure mode F2/F4 were. (This description of what the raw text +; SAYS is still accurate -- the error was reading it from the wrong +; PLACE in the block, below, not misreading the words themselves.) +; +; CITATION [SUPERSEDED, see THE CORRECTION below]: the same +; n.302(b)/RG431(b) text L5 already cites (LT.txt -- a MISSAL rubric, not +; a Breviary one, so its literal text governs the MASS's own Gloria, not +; Matins' Te Deum) does not directly license this finding at all -- +; 237/238 (the BREVIARY rubric {!Rite_ef.Rubrics_ef.te_deum} actually +; implements) has no clause naming a commemoration as grounds for Te +; Deum. What this finding suggested, not established: the DIVINE OFFICE +; may treat a commemorated day more generously than the MASS does for +; exactly this shape (a commemorated saint's own lessons are read at +; Matins even on an impeded day, which could plausibly extend to Te Deum +; by an unwritten or unlocated convention) -- genuinely speculative, +; offered as a research lead for a follow-on task, not a citation this +; entry treated as settled. (There was no such convention: see below.) +; +; WHY NOT FIXED HERE [SUPERSEDED]: SINGLE-WITNESSED (the LMS fixtures +; never captured Te Deum at all, so there is no second Ordo to +; corroborate this shape the way the Sacred-Triduum/BVM-Saturday/vigil +; findings elsewhere in this task were cross-checked). Fixing it would +; need the SAME kernel signature widening L5 already declines for the +; identical reason (`~commemorations` on {!Colitur_kernel.Rite.t.gloria}, +; and by extension a parallel widening of [te_deum] if the two were ever +; to diverge in their own inputs) -- out of a task briefed to follow +; creed's existing seam exactly. Left OPEN for the same follow-on task L5 +; recommends. (No kernel change was ever needed -- the bug was entirely +; inside the EXTRACTOR, tools/, never inside lib/.) +; +; THE CORRECTION, in full (l5-f3-readjudication task, 2026-08-22): FIUV +; prints a "-VEL-" ("or") separator on these exact six dates, dividing +; each day's block into a PRIMARY, strict-1962 office (the feria wins, +; "sine Gloria", the saint commemorated, no "Ad Mat." lessons mentioned +; at all -- an ordinary privileged feria's Matins needs no special note) +; and a SECOND, complete alternative office under the 2020 decree Cum +; Sanctissima (the saint kept outright, "Off. ordinarium", with its OWN +; "Ad Mat. ... Te Deum" lessons). tools/extract_fiuv_ordo.ml's own +; [extract_te_deum] scanned the WHOLE block for "Ad Mat." unbounded, so +; on these six days it silently read the SECOND office's own Te Deum +; instead of the PRIMARY's -- manufacturing a same-day contradiction with +; colitur that this entry first recorded as "colitur's own possible +; gap". There was never a genuine Office-vs-Mass question, and no +; DIVINE-OFFICE convention naming a commemoration as grounds for Te +; Deum: the "unnegated Te Deum" the original finding quoted was real +; text, just read from the wrong printed office. +; +; Fixed in tools/extract_fiuv_ordo.ml's own [split_at_alt_office] (see +; its own citation, module header point 5): every field extractor now +; reads the PRIMARY office only, cut at the "-VEL-" token before any +; field extraction runs. [te_deum] now reads [None] (unresolved) on +; these six dates -- the primary office states no "Ad Mat." of its own, +; so there is nothing to positively confirm either direction from, the +; same meaning [None] already carries elsewhere in this fixture. The +; alternative office's own Te Deum is captured, not discarded, in a new +; [alt_te_deum] field (still [true] on all six -- the extraction was +; never wrong about what the SECOND office says, only about which +; office [te_deum] itself should report). ; -; CITATION: the same n.302(b)/RG431(b) text L5 already cites (LT.txt -- -; a MISSAL rubric, not a Breviary one, so its literal text governs the -; MASS's own Gloria, not Matins' Te Deum) does not directly license this -; finding at all -- 237/238 (the BREVIARY rubric {!Rite_ef.Rubrics_ef. -; te_deum} actually implements) has no clause naming a commemoration as -; grounds for Te Deum. What this finding suggests, not yet established: -; the DIVINE OFFICE may treat a commemorated day more generously than the -; MASS does for exactly this shape (a commemorated saint's own lessons -; are read at Matins even on an impeded day, which could plausibly extend -; to Te Deum by an unwritten or unlocated convention) -- genuinely -; speculative, offered as a research lead for a follow-on task, not a -; citation this entry treats as settled. +; VERIFIED, not merely argued: re-extracted from the SAME pdftotext dump +; (SHA-256 of the source PDF unchanged, fixture header above). Exactly 6 +; of 400 rows changed, every one Te Deum true->unresolved, on precisely +; these six dates and no others (a hard characterisation probe in +; tools/extract_fiuv_ordo.ml now asserts this population is EXACTLY +; these six, not merely observed once). Gloria, Credo, class_, title and +; praef are UNCHANGED on all 400 rows, confirmed by a direct diff of the +; fixture before and after -- those fields were already correctly +; bounded to the primary office (a Vespers-line token always intervened +; before "-VEL-" on all six real instances), so this was never a +; Gloria-axis bug, consistent with F1 and with L5's own six-date subset +; agreeing with colitur throughout. ; -; WHY NOT FIXED HERE: SINGLE-WITNESSED (the LMS fixtures never captured -; Te Deum at all, so there is no second Ordo to corroborate this shape -; the way the Sacred-Triduum/BVM-Saturday/vigil findings elsewhere in -; this task were cross-checked). Fixing it would need the SAME kernel -; signature widening L5 already declines for the identical reason -; (`~commemorations` on {!Colitur_kernel.Rite.t.gloria}, and by extension -; a parallel widening of [te_deum] if the two were ever to diverge in -; their own inputs) -- out of a task briefed to follow creed's existing -; seam exactly. Left OPEN for the same follow-on task L5 recommends. +; VERDICT: colitur correct; the LMS Ordo (L5) and the FIUV Ordo's own +; "-VEL-" alternative both, correctly, describe the SAME Cum-Sanctissima +; calendar colitur excludes by binding design (CLAUDE.md decision 2). +; See L5's own rewritten entry (data/ef/expected-divergences-lms.sexp) +; for the full account, including the "-VEL-" dual printing quoted there +; as the decisive evidence for BOTH entries. NOT an active +; machine-checked [id] entry, matching this file's own F1/F2/F4 +; precedent -- the real enforcement was test_fiuv_ordo.ml's own +; [is_f3_lenten_commemoration] predicate and [f3_count] assertion, BOTH +; REMOVED (same task): with the extractor fixed, this shape produces no +; mismatch at all any more (matched by the general [None]-skips- +; comparison branch every other unresolved-Te-Deum row already uses), +; so a dedicated predicate/count pin would be dead code -- the same "an +; entry that stops firing is a real change, not silently absorbed" +; discipline data/ef/expected-divergences-lms.sexp's own L1/L3 closures, +; and this file's own F2/F4 closure, already establish. diff --git a/data/ef/expected-divergences-lms.sexp b/data/ef/expected-divergences-lms.sexp index df813f9..d91028a 100644 --- a/data/ef/expected-divergences-lms.sexp +++ b/data/ef/expected-divergences-lms.sexp @@ -10,6 +10,11 @@ ; Gloria (RG431-432) -- both fire in more than one window, at DIFFERENT ; counts per window, so both are prose-only (L2's own precedent), not ; machine-checked [id] records; see each for the real enforcement site. +; L5 was MISADJUDICATED as "colitur's own gap" and CORRECTED +; (l5-f3-readjudication task, 2026-08-22): see L5's own entry for the +; full account -- it is an OCCURRENCE difference (the LMS Ordo follows +; the 2020 decree Cum Sanctissima, colitur excludes it by binding +; design), not a Gloria defect. ; ; A SEPARATE file from data/ef/expected-divergences.sexp (the lectio ; allow-list) and data/ef/expected-divergences-missalemeum.sexp (the @@ -233,14 +238,32 @@ (note "2023-12-24 (the 4th Sunday of Advent AND Christmas Eve, a genuinely rare coincidence -- roughly 1 year in 7 -- absent from both the 2024-2025 and 2025-2026 windows, where Christmas Eve falls on a Tuesday and a Wednesday respectively). colitur says the Creed IS said (true), reading [temporal]'s own weekday (Sunday) per RG475(a)'s clause, positioned ahead of the vigil-exclusion check in {!Rite_ef.Rubrics_ef.creed} -- unconditionally, the same way it already does for RG16(a)'s Feast-of-the-Lord case. The Ordo says \"No Gl No Cr\" for this date. ADJUDICATED FOR COLITUR, not merely left open by default: RG30(a)'s own \"locum tenet ... nulla fit commemoratio\" language is textually closer to RG16(a) (which colitur already treats as Creed-preserving) than to an ordinary vigil superseding a Sunday -- the Vigil does not merely WIN THE DAY, it takes the SUNDAY'S OWN IDENTITY, the same shape RG475(a) was written to reach. The COUNTER-reading is real and not dismissed here: RG475(a)'s own text says \"locum cedat ... festo\" (gives way to a FEAST), and RG35 (Caput VI) classifies feria/vigilia/festum as three distinct liturgical-day categories -- a strict textual reading could confine 475(a)'s override to FEAST-displacement only, leaving a VIGIL-displaced Sunday to fall through to the general vigil exclusion (476, via RG33's own \"a vigil is a distinct category\" reasoning already coded elsewhere in {!Rite_ef.Rubrics_ef.creed}). Left OPEN rather than closed on this task's own authority: adjudicating scripture-grade primary-source questions is out of scope for a witness-wiring task, and the two readings are both defensible. Not fixable inside this task's own no-lib-changes constraint regardless of which reading eventually wins.") (expected_rows 1)) -; L5 -- OPEN, colitur's own gap, found extending this suite to the Gloria -; axis (celebrant-rubrics-phase1 Phase 2, 2026-08-22). NOT an active -; machine-checked [id] entry -- same reasoning L2 above gives: the count -; varies window to window (5 in 2023-2024, 5 in 2024-2025, 6 in -; 2025-2026), so a single static [expected_rows] cannot check it. The REAL -; enforcement is test_lms_ordo.ml's own [is_l5_lenten_commemoration] +; L5 -- MISADJUDICATED, NOW CORRECTED (l5-f3-readjudication task, +; 2026-08-22). This entry previously read "OPEN, colitur's own gap" -- +; WRONG, on two independent grounds (below). It is NOT a Gloria defect +; of colitur's. It is NOT a rubric dispute at all: it is an OCCURRENCE +; difference, because the LMS Ordo is compiled to the 2020 decree Cum +; Sanctissima (its own introduction says so, docs/research/ordo/ +; PROVENANCE-lms.md) and colitur excludes that decree from its 1962 core +; by BINDING DESIGN (CLAUDE.md decision 2: "Every addition [2020 Quo +; Magis/Cum Sanctissima, any community's proper] is an overlay, never +; core"). On these 16 dates colitur and the LMS Ordo each correctly +; describe a DIFFERENT, both genuine, calendar -- they were never +; disagreeing about the same one. VERDICT: colitur correct. NOT an +; active machine-checked [id] entry -- same reasoning L2 above gives: +; the count varies window to window (5 in 2023-2024, 5 in 2024-2025, 6 +; in 2025-2026), so a single static [expected_rows] cannot check it. The +; REAL enforcement is test_lms_ordo.ml's own [is_l5_lenten_commemoration] ; predicate plus [make_suite]'s own ~expected_gloria_l5 parameter, -; asserted per window directly. +; asserted per window directly -- KEPT, unlike a bug-driven divergence +; that stops firing once fixed (data/ef/expected-divergences-fiuv.sexp's +; own F3, closed by this same task, is that other shape): this one is +; EXPECTED TO RECUR IN EVERY FUTURE WINDOW, because the exclusion it +; reflects is a standing design decision, not a defect to remove. +; +; THE ORIGINAL, SUPERSEDED HYPOTHESIS -- preserved below verbatim, the +; same "retain the wrong reading and say why it was wrong" convention +; L3's and F1's own history in this file already establish, NOT deleted: ; ; SHAPE, identical in all 16 instances found (5+5+6, zero exceptions): ; a privileged Lenten or Passiontide feria (Class3, violet -- RG25, @@ -251,6 +274,8 @@ ; day is a plain ferial office by every test [Rite_ef.Rubrics_ef.te_deum] ; runs -- no Sunday, no vigil, no octave, [named] = [None], [subject] = ; [Temporal]); the Ordo reads [true] in every one of the 16 instances. +; (This description of the SHAPE is still accurate -- what was wrong is +; the CONCLUSION drawn from it, below.) ; ; CITATION (docs/research/LT.txt:2359-2361, "V - De Missis festivis", ; quoted in rubrics_ef.ml's own [gloria] header in full): "302. Sensu @@ -263,7 +288,9 @@ ; ferial Office, carrying a commemoration, is elevated to "festive" status ; for the Gloria specifically. ; -; WHY NOT FIXED HERE: n.303(b), the very next paragraph (LT.txt:2359-2367, +; WHY NOT FIXED HERE (the original text, which already quoted the very +; clause that defeats its own hypothesis, below, but did not follow it +; to its conclusion): n.303(b), the very next paragraph (LT.txt:2359-2367, ; same quote in rubrics_ef.ml), qualifies n.302(b)'s own Masses: "dici ; potest tantum si occurrit dies liturgicus IV classis" -- CAN ONLY BE ; SAID if the liturgical day occurring is IV class. Every instance found @@ -273,29 +300,29 @@ ; project's sources), which may clarify that 301-303 govern which Mass a ; priest may freely CHOOSE among several options in one church on one day ; (a dimension colitur does not model -- see [gloria]'s own SCOPE NOTE), -; a different question from \"does THE Mass actually said, once -; determined, say the Gloria\" (431(b)'s own question). Implementing this +; a different question from "does THE Mass actually said, once +; determined, say the Gloria" (431(b)'s own question). Implementing this ; also has a real architectural cost this task's own instructions ; explicitly avoided: [Rite_ef.Rubrics_ef.gloria] would need a FOURTH ; parameter, the day's own {!Colitur_kernel.Liturgical_day.t.commemorations} ; -- a kernel [Rite.t.gloria] signature change, the same shape RG16(a)'s ; own [admit] fix needed a [~temporal] parameter for, and squarely out of -; a task briefed to \"follow exactly how creed was wired -- same seam\". +; a task briefed to "follow exactly how creed was wired -- same seam". ; Left OPEN, not guessed into a possibly-wrong rule. Recommended for a ; follow-on task, ideally alongside Phase 3's Preface work (RG483 governs ; a DIFFERENT, but textually adjacent, commemoration-vs-Mass-part ; question, so the two may share the same kernel signature widening). ; -; UPDATE (same task, after wiring the FIUV Ordo's own Gloria and Te Deum -; axes, test_fiuv_ordo.ml): this paragraph previously said FIUV's own -; [gloria] axis was not compared at all. It now is, and the result +; UPDATE (same original task, after wiring the FIUV Ordo's own Gloria and +; Te Deum axes, test_fiuv_ordo.ml): this paragraph previously said FIUV's +; own [gloria] axis was not compared at all. It now is, and the result ; WEAKENS this entry's own case rather than strengthening it: FIUV's own ; [gloria] is [false] on all six of these exact dates in its window -- ; AGREEING WITH COLITUR, DIRECTLY CONTRADICTING the LMS Ordo's [true] -; above. So this is not \"colitur has a corroborated gap\", it is \"two +; above. So this is not "colitur has a corroborated gap", it is "two ; independent Ordos disagree with EACH OTHER on Gloria for this shape, ; and colitur happens to agree with the universal one, not the diocesan -; one\". What FIUV's OWN Te Deum axis DOES show for the identical six +; one". What FIUV's OWN Te Deum axis DOES show for the identical six ; dates: [true] -- Te Deum, unlike Gloria, genuinely IS said at Matins on ; these days (data/ef/expected-divergences-fiuv.sexp's own F3), a real, ; single-witness finding that this entry's own n.302(b)/431(b) citation @@ -303,8 +330,85 @@ ; mean L5 itself is answering the wrong question, not merely open. ; Genuinely uncertain which of the two Mass-Gloria witnesses (LMS or ; FIUV) is right for this shape; left OPEN, not adjudicated either way, -; for a follow-on task with more primary-source access than this one -; had. +; for a follow-on task with more primary-source access than this one had. +; (CORRECTED, l5-f3-readjudication task: F3's own "single-witness +; finding" was never a Te Deum finding at all -- it was +; tools/extract_fiuv_ordo.ml reading the WRONG PRINTED OFFICE, see below. +; There was no Office-vs-Mass question to be uncertain about.) +; +; THE CORRECTION, in full (l5-f3-readjudication task, 2026-08-22): +; +; 1. RG303(b) ALREADY DEFEATS the n.302(b)/431(b) hypothesis on its own +; terms -- the original text above quoted it but stopped short of the +; conclusion. Quoted again, in full, because it is the load-bearing +; sentence: "dici potest tantum si occurrit dies liturgicus IV +; classis" -- [a Mass "of a commemoration occurring in the day's own +; Office"] MAY BE SAID ONLY IF the liturgical day occurring is FOURTH +; class. A privileged Lenten or Passiontide feria is THIRD class +; (RG25) -- every one of these 16 instances. So n.302(b) is +; PROHIBITED, not merely inapplicable, on precisely the days this +; entry covers, and 431(b)'s own Gloria elevation, which depends on +; 302(b), can never reach them. Not "unresolved without n.304" as the +; original text guessed: 303(b) alone already closes the question, +; the wrong way for the original hypothesis. +; +; 2. THE FIUV ORDO PRINTS BOTH OPTIONS, and this is decisive on its own, +; independent of (1). All 16 LMS dates are Lenten/Passiontide +; privileged ferias; six of them fall inside the FIUV fixture's own +; 2025-2026 window (2026-03-06/07/09/12/21/24 -- the same six F3 +; named). For every one of the six, the raw FIUV source (verified +; directly against a fresh pdftotext -layout dump, not merely the +; fixture) prints TWO complete readings for the SAME civil date, +; separated by a literal "-VEL-" ("or") token. 24 March 2026, in +; full: +; +; 24. Viol Feria III post Dom. I Passionis, De ea, III cl. - Off. feriale temp. Passionis. +; Ad LAUDES ... comm. S Gabrielis Archangeli. +; Missa pr., (omittuntur ps. Iudica me et Gloria Patri), sine Gloria, comm. S +; Gabrielis Archangeli, sine Credo, praef. de Sancta Cruce or. super populum. +; I VESPERAE de seq., comm. huius diei. - Compl. de dom. +; -VEL- +; Feria III. S Gabrielis Archangeli, III cl. (Priv.) - Off. ordinarium. - Ad Mat. +; Ll. 1a et 2a (= 2a + 3a) de Scr. occ., 3a de festo, Te Deum. - Ad LAUDES comm. +; Feriae. +; Missa pr., Gloria, comm. Feriae, tractus, sine Credo, praef. de Sancta Cruce vel +; de Angelis. +; +; The FIRST option is strict 1962: the feria wins, "sine Gloria", no +; Te Deum stated, the saint merely commemorated -- EXACTLY colitur's +; own answer, field for field. The SECOND, after "-VEL-", is the +; Cum-Sanctissima-elevated option: the saint's own feast, "Off. +; ordinarium", Gloria, Te Deum, the feria commemorated instead -- +; EXACTLY the LMS Ordo's own answer. The FIUV Ordo's own title page +; states the convention this book uses throughout for exactly this +; distinction (N.B., page 1, verified directly against the PDF): +; "days of the third class to which the norms of the decree Cum +; santissima [sic] apply are marked 'III cl.' ... but days ... to +; which these norms do not apply are marked 'III cl. (Priv.)'." One +; document, compiled by a THIRD party independent of both colitur's +; own lineage and the LMS, prints BOTH engines' own answers side by +; side as two legitimate readings of two different calendars. There +; is no dispute left to adjudicate. +; +; So the Gloria and Te Deum RULES were never in dispute at all: each +; engine's answer follows correctly from its own occurrence result, on +; its own calendar. What this entry originally described as "colitur's +; own gap" is colitur correctly implementing the 1962 core it was built +; to implement, diverging from a printed book that, by its own +; introduction, deliberately implements something else. +; +; NOTE ALSO (so a reader arriving here from +; data/ef/expected-divergences-fiuv.sexp's own F3 does not draw the +; wrong conclusion from that entry's own closure): F3 did NOT +; "corroborate" or "contradict" L5 at any point in this history. Both +; were the same underlying fact read two different ways, and F3's own +; apparent Te Deum-true reading was never a real second data point in +; the first place -- it was tools/extract_fiuv_ordo.ml's own +; [extract_te_deum] silently reading the SECOND ("-VEL-") office's own +; Te Deum instead of the primary's, on exactly these six dates, closed +; by fixing the extractor (tools/extract_fiuv_ordo.ml's own +; [split_at_alt_office]), not by resolving any Office-vs-Mass question. +; See F3's own entry for the full account. ; L6 -- OPEN, root-caused to a DIFFERENT, PRE-EXISTING bug this Gloria ; comparison merely surfaced, not a Gloria defect itself. Fired once, diff --git a/test/fixtures/fiuv-ordo-2025-2026.sexp b/test/fixtures/fiuv-ordo-2025-2026.sexp index d31c5d5..2ea9913 100644 --- a/test/fixtures/fiuv-ordo-2025-2026.sexp +++ b/test/fixtures/fiuv-ordo-2025-2026.sexp @@ -95,1481 +95,1723 @@ ; below are what this fixture actually asserts, not a forced match to ; the brief's approximate figures. ; +; 5. THE ALTERNATIVE-OFFICE TRAP (celebrant-rubrics-phase1 Phase 2 +; correction, 2026-08-22, closing F3): six real days print BOTH a +; strict-1962 reading and a complete SECOND office (the same saint +; kept outright under the 2020 decree Cum Sanctissima), separated by +; a literal "-VEL-" token. [extract_te_deum] used to scan the WHOLE +; block unbounded, so on these six days -- whose PRIMARY office states +; no "Ad Mat." of its own -- it silently read the SECOND office's own +; Te Deum instead, manufacturing a same-day contradiction with colitur +; that F3 first recorded as "colitur's own possible gap". Every field +; now reads the PRIMARY office only (module header point 5 has the +; full account); the alternative is captured, not discarded, in its +; own [alt_te_deum] field. Confirmed to fire on EXACTLY six dates by a +; hard characterisation probe (this run's own output, above), not +; merely asserted here. +; ; MEASURED DISTRIBUTION (this extraction, not the brief's figures): Gloria ; true=269 false=130 unresolved=1; Credo true=116 false=283 unresolved=1; -; Te Deum true=207 false=66 unresolved=127. +; Te Deum true=201 false=66 unresolved=133; alt Te Deum (the six "-VEL-" +; Cum Sanctissima alternatives, point 5 above) true=6 false=0 none=394 +; (a day contributes to "none" here either because it has no "-VEL-" +; alternative at all -- 394 of 400 -- or, for a day that does, because +; that alternative's own text doesn't state Te Deum either; not +; distinguished by this one count). +; +; FIX HISTORY (fixed text, HISTORICAL counts from the run that found each +; bug, not re-verified live by every later run -- this section exists so +; regenerating this fixture from a fresh pdftotext dump, which rewrites +; this whole header from the template, does not silently erase either +; finding; earlier this header carried the first entry below as a +; hand-appended note that a regeneration between then and now had +; already dropped once): +; +; 1. RE-EXTRACTED (celebrant-rubrics-phase1 Phase 2, 2026-08-22): the FIRST +; extraction's own Te Deum parser recognised only ONE of the source's two +; negative phrasings ("non dicitur Te Deum") -- "sine Te Deum" (how the +; source actually negates a SUNDAY's own Te Deum, among others) fell +; through to a bare "Te Deum" substring match and was wrongly read +; [true]. Found by hand, comparing the raw pdftotext dump against this +; fixture's own values directly, not by any coverage check (both counted +; the same 127 unresolved rows before and after). Fixed in +; tools/extract_fiuv_ordo.ml's own [extract_te_deum] (see its own +; citation); this fixture re-extracted from the SAME pdftotext dump +; (SHA-256 of the source PDF unchanged, above). 24 of 400 rows changed, +; every one Te Deum true->false, every one independently confirmed +; against the raw text: true 231->207, false 42->66, unresolved 127 +; unchanged. See lib/rites/rite_ef/rubrics_ef.ml's own [te_deum] header +; (237(a)'s comment) for the full account of what this corrected, and +; the .superpowers task report for the complete before/after date list. ; -; RE-EXTRACTED (celebrant-rubrics-phase1 Phase 2, 2026-08-22): the FIRST -; extraction's own Te Deum parser recognised only ONE of the source's two -; negative phrasings ("non dicitur Te Deum") -- "sine Te Deum" (how the -; source actually negates a SUNDAY's own Te Deum, among others) fell -; through to a bare "Te Deum" substring match and was wrongly read -; [true]. Found by hand, comparing the raw pdftotext dump against this -; fixture's own values directly, not by any coverage check (both counted -; the same 127 unresolved rows before and after). Fixed in -; tools/extract_fiuv_ordo.ml's own [extract_te_deum] (see its own -; citation); this fixture re-extracted from the SAME pdftotext dump -; (SHA-256 of the source PDF unchanged, above). 24 of 400 rows changed, -; every one Te Deum true->false, every one independently confirmed -; against the raw text: true 231->207, false 42->66, unresolved 127 -; unchanged. See lib/rites/rite_ef/rubrics_ef.ml's own [te_deum] header -; (237(a)'s comment) for the full account of what this corrected, and -; the .superpowers task report for the complete before/after date list. +; 2. RE-EXTRACTED (celebrant-rubrics-phase1 Phase 2 correction, 2026-08-22): +; module header point 5 and CHARACTERISATION point 5 above have the +; full account of the "-VEL-" alternative-office bug this closes +; (data/ef/expected-divergences-fiuv.sexp's own F3). This fixture +; re-extracted from the SAME pdftotext dump (SHA-256 of the source PDF +; unchanged, above). 6 of 400 rows changed, every one Te Deum +; true->unresolved (2026-03-06/07/09/12/21/24), every one independently +; confirmed against the raw text: Te Deum true 207->201 (this run's own +; unresolved count went 127->133, consistent with those same 6 rows). +; Gloria/Credo/class_/title/praef are UNCHANGED on all 400 rows -- +; those fields were already correctly bounded to the primary office +; before this fix (a Vespers-line token always intervened before the +; "-VEL-" separator on all six real instances), confirmed by a direct +; diff of the fixture before and after, not merely by argument. +; +; 3. RE-EXTRACTED (celebrant-rubrics-phase1 same correction, defensive +; hardening, 2026-08-22): auditing for the SAME trap elsewhere (the +; task brief's own item 5) found a THIRD, narrower alternate-Mass +; marker, "Vel (sec. decretum <>) Missa ...", offering a +; Cum-Sanctissima Mass FORMULARY choice within a single office +; (unlike point 5 above, no second "Ad Mat." set of lessons -- a +; narrower thing than a full alternate office). 20 occurrences in the +; whole corpus, confirmed by direct grep; on all 20, Gloria/Credo were +; ALREADY stated before reaching this marker, so this was NEVER a +; live divergence for those two fields (confirmed by this same diff: +; 0 Gloria/Credo/class_/title/alt_te_deum rows changed). [praef] +; alone changed on 20 of 400 rows (its own "rest of the primary +; clause" capture no longer runs past this marker into the +; alternative's own text) -- harmless in itself ([praef] is +; documented CAPTURED, NOT VALIDATED, compared by nothing), but added +; as a defensive boundary in [extract_missa_fields] so a FUTURE year +; whose primary clause does not restate Gloria/Credo before this +; marker cannot silently read the alternative's own value instead -- +; the identical failure shape as point 2 above, closed before it was +; ever observed live rather than after. (((date 2025-11-27) (class_ ("IV cl.")) (title "Vir Feria V post Dom. XXIV & Ultima post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2025-11-28) (class_ ("IV cl.")) (title "Vir Feria VI post Dom. XXIV & Ultima post Pentecosten, De ea,") - (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) + (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2025-11-29) (class_ ("IV cl.")) (title "Alb Sabb. S. Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147")) + (alt_te_deum ())) ((date 2025-11-30) (class_ ("I cl.")) (title "Viol DOM. I ADVENTUS, De ea,") (te_deum (false)) (gloria (false)) - (credo (true)) (praef ("Trinit. Ad II"))) + (credo (true)) (praef ("Trinit. Ad II")) (alt_te_deum ())) ((date 2025-12-01) (class_ ("III cl.")) (title "Viol Feria II post Dom. I Adventus, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2025-12-02) (class_ ("III cl.")) (title "Rub Feria III. S Bibianae Virg. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. AD"))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. AD")) + (alt_te_deum ())) ((date 2025-12-03) (class_ ("III cl. (Priv.)")) (title "Alb Feria IV. S Francisci Xavierii Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. AD"))) + (gloria (true)) (credo (false)) (praef ("comm. AD")) (alt_te_deum ())) ((date 2025-12-04) (class_ ("III cl.")) (title "Alb Feria V. S Petri Chrysologi Ep., Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Barbarae Virg. et Mart. (rub.) Loquebar de testimoniis tuis, Gloria, comm. 1\194\170 Feriae, comm. 2\194\170 S Petri Chrysologi Ep., Conf. et Eccl. Doct., praef. comm. vel de Martyribus. AD"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2025-12-05) (class_ ("III cl.")) (title "Viol Feria VI post Dom. I Adventus, De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("comm. Feria VI prima in mense."))) + (praef ("comm. Feria VI prima in mense.")) (alt_te_deum ())) ((date 2025-12-06) (class_ ("III cl. (Priv.)")) (title "Alb Sabb. S Nicolai Ep. et Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. Sabbatum primum in mense. I"))) + (praef ("comm. Sabbatum primum in mense. I")) (alt_te_deum ())) ((date 2025-12-07) (class_ ("I cl.")) (title "Viol DOM. II ADVENTUS, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2025-12-08) (class_ ("I cl.")) (title "Alb Feria II. IN CONCEPTIONE IMMACULATA B. MARIAE VIRGINIS,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("BMV Et te in Conceptione Immaculata. AD"))) + (praef ("BMV Et te in Conceptione Immaculata. AD")) (alt_te_deum ())) ((date 2025-12-09) (class_ ("III cl.")) (title "Viol Feria III post Dom. II Adventus, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2025-12-10) (class_ ("III cl.")) (title "Viol Feria IV post Dom. II Adventus, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2025-12-11) (class_ ("III cl. (Priv.)")) (title "Alb Feria V. S Damasi I Papae et Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. AD"))) + (gloria (true)) (credo (false)) (praef ("comm. AD")) (alt_te_deum ())) ((date 2025-12-12) (class_ ("III cl.")) (title "Viol Feria VI post Dom. II Adventus, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2025-12-13) (class_ ("III cl. (Priv.)")) (title "Rub Sabb. S Luciae Virg. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I"))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I")) + (alt_te_deum ())) ((date 2025-12-14) (class_ ("I cl.")) (title "Viol/ DOM. III ADVENTUS (GAUDETE), De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2025-12-15) (class_ ("III cl.")) (title "Viol Feria II post Dom. III Adventus (Gaudete), De ea,") - (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) + (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2025-12-16) (class_ ("III cl.")) (title "Alb Feria III. S Eusebii Ep. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. AD"))) + (gloria (true)) (credo (false)) (praef ("comm. AD")) (alt_te_deum ())) ((date 2025-12-17) (class_ ("II cl.")) (title "Viol FERIA IV QUATTUOR TEMP., De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("comm.\226\128\147 Quoad Flectamus genua vide RM 440."))) + (praef ("comm.\226\128\147 Quoad Flectamus genua vide RM 440.")) + (alt_te_deum ())) ((date 2025-12-18) (class_ ("II cl.")) (title "Viol FERIA V POST DOM. III ADVENTUS (GAUDETE), De ea,") - (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) + (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2025-12-19) (class_ ("II cl.")) (title "Viol FERIA VI QUATTUOR TEMP., De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2025-12-20) (class_ ("II cl.")) (title "Viol SABB. QUATTUOR TEMP., De eo,") (te_deum ()) (gloria (false)) (credo (false)) (praef - ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) + ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I")) + (alt_te_deum ())) ((date 2025-12-21) (class_ ("I cl.")) (title "Viol DOM. IV ADVENTUS, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2025-12-22) (class_ ("II cl.")) (title "Viol FERIA II POST DOM. IV ADVENTUS, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2025-12-23) (class_ ("II cl.")) (title "Viol FERIA III POST DOM. IV ADVENTUS, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2025-12-24) (class_ ("I cl.")) (title "Viol Feria IV. VIGILIA NATIVITATIS DOMINI,") (te_deum (false)) - (gloria (false)) (credo (false)) (praef ("comm. I"))) + (gloria (false)) (credo (false)) (praef ("comm. I")) (alt_te_deum ())) ((date 2025-12-25) (class_ ("I cl.")) (title "Alb Feria V. IN NATIVITATE DOMINI,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("et Communic. pr. per totam oct. \226\128\147 In Communicantes: in 1\194\170 Missa dicitur Noctem sacratissimam celebrantes, qua, in 2\194\170 et 3\194\170 Missa et per octavam Diem sacratissimum celebrantes, quo. \226\128\147 In 2\194\170 Missa (etiam in cantu) fit comm. S. Anastasi\195\166 * M. \226\128\147 In Missis in cantu, ad verba symboli Et incarnatus est\226\128\166 et homo factus est, omnes genuflectunt versus altare, non tantum cum a celebrante recitantur, sed etiam cum a choro canuntur (RM 518 b). II"))) + ("et Communic. pr. per totam oct. \226\128\147 In Communicantes: in 1\194\170 Missa dicitur Noctem sacratissimam celebrantes, qua, in 2\194\170 et 3\194\170 Missa et per octavam Diem sacratissimum celebrantes, quo. \226\128\147 In 2\194\170 Missa (etiam in cantu) fit comm. S. Anastasi\195\166 * M. \226\128\147 In Missis in cantu, ad verba symboli Et incarnatus est\226\128\166 et homo factus est, omnes genuflectunt versus altare, non tantum cum a celebrante recitantur, sed etiam cum a choro canuntur (RM 518 b). II")) + (alt_te_deum ())) ((date 2025-12-26) (class_ ("II cl.")) (title "Rub Feria VI. S STEPHANI * PROTOMARTYRIS,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. AD"))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. AD")) + (alt_te_deum ())) ((date 2025-12-27) (class_ ("II cl.")) (title "Alb Sabb. S IOANNIS * AP. ET EV.,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. AD"))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. AD")) + (alt_te_deum ())) ((date 2025-12-28) (class_ ("II cl.")) (title "Alb DOM. INFRA OCTAVAM NATIVITATIS, De ea,") (te_deum (true)) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad II"))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad II")) + (alt_te_deum ())) ((date 2025-12-29) (class_ ("II cl.")) (title "Alb FERIA II DOM. INFRA OCTAVAM NATIVITATIS, De ea,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum."))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum.")) + (alt_te_deum ())) ((date 2025-12-30) (class_ ("II cl.")) (title "Alb FERIA III DOM. INFRA OCTAVAM NATIVITATIS, De ea,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum."))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum.")) + (alt_te_deum ())) ((date 2025-12-31) (class_ ()) (title "Alb FERIA IV DOM. INFRA OCTAVAM NATIVITATIS, De ea. \226\128\147 Off. semifestivum. \226\128\147 Ad MAT. invit., hymnus, 9 antt. et 9 pss. cum ultimo V de festo Nativ., Ll. de Scr. occ. cum suis RR (ad 2um additur Gloria Patri)\226\128\147 Ad Laudes antt. de Nativ., pss. de dom., comm. S Silvestri I Papae et Conf. \226\128\147 Ad HORAS ant. et pss. de feria curr., rel ut in festo Nativ. \226\128\147 Ad Primam in R Br. V Qui natus es de Maria Virgine. Missa Puer natus de diebus infra octavam, Gloria, Credo, comm. S Silvestri I Papae et Conf., praef. de Nativ., Communic. de Nativ. diem sacratissimum. I VESPER\195\134 de seq. \226\128\147 Compl. de dom. Hodie ad solemnem recitationem hymni Te Deum, indulgentia plenaria lucrari potest. 16") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. I"))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. I")) + (alt_te_deum ())) ((date 2026-01-01) (class_ ("I cl.")) (title "Al Feria V. OCTAVA NATIVITATIS,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. II"))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. II")) + (alt_te_deum ())) ((date 2026-01-02) (class_ ("IV cl.")) (title "Alb Feria VI post Octavam Nativitatis, De ea,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("de Nativ., sine Communic. pr. Feria VI prima in mense."))) + (praef ("de Nativ., sine Communic. pr. Feria VI prima in mense.")) + (alt_te_deum ())) ((date 2026-01-03) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147")) + (alt_te_deum ())) ((date 2026-01-04) (class_ ("II cl.")) (title "Alb Dom. SS.MI NOMINIS IESU,") (te_deum ()) (gloria (true)) - (credo (true)) (praef ("de Nativ., sine Communic. pr. II"))) + (credo (true)) (praef ("de Nativ., sine Communic. pr. II")) + (alt_te_deum ())) ((date 2026-01-05) (class_ ("IV cl.")) (title "Alb Feria II post Octavam Nativitatis, De ea,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("de Nativ., sine Communic. pr. \226\128\147"))) + (praef ("de Nativ., sine Communic. pr. \226\128\147")) (alt_te_deum ())) ((date 2026-01-06) (class_ ("I cl.")) (title "Alb Feria III. IN EPIPHANIA DOMINI,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("et Communic pr. II"))) + (gloria (true)) (credo (true)) (praef ("et Communic pr. II")) + (alt_te_deum ())) ((date 2026-01-07) (class_ ("IV cl.")) (title "Alb Feria IV post Epiphaniam, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("de Epiphania."))) + (gloria (true)) (credo (false)) (praef ("de Epiphania.")) + (alt_te_deum ())) ((date 2026-01-08) (class_ ("IV cl.")) (title "Alb Feria V post Epiphaniam, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("de Epiphania."))) + (gloria (true)) (credo (false)) (praef ("de Epiphania.")) + (alt_te_deum ())) ((date 2026-01-09) (class_ ("IV cl.")) (title "Alb Feria VI post Epiphaniam, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("de Epiphania."))) + (gloria (true)) (credo (false)) (praef ("de Epiphania.")) + (alt_te_deum ())) ((date 2026-01-10) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione. I"))) + (credo (false)) (praef ("BMV Et te in Veneratione. I")) (alt_te_deum ())) ((date 2026-01-11) (class_ ("II cl.")) (title "Alb Dom. I post Epiphaniam. SANCT\195\134 FAMILI\195\134 IESU, MARI\195\134, IOSEPH *,") - (te_deum ()) (gloria (true)) (credo (true)) (praef ("de Epiphania. II"))) + (te_deum ()) (gloria (true)) (credo (true)) (praef ("de Epiphania. II")) + (alt_te_deum ())) ((date 2026-01-12) (class_ ("IV cl.")) (title "Alb Feria II post Dom. I post Epiphaniam, De ea,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("de Epiphania."))) + (praef ("de Epiphania.")) (alt_te_deum ())) ((date 2026-01-13) (class_ ("II cl.")) (title "Alb Feria III. IN COMMEMORATIONE BAPTISMATIS D.N.I.C.,") - (te_deum ()) (gloria (true)) (credo (true)) (praef ("de Epiphania. Ad"))) + (te_deum ()) (gloria (true)) (credo (true)) (praef ("de Epiphania. Ad")) + (alt_te_deum ())) ((date 2026-01-14) (class_ ("III cl.")) (title "Alb Feria IV. S Hilarii Ep., Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Felicis Presbyt. et Mart. (rub.) L\195\166tabitur iustus, Gloria, ors. pr., comm. S Hilarii Ep., Conf. et Eccl. Doct., praef. comm. vel de Martyribus. Ad"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-01-15) (class_ ("III cl.")) (title "Alb Feria V. S Pauli Primi Eremitae Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Mauri Abbatis. (alb.) Os iusti de Comm. Abb., Gloria, comm. S Pauli Primi Eremitae Conf., praef. comm."))) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-01-16) (class_ ("III cl.")) (title "Rub Feria VI. S Marcelli I Papae et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-01-17) (class_ ("III cl. (Priv.)")) (title "Alb Sabb. S Antonii Abb.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("comm. I"))) + (credo (false)) (praef ("comm. I")) (alt_te_deum ())) ((date 2026-01-18) (class_ ("II cl.")) (title "Vir DOM. II POST EPIPHANIAM, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-01-19) (class_ ("IV cl.")) (title "Vir Feria II post Dom. II post Epiphaniam, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-01-20) (class_ ("III cl. (Priv.)")) (title "Rub Feria III. SS Fabiani Papae et Sebastiani Mm.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. vel de Martyribus."))) + (praef ("comm. vel de Martyribus.")) (alt_te_deum ())) ((date 2026-01-21) (class_ ("III cl. (Priv.)")) (title "Rub Feria IV. S Agnetis * Virg. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad"))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad")) + (alt_te_deum ())) ((date 2026-01-22) (class_ ("III cl.")) (title "Rub Feria V. SS Vincentii et Anastasii Mm.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-01-23) (class_ ("III cl.")) (title "Alb Feria VI. S Raymundi de Pe\195\177afort Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Emerentianae Virg. et Mart. (rub.) Me exspectaverunt, Gloria, comm. S Raymundi de Pe\195\177afort Conf., praef. comm. vel de Martyribus. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-01-24) (class_ ("III cl. (Priv.)")) (title "Rub Sabb. S Timothei Ep. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I"))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I")) + (alt_te_deum ())) ((date 2026-01-25) (class_ ("II cl.")) (title "Vir DOM. III POST EPIPHANIAM, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-01-26) (class_ ("III cl. (Priv.)")) (title "Rub Feria II. S Polycarpi Ep. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-01-27) (class_ ("III cl. (Priv.)")) (title "Alb Feria III. S Ioannis Chrysostomi Ep., Conf. et Eccl. Doct.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad")) + (alt_te_deum ())) ((date 2026-01-28) (class_ ("III cl.")) (title "Alb Feria IV. S Petri Nolasci Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. S Agnetis * Virg. et Mart. secundo. (rub.), Gloria, comm. S Petri Nolasci Conf., praef. comm. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-01-29) (class_ ("III cl. (Priv.)")) (title "Alb Feria V. S Francisci Salesii Ep., Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-01-30) (class_ ("III cl.")) (title "Rub Feria VI. S Martinae Virg. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-01-31) (class_ ("III cl. (Priv.)")) (title "Alb Sabb. S Ioannis Bosco Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. I"))) + (gloria (true)) (credo (false)) (praef ("comm. I")) (alt_te_deum ())) ((date 2026-02-01) (class_ ("II cl.")) (title "Viol DOM. SEPTUAGESIMAE, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Trinit. II"))) + (gloria (false)) (credo (true)) (praef ("Trinit. II")) (alt_te_deum ())) ((date 2026-02-02) (class_ ("II cl.")) (title "Alb Feria II. IN PURIFICATIONE B. MARIAE VIRG.,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ. Ad benedictionem candelarum: ut in Missali. Ad"))) + (praef ("de Nativ. Ad benedictionem candelarum: ut in Missali. Ad")) + (alt_te_deum ())) ((date 2026-02-03) (class_ ("IV cl.")) (title "Viol Feria III Dom. Septuagesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("comm. \226\128\147"))) + (gloria (false)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-02-04) (class_ ("III cl.")) (title "Alb Feria IV. S Andreae Corsini Ep. et Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-02-05) (class_ ("III cl. (Priv.)")) (title "Rub Feria V. S Agathae * Virg. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad"))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad")) + (alt_te_deum ())) ((date 2026-02-06) (class_ ("III cl. (Priv.)")) (title "Alb Feria VI. S Titi Ep. et Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. Feria VI prima in mense."))) + (praef ("comm. Feria VI prima in mense.")) (alt_te_deum ())) ((date 2026-02-07) (class_ ("III cl.")) (title "Alb Sabb. S Romualdi Abb.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("comm. Sabbatum primum in mense. I"))) + (credo (false)) (praef ("comm. Sabbatum primum in mense. I")) + (alt_te_deum ())) ((date 2026-02-08) (class_ ("II cl.")) (title "Viol DOM. SEXAGESIMAE, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Trinit. II"))) + (gloria (false)) (credo (true)) (praef ("Trinit. II")) (alt_te_deum ())) ((date 2026-02-09) (class_ ("III cl.")) (title "Alb Feria II. S Cyrilli Ep. Alexandrini, Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Apolloniae Virg. et Mart. (rub.) Loquebar de testimoniis tuis, Gloria, comm. S Cyrilli Ep. Alexandrini, Conf. et Eccl. Doct., tractus, praef. comm. vel de Martyribus. Ad"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-02-10) (class_ ("III cl.")) (title "Alb Feria III. S Scholasticae Virg.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-02-11) (class_ ("III cl.")) (title "Alb Feria IV. In Apparitione B. Mariae Virg. Immaculatae,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("BMV Et te in Conceptione Immaculata."))) + (praef ("BMV Et te in Conceptione Immaculata.")) (alt_te_deum ())) ((date 2026-02-12) (class_ ("III cl.")) (title "Alb Feria V. SS Septem Fundatorum Ordinis Servorum B. Mariae Virg., Cc.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad")) + (alt_te_deum ())) ((date 2026-02-13) (class_ ("IV cl.")) (title "Viol Feria VI Dom. Sexagesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-02-14) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147")) + (alt_te_deum ())) ((date 2026-02-15) (class_ ("II cl.")) (title "Viol DOM. QUINQUAGESIMAE, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Trinit. II"))) + (gloria (false)) (credo (true)) (praef ("Trinit. II")) (alt_te_deum ())) ((date 2026-02-16) (class_ ("IV cl.")) (title "Viol Feria II Dom. Quinquagesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-02-17) (class_ ("IV cl.")) (title "Viol Feria III Dom. Quinquagesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-02-18) (class_ ("I cl.")) (title "Viol FERIA IV CINERUM, De ea,") (te_deum ()) (gloria (false)) (credo (false)) (praef - ("Quadr., or. super populum. In Missa qu\195\166 dicitur post benedictionem et impositionem cinerum omittuntur omnes preces ad gradus altaris dicend\195\166, necnon ors. Aufer a nobis et Oramus te, Domine, non autem osculum altaris (RM, 424 a)."))) + ("Quadr., or. super populum. In Missa qu\195\166 dicitur post benedictionem et impositionem cinerum omittuntur omnes preces ad gradus altaris dicend\195\166, necnon ors. Aufer a nobis et Oramus te, Domine, non autem osculum altaris (RM, 424 a).")) + (alt_te_deum ())) ((date 2026-02-19) (class_ ("III cl.")) (title "Viol Feria V Dom. Quinquagesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-02-20) (class_ ("III cl.")) (title "Viol Feria VI Dom. Quinquagesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-02-21) (class_ ("III cl.")) (title "Viol Sabb. Dom. Quinquagesimae, De eo,") (te_deum ()) - (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum. I"))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum. I")) + (alt_te_deum ())) ((date 2026-02-22) (class_ ("I cl.")) (title "Viol DOM. I QUADRAGESIMAE, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Quadr. II"))) + (gloria (false)) (credo (true)) (praef ("Quadr. II")) (alt_te_deum ())) ((date 2026-02-23) (class_ ("III cl.")) (title "Viol Feria II post Dom. I Quadragesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-02-24) (class_ ("II cl.")) (title "Rub Feria III. S MATTHIAE AP.,") (te_deum ()) (gloria (true)) - (credo (true)) (praef ("App. Ad"))) + (credo (true)) (praef ("App. Ad")) (alt_te_deum ())) ((date 2026-02-25) (class_ ("II cl.")) (title "Viol FERIA IV QUATTUOR TEMP., De ea,") (te_deum ()) (gloria (false)) (credo (false)) (praef - ("Quadr., or. super populum. \226\128\147 Quoad Flectamus genua vide RM 440."))) + ("Quadr., or. super populum. \226\128\147 Quoad Flectamus genua vide RM 440.")) + (alt_te_deum ())) ((date 2026-02-26) (class_ ("III cl.")) (title "Viol Feria V post Dom. I Quadragesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-02-27) (class_ ("II cl.")) (title "Viol FERIA VI QUATTUOR TEMP., De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-02-28) (class_ ("II cl.")) (title "Viol SABB. QUATTUOR TEMP., De eo,") (te_deum ()) (gloria (false)) (credo (false)) (praef - ("Quadr., or. super populum. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) + ("Quadr., or. super populum. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I")) + (alt_te_deum ())) ((date 2026-03-01) (class_ ("I cl.")) (title "Viol DOM. II QUADRAGESIMAE, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Quadr. II"))) + (gloria (false)) (credo (true)) (praef ("Quadr. II")) (alt_te_deum ())) ((date 2026-03-02) (class_ ("III cl.")) (title "Viol Feria II post Dom. II Quadragesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-03-03) (class_ ("III cl.")) (title "Viol Feria III post Dom. II Quadragesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-03-04) (class_ ("III cl.")) (title "Viol Feria IV post Dom. II Quadragesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-03-05) (class_ ("III cl.")) (title "Viol Feria V post Dom. II Quadragesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-03-06) (class_ ("III cl.")) - (title "Viol Feria VI post Dom. II Quadragesimae, De ea,") - (te_deum (true)) (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum. Feria VI prima in mense."))) + (title "Viol Feria VI post Dom. II Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum. Feria VI prima in mense.")) + (alt_te_deum (true))) ((date 2026-03-07) (class_ ("III cl.")) - (title "Viol Sabb. post Dom. II Quadragesimae, De eo,") (te_deum (true)) + (title "Viol Sabb. post Dom. II Quadragesimae, De eo,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum. Sabbatum primum in mense. I"))) + (praef ("Quadr., or. super populum. Sabbatum primum in mense. I")) + (alt_te_deum (true))) ((date 2026-03-08) (class_ ("I cl.")) (title "Viol DOM. III QUADRAGESIMAE, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Quadr. II"))) + (gloria (false)) (credo (true)) (praef ("Quadr. II")) (alt_te_deum ())) ((date 2026-03-09) (class_ ("III cl.")) - (title "Viol Feria II post Dom. III Quadragesimae, De ea,") - (te_deum (true)) (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum."))) + (title "Viol Feria II post Dom. III Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum (true))) ((date 2026-03-10) (class_ ("III cl.")) (title "Viol Feria III post Dom. III Quadragesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-03-11) (class_ ("III cl.")) (title "Viol Feria IV post Dom. III Quadragesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-03-12) (class_ ("III cl.")) - (title "Viol Feria V post Dom. III Quadragesimae, De ea,") - (te_deum (true)) (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum."))) + (title "Viol Feria V post Dom. III Quadragesimae, De ea,") (te_deum ()) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum (true))) ((date 2026-03-13) (class_ ("III cl.")) (title "Viol Feria VI post Dom. III Quadragesimae, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum."))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum.")) + (alt_te_deum ())) ((date 2026-03-14) (class_ ("III cl.")) (title "Viol Sabb. post Dom. III Quadragesimae, De eo,") (te_deum ()) - (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum. I"))) + (gloria (false)) (credo (false)) (praef ("Quadr., or. super populum. I")) + (alt_te_deum ())) ((date 2026-03-15) (class_ ("I cl.")) (title "Viol/ DOM. IV QUADRAGESIMAE (LAETARE), De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Quadr. II"))) + (gloria (false)) (credo (true)) (praef ("Quadr. II")) (alt_te_deum ())) ((date 2026-03-16) (class_ ("III cl.")) (title "Viol Feria II post Dom. IV Quadragesimae (Laetare), De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum."))) + (praef ("Quadr., or. super populum.")) (alt_te_deum ())) ((date 2026-03-17) (class_ ("III cl.")) (title "Viol Feria III post Dom. IV Quadragesimae (Laetare), De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum."))) + (praef ("Quadr., or. super populum.")) (alt_te_deum ())) ((date 2026-03-18) (class_ ("III cl.")) (title "Viol Feria IV post Dom. IV Quadragesimae (Laetare), De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum. I"))) + (praef ("Quadr., or. super populum. I")) (alt_te_deum ())) ((date 2026-03-19) (class_ ("I cl.")) (title "Alb Feria V. S IOSEPH * SPONSI B. MARIAE VIRG., CONF. ET ECCLESIAE UNIVERSAE PATRONI,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de S Iosepho Et te in festivitate. II"))) + (praef ("de S Iosepho Et te in festivitate. II")) (alt_te_deum ())) ((date 2026-03-20) (class_ ("III cl.")) (title "Viol Feria VI post Dom. IV Quadragesimae (Laetare), De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum."))) + (praef ("Quadr., or. super populum.")) (alt_te_deum ())) ((date 2026-03-21) (class_ ("III cl.")) (title "Viol Sabb. post Dom. IV Quadragesimae (Laetare), De eo,") - (te_deum (true)) (gloria (false)) (credo (false)) - (praef ("Quadr., or. super populum. I"))) + (te_deum ()) (gloria (false)) (credo (false)) + (praef ("Quadr., or. super populum. I")) (alt_te_deum (true))) ((date 2026-03-22) (class_ ("I cl.")) (title "Viol DOM. I PASSIONIS, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("de Sancta Cruce. II"))) + (gloria (false)) (credo (true)) (praef ("de Sancta Cruce. II")) + (alt_te_deum ())) ((date 2026-03-23) (class_ ("III cl.")) (title "Viol Feria II post Dom. I Passionis, De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("de Sancta Cruce or. super populum."))) + (praef ("de Sancta Cruce or. super populum.")) (alt_te_deum ())) ((date 2026-03-24) (class_ ("III cl.")) - (title "Viol Feria III post Dom. I Passionis, De ea,") (te_deum (true)) + (title "Viol Feria III post Dom. I Passionis, De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("de Sancta Cruce or. super populum. I"))) + (praef ("de Sancta Cruce or. super populum. I")) (alt_te_deum (true))) ((date 2026-03-25) (class_ ("I cl.")) (title "Alb Feria IV. IN ANNUNTIATIONE B. MARIAE VIRG.,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("BMV Et te in Annuntiatione \226\128\147 In Missis in cantu, ad verba symboli Et incarnatus est\226\128\166 et homo factus est, omnes genuflectunt versus altare, non tantum cum a celebrante recitantur, sed etiam cum a choro canuntur (RM 518 b). II"))) + ("BMV Et te in Annuntiatione \226\128\147 In Missis in cantu, ad verba symboli Et incarnatus est\226\128\166 et homo factus est, omnes genuflectunt versus altare, non tantum cum a celebrante recitantur, sed etiam cum a choro canuntur (RM 518 b). II")) + (alt_te_deum ())) ((date 2026-03-26) (class_ ("III cl.")) (title "Viol Feria V post Dom. I Passionis, De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("de Sancta Cruce or. super populum."))) + (praef ("de Sancta Cruce or. super populum.")) (alt_te_deum ())) ((date 2026-03-27) (class_ ("III cl.")) (title "Viol Feria VI post Dom. I Passionis, De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("de Sancta Cruce or. super populum."))) + (praef ("de Sancta Cruce or. super populum.")) (alt_te_deum ())) ((date 2026-03-28) (class_ ("III cl.")) (title "Viol Sabb. post Dom. I Passionis, De eo,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("de Sancta Cruce or. super populum. I"))) + (praef ("de Sancta Cruce or. super populum. I")) (alt_te_deum ())) ((date 2026-03-29) (class_ ("I cl.")) (title "Rub in Officio, Rub. ad Bened. ramorum et in Processione, Viol. in Missa. DOM. IN PALMIS, De ea,") (te_deum (false)) (gloria (false)) (credo (true)) (praef - ("de Sancta Cruce. \194\171Asperges\194\187 omittitur. \226\128\147 Benedictio palmorum et processio ante missam principalem celebrandae sunt. \226\128\147 Orationes praeparatoriae omittuntur. \226\128\147 Evangelium de passione secundum S Matthiam 26, 36-75; 27,1-60 legitur. Munda cor dicitur, celebrans autem (vel diaconus chronista) signum crucis nec super libro nec super se facit, necque librum osculatur, necque Laus tibi Domine dicit. \226\128\147 Evangelium finale omittitur. \226\128\147 In Missis sine processione, legitur in fine Evangelium Cum appropinquasset de benedictione ramorum. Sacerdotibus plures quam unam missam dicentibus licet Evangelium S Matthi\195\166 27, 45-52 legere potius quam Evangelium Passionis. II"))) + ("de Sancta Cruce. \194\171Asperges\194\187 omittitur. \226\128\147 Benedictio palmorum et processio ante missam principalem celebrandae sunt. \226\128\147 Orationes praeparatoriae omittuntur. \226\128\147 Evangelium de passione secundum S Matthiam 26, 36-75; 27,1-60 legitur. Munda cor dicitur, celebrans autem (vel diaconus chronista) signum crucis nec super libro nec super se facit, necque librum osculatur, necque Laus tibi Domine dicit. \226\128\147 Evangelium finale omittitur. \226\128\147 In Missis sine processione, legitur in fine Evangelium Cum appropinquasset de benedictione ramorum. Sacerdotibus plures quam unam missam dicentibus licet Evangelium S Matthi\195\166 27, 45-52 legere potius quam Evangelium Passionis. II")) + (alt_te_deum ())) ((date 2026-03-30) (class_ ("I cl.")) (title "Viol FERIA II HEBDOMADAE SANCTAE, De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("de Sancta Cruce or. super populum."))) + (praef ("de Sancta Cruce or. super populum.")) (alt_te_deum ())) ((date 2026-03-31) (class_ ("I cl.")) (title "Viol FERIA II HEBDOMADAE SANCTAE, De ea,") (te_deum ()) (gloria (false)) (credo (false)) (praef - ("de Sancta Cruce or. super populum. Passio secundum S Marcum 14, 32-72; 15,1-46. Munda cor dicitur, celebrans autem (vel diaconus chronista) signum crucis nec super libro nec super se facit, necque librum osculatur, necque Laus tibi Domine dicit."))) + ("de Sancta Cruce or. super populum. Passio secundum S Marcum 14, 32-72; 15,1-46. Munda cor dicitur, celebrans autem (vel diaconus chronista) signum crucis nec super libro nec super se facit, necque librum osculatur, necque Laus tibi Domine dicit.")) + (alt_te_deum ())) ((date 2026-04-01) (class_ ("I cl.")) (title "Viol FERIA IV HEBDOMADAE SANCTA, De ea,") (te_deum ()) (gloria (false)) (credo (false)) (praef - ("de Sancta Cruce or. super populum. Passio secundum S Lucam 22, 39-71; 23, 1-53. Munda cor dicitur, celebrans autem (vel diaconus chronista) signum crucis nec super libro nec super se facit, necque librum osculatur, necque Laus tibi Domine dicit."))) + ("de Sancta Cruce or. super populum. Passio secundum S Lucam 22, 39-71; 23, 1-53. Munda cor dicitur, celebrans autem (vel diaconus chronista) signum crucis nec super libro nec super se facit, necque librum osculatur, necque Laus tibi Domine dicit.")) + (alt_te_deum ())) ((date 2026-04-02) (class_ ("I cl.")) (title "Viol. in Off., Alb. in Missa. FERIA V IN CENA DOMINI, De ea,") (te_deum ()) (gloria (true)) (credo (false)) (praef - ("de Sancta Cruce, Communicantes, Hanc igitur et Qui pridie pr., ad triplex Agnus Dei ter respondetur miserere nobis. Osculum pacis non datur, et omittitur or. Domine Iesu Christe, qui dixisti."))) + ("de Sancta Cruce, Communicantes, Hanc igitur et Qui pridie pr., ad triplex Agnus Dei ter respondetur miserere nobis. Osculum pacis non datur, et omittitur or. Domine Iesu Christe, qui dixisti.")) + (alt_te_deum ())) ((date 2026-04-03) (class_ ("I cl.")) (title "Nig in Actione liturgica usque ad 4am partem, Viol. in S. Communione. FERIA VI IN PASSIONE ET MORTE DOMINI, De ea,") (te_deum ()) (gloria (true)) (credo (false)) - (praef ("comm. Feria VI prima in mense."))) + (praef ("comm. Feria VI prima in mense.")) (alt_te_deum ())) ((date 2026-04-04) (class_ ("I cl.")) (title "Viol in Vig. pasch., Alb. in Missa. SABBATUM SANCTUM, De eo,") - (te_deum ()) (gloria ()) (credo ()) (praef ())) + (te_deum ()) (gloria ()) (credo ()) (praef ()) (alt_te_deum ())) ((date 2026-04-05) (class_ ("I cl.")) (title "Alb DOM. RESURRECTIONIS, De ea,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("Pasch. (in hac potissimum die), Communic. et Hanc igitur pr., ad Ite, missa est additur duplex Alleluia. Hodie prohibentur omnes Missae defunctorum, etiam exsequialis."))) + ("Pasch. (in hac potissimum die), Communic. et Hanc igitur pr., ad Ite, missa est additur duplex Alleluia. Hodie prohibentur omnes Missae defunctorum, etiam exsequialis.")) + (alt_te_deum ())) ((date 2026-04-06) (class_ ("I cl.")) (title "Alb FERIA II INFRA OCTAVAM PASCHATIS, De ea,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia."))) + (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia.")) + (alt_te_deum ())) ((date 2026-04-07) (class_ ("I cl.")) (title "Alb FERIA III INFRA OCTAVAM PASCHATIS, De ea,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia."))) + (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia.")) + (alt_te_deum ())) ((date 2026-04-08) (class_ ("I cl.")) (title "Alb FERIA IV INFRA OCTAVAM PASCHATIS, De ea,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia."))) + (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia.")) + (alt_te_deum ())) ((date 2026-04-09) (class_ ("I cl.")) (title "Alb FERIA V INFRA OCTAVAM PASCHATIS, De ea,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia."))) + (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia.")) + (alt_te_deum ())) ((date 2026-04-10) (class_ ("I cl.")) (title "Alb FERIA VI INFRA OCTAVAM PASCHATIS, De ea,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia."))) + (praef ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia.")) + (alt_te_deum ())) ((date 2026-04-11) (class_ ("I cl.")) (title "Alb SABBATUM IN ALBIS, De eo,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia. I"))) + ("etc. ut in festo., ad Ite, missa est additur duplex Alleluia. I")) + (alt_te_deum ())) ((date 2026-04-12) (class_ ("I cl.")) (title "Alb DOM. IN ALBIS,") (te_deum (true)) (gloria (true)) (credo (true)) - (praef ("Pasch. \226\128\147 Ite Missa est sine Alleluia. II"))) + (praef ("Pasch. \226\128\147 Ite Missa est sine Alleluia. II")) + (alt_te_deum ())) ((date 2026-04-13) (class_ ("III cl.")) (title "Rub Feria II. S Hermenegildi Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus. Ad"))) + (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus. Ad")) + (alt_te_deum ())) ((date 2026-04-14) (class_ ("III cl. (Priv.)")) (title "Rub Feria III. S Iustini Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-04-15) (class_ ("IV cl.")) (title "Alb Feria IV Dom. in Albis, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (Pasch.))) + (gloria (true)) (credo (false)) (praef (Pasch.)) (alt_te_deum ())) ((date 2026-04-16) (class_ ("IV cl.")) (title "Alb Feria V Dom. in Albis, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147")) + (alt_te_deum ())) ((date 2026-04-17) (class_ ("IV cl.")) (title "Alb Feria VI Dom. in Albis, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147")) + (alt_te_deum ())) ((date 2026-04-18) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione. I"))) + (credo (false)) (praef ("BMV Et te in Veneratione. I")) (alt_te_deum ())) ((date 2026-04-19) (class_ ("II cl.")) (title "Alb DOM. III PASCHATIS, De ea,") (te_deum (true)) (gloria (true)) - (credo (true)) (praef ("Pasch. II"))) + (credo (true)) (praef ("Pasch. II")) (alt_te_deum ())) ((date 2026-04-20) (class_ ("IV cl.")) (title "Alb Feria II post Dom. III Paschatis, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (Pasch.))) + (gloria (true)) (credo (false)) (praef (Pasch.)) (alt_te_deum ())) ((date 2026-04-21) (class_ ("III cl.")) (title "Alb Feria III. S Anselmi Ep., Conf. et Eccl. Doct.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef ("Pasch. Ad"))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("Pasch. Ad")) + (alt_te_deum ())) ((date 2026-04-22) (class_ ("III cl.")) (title "Rub Feria IV. SS Soteris et Caii Pp. et Mm.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-04-23) (class_ ("IV cl.")) (title "Alb Feria V post Dom. III Paschatis, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147")) + (alt_te_deum ())) ((date 2026-04-24) (class_ ("III cl.")) (title "Rub Feria VI. S Fidelis de Sigmaringa Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-04-25) (class_ ("II cl.")) (title "Rub Sabb. LITANIA MAIOR. S MARCI EVANGELISTAE,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("App. Ad"))) + (gloria (true)) (credo (true)) (praef ("App. Ad")) (alt_te_deum ())) ((date 2026-04-26) (class_ ("II cl.")) (title "Alb DOM. IV PASCHATIS, De ea,") (te_deum (true)) (gloria (true)) - (credo (true)) (praef ("Pasch. II"))) + (credo (true)) (praef ("Pasch. II")) (alt_te_deum ())) ((date 2026-04-27) (class_ ("III cl.")) (title "Alb Feria II. S Petri Canisii Conf. et Eccl. Doct.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef ("Pasch. Ad"))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("Pasch. Ad")) + (alt_te_deum ())) ((date 2026-04-28) (class_ ("III cl.")) (title "Alb Feria III. S Pauli a Cruce Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147")) + (alt_te_deum ())) ((date 2026-04-29) (class_ ("III cl.")) (title "Rub Feria IV. S Petri Mart.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("Pasch. vel de Martyribus \226\128\147"))) + (credo (false)) (praef ("Pasch. vel de Martyribus \226\128\147")) + (alt_te_deum ())) ((date 2026-04-30) (class_ ("III cl. (Priv.)")) (title "Alb Feria V. S Catharinae Senensis Virg.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. I"))) + (gloria (true)) (credo (false)) (praef ("Pasch. I")) (alt_te_deum ())) ((date 2026-05-01) (class_ ("I cl.")) (title "Alb Feria VI. S IOSEPH * OPIFICIS SPONSI B. MARIAE VIRG., CONF.,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de S Iosepho Et te in solemnitate \226\128\147 Etiam dici potest Missa Adiutor (cfr. in Missis votivis), cum Alleluia pasch., praef. S Ioseph Et et in solemnitate. Feria VI prima in mense. II"))) + ("de S Iosepho Et te in solemnitate \226\128\147 Etiam dici potest Missa Adiutor (cfr. in Missis votivis), cum Alleluia pasch., praef. S Ioseph Et et in solemnitate. Feria VI prima in mense. II")) + (alt_te_deum ())) ((date 2026-05-02) (class_ ("III cl. (Priv.)")) (title "Alb Sabb. S Athanasii Ep., Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("Pasch. Sabbatum primum in mense. I"))) + (praef ("Pasch. Sabbatum primum in mense. I")) (alt_te_deum ())) ((date 2026-05-03) (class_ ("II cl.")) (title "Alb DOM. V PASCHATIS, De ea,") (te_deum (true)) (gloria (true)) - (credo (true)) (praef ("Pasch. II"))) + (credo (true)) (praef ("Pasch. II")) (alt_te_deum ())) ((date 2026-05-04) (class_ ("III cl. (Priv.)")) (title "Alb Feria II. S Monicae Vid.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef (Pasch.))) + (credo (false)) (praef (Pasch.)) (alt_te_deum ())) ((date 2026-05-05) (class_ ("III cl. (Priv.)")) (title "Alb Feria III. S Pii V Papae et Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. Ad"))) + (gloria (true)) (credo (false)) (praef ("Pasch. Ad")) (alt_te_deum ())) ((date 2026-05-06) (class_ ("IV cl.")) (title "Alb Feria IV post Dom. V Paschatis, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147")) + (alt_te_deum ())) ((date 2026-05-07) (class_ ("III cl.")) (title "Rub Feria V. S Stanislai Ep. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("Pasch. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-05-08) (class_ ("IV cl.")) (title "Alb Feria VI post Dom. V Paschatis, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("Pasch. \226\128\147")) + (alt_te_deum ())) ((date 2026-05-09) (class_ ("III cl. (Priv.)")) (title "Alb Sabb. S Gregorii Nazianzeni Ep., Conf. et Eccl. Doct.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef ("Pasch. I"))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("Pasch. I")) + (alt_te_deum ())) ((date 2026-05-10) (class_ ("II cl.")) (title "Alb DOM. VI PASCHATIS, De ea,") (te_deum (true)) (gloria (true)) - (credo (true)) (praef ("Pasch. II"))) + (credo (true)) (praef ("Pasch. II")) (alt_te_deum ())) ((date 2026-05-11) (class_ ("II cl.")) (title "Rub Feria II. SS PHILIPPI * & IACOBI * APP,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("App. Ad"))) + (gloria (true)) (credo (true)) (praef ("App. Ad")) (alt_te_deum ())) ((date 2026-05-12) (class_ ("III cl.")) (title "Rub Feria III. SS Nerei, Achillei, Domitillae Virg., & Pancratii Mm.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("Pasch. vel de Martyribus."))) + (praef ("Pasch. vel de Martyribus.")) (alt_te_deum ())) ((date 2026-05-13) (class_ ("II cl.")) (title "Alb Feria IV. VIGILIA ASCENSIONIS,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Pasch. I"))) + (gloria (true)) (credo (false)) (praef ("Pasch. I")) (alt_te_deum ())) ((date 2026-05-14) (class_ ("I cl.")) (title "Alb Feria V. IN ASCENSIONE DOMINI NOSTRI IESU CHRISTI,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("Ascensionis, Communic pr. In Missa principali post Evangelium exstinguitur cereus paschalis. II"))) + ("Ascensionis, Communic pr. In Missa principali post Evangelium exstinguitur cereus paschalis. II")) + (alt_te_deum ())) ((date 2026-05-15) (class_ ("III cl.")) (title "Alb Feria VI. S Ioannis Baptistae de la Salle Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("Ascensionis \226\128\147"))) + (praef ("Ascensionis \226\128\147")) (alt_te_deum ())) ((date 2026-05-16) (class_ ("III cl.")) (title "Alb Sabb. S Ubaldi Ep. et Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Ascensionis \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("Ascensionis \226\128\147")) + (alt_te_deum ())) ((date 2026-05-17) (class_ ("II cl.")) (title "Alb DOM. POST ASCENSIONEM, De ea,") (te_deum (true)) (gloria (true)) (credo (true)) (praef - ("Ascensionis. Hodie prohibentur omnes Missae defunctorum, excepta exsequiali."))) + ("Ascensionis. Hodie prohibentur omnes Missae defunctorum, excepta exsequiali.")) + (alt_te_deum ())) ((date 2026-05-18) (class_ ("III cl.")) (title "Rub Feria II. S Venantii Mart.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("Ascensionis vel de Martyribus."))) + (praef ("Ascensionis vel de Martyribus.")) (alt_te_deum ())) ((date 2026-05-19) (class_ ("III cl.")) (title "Alb Feria III. S Petri Caelestini Papae et Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("Ascensionis \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Pudentianae Virg. (alb.) Dilexisti iustitiam, Gloria, comm. S Petri Caelestini Papae et Conf., praef. Ascensionis. Ad"))) + (praef ("Ascensionis \226\128\147")) (alt_te_deum ())) ((date 2026-05-20) (class_ ("III cl.")) (title "Alb Feria IV. S Bernardini Senensis Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (Ascensionis.))) + (gloria (true)) (credo (false)) (praef (Ascensionis.)) (alt_te_deum ())) ((date 2026-05-21) (class_ ("IV cl.")) (title "Alb Feria V Dom. post Ascensionem, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (Ascensionis.))) + (gloria (true)) (credo (false)) (praef (Ascensionis.)) (alt_te_deum ())) ((date 2026-05-22) (class_ ("IV cl.")) (title "Alb Feria VI Dom. post Ascensionem, De ea,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("Ascensionis \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("Ascensionis \226\128\147")) + (alt_te_deum ())) ((date 2026-05-23) (class_ ("I cl.")) (title "Rub Sabb. VIGILIA PENTECOSTES,") (te_deum (true)) (gloria (true)) (credo (false)) (praef - ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. I"))) + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. I")) + (alt_te_deum ())) ((date 2026-05-24) (class_ ("I cl.")) (title "Rub Dom. PENTECOSTES,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur. II"))) + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur. II")) + (alt_te_deum ())) ((date 2026-05-25) (class_ ("I cl.")) (title "Rub FERIA II INFRA OCTAVAM PENTECOSTES, De ea,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur."))) + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur.")) + (alt_te_deum ())) ((date 2026-05-26) (class_ ("I cl.")) (title "Rub FERIA III INFRA OCTAVAM PENTECOSTES, De ea,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur."))) + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur.")) + (alt_te_deum ())) ((date 2026-05-27) (class_ ("I cl.")) (title "Rub FERIA IV QUATTUOR TEMPORUM INFRA OCTAVAM PENTECOSTES, De ea,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur."))) + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur.")) + (alt_te_deum ())) ((date 2026-05-28) (class_ ("I cl.")) (title "Rub FERIA V INFRA OCTAVAM PENTECOSTES, De ea,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur."))) + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur.")) + (alt_te_deum ())) ((date 2026-05-29) (class_ ("I cl.")) (title "Rub FERIA VI QUATTUOR TEMPORUM INFRA OCTAVAM PENTECOSTES, De ea,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur."))) + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur.")) + (alt_te_deum ())) ((date 2026-05-30) (class_ ("I cl.")) (title "Rub SABBATUM QUATTUOR TEMPORUM II INFRA OCTAVAM PENTECOSTES, De eo,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur (quae in forma Miss\195\166 longiori post sixtam lectionem dicitur). Post Nonam exspirat tempus paschale. Compl de dom., cum antiphona finali de B. V. M. Salve Regina, quae dicitur ad Feriam VI ante Dom. I Adventus inclusive. Hodie prohibentur omnes Missae defunctorum, excepta exsequiali."))) + ("de Spirito Sancto hodierna die, Communic pr., Hanc igitur pr. \226\128\147 Genu flectendum est cum Veni Sancte Spiritus in versu Alleluia dicitur (quae in forma Miss\195\166 longiori post sixtam lectionem dicitur). Post Nonam exspirat tempus paschale. Compl de dom., cum antiphona finali de B. V. M. Salve Regina, quae dicitur ad Feriam VI ante Dom. I Adventus inclusive. Hodie prohibentur omnes Missae defunctorum, excepta exsequiali.")) + (alt_te_deum ())) ((date 2026-05-31) (class_ ("I cl.")) (title "Alb Dom. I post Pentecosten. IN FESTO SANCTISSIMAE TRINITATIS,") - (te_deum ()) (gloria (true)) (credo (true)) (praef ("Trinit. II"))) + (te_deum ()) (gloria (true)) (credo (true)) (praef ("Trinit. II")) + (alt_te_deum ())) ((date 2026-06-01) (class_ ("III cl.")) (title "Alb Feria II. S Angelae Mericiae Virg.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-06-02) (class_ ("IV cl.")) (title "Vir Feria III post Dom. I post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-06-03) (class_ ("IV cl.")) (title "Vir Feria IV post Dom. I post Pentecosten, De ea,") - (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I"))) + (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I")) + (alt_te_deum ())) ((date 2026-06-04) (class_ ("I cl.")) (title "Alb Feria V. CORPORIS CHRISTI,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("comm. vel de Cor Sacratissimo. \226\128\147 Si processio cum benedicto sacramento post missam principalem fit, in Missa Benedicamus Domino dicitur, sed benedictio et evangelium finale omittuntur. II"))) + ("comm. vel de Cor Sacratissimo. \226\128\147 Si processio cum benedicto sacramento post missam principalem fit, in Missa Benedicamus Domino dicitur, sed benedictio et evangelium finale omittuntur. II")) + (alt_te_deum ())) ((date 2026-06-05) (class_ ("III cl. (Priv.)")) (title "Rub Feria VI. S Bonifatii Ep. et Mart.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. vel de Martyribus. Feria VI prima in mense."))) + (praef ("comm. vel de Martyribus. Feria VI prima in mense.")) + (alt_te_deum ())) ((date 2026-06-06) (class_ ("III cl.")) (title "Alb Sabb. S Norberti Ep. et Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. Sabbatum primum in mense. I"))) + (praef ("comm. Sabbatum primum in mense. I")) (alt_te_deum ())) ((date 2026-06-07) (class_ ("II cl.")) (title "Vir DOM. II POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-06-08) (class_ ("IV cl.")) (title "Vir Feria II post Dom. II post Pentecosten, De ea,") - (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) + (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2026-06-09) (class_ ("IV cl.")) (title "Vir Feria III post Dom. II post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-06-10) (class_ ("III cl.")) (title "Alb Feria IV. S Margaritae Reginae, Vid.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-06-11) (class_ ("III cl. (Priv.)")) (title "Rub Feria V. S Barnabae Apostoli,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("App. I"))) + (gloria (true)) (credo (true)) (praef ("App. I")) (alt_te_deum ())) ((date 2026-06-12) (class_ ("I cl.")) (title "Alb Feria VI. SACRATISSIMI CORDIS IESU,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de Ss.mi Corde Iesu. Hodie, in qualibet ecclesia, coram Ss. Sacramento exposito, legatur formula reparationis et cantentur vel recitentur Litani\195\166 Sacratissimi Cordis Iesu (cfr. Enchiridion Indulgentiarum. Preces et pia opera, 1952, n.256, p.163). II"))) + ("de Ss.mi Corde Iesu. Hodie, in qualibet ecclesia, coram Ss. Sacramento exposito, legatur formula reparationis et cantentur vel recitentur Litani\195\166 Sacratissimi Cordis Iesu (cfr. Enchiridion Indulgentiarum. Preces et pia opera, 1952, n.256, p.163). II")) + (alt_te_deum ())) ((date 2026-06-13) (class_ ("III cl. (Priv.)")) (title "Alb Sabb. S Antonii de Padua Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-06-14) (class_ ("II cl.")) (title "Vir DOM. III POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-06-15) (class_ ("IV cl.")) (title "Vir Feria II post Dom. III post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-06-16) (class_ ("IV cl.")) (title "Vir Feria III post Dom. III post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-06-17) (class_ ("III cl.")) (title "Alb Feria IV. S Gregorii Barbadici Ep. et Conf.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef (comm.))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2026-06-18) (class_ ("III cl.")) (title "Alb Feria V. S Ephraem Syri Diaconi, Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. SS Marci et Marcelliani Mm. (rub.), Gloria, comm. S Ephraem Syri Diaconi, Conf. et Eccl. Doct., praef. comm. vel de Martyribus. Ad"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-06-19) (class_ ("III cl.")) (title "Alb Feria VI. S Iulianae De Falconeriis Virg.,") (te_deum (true)) - (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. SS Gervasii et Protasii Mm. (rub.), Gloria, comm. S Iulianae De Falconeriis Virg., praef. comm. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-06-20) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147")) + (alt_te_deum ())) ((date 2026-06-21) (class_ ("II cl.")) (title "Vir DOM. IV POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-06-22) (class_ ("III cl.")) (title "Alb Feria II. S Paulini Ep. et Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-06-23) (class_ ("II cl.")) (title "Viol Feria III. VIGILIA NATIVITATIS S IOANNIS * BAPTISTAE,") - (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I"))) + (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I")) + (alt_te_deum ())) ((date 2026-06-24) (class_ ("I cl.")) (title "Alb Feria IV. IN NATIVITATE S IOANNIS * BAPTISTAE,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("comm. vel de S Ioanni Baptista. II"))) + (praef ("comm. vel de S Ioanni Baptista. II")) (alt_te_deum ())) ((date 2026-06-25) (class_ ("III cl.")) (title "Alb Feria V. S Gulielmi Abb.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef (comm.))) + (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-06-26) (class_ ("III cl.")) (title "Rub Feria VI. SS Ioannis * et Pauli * Mm.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-06-27) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147")) + (alt_te_deum ())) ((date 2026-06-28) (class_ ("II cl.")) (title "Vir DOM. V POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. I"))) + (gloria (true)) (credo (true)) (praef ("Trinit. I")) (alt_te_deum ())) ((date 2026-06-29) (class_ ("I cl.")) (title "Rub Feria II. SS PETRI * ET PAULI * APP.,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("App. II"))) + (gloria (true)) (credo (true)) (praef ("App. II")) (alt_te_deum ())) ((date 2026-06-30) (class_ ("III cl. (Priv.)")) (title "Rub Feria III. In Commemoratione S Pauli * Ap.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef ("App. I"))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("App. I")) + (alt_te_deum ())) ((date 2026-07-01) (class_ ("I cl.")) (title "Rub Feria IV. PRETIOSISSIMI SANGUINIS D. N. I. C.,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("de Sancta Cruce. II"))) + (gloria (true)) (credo (true)) (praef ("de Sancta Cruce. II")) + (alt_te_deum ())) ((date 2026-07-02) (class_ ("II cl.")) (title "Alb Feria V. IN VISITATIONE B. MARIAE VIRG.,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("BMV Et te in Visitatione. Ad"))) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Visitatione. Ad")) + (alt_te_deum ())) ((date 2026-07-03) (class_ ("III cl.")) (title "Rub Feria VI. S Iren\195\166i Ep. et Mart.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. vel de Martyribus. Feria VI prima in mense."))) + (praef ("comm. vel de Martyribus. Feria VI prima in mense.")) + (alt_te_deum ())) ((date 2026-07-04) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147")) + (alt_te_deum ())) ((date 2026-07-05) (class_ ("II cl.")) (title "Vir DOM. VI POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-07-06) (class_ ("IV cl.")) (title "Vir Feria II post Dom. VI post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-07-07) (class_ ("III cl. (Priv.)")) (title "Alb Feria III. SS Cyrilli et Methodii Epp. et Cc.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad")) + (alt_te_deum ())) ((date 2026-07-08) (class_ ("III cl.")) (title "Alb Feria IV. S Elisabeth Reginae, Vid.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + (gloria (true)) (credo (false)) (praef ("comm. Ad")) (alt_te_deum ())) ((date 2026-07-09) (class_ ("IV cl.")) (title "Vir Feria V post Dom. VI post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-07-10) (class_ ("III cl.")) (title "Rub Feria VI. SS Septem Fratrum Mm., Ac SS Rufinae et Secundae Vv. et Mm.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. vel de Martyribus."))) + (praef ("comm. vel de Martyribus.")) (alt_te_deum ())) ((date 2026-07-11) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147")) + (alt_te_deum ())) ((date 2026-07-12) (class_ ("II cl.")) (title "Vir DOM. VII POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-07-13) (class_ ("IV cl.")) (title "Vir Feria II post Dom. VII post Pentecosten, De ea,") - (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) + (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2026-07-14) (class_ ("III cl. (Priv.)")) (title "Alb Feria III. S Bonaventurae Ep., Conf. et Eccl. Doct.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad")) + (alt_te_deum ())) ((date 2026-07-15) (class_ ("III cl.")) (title "Alb Feria IV. S Henrici Imperatoris Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-07-16) (class_ ("IV cl.")) (title "Vir Feria V post Dom. VII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-07-17) (class_ ("IV cl.")) (title "Vir Feria VI post Dom. VII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-07-18) (class_ ("III cl.")) (title "Alb Sabb. S Camilli de Lellis Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa SS Symphorosae et septem filiorum eius Mm. (rub.) Clamaverunt (ut in festo Ss. duodecim Fratrum Mm., die 1 sept.), Gloria, ors. pr., comm. S Camilli de Lellis Conf., praef. comm. vel de Martyribus. I"))) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-07-19) (class_ ("II cl.")) (title "Vir DOM. VIII POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-07-20) (class_ ("III cl.")) (title "Alb Feria II. S Hieronymi \211\148miliani Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Margaritae Virg. et Mart. (rub.) Me exspectaverunt, Gloria, comm. S Hieronymi \211\148miliani Conf., praef. comm. vel de Martyribus."))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-07-21) (class_ ("III cl.")) (title "Alb Feria III. S Laurentii de Brundusio Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. S Praexedis Virg. (alb.), Gloria, comm. S Laurentii de Brundusio Conf. et Eccl. Doct., praef. comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-07-22) (class_ ("III cl. (Priv.)")) (title "Alb Feria IV. S Mariae Magdalenae P\197\147nitentis,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad")) + (alt_te_deum ())) ((date 2026-07-23) (class_ ("III cl.")) (title "Rub Feria V. S Apollinaris Ep. et Mart.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("comm. vel de Martyribus \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Liborii Ep. et Conf. (alb.) Statuit de Comm. Confessoris Pontificis, Gloria, comm. S Apollinaris Ep. et Mart., praef. comm."))) + (praef ("comm. vel de Martyribus \226\128\147")) (alt_te_deum ())) ((date 2026-07-24) (class_ ("IV cl.")) (title "Vir Feria VI post Dom. VIII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-07-25) (class_ ("II cl.")) (title "Rub Sabb. S IACOBI * APOSTOLI,") (te_deum ()) (gloria (true)) - (credo (true)) (praef ("App. Ad"))) + (credo (true)) (praef ("App. Ad")) (alt_te_deum ())) ((date 2026-07-26) (class_ ("II cl.")) (title "Vir DOM. IX POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-07-27) (class_ ("IV cl.")) (title "Vir Feria II post Dom. IX post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-07-28) (class_ ("III cl.")) (title "Rub Feria III. SS Nazarii et Celsi, Mm., Victoris I Papae et Mart. ac Inocentii I Papae et Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. vel de Martyribus."))) + (praef ("comm. vel de Martyribus.")) (alt_te_deum ())) ((date 2026-07-29) (class_ ("III cl. (Priv.)")) (title "Alb Feria IV. S Marthae Virg.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef (comm.))) + (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-07-30) (class_ ("IV cl.")) (title "Vir Feria V post Dom. IX post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-07-31) (class_ ("III cl. (Priv.)")) (title "Alb Feria VI. S Ignatii Conf.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef (comm.))) + (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-08-01) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147"))) + (credo (false)) (praef ("BMV Et te in Veneratione \226\128\147")) + (alt_te_deum ())) ((date 2026-08-02) (class_ ("II cl.")) (title "Vir DOM. X POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-08-03) (class_ ("IV cl.")) (title "Vir Feria II post Dom. X post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-08-04) (class_ ("III cl. (Priv.)")) (title "Alb Feria III. S Dominici Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-08-05) (class_ ("III cl. (Priv.)")) (title "Alb Feria IV. In Dedicatione S Mariae ad Nives,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("BMV Et te in Festivitate."))) + (praef ("BMV Et te in Festivitate.")) (alt_te_deum ())) ((date 2026-08-06) (class_ ("II cl.")) (title "Alb Feria V. IN TRANSFIGURATIONE D. N. I. C.,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("comm. II"))) + (gloria (true)) (credo (true)) (praef ("comm. II")) (alt_te_deum ())) ((date 2026-08-07) (class_ ("III cl.")) (title "Alb Feria VI. S Caietani Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. S Donati, Ep. et Mart. (rub.), Gloria, comm. S Caietani Conf., praef. comm. vel de Martyribus. Feria VI prima in mense."))) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-08-08) (class_ ("III cl. (Priv.)")) (title "Alb Sabb. S Ioannis Mariae Vianney Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-08-09) (class_ ("II cl.")) (title "Vir DOM. XI POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-08-10) (class_ ("II cl.")) (title "Rub Feria II. S LAURENTII * MART.,") (te_deum ()) (gloria (true)) - (credo (false)) (praef ("comm. vel de Martyribus. II"))) + (credo (false)) (praef ("comm. vel de Martyribus. II")) (alt_te_deum ())) ((date 2026-08-11) (class_ ("IV cl.")) (title "Vir Feria III post Dom. XI post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-08-12) (class_ ("III cl. (Priv.)")) (title "Alb Feria IV. S Clarae Virg.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef (comm.))) + (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-08-13) (class_ ("IV cl.")) (title "Vir Feria V post Dom. XI post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-08-14) (class_ ("II cl.")) (title "Viol Feria VI. VIGILIA ASSUMPTIONIS B. MARIAE VIRG.,") - (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I"))) + (te_deum (false)) (gloria (false)) (credo (false)) (praef ("comm. I")) + (alt_te_deum ())) ((date 2026-08-15) (class_ ("I cl.")) (title "Alb Sabb. IN ASSUMPTIONE B. MARIAE VIRG.,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("BMV Et te in Assumptione. Ad"))) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Assumptione. Ad")) + (alt_te_deum ())) ((date 2026-08-16) (class_ ("II cl.")) (title "Vir DOM. XII POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-08-17) (class_ ("III cl.")) (title "Alb Feria II. S Hyacinthi Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-08-18) (class_ ("IV cl.")) (title "Vir Feria III post Dom. XII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-08-19) (class_ ("III cl.")) (title "Alb Feria IV. S Ioannis Eudes Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-08-20) (class_ ("III cl. (Priv.)")) (title "Alb Feria V. S Bernardi Abb. et Eccl. Doct.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-08-21) (class_ ("III cl.")) (title "Alb Feria VI. S Ioannae Franciscae Fr\195\169miot de Chantal Vid.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef (comm.))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2026-08-22) (class_ ("II cl.")) (title "Alb Sabb. IMMACULATI CORDIS B. MARIAE VIRG.,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("BMV Et te in Festivitate. Ad"))) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Festivitate. Ad")) + (alt_te_deum ())) ((date 2026-08-23) (class_ ("II cl.")) (title "Vir DOM. XIII POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-08-24) (class_ ("II cl.")) (title "Rub Feria II. S BARTHOLOMAEI * AP.,") (te_deum ()) - (gloria (true)) (credo (true)) (praef (App.))) + (gloria (true)) (credo (true)) (praef (App.)) (alt_te_deum ())) ((date 2026-08-25) (class_ ("III cl.")) (title "Alb Feria III. S Ludovici Regis Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-08-26) (class_ ("IV cl.")) (title "Vir Feria IV post Dom. XIII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-08-27) (class_ ("III cl.")) (title "Alb Feria V. S Iosephi Calasanctii Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-08-28) (class_ ("III cl. (Priv.)")) (title "Alb Feria VI. S Augustini Ep., Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-08-29) (class_ ("III cl. (Priv.)")) (title "Rub Sabb. In Decollatione S Ioannis * Baptistae,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. vel de S Ioanni Baptista \226\128\147"))) + (praef ("comm. vel de S Ioanni Baptista \226\128\147")) (alt_te_deum ())) ((date 2026-08-30) (class_ ("II cl.")) (title "Vir DOM. XIV POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-08-31) (class_ ("III cl.")) (title "Alb Feria II. S Raymundi Nonnati Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-09-01) (class_ ("IV cl.")) (title "Vir Feria III post Dom. XIV post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-09-02) (class_ ("III cl.")) (title "Alb Feria IV. S Stephani Regis Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-09-03) (class_ ("III cl. (Priv.)")) (title "Alb Feria V. S Pii X Papae et Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + (gloria (true)) (credo (false)) (praef ("comm. Ad")) (alt_te_deum ())) ((date 2026-09-04) (class_ ("IV cl.")) (title "Vir Feria VI post Dom. XIV post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-09-05) (class_ ("III cl.")) (title "Alb Sabb. S Laurentii Iustiniani Ep. et Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. Sabbatum primum in mense. I"))) + (praef ("comm. Sabbatum primum in mense. I")) (alt_te_deum ())) ((date 2026-09-06) (class_ ("II cl.")) (title "Vir DOM. XV POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-09-07) (class_ ("IV cl.")) (title "Vir Feria II post Dom. XV post Pentecosten, De ea,") - (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) + (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2026-09-08) (class_ ("II cl.")) (title "Alb Feria III. IN NATIVITATE B. MARIAE VIRG.,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("BMV Et te in Nativitate. Ad"))) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Nativitate. Ad")) + (alt_te_deum ())) ((date 2026-09-09) (class_ ("IV cl.")) (title "Vir Feria IV post Dom. XV post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-09-10) (class_ ("III cl.")) (title "Alb Feria V. S Nicolai de Tolentino Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-09-11) (class_ ("IV cl.")) (title "Vir Feria VI post Dom. XV post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-09-12) (class_ ("III cl. (Priv.)")) (title "Alb Sabb. Sanctissimi Nominis Mariae,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("BMV Et te in Festivitate. I"))) + (gloria (true)) (credo (false)) (praef ("BMV Et te in Festivitate. I")) + (alt_te_deum ())) ((date 2026-09-13) (class_ ("II cl.")) (title "Vir DOM. XVI POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-09-14) (class_ ("II cl.")) (title "Rub Feria II. IN EXALTATIONE S CRUCIS,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de Sancta Cruce. In Epistola ad verba Ut in nomine Iesu usque ad infernorum inclusive genuflectitur, item in Choro ab omnibus in Missa in cantu. II"))) + ("de Sancta Cruce. In Epistola ad verba Ut in nomine Iesu usque ad infernorum inclusive genuflectitur, item in Choro ab omnibus in Missa in cantu. II")) + (alt_te_deum ())) ((date 2026-09-15) (class_ ("II cl.")) (title "Alb Feria III. SEPTEM DOLORUM B. MARIAE VIRGINIS,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("BMV Et te in Transfixione. Ad"))) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Transfixione. Ad")) + (alt_te_deum ())) ((date 2026-09-16) (class_ ("III cl. (Priv.)")) (title "Rub Feria IV. SS Cornelis * Papae et Cypriani * Ep., Mm.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. vel de Martyribus."))) + (praef ("comm. vel de Martyribus.")) (alt_te_deum ())) ((date 2026-09-17) (class_ ("IV cl.")) (title "Vir Feria V post Dom. XVI post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-09-18) (class_ ("III cl.")) (title "Alb Feria VI. S Iosephi de Cupertino Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-09-19) (class_ ("III cl.")) (title "Rub Sabb. SS Ianuarii Ep. et Sociorum Mm.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I"))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I")) + (alt_te_deum ())) ((date 2026-09-20) (class_ ("II cl.")) (title "Vir DOM. XVII POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-09-21) (class_ ("II cl.")) (title "Rub Feria II. S MATTHAEI * AP. ET EV.,") (te_deum ()) - (gloria (true)) (credo (true)) (praef (App.))) + (gloria (true)) (credo (true)) (praef (App.)) (alt_te_deum ())) ((date 2026-09-22) (class_ ("III cl.")) (title "Alb Feria III. S Thomae de Villanova Ep. et Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa SS Mauritii et Sociorum Mm. (rub.) Intret in conspectu tuo, Gloria, ors. et Evangelium pr., comm. S Thomae de Villanova Ep. et Conf., praef. comm. vel de Martyribus."))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-09-23) (class_ ("II cl.")) (title "Viol FERIA IV QUATTUOR TEMP., De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147 Quoad Flectamus genua vide RM 440."))) + (praef ("comm. \226\128\147 Quoad Flectamus genua vide RM 440.")) + (alt_te_deum ())) ((date 2026-09-24) (class_ ("IV cl.")) (title "Vir Feria V post Dom. XVII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-09-25) (class_ ("II cl.")) (title "Viol FERIA VI QUATTUOR TEMP., De ea,") (te_deum (false)) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-09-26) (class_ ("II cl.")) (title "Viol SABB. QUATTUOR TEMP., De eo,") (te_deum (false)) (gloria (false)) (credo (false)) (praef - ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) + ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I")) + (alt_te_deum ())) ((date 2026-09-27) (class_ ("II cl.")) (title "Vir DOM. XVIII POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-09-28) (class_ ("III cl.")) (title "Rub Feria II. S Wenceslai Ducis Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I"))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. I")) + (alt_te_deum ())) ((date 2026-09-29) (class_ ("I cl.")) (title "Alb Feria III. IN DEDICATIONE S MICHA\195\139LIS ARCHANGELI,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("comm. vel de Angelis. II"))) + (praef ("comm. vel de Angelis. II")) (alt_te_deum ())) ((date 2026-09-30) (class_ ("III cl. (Priv.)")) (title "Alb Feria IV. S Hieronymi Presbyteri, Conf. et Eccl. Doct.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef ("comm. Ad")) + (alt_te_deum ())) ((date 2026-10-01) (class_ ("IV cl.")) (title "Vir Feria V post Dom. XVIII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-10-02) (class_ ("III cl. (Priv.)")) (title "Alb Feria VI. SS Angelorum Custodum,") (te_deum (true)) (gloria (true)) (credo (false)) (praef - ("comm. vel de Angelis. Feria VI prima in mense. Vesper\195\166 pr."))) + ("comm. vel de Angelis. Feria VI prima in mense. Vesper\195\166 pr.")) + (alt_te_deum ())) ((date 2026-10-03) (class_ ("III cl. (Priv.)")) (title "Alb Sabb. S Teresiae a Iesu Infante Virg.,") (te_deum (true)) (gloria (true)) (credo (false)) (praef - ("comm. Sabbatum primum in mense. I Vesper\195\166 de seq. dom., ut in Psalt. de sabb, ad Magn. ant. Adaperiat (dom. I octobris), or. pr., sine comm. \226\128\147 Compl. de sabb."))) + ("comm. Sabbatum primum in mense. I Vesper\195\166 de seq. dom., ut in Psalt. de sabb, ad Magn. ant. Adaperiat (dom. I octobris), or. pr., sine comm. \226\128\147 Compl. de sabb.")) + (alt_te_deum ())) ((date 2026-10-04) (class_ ("II cl.")) (title "Vir DOM. XIX POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-10-05) (class_ ("IV cl.")) (title "Vir Feria II post Dom. XIX post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-10-06) (class_ ("III cl. (Priv.)")) (title "Alb Feria III. S Brunonis Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. Vesper\195\166 de festo. 100"))) + (praef ("comm. Vesper\195\166 de festo. 100")) (alt_te_deum ())) ((date 2026-10-07) (class_ ("II cl.")) (title "Alb Feria IV. B. MARIAE VIRG. A ROSARIO,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("BMV Et te in Festivitate. Ad"))) + (gloria (true)) (credo (true)) (praef ("BMV Et te in Festivitate. Ad")) + (alt_te_deum ())) ((date 2026-10-08) (class_ ("III cl.")) (title "Alb Feria V. S Birgittae Vid.,") (te_deum (true)) (gloria (true)) - (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa SS Sergii, Bacchi, Marcelli et Apuleii Mm. (rub.) Sapientiam Sanctorum, Gloria, ors. pr., comm. S Birgittae Vid., praef. comm. vel de Martyribus. Vesper\195\166 de festo, sine comm."))) + (credo (false)) (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-10-09) (class_ ("III cl.")) (title "Alb Feria VI. S Ioannis Leonardi Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. SS Dionysii Ep., Rustici et Eleutherii Mm. (rub.), Gloria, comm. S Ioannis Leonardi Conf., praef. comm. vel de Martyribus. Vesper\195\166 de festo, sine comm."))) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-10-10) (class_ ("III cl.")) (title "Alb Sabb. S Francisci Borgiae Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) (praef - ("comm. I Vesper\195\166 de seq. dom., ut in Psalt. de sabb, ad Magn. ant. Refulsit sol (dom. II octobris), or. pr., sine comm. \226\128\147 Compl. de sabb."))) + ("comm. I Vesper\195\166 de seq. dom., ut in Psalt. de sabb, ad Magn. ant. Refulsit sol (dom. II octobris), or. pr., sine comm. \226\128\147 Compl. de sabb.")) + (alt_te_deum ())) ((date 2026-10-11) (class_ ("II cl.")) (title "Vir DOM. XX POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-10-12) (class_ ("IV cl.")) (title "Vir Feria II post Dom. XX post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. Vesper\195\166 de feria or. dom. pr\195\166c."))) + (praef ("comm. Vesper\195\166 de feria or. dom. pr\195\166c.")) + (alt_te_deum ())) ((date 2026-10-13) (class_ ("III cl.")) (title "Alb Feria III. S Eduardis Regis Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. Vesper\195\166 de festo."))) + (praef ("comm. Vesper\195\166 de festo.")) (alt_te_deum ())) ((date 2026-10-14) (class_ ("III cl. (Priv.)")) (title "Rub Feria IV. S Callisti I Papae et Mart.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. vel de Martyribus. Vesper\195\166 de festo."))) + (praef ("comm. vel de Martyribus. Vesper\195\166 de festo.")) + (alt_te_deum ())) ((date 2026-10-15) (class_ ("III cl. (Priv.)")) (title "Alb Feria V. S Teresiae Virg.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("comm. \226\128\147"))) + (credo (false)) (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-10-16) (class_ ("III cl.")) (title "Alb Feria VI. S Hedwigis Vid.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("comm. Vesper\195\166 de festo."))) + (credo (false)) (praef ("comm. Vesper\195\166 de festo.")) + (alt_te_deum ())) ((date 2026-10-17) (class_ ("III cl.")) (title "Alb Sabb. S Margaritae Mariae Alacoque Virg.,") (te_deum (true)) (gloria (true)) (credo (false)) (praef - ("comm. I Vesper\195\166 de seq. dom., ut in Psalt. de sabb, ad Magn. ant. Exaudiat Dominus (dom. IV octobris), or. pr., sine comm. \226\128\147 Compl. de sabb."))) + ("comm. I Vesper\195\166 de seq. dom., ut in Psalt. de sabb, ad Magn. ant. Exaudiat Dominus (dom. IV octobris), or. pr., sine comm. \226\128\147 Compl. de sabb.")) + (alt_te_deum ())) ((date 2026-10-18) (class_ ("II cl.")) (title "Vir DOM. XXI POST PENTECOSTEN, De ea,") (te_deum (true)) - (gloria (true)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-10-19) (class_ ("III cl.")) (title "Alb Feria II. S Petri de Alcantara Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. Vesper\195\166 de festo."))) + (praef ("comm. Vesper\195\166 de festo.")) (alt_te_deum ())) ((date 2026-10-20) (class_ ("III cl.")) (title "Alb Feria III. S Ioannis Cantii Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. Vesper\195\166 de festo."))) + (praef ("comm. Vesper\195\166 de festo.")) (alt_te_deum ())) ((date 2026-10-21) (class_ ("IV cl.")) (title "Vir Feria IV post Dom. XXI post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-10-22) (class_ ("IV cl.")) (title "Vir Feria V post Dom. XXI post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. Vesper\195\166 de feria or. dom. pr\195\166c."))) + (praef ("comm. Vesper\195\166 de feria or. dom. pr\195\166c.")) + (alt_te_deum ())) ((date 2026-10-23) (class_ ("III cl.")) (title "Alb Feria VI. S Antonii Mariae Claret Ep. et Conf.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-10-24) (class_ ("III cl.")) (title "Alb Sabb. S Rapha\195\171lis Archangeli,") (te_deum (true)) (gloria (true)) (credo (false)) (praef - ("comm. vel de Angelis. I Vesper\195\166 de seq., sine comm. \226\128\147 Compl. de dom. 104"))) + ("comm. vel de Angelis. I Vesper\195\166 de seq., sine comm. \226\128\147 Compl. de dom. 104")) + (alt_te_deum ())) ((date 2026-10-25) (class_ ("I cl.")) (title "Alb Dom. DOMINI NOSTRI JESU CHRISTI REGIS,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("de Domino Nostro Jesu Rege. Hodie, in omnibus ecclesiis, coram Ss.mo Sacramento exposito, recitetur formula consecrationis generis humani Christo Regi, cum Litaniis de eodem Sacro Corde. II Vesper\195\166 pr. Hodie prohibentur omnes Missae defunctorum, etiam exsequialis."))) + ("de Domino Nostro Jesu Rege. Hodie, in omnibus ecclesiis, coram Ss.mo Sacramento exposito, recitetur formula consecrationis generis humani Christo Regi, cum Litaniis de eodem Sacro Corde. II Vesper\195\166 pr. Hodie prohibentur omnes Missae defunctorum, etiam exsequialis.")) + (alt_te_deum ())) ((date 2026-10-26) (class_ ("IV cl.")) (title "Vir Feria II post Dom. XXII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-10-27) (class_ ("IV cl.")) (title "Vir Feria III post Dom. XXII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. Vesper\195\166 de feria, or. dom. XXII post Pent."))) + (praef ("comm. Vesper\195\166 de feria, or. dom. XXII post Pent.")) + (alt_te_deum ())) ((date 2026-10-28) (class_ ("II cl.")) (title "Rub Feria IV. SS SIMONIS * ET IUD\195\134 * APP.,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("App. In Canone Miss\195\166, nomen S. Apostoli Iud\195\166 inscribitur cum nomine Thadd\195\166i: ergo inclinatur caput quando dicitur Thadd\195\166i. Vesper\195\166 de Comm. \226\128\147 Compl. de dom. Hodie permittuntur tantum Missae votivae et defunctorum I et II classis."))) + ("App. In Canone Miss\195\166, nomen S. Apostoli Iud\195\166 inscribitur cum nomine Thadd\195\166i: ergo inclinatur caput quando dicitur Thadd\195\166i. Vesper\195\166 de Comm. \226\128\147 Compl. de dom. Hodie permittuntur tantum Missae votivae et defunctorum I et II classis.")) + (alt_te_deum ())) ((date 2026-10-29) (class_ ("IV cl.")) (title "Vir Feria V post Dom. XXII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. Vesper\195\166 de feria or. dom. XXII post Pent."))) + (praef ("comm. Vesper\195\166 de feria or. dom. XXII post Pent.")) + (alt_te_deum ())) ((date 2026-10-30) (class_ ("IV cl.")) (title "Vir Feria VI post Dom. XXII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. Vesper\195\166 de feria or. dom. XXII post Pent."))) + (praef ("comm. Vesper\195\166 de feria or. dom. XXII post Pent.")) + (alt_te_deum ())) ((date 2026-10-31) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) (credo (false)) (praef - ("BMV Et te in Veneratione. I Vesper\195\166 de seq. \226\128\147 Compl. de dom. 106"))) + ("BMV Et te in Veneratione. I Vesper\195\166 de seq. \226\128\147 Compl. de dom. 106")) + (alt_te_deum ())) ((date 2026-11-01) (class_ ("I cl.")) (title "Alb Dom. OMNIUM SANCTORUM,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("Trinit. vel de Omnibus Sanctis et Patronis. II"))) + (praef ("Trinit. vel de Omnibus Sanctis et Patronis. II")) + (alt_te_deum ())) ((date 2026-11-02) (class_ ("I cl.")) (title "Nig Feria II. IN COMMEMORATIONE OMNIUM FIDELIUM DEFUNCTORUM,") (te_deum ()) (gloria (false)) (credo (false)) (praef - ("defunctorum, unica or. \226\128\147 Benedictio non dicitur. \226\128\147 Si tres Miss\195\166 celebrantur sine intermissione, sequentia dici debet tantum in Missa principali; si minus, dici debet in Missa prima. In aliis Missis, nisi sint in cantu, sequentia omitti potest."))) + ("defunctorum, unica or. \226\128\147 Benedictio non dicitur. \226\128\147 Si tres Miss\195\166 celebrantur sine intermissione, sequentia dici debet tantum in Missa principali; si minus, dici debet in Missa prima. In aliis Missis, nisi sint in cantu, sequentia omitti potest.")) + (alt_te_deum ())) ((date 2026-11-03) (class_ ("IV cl.")) (title "Vir Feria III post Dom. XXIII post Pentecosten, De ea,") - (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.))) + (te_deum (false)) (gloria (false)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2026-11-04) (class_ ("III cl. (Priv.)")) (title "Alb Feria IV. S Caroli Ep. et Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. \226\128\147"))) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-11-05) (class_ ("IV cl.")) (title "Vir Feria V post Dom. XXIII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-11-06) (class_ ("IV cl.")) (title "Vir Feria VI post Dom. XXIII post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. Feria VI prima in mense."))) + (praef ("comm. Feria VI prima in mense.")) (alt_te_deum ())) ((date 2026-11-07) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("BMV Et te in Veneratione. Sabbatum primum in mense. I"))) + (praef ("BMV Et te in Veneratione. Sabbatum primum in mense. I")) + (alt_te_deum ())) ((date 2026-11-08) (class_ ("II cl.")) (title "Vir DOM. V QUI SUPERFUIT POST EPIPHANIAM, De ea,") (te_deum (true)) (gloria (true)) (credo (true)) (praef - ("Trinit. Dicitur Missa qu\195\166 inscribitur \194\171Dominica. V qui superfuit post Epiphaniam\194\187. Antiphonae ad Introitum, ad Offertorium et ad Communionem, necnon graduale et Alleluia cum suo versu, sumuntur e Dom. XXIII post Pent.; orationes, Epistola et Evangelium, e Dom. V qui superfuit post Epiphaniam. Ad II"))) + ("Trinit. Dicitur Missa qu\195\166 inscribitur \194\171Dominica. V qui superfuit post Epiphaniam\194\187. Antiphonae ad Introitum, ad Offertorium et ad Communionem, necnon graduale et Alleluia cum suo versu, sumuntur e Dom. XXIII post Pent.; orationes, Epistola et Evangelium, e Dom. V qui superfuit post Epiphaniam. Ad II")) + (alt_te_deum ())) ((date 2026-11-09) (class_ ("II cl.")) (title "Alb Feria II. IN DEDICATIONE ARCHIBASILICAE SANCTISSIMI SALVATORIS,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("comm. vel de Dedicatione ecclesi\195\166."))) + (praef ("comm. vel de Dedicatione ecclesi\195\166.")) (alt_te_deum ())) ((date 2026-11-10) (class_ ("III cl.")) (title "Alb Feria III. S Andreae Avellini Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa pr. SS Tryphonis, Respicii et Nymphae Virg., Mm. (rub.), Gloria, comm. S Andreae Avellini Conf., praef. comm. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("comm. \226\128\147")) + (alt_te_deum ())) ((date 2026-11-11) (class_ ("III cl. (Priv.)")) (title "Alb Feria IV. S Martini Ep. et Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-11-12) (class_ ("III cl.")) (title "Rub Feria V. S Martini I Papae et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-11-13) (class_ ("III cl.")) (title "Alb Feria VI. S Didaci Conf.,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("comm. \226\128\147"))) + (credo (false)) (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-11-14) (class_ ("III cl. (Priv.)")) (title "Rub Sabb. S Iosaphat Ep. et Mart.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. vel de Martyribus \226\128\147"))) + (praef ("comm. vel de Martyribus \226\128\147")) (alt_te_deum ())) ((date 2026-11-15) (class_ ("II cl.")) (title "Vir DOM. VI QUI SUPERFUIT POST EPIPHANIAM, De ea,") (te_deum (true)) (gloria (true)) (credo (true)) (praef - ("Trinit. Dicitur Missa qu\195\166 inscribitur \194\171Dominica. VI qui superfuit post Epiphaniam\194\187. Antiphonae ad Introitum, ad Offertorium et ad Communionem, necnon graduale et Alleluia cum suo versu, sumuntur e Dom. XXIII post Pent.; orationes, Epistola et Evangelium, e Dom. VI qui superfuit post Epiphaniam. Ad II"))) + ("Trinit. Dicitur Missa qu\195\166 inscribitur \194\171Dominica. VI qui superfuit post Epiphaniam\194\187. Antiphonae ad Introitum, ad Offertorium et ad Communionem, necnon graduale et Alleluia cum suo versu, sumuntur e Dom. XXIII post Pent.; orationes, Epistola et Evangelium, e Dom. VI qui superfuit post Epiphaniam. Ad II")) + (alt_te_deum ())) ((date 2026-11-16) (class_ ("III cl.")) (title "Alb Feria II. S Gertrudis Virg.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-11-17) (class_ ("III cl.")) (title "Alb Feria III. S Gregorii Thaumaturgi Ep. et Conf.,") - (te_deum (true)) (gloria (true)) (credo (false)) (praef (comm.))) + (te_deum (true)) (gloria (true)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2026-11-18) (class_ ("III cl. (Priv.)")) (title "Alb Feria IV. In Dedicatione Basilicarum SS Petri et Pauli App.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. vel de Dedicatione ecclesi\195\166."))) + (praef ("comm. vel de Dedicatione ecclesi\195\166.")) (alt_te_deum ())) ((date 2026-11-19) (class_ ("III cl.")) (title "Alb Feria V. S Elisabeth Vid.,") (te_deum (true)) (gloria (true)) - (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Pontiani Papae et Mart. (rub.) Si diligis, Gloria, comm. S Elisabeth Vid., praef. comm. vel de Martyribus."))) + (credo (false)) (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-11-20) (class_ ("III cl.")) (title "Alb Feria VI. S Felicis de Valois Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef (comm.))) + (gloria (true)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-11-21) (class_ ("III cl.")) (title "Alb Sabb. In Praesentatione B. Mariae Virg.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("BMV Et te in Pr\195\166sentatione. I"))) + (praef ("BMV Et te in Pr\195\166sentatione. I")) (alt_te_deum ())) ((date 2026-11-22) (class_ ("II cl.")) (title "Vir DOM. XXIV & ULTIMA POST PENTECOSTEN, De ea,") - (te_deum (true)) (gloria (true)) (credo (true)) - (praef ("Trinit. Ad II"))) + (te_deum (true)) (gloria (true)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-11-23) (class_ ("III cl. (Priv.)")) (title "Rub Feria II. S Clementis I * Papae et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad"))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad")) + (alt_te_deum ())) ((date 2026-11-24) (class_ ("III cl. (Priv.)")) (title "Alb Feria III. S Ioannis a Cruce Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-11-25) (class_ ("III cl.")) (title "Rub Feria IV. S Catharinae Virg. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus."))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus.")) + (alt_te_deum ())) ((date 2026-11-26) (class_ ("III cl.")) (title "Alb Feria V. S Silvestri Abb.,") (te_deum (true)) (gloria (true)) - (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Petri Alexandrini Ep. et Mart. (rub.) Statuit ei, Gloria, comm. S Silvestri Abb., praef. comm. vel de Martyribus. \226\128\147"))) + (credo (false)) (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-11-27) (class_ ("IV cl.")) (title "Vir Feria VI post Dom. XXIV & Ultima post Pentecosten, De ea,") (te_deum (false)) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-11-28) (class_ ("IV cl.")) (title "Alb Sancta Maria in Sabbato,") (te_deum (true)) (gloria (true)) - (credo (false)) (praef ("BMV Et te in Veneratione. I"))) + (credo (false)) (praef ("BMV Et te in Veneratione. I")) (alt_te_deum ())) ((date 2026-11-29) (class_ ("I cl.")) (title "Viol DOM. I ADVENTUS, De ea,") (te_deum (false)) (gloria (false)) - (credo (true)) (praef ("Trinit. Ad II"))) + (credo (true)) (praef ("Trinit. Ad II")) (alt_te_deum ())) ((date 2026-11-30) (class_ ("II cl.")) (title "Rub Feria II. S ANDREAE * APOSTOLI,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("App. Ad"))) + (gloria (true)) (credo (true)) (praef ("App. Ad")) (alt_te_deum ())) ((date 2026-12-01) (class_ ("III cl.")) (title "Viol Feria III post Dom. I Adventus, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-12-02) (class_ ("III cl.")) (title "Rub Feria IV. S Bibianae Virg. et Mart.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad"))) + (gloria (true)) (credo (false)) (praef ("comm. vel de Martyribus. Ad")) + (alt_te_deum ())) ((date 2026-12-03) (class_ ("III cl. (Priv.)")) (title "Alb Feria V. S Francisci Xavierii Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + (gloria (true)) (credo (false)) (praef ("comm. Ad")) (alt_te_deum ())) ((date 2026-12-04) (class_ ("III cl.")) (title "Alb Feria VI. S Petri Chrysologi Ep., Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef - ("comm. \226\128\147 Vel (sec. decretum \194\171Cum sanct.\194\187) Missa S Barbarae Virg. et Mart. (rub.) Loquebar de testimoniis tuis, Gloria, comm. 1\194\170 Feriae, comm. 2\194\170 S Petri Chrysologi Ep., Conf. et Eccl. Doct., praef. comm. vel de Martyribus. Feria VI prima in mense. Ad"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-12-05) (class_ ("III cl.")) (title "Viol Sabb. post Dom. I Adventus, De eo,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("comm. Sabbatum primum in mense. I"))) + (praef ("comm. Sabbatum primum in mense. I")) (alt_te_deum ())) ((date 2026-12-06) (class_ ("I cl.")) (title "Viol DOM. II ADVENTUS, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-12-07) (class_ ("III cl. (Priv.)")) (title "Alb Feria II. S Ambrosii Ep., Conf. et Eccl. Doct.,") (te_deum (true)) (gloria (true)) (credo (false)) - (praef ("comm. \226\128\147"))) + (praef ("comm. \226\128\147")) (alt_te_deum ())) ((date 2026-12-08) (class_ ("I cl.")) (title "Alb Feria III. IN CONCEPTIONE IMMACULATA B. MARIAE VIRGINIS,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("BMV Et te in Conceptione Immaculata. Ad"))) + (praef ("BMV Et te in Conceptione Immaculata. Ad")) (alt_te_deum ())) ((date 2026-12-09) (class_ ("III cl.")) (title "Viol Feria IV post Dom. II Adventus, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-12-10) (class_ ("III cl.")) (title "Viol Feria V post Dom. II Adventus, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-12-11) (class_ ("III cl. (Priv.)")) (title "Alb Feria VI. S Damasi I Papae et Conf.,") (te_deum (true)) - (gloria (true)) (credo (false)) (praef ("comm. Ad"))) + (gloria (true)) (credo (false)) (praef ("comm. Ad")) (alt_te_deum ())) ((date 2026-12-12) (class_ ("III cl.")) (title "Viol Sabb. post Dom. II Adventus, De eo,") (te_deum ()) - (gloria (false)) (credo (false)) (praef ("comm. I"))) + (gloria (false)) (credo (false)) (praef ("comm. I")) (alt_te_deum ())) ((date 2026-12-13) (class_ ("I cl.")) (title "DOM. III ADVENTUS (GAUDETE), De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-12-14) (class_ ("III cl.")) (title "Viol Feria II post Dom. III Adventus (Gaudete), De ea,") - (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) + (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2026-12-15) (class_ ("III cl.")) (title "Viol Feria III post Dom. III Adventus (Gaudete), De ea,") - (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) + (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2026-12-16) (class_ ("II cl.")) (title "Viol FERIA IV QUATTUOR TEMP., De ea,") (te_deum ()) (gloria (false)) (credo (false)) - (praef ("comm. \226\128\147 Quoad Flectamus genua vide RM 440."))) + (praef ("comm. \226\128\147 Quoad Flectamus genua vide RM 440.")) + (alt_te_deum ())) ((date 2026-12-17) (class_ ("II cl.")) (title "Viol FERIA V POST DOM. III ADVENTUS (GAUDETE), De ea,") - (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.))) + (te_deum ()) (gloria (false)) (credo (false)) (praef (comm.)) + (alt_te_deum ())) ((date 2026-12-18) (class_ ("II cl.")) (title "Viol FERIA VI QUATTUOR TEMP., De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-12-19) (class_ ("II cl.")) (title "Viol SABB. QUATTUOR TEMP., De eo,") (te_deum ()) (gloria (false)) (credo (false)) (praef - ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I"))) + ("comm. \226\128\147 Quoad Flectamus genua vide RM 440. Quoad lectiones vide RM 468. I")) + (alt_te_deum ())) ((date 2026-12-20) (class_ ("I cl.")) (title "Viol DOM. IV ADVENTUS, De ea,") (te_deum (false)) - (gloria (false)) (credo (true)) (praef ("Trinit. Ad II"))) + (gloria (false)) (credo (true)) (praef ("Trinit. Ad II")) + (alt_te_deum ())) ((date 2026-12-21) (class_ ("II cl.")) (title "Rub Feria II. S THOM\195\134 * APOSTOLI,") (te_deum ()) - (gloria (true)) (credo (true)) (praef ("App. Ad"))) + (gloria (true)) (credo (true)) (praef ("App. Ad")) (alt_te_deum ())) ((date 2026-12-22) (class_ ("II cl.")) (title "Viol FERIA III POST DOM. IV ADVENTUS, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-12-23) (class_ ("II cl.")) (title "Viol FERIA IV POST DOM. IV ADVENTUS, De ea,") (te_deum ()) - (gloria (false)) (credo (false)) (praef (comm.))) + (gloria (false)) (credo (false)) (praef (comm.)) (alt_te_deum ())) ((date 2026-12-24) (class_ ("I cl.")) (title "Viol Feria V. VIGILIA NATIVITATIS DOMINI,") (te_deum (false)) - (gloria (false)) (credo (false)) (praef ("comm. I"))) + (gloria (false)) (credo (false)) (praef ("comm. I")) (alt_te_deum ())) ((date 2026-12-25) (class_ ("I cl.")) (title "Alb Feria VI. IN NATIVITATE DOMINI,") (te_deum ()) (gloria (true)) (credo (true)) (praef - ("et Communic. pr. per totam oct. \226\128\147 In Communicantes: in 1\194\170 Missa dicitur Noctem sacratissimam celebrantes, qua, in 2\194\170 et 3\194\170 Missa et per octavam Diem sacratissimum celebrantes, quo. \226\128\147 In 2\194\170 Missa (etiam in cantu) fit comm. S. Anastasi\195\166 * M. \226\128\147 In Missis in cantu, ad verba symboli Et incarnatus est\226\128\166 et homo factus est, omnes genuflectunt versus altare, non tantum cum a celebrante recitantur, sed etiam cum a choro canuntur (RM 518 b). II"))) + ("et Communic. pr. per totam oct. \226\128\147 In Communicantes: in 1\194\170 Missa dicitur Noctem sacratissimam celebrantes, qua, in 2\194\170 et 3\194\170 Missa et per octavam Diem sacratissimum celebrantes, quo. \226\128\147 In 2\194\170 Missa (etiam in cantu) fit comm. S. Anastasi\195\166 * M. \226\128\147 In Missis in cantu, ad verba symboli Et incarnatus est\226\128\166 et homo factus est, omnes genuflectunt versus altare, non tantum cum a celebrante recitantur, sed etiam cum a choro canuntur (RM 518 b). II")) + (alt_te_deum ())) ((date 2026-12-26) (class_ ("II cl.")) (title "Rub Sabb. S STEPHANI * PROTOMARTYRIS,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad"))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad")) + (alt_te_deum ())) ((date 2026-12-27) (class_ ("II cl.")) (title "Alb DOM. INFRA OCTAVAM NATIVITATIS, De ea,") (te_deum (true)) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad II"))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad II")) + (alt_te_deum ())) ((date 2026-12-28) (class_ ("II cl.")) (title "Rub Feria II. SS INNOCENTIUM MM.,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad"))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. Ad")) + (alt_te_deum ())) ((date 2026-12-29) (class_ ("II cl.")) (title "Alb FERIA III DOM. INFRA OCTAVAM NATIVITATIS, De ea,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum."))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum.")) + (alt_te_deum ())) ((date 2026-12-30) (class_ ("II cl.")) (title "Alb FERIA IV DOM. INFRA OCTAVAM NATIVITATIS, De ea,") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum."))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum.")) + (alt_te_deum ())) ((date 2026-12-31) (class_ ()) (title "Alb FERIA V DOM. INFRA OCTAVAM NATIVITATIS, De ea. \226\128\147 Off. semifestivum. \226\128\147 Ad MAT. invit., hymnus, 9 antt. et 9 pss. cum ultimo V de festo Nativ., Ll. de Scr. occ. cum suis RR (ad 2um additur Gloria Patri)\226\128\147 Ad Laudes antt. de Nativ., pss. de dom., comm. S Silvestri I Papae et Conf. \226\128\147 Ad HORAS ant. et pss. de feria curr., rel ut in festo Nativ. \226\128\147 Ad Primam in R Br. V Qui natus es de Maria Virgine. Missa Puer natus de diebus infra octavam, Gloria, Credo, comm. S Silvestri I Papae et Conf., praef. de Nativ., Communic. de Nativ. diem sacratissimum. I VESPER\195\134 de seq. \226\128\147 Compl. de dom. Hodie ad solemnem recitationem hymni Te Deum, indulgentia plenaria lucrari potest. 126") (te_deum ()) (gloria (true)) (credo (true)) - (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. I")))) + (praef ("de Nativ., Communic. de Nativ. diem sacratissimum. I")) + (alt_te_deum ()))) diff --git a/test/test_fiuv_ordo.ml b/test/test_fiuv_ordo.ml index 24eeed0..5c009a9 100644 --- a/test/test_fiuv_ordo.ml +++ b/test/test_fiuv_ordo.ml @@ -68,7 +68,7 @@ let sha256_of_file path = | Some i -> String.sub line 0 i | None -> Alcotest.failf "unexpected sha256sum output for %s: %S" path line) -let fixture_sha256 = "a52cc4dae32ce4d07446c9daa86287cb99796f6584b3d571e3a3cbdc93fca396" +let fixture_sha256 = "a744a2dbc7c8cf09590005e956c973f316209f3cf102b8035edadebf764110de" let real_layer () = let layer = @@ -112,6 +112,12 @@ type ordo_row = { gloria : bool option; credo : bool option; praef : string option; + alt_te_deum : bool option; + (** the "-VEL-" Cum-Sanctissima-alternative office's own Te Deum, + when this day prints one -- see tools/extract_fiuv_ordo.ml's own + [row.alt_te_deum] citation. Captured, not compared here: closing + F3 needed [te_deum] itself to stop reading it, not a new + colitur-side axis to check it against. *) } [@@deriving sexp] @@ -361,57 +367,68 @@ let test_gloria_matches_or_is_explained () = let test_te_deum_coverage () = let ordo = ordo_rows () in let no_te_deum = List.filter (fun o -> o.te_deum = None) ordo in - Alcotest.(check int) "the unresolved-Te-Deum population matches this fixture's own measured figure" 127 + Alcotest.(check int) "the unresolved-Te-Deum population matches this fixture's own measured figure" 133 (List.length no_te_deum) let describe_te_deum_mismatch (o : ordo_row) (t : colitur_te_deum_row) = Printf.sprintf "%s %S: colitur te_deum=%b, Ordo te_deum=%b (rank=%s commemoration=%b)" o.date o.title t.t_te_deum (Option.get o.te_deum) (V.rank_to_string t.t_rank) t.t_has_commemoration -(* F2 (every I-class and omissible vigil) and F4 (the three September - Ember days) were BOTH found against the FIRST, buggy extraction (see - the fixture's own provenance header, "RE-EXTRACTED" note, and - {!Rite_ef.Rubrics_ef.te_deum}'s own 237(a) comment for the full - account of the extractor bug and its fix) -- re-run against the - corrected data, NEITHER fires any more: colitur's own answer already - matched the CORRECTED Ordo on every one of those 7 dates, all along. +(* F2 (every I-class and omissible vigil), F4 (the three September Ember + days) and NOW F3 (the privileged-Lenten/Passiontide-feria-plus- + commemoration shape) were ALL THREE found against a buggy extraction + (see the fixture's own provenance header, "FIX HISTORY" section, and + {!Rite_ef.Rubrics_ef.te_deum}'s own 237(a) comment for F2/F4's own + account) -- re-run against the corrected data, NONE of the three fires + any more. + + F3 specifically was NEVER a Te Deum defect on either side: the six + dates print a complete SECOND office after a literal "-VEL-" ("or") + separator -- the same saint kept outright under the 2020 decree Cum + Sanctissima, with its OWN "Ad Mat. ... Te Deum" lessons -- and + tools/extract_fiuv_ordo.ml's own [extract_te_deum] used to scan the + WHOLE block unbounded, so on these six days (whose PRIMARY, strict- + 1962 office states no "Ad Mat." of its own at all) it silently read + the SECOND office's Te Deum instead. Fixed at the source + (tools/extract_fiuv_ordo.ml's own [split_at_alt_office]); the fixture + re-extracted from the SAME pdftotext dump. colitur's own answer + ([false], the primary office's own ferial Matins) was never wrong -- + the OTHER side of the comparison was reading the wrong printed office. + [te_deum] now reads [None] (unresolved, not [false]) on these six + dates, because the PRIMARY office's own text states no "Ad Mat." at + all, so there is nothing to positively confirm either direction from + -- consistent with [te_deum]'s own documented meaning elsewhere in + this fixture. + + NOTE, so a reader arriving here from data/ef/expected-divergences-lms.sexp's + own L5 does not draw the wrong conclusion: F3 never "contradicted" L5 + in the first place, and its removal does not corroborate L5 either. + Both were the SAME underlying fact read two different ways -- L5's own + 16 LMS dates and these 6 FIUV dates are exactly the shape the 2020 + decree Cum Sanctissima changes, and colitur, by CLAUDE.md's own binding + decision 2, models the 1962 core without it. See L5's own rewritten + entry for the full account, including the FIUV "-VEL-" dual printing + as the decisive evidence for BOTH files. + Removed rather than kept as dead code with an [expected 0] pin, the same "an entry that stops firing is a real change, not silently absorbed" discipline data/ef/expected-divergences-lms.sexp's own L1/L3 closures already establish -- see that file's own history for the - precedent this follows. - - F3, the privileged-Lenten/Passiontide-feria-plus-commemoration shape - L5 (data/ef/expected-divergences-lms.sexp) already found for Gloria, - REMAINS: 6 instances, unaffected by the extractor fix (none of the six - raw source lines used "sine Te Deum" at all -- confirmed directly - against the pdftotext dump, see F3's own citation). CONTRADICTS L5, - not corroborates it: FIUV's own [gloria] is [false] on all six dates - (agreeing with colitur), while its [te_deum] is [true] on the same six - -- see F3's own citation in data/ef/expected-divergences-fiuv.sexp for - the full account of why Gloria and Te Deum diverge on the identical - day. *) -let is_f3_lenten_commemoration (_ : ordo_row) (t : colitur_te_deum_row) = - t.t_has_commemoration && t.t_rank = V.Class3 + precedent this follows. *) let test_te_deum_matches_or_is_explained () = let ordo = ordo_rows () in let colitur = colitur_te_deum_rows () in let unexplained = ref [] in - let f3_count = ref 0 in List.iter2 (fun (o : ordo_row) (t : colitur_te_deum_row) -> if not (String.equal o.date t.t_date) then Alcotest.failf "misaligned: ordo %s vs colitur %s" o.date t.t_date; match o.te_deum with | None -> () - | Some otd -> - if Bool.equal otd t.t_te_deum then () - else if is_f3_lenten_commemoration o t then incr f3_count - else unexplained := describe_te_deum_mismatch o t :: !unexplained) + | Some otd -> if Bool.equal otd t.t_te_deum then () else unexplained := describe_te_deum_mismatch o t :: !unexplained) ordo colitur; Alcotest.(check (list string)) "every Te Deum mismatch is named in the allow-list -- none unexplained" [] - (List.rev !unexplained); - Alcotest.(check int) "F3 (Lenten privileged feria + commemoration) count" 6 !f3_count + (List.rev !unexplained) let suite = ( "fiuv-ordo", diff --git a/test/test_lms_ordo.ml b/test/test_lms_ordo.ml index 42dc31d..00fb32c 100644 --- a/test/test_lms_ordo.ml +++ b/test/test_lms_ordo.ml @@ -594,12 +594,22 @@ let make_suite ~label ~fixture_path ~fixture_sha256 ~window_first ~window_last ~ [make_suite] threads the per-window expected totals directly (~expected_gloria_l5/~expected_gloria_l6 below) instead. *) let is_l5_lenten_commemoration (o : ordo_row) (c : colitur_row) = - (* RG 431(b)/n.302(b): "Missa de commemoratione in Officio diei - occurrente" says the Gloria. Every instance found is a privileged - Lenten/Passiontide feria (Class3, violet -- {!TE}'s own - [ferial_rank], RG25) carrying exactly one commemoration of an - impeded Class3 saint, colitur reading [gloria]=false (the ferial - Mass on its own) where the Ordo reads [true]. *) + (* NOT a Gloria defect (CORRECTED, l5-f3-readjudication task, + 2026-08-22 -- data/ef/expected-divergences-lms.sexp's own L5 has + the full account, including the RG 431(b)/n.302(b) hypothesis this + comment used to state as settled and RG 303(b)'s own "dici potest + tantum si occurrit dies liturgicus IV classis", which prohibits + 302(b) on exactly these THIRD-class privileged ferias). Every + instance is a privileged Lenten/Passiontide feria (Class3, violet + -- {!TE}'s own [ferial_rank], RG25) carrying exactly one + commemoration of an impeded Class3 saint, colitur reading + [gloria]=false (the ferial Mass, correctly, per the 1962 core) + where the Ordo reads [true] (the LMS Ordo follows the 2020 decree + Cum Sanctissima, colitur excludes it by binding design, CLAUDE.md + decision 2) -- an OCCURRENCE difference between two different, + both genuine, calendars, not a rule dispute. Predicate kept AS A + MATCHER (the 16-date population is unchanged); only the citation + explaining WHY it is allow-listed was wrong. *) (not c.c_gloria) && Option.value o.gloria ~default:false && c.c_has_commemoration && c.c_rank = V.Class3 in let is_l6_rogation_colour (o : ordo_row) (c : colitur_row) = diff --git a/tools/extract_fiuv_ordo.ml b/tools/extract_fiuv_ordo.ml index c9688a7..26f5b16 100644 --- a/tools/extract_fiuv_ordo.ml +++ b/tools/extract_fiuv_ordo.ml @@ -68,6 +68,40 @@ extract_lms_ordo.ml's own header describes for "V Mass of BVM" being a substring of "IV Mass of BVM". + 5. A WHOLE-SECOND-OFFICE TRAP, found and defended against + (celebrant-rubrics-phase1 Phase 2 correction, 2026-08-22, closing + data/ef/expected-divergences-fiuv.sexp's own F3): six real days + print BOTH a strict-1962 reading (a privileged Lenten/Passiontide + feria, saint reduced to a commemoration, "Off. feriale") AND, after + a literal separator token, a SECOND, complete alternative office + (the same saint kept outright under the 2020 decree Cum + Sanctissima, "Off. ordinarium", with its OWN "Ad Mat. ... Te Deum" + lessons). The separator is an en-dash, "VEL" (Latin "or"), another + en-dash, glued by pdftotext into ONE token with no internal spaces + -- "\xe2\x80\x93VEL\xe2\x80\x93" ("VEL" wrapped in en-dashes) -- + confirmed by direct byte inspection of the raw dump, NOT the same + shape as [extract_missa_fields]'s own "Vel"+"Missa" two-token + boundary above (a narrower "choice of Mass formulary within the + SAME office" marker, e.g. a Common vs a Proper Mass for one saint). + [extract_missa_fields]'s own Gloria/Credo/praef span happened to + stay correctly bounded to the PRIMARY office on all six real + instances even before this fix, because a Vespers line ("VESPER..." + -- already one of its own boundary tokens) always intervenes before + the separator in this corpus; [extract_te_deum] had NO such + protection at all -- it scans the WHOLE block's own text for "Ad + Mat." unbounded, so on these six days (whose PRIMARY office states + no "Ad Mat." of its own at all -- an ordinary privileged feria's + Matins needs no special note) it read the SECOND office's own "Ad + Mat. ... Te Deum." instead, manufacturing a same-day contradiction + that F3 first recorded as "colitur's own possible gap". [split_at_alt_office] + below cuts every block's own token array at this separator BEFORE + any field extraction runs, so every extractor now reads the PRIMARY + office only; the alternative is captured, not discarded, in its own + [alt_te_deum] field (the row type's own comment has the full + account of why only this one field, not a parallel alt_gloria/ + alt_credo/alt_class -- those three were never wrong, so widening + them now would be undirected scope creep, not a fix). + Usage: pdftotext -layout docs/research/ordo/fiuv-ordo-2025-2026.pdf /tmp/fiuv.txt dune exec tools/extract_fiuv_ordo.exe -- /tmp/fiuv.txt \ @@ -84,15 +118,46 @@ let die fmt = Printf.ksprintf (fun s -> prerr_endline ("extract_fiuv_ordo: " ^ s reasoning extract_lms_ordo.ml's own header already gives. *) type row = { date : string; (** ISO-8601 *) - class_ : string option; (** raw, e.g. "III cl.", "III cl. (Priv.)", "I cl." -- [None] only if genuinely unparseable *) - title : string; (** the day-start line's own text before the class marker *) - te_deum : bool option; (** [None] only if neither "Te Deum" nor "non dicitur Te Deum" is found *) - gloria : bool option; - credo : bool option; + class_ : string option; (** raw, e.g. "III cl.", "III cl. (Priv.)", "I cl." -- [None] only if genuinely unparseable, read off the PRIMARY office alone *) + title : string; (** the day-start line's own text before the class marker, PRIMARY office alone *) + te_deum : bool option; (** [None] only if neither "Te Deum" nor "non dicitur Te Deum"/"sine Te Deum" is found WITHIN THE PRIMARY OFFICE (see [split_at_alt_office]) *) + gloria : bool option; (** PRIMARY office *) + credo : bool option; (** PRIMARY office *) praef : string option; (** raw trailing text after "praef." within the primary Mass clause -- CAPTURED, NOT VALIDATED *) + alt_te_deum : bool option; + (** the SECOND, Cum-Sanctissima-alternative office's own Te Deum + status, when this day prints one (see [split_at_alt_office]'s + own citation) -- [None] both when the day has no such + alternative at all (394 of 400 real days) AND when it has one + but that alternative's own text doesn't state Te Deum either + (never observed live: on all six real instances the alternative + states it unnegated). Captured rather than discarded because a + FUTURE Cum-Sanctissima overlay (CLAUDE.md's own binding + decision 2 -- an addition, never core) would have exactly this + shape to compare against; not compared by anything in this + project yet. Deliberately NOT joined by an [alt_gloria]/ + [alt_credo]/[alt_class] -- see [split_at_alt_office]'s own + citation for why only this one field was ever wrong. *) } [@@deriving sexp] +(* The literal separator between a day's PRIMARY (strict 1962) office and + a printed SECOND, Cum-Sanctissima-2020 alternative -- see the module + header's own point 5 for the full account of the bug this closes + (data/ef/expected-divergences-fiuv.sexp's own F3) and why it is a + DIFFERENT token from [extract_missa_fields]'s own "Vel"+"Missa" + two-token boundary. Exactly 6 occurrences in the whole corpus, + confirmed by direct grep of the raw pdftotext dump -- all 6 on the + exact dates F3 named (2026-03-06/07/09/12/21/24). *) +let alt_office_marker = "\xe2\x80\x93VEL\xe2\x80\x93" + +let split_at_alt_office tokens = + let n = Array.length tokens in + let rec go i = if i >= n then None else if tokens.(i) = alt_office_marker then Some i else go (i + 1) in + match go 0 with + | None -> (tokens, None) + | Some i -> (Array.sub tokens 0 i, Some (Array.sub tokens (i + 1) (n - i - 1))) + (* --- tiny hand-rolled helpers, no Str/regex ------------------------------ *) let split_ws s = @@ -366,6 +431,29 @@ let extract_missa_fields tokens = let rec go i = if i >= n then n else if tokens.(i) = "Vel" && i + 1 < n && tokens.(i + 1) = "Missa" then i + (* A THIRD, narrower alternate-Mass marker, found while auditing + for the "-VEL-" trap above (celebrant-rubrics-phase1 Phase 2 + correction, 2026-08-22): "Vel (sec. decretum <>) + Missa ..." offers an alternate MASS FORMULARY under the 2020 + decree Cum Sanctissima WITHIN the same single printed office + (a narrower thing than [split_at_alt_office]'s own full + second-office split above -- there is no second "Ad Mat." set + of lessons here, just a second Mass choice). Checked against + the raw dump directly: 20 occurrences, ALL 20 of the + capitalised "Vel" + open-paren shape, zero false positives + (the ordinary lower-case "vel" conjunction, e.g. "praef. + comm. vel de Martyribus", never starts with an open-paren + token, so this check never fires on it). Every one of the 20 + real days already restates Gloria/Credo explicitly BEFORE + reaching this marker, so this was NEVER a live divergence + (confirmed by a direct diff of every field this fixture + compares, before and after this hardening: zero rows + changed) -- added defensively, so a FUTURE year whose + primary Mass clause happens not to restate Gloria/Credo + before this marker cannot silently read the Cum-Sanctissima + alternative's own value instead, the identical failure shape + as the "-VEL-" bug above, just not yet observed live here. *) + else if tokens.(i) = "Vel" && i + 1 < n && has_prefix ~prefix:"(" tokens.(i + 1) then i else if has_prefix ~prefix:"VESPER" tokens.(i) then i else go (i + 1) in @@ -475,12 +563,20 @@ let () = dropped before field extraction, kept for nothing (the day number is already known from [b_day]). *) let content = if Array.length tokens > 0 then Array.sub tokens 1 (Array.length tokens - 1) else tokens in - let class_ = extract_class content in - let title = extract_title content in - let full_text = String.concat " " (Array.to_list content) in + (* Cut at the "–VEL–" alternative-office boundary, if this day has + one, BEFORE any field extraction -- see [split_at_alt_office]'s + own citation. Every field below now reads the PRIMARY office + only; [alt_te_deum] alone also reads the second, when present. *) + let primary, alt = split_at_alt_office content in + let class_ = extract_class primary in + let title = extract_title primary in + let full_text = String.concat " " (Array.to_list primary) in let te_deum = extract_te_deum full_text in - let gloria, credo, praef = extract_missa_fields content in - { date = Date.to_iso8601 date; class_; title; te_deum; gloria; credo; praef }) + let alt_te_deum = + match alt with None -> None | Some alt_tokens -> extract_te_deum (String.concat " " (Array.to_list alt_tokens)) + in + let gloria, credo, praef = extract_missa_fields primary in + { date = Date.to_iso8601 date; class_; title; te_deum; gloria; credo; praef; alt_te_deum }) blocks in let missing_class = List.filter (fun r -> r.class_ = None) rows in @@ -517,6 +613,22 @@ let () = | None -> die "characterisation probe FAILED: %s (%s) -- no row extracted for this date at all" d desc) probes; Printf.printf "extract_fiuv_ordo: all %d characterisation probes confirmed\n" (List.length probes); + (* Second characterisation probe, same discipline: the "–VEL–" + alternative-office split (module header point 5) must fire on + EXACTLY these six dates, no more, no fewer -- a hard [die], not a + printed claim, so a future re-extraction against a re-flowed dump + silently gaining or losing an instance fails loudly rather than + quietly changing F3's own population. *) + let alt_office_dates = List.filter_map (fun r -> if r.alt_te_deum <> None then Some r.date else None) rows in + let expected_alt_office_dates = + [ "2026-03-06"; "2026-03-07"; "2026-03-09"; "2026-03-12"; "2026-03-21"; "2026-03-24" ] + in + if List.sort String.compare alt_office_dates <> expected_alt_office_dates then + die "alt-office-split characterisation probe FAILED: expected exactly %s, got %s" + (String.concat ", " expected_alt_office_dates) + (String.concat ", " (List.sort String.compare alt_office_dates)); + Printf.printf "extract_fiuv_ordo: alt-office-split characterisation probe confirmed (%d dates)\n" + (List.length expected_alt_office_dates); let probe_lines = String.concat "\n" (List.map @@ -542,6 +654,9 @@ let () = let credo_false = List.length (List.filter (fun r -> r.credo = Some false) rows) in let te_deum_true = List.length (List.filter (fun r -> r.te_deum = Some true) rows) in let te_deum_false = List.length (List.filter (fun r -> r.te_deum = Some false) rows) in + let alt_te_deum_true = List.length (List.filter (fun r -> r.alt_te_deum = Some true) rows) in + let alt_te_deum_false = List.length (List.filter (fun r -> r.alt_te_deum = Some false) rows) in + let alt_te_deum_none = List.length (List.filter (fun r -> r.alt_te_deum = None) rows) in let header = Printf.sprintf {|; %s -- Witnesses task (2026-08-22-colitur- @@ -637,15 +752,97 @@ let () = ; below are what this fixture actually asserts, not a forced match to ; the brief's approximate figures. ; +; 5. THE ALTERNATIVE-OFFICE TRAP (celebrant-rubrics-phase1 Phase 2 +; correction, 2026-08-22, closing F3): six real days print BOTH a +; strict-1962 reading and a complete SECOND office (the same saint +; kept outright under the 2020 decree Cum Sanctissima), separated by +; a literal "-VEL-" token. [extract_te_deum] used to scan the WHOLE +; block unbounded, so on these six days -- whose PRIMARY office states +; no "Ad Mat." of its own -- it silently read the SECOND office's own +; Te Deum instead, manufacturing a same-day contradiction with colitur +; that F3 first recorded as "colitur's own possible gap". Every field +; now reads the PRIMARY office only (module header point 5 has the +; full account); the alternative is captured, not discarded, in its +; own [alt_te_deum] field. Confirmed to fire on EXACTLY six dates by a +; hard characterisation probe (this run's own output, above), not +; merely asserted here. +; ; MEASURED DISTRIBUTION (this extraction, not the brief's figures): Gloria ; true=%d false=%d unresolved=%d; Credo true=%d false=%d unresolved=%d; -; Te Deum true=%d false=%d unresolved=%d. +; Te Deum true=%d false=%d unresolved=%d; alt Te Deum (the six "-VEL-" +; Cum Sanctissima alternatives, point 5 above) true=%d false=%d none=%d +; (a day contributes to "none" here either because it has no "-VEL-" +; alternative at all -- 394 of 400 -- or, for a day that does, because +; that alternative's own text doesn't state Te Deum either; not +; distinguished by this one count). +; +; FIX HISTORY (fixed text, HISTORICAL counts from the run that found each +; bug, not re-verified live by every later run -- this section exists so +; regenerating this fixture from a fresh pdftotext dump, which rewrites +; this whole header from the template, does not silently erase either +; finding; earlier this header carried the first entry below as a +; hand-appended note that a regeneration between then and now had +; already dropped once): +; +; 1. RE-EXTRACTED (celebrant-rubrics-phase1 Phase 2, 2026-08-22): the FIRST +; extraction's own Te Deum parser recognised only ONE of the source's two +; negative phrasings ("non dicitur Te Deum") -- "sine Te Deum" (how the +; source actually negates a SUNDAY's own Te Deum, among others) fell +; through to a bare "Te Deum" substring match and was wrongly read +; [true]. Found by hand, comparing the raw pdftotext dump against this +; fixture's own values directly, not by any coverage check (both counted +; the same 127 unresolved rows before and after). Fixed in +; tools/extract_fiuv_ordo.ml's own [extract_te_deum] (see its own +; citation); this fixture re-extracted from the SAME pdftotext dump +; (SHA-256 of the source PDF unchanged, above). 24 of 400 rows changed, +; every one Te Deum true->false, every one independently confirmed +; against the raw text: true 231->207, false 42->66, unresolved 127 +; unchanged. See lib/rites/rite_ef/rubrics_ef.ml's own [te_deum] header +; (237(a)'s comment) for the full account of what this corrected, and +; the .superpowers task report for the complete before/after date list. +; +; 2. RE-EXTRACTED (celebrant-rubrics-phase1 Phase 2 correction, 2026-08-22): +; module header point 5 and CHARACTERISATION point 5 above have the +; full account of the "-VEL-" alternative-office bug this closes +; (data/ef/expected-divergences-fiuv.sexp's own F3). This fixture +; re-extracted from the SAME pdftotext dump (SHA-256 of the source PDF +; unchanged, above). 6 of 400 rows changed, every one Te Deum +; true->unresolved (2026-03-06/07/09/12/21/24), every one independently +; confirmed against the raw text: Te Deum true 207->201 (this run's own +; unresolved count went 127->133, consistent with those same 6 rows). +; Gloria/Credo/class_/title/praef are UNCHANGED on all 400 rows -- +; those fields were already correctly bounded to the primary office +; before this fix (a Vespers-line token always intervened before the +; "-VEL-" separator on all six real instances), confirmed by a direct +; diff of the fixture before and after, not merely by argument. +; +; 3. RE-EXTRACTED (celebrant-rubrics-phase1 same correction, defensive +; hardening, 2026-08-22): auditing for the SAME trap elsewhere (the +; task brief's own item 5) found a THIRD, narrower alternate-Mass +; marker, "Vel (sec. decretum <>) Missa ...", offering a +; Cum-Sanctissima Mass FORMULARY choice within a single office +; (unlike point 5 above, no second "Ad Mat." set of lessons -- a +; narrower thing than a full alternate office). 20 occurrences in the +; whole corpus, confirmed by direct grep; on all 20, Gloria/Credo were +; ALREADY stated before reaching this marker, so this was NEVER a +; live divergence for those two fields (confirmed by this same diff: +; 0 Gloria/Credo/class_/title/alt_te_deum rows changed). [praef] +; alone changed on 20 of 400 rows (its own "rest of the primary +; clause" capture no longer runs past this marker into the +; alternative's own text) -- harmless in itself ([praef] is +; documented CAPTURED, NOT VALIDATED, compared by nothing), but added +; as a defensive boundary in [extract_missa_fields] so a FUTURE year +; whose primary clause does not restate Gloria/Credo before this +; marker cannot silently read the alternative's own value instead -- +; the identical failure shape as point 2 above, closed before it was +; ever observed live rather than after. |} dest pdf_base pdf_base pdf_sha (today ()) pdf_base pdf_base dest (List.length rows) (match rows with r :: _ -> r.date | [] -> "?") (match List.rev rows with r :: _ -> r.date | [] -> "?") probe_lines (List.length probes) gloria_true gloria_false (List.length missing_gloria) credo_true credo_false - (List.length missing_credo) te_deum_true te_deum_false (List.length missing_te_deum) + (List.length missing_credo) te_deum_true te_deum_false (List.length missing_te_deum) alt_te_deum_true + alt_te_deum_false alt_te_deum_none in let body = Sexplib.Sexp.to_string_hum ~indent:2 (sexp_of_list sexp_of_row rows) in let oc = open_out dest in -- cgit v1.3