aboutsummaryrefslogtreecommitdiff
path: root/test/test_differential.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 12:11:05 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 12:11:05 +0200
commita6daed7820a97f4032f21964b5b1bb30fe00b36b (patch)
treefa8886ee97dba5a696fb2c7d8e62798f832ed538 /test/test_differential.ml
parentca4287a6e99e14846f3560106156ef2b1c4b8cf2 (diff)
downloadcolitur-a6daed7820a97f4032f21964b5b1bb30fe00b36b.tar.gz
colitur-a6daed7820a97f4032f21964b5b1bb30fe00b36b.zip
fix(ef): ubaldus and didacus are III-class feasts, not commemorations
Both carried rank Class3 with status Commemoration_only, bootstrapped from lectio, which inherits it from missalemeum, which is generated from Divinum Officium. The Missal's own universal calendarium ranks both "III classis" outright, with no commemoration rubric: "S. Ubaldi Ep. et Conf., III classis" (16 May) and "S. Didaci Conf., III classis" (13 November), corroborated in the second scan and in a published 1962 Ordo. Universal by construction, not by assumption: the calendarium carries no "pro aliquibus locis" marker in its 573 lines while the wider Missal carries 79 of them elsewhere. Each saint also has his own Mass entry in the Proprium, which a bare commemoration never has -- a commemoration carries an oration only. Found by auditing ALL 290 fixed-date entries against that calendarium, day by day, anchored on the Roman calends column because the arabic day column is OCR-wrecked and the dominical-letter column vanishes in some months. These two were the only status defects in the whole file. The 15 days the automated pass could not cover were read by hand and all agree. Neither needed a proper authored: each takes its Mass from a Common with only its own Oratio proper, per its own rubric at its own date. ubaldus shares patrick's Common exactly. didacus needed one newly transcribed -- common-of-a-confessor-not-a-bishop-2, the "Altera Missa" Iustus, 1 Cor 4:9-14 and Luke 12:32-34, read independently in both scans, which agree, so the page-image third reading this file's method requires on disagreement was not triggered. Blast radius, full 1583-9999 sweep, every day classified: 13 036. That is 5 564 ubaldus observed, 7 196 didacus observed, and 276 where the Ascension Vigil still wins on 16 May but its single RG 111(c) slot passes from rogation-wednesday to ubaldus -- correct and already pinned, since the Rogation days are the MINOR Litanies and so an ordinary commemoration, which RG 113's table order ranks below a III-class feast. Cited as C38 (70 rows) and M30 (3); C8, C17 and M18 shrink accordingly, each with the reason recorded rather than the count silently adjusted.
Diffstat (limited to 'test/test_differential.ml')
-rw-r--r--test/test_differential.ml18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/test_differential.ml b/test/test_differential.ml
index 849bde4..25a690d 100644
--- a/test/test_differential.ml
+++ b/test/test_differential.ml
@@ -912,6 +912,19 @@ let good_friday_slug = "ef-passiontide-2-friday"
Paschaltide and is correctly white already. *)
let violet_vigil_slugs = [ "vigil-of-st-lawrence"; "vigil-of-the-assumption" ]
+(* C38 (ef-sanctoral-status): `ubaldus` (16 May) and `didacus` (13 November)
+ were promoted from Commemoration_only to Feast on the Missal's own
+ universal calendarium, which ranks both "III classis" outright. lectio
+ inherits the Commemoration_only status from missalemeum, so where colitur
+ now observes the saint, lectio still observes the feria -- hence the slug,
+ rank and both citations differ together. Two exact shapes, not one:
+ 16 May falls in Paschaltide, whose ferial colour is ALREADY white, so no
+ colour difference arises there; 13 November is Time after Pentecost, green,
+ so the white confessor changes it. Both shapes are spelled out rather than
+ collapsed into a subset check, so a colour difference appearing on 16 May
+ (or vanishing on 13 November) would surface as unexplained. *)
+let promoted_feast_slugs = [ "ubaldus"; "didacus" ]
+
(* C26 (task 8, fix round 2, coordinator review, Important): Passion
week's own real Tuesday Mass (tools/bootstrap_lectionary.ml's own
[passion_tuesday_entry] comment has the full Missal citation and both
@@ -1294,6 +1307,11 @@ let layer_c_reason (l : row) (c : row) diffs =
else if String.equal c.slug good_friday_slug && diffs = [ First_f; Gospel_f; Colour_f ] then
Some "C36"
else if List.mem c.slug violet_vigil_slugs && diffs = [ Colour_f ] then Some "C37"
+ else if
+ List.mem c.slug promoted_feast_slugs
+ && (diffs = [ Slug_f; Rank; First_f; Gospel_f ]
+ || diffs = [ Slug_f; Rank; First_f; Gospel_f; Colour_f ])
+ then Some "C38"
else if List.mem c.slug holy_week_slugs && diffs = [ First_f; Gospel_f ] then Some "C23"
else if String.equal c.slug passion_tuesday_slug && diffs = [ First_f; Gospel_f ] then Some "C26"
else if String.equal c.slug advent_ember_sat_slug && diffs = [ First_f; Gospel_f ] then Some "C27"