aboutsummaryrefslogtreecommitdiff
path: root/test/test_differential.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 11:36:33 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-18 11:36:33 +0200
commit0281a846ac7c22d22990a6664a37205930a94b7d (patch)
tree3b3d4140d0b3feb005a1bf36b52458b662944e3c /test/test_differential.ml
parent01219763c87c84175fcfa469882c6f30a56720d5 (diff)
downloadcolitur-0281a846ac7c22d22990a6664a37205930a94b7d.tar.gz
colitur-0281a846ac7c22d22990a6664a37205930a94b7d.zip
fix(ef): the Assumption and St Lawrence vigils are violet (RG 128)
RG 128, transcribed in the rules register since 2026-08-11, gives violet to "vigils of II and III class outside Paschaltide". The Vigil of the Assumption (14 August, II class) carried White and the Vigil of St Lawrence (9 August, III class) carried Red. Both are outside Paschaltide, so both are violet. The Ascension's vigil is untouched: it is the one II-class vigil inside Paschaltide and was already correctly white. The rule had been sitting in the register, disagreeing with the shipped data, since before the data was bootstrapped. It was invisible because colitur, lectio and missalemeum all carried the same two wrong colours -- colitur was bootstrapped from lectio, lectio's ini is generated from missalemeum, and missalemeum uses Divinum Officium's data files. Three sources agreeing is one source counted three times, and the differential and the oracle both went green on the shared error. It surfaced only against witnesses outside that tree: a published 1962 Ordo flagged the Assumption's, and O'Connell, The Celebration of Mass 4th ed. (1964), section 4(c) and footnote 169, gave the general rule and with it St Lawrence's, which the Ordo omits entirely. Two golden pins added, in years where each vigil is actually observed rather than impeded. The divergence this creates against every DO-lineage source is cited in both allow-lists: C37 (lectio, 77 rows -- 92 possible minus 15 where the vigil falls on a Sunday) and M29 (missalemeum, 3 rows in 2026-2027 and 2 in each of 2035 and 2038). Both gated on the exact slugs or dates and on colour alone, so any other divergence on those days would still surface. Also recorded, no code change: rose on Gaudete and Laetare stays. RG 131 is permissive ("adhiberi possunt") and the Ordo prints violet, so the colour field carries a permission rather than a requirement on those two Sundays a year -- a decided position now, not an unexamined one.
Diffstat (limited to 'test/test_differential.ml')
-rw-r--r--test/test_differential.ml10
1 files changed, 10 insertions, 0 deletions
diff --git a/test/test_differential.ml b/test/test_differential.ml
index c121d91..849bde4 100644
--- a/test/test_differential.ml
+++ b/test/test_differential.ml
@@ -903,6 +903,15 @@ let holy_week_slugs =
this ONE of C23's six days in addition to the two citation fields. *)
let good_friday_slug = "ef-passiontide-2-friday"
+(* C37 (ef-oconnell-rubrics): RG 128 gives violet to "II/III-class vigils
+ outside Paschaltide". These two carried Red and White respectively --
+ inherited from lectio, which inherited them from missalemeum, which is
+ generated from Divinum Officium. All three agree with each other and
+ disagree with the Missal, so no layer sharing that lineage could see it.
+ The Ascension's vigil is NOT here: it is the one II-class vigil INSIDE
+ Paschaltide and is correctly white already. *)
+let violet_vigil_slugs = [ "vigil-of-st-lawrence"; "vigil-of-the-assumption" ]
+
(* 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
@@ -1284,6 +1293,7 @@ let layer_c_reason (l : row) (c : row) diffs =
filed there. See data/ef/expected-divergences.sexp's own closure note. *)
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 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"