From 01219763c87c84175fcfa469882c6f30a56720d5 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 18 Aug 2026 11:26:04 +0200 Subject: fix(ef): Good Friday is black, not violet (RG 128(b), RG 132) RG 128(b)'s own exception list, transcribed in the rules register and primary-source-verified since Task 16, excepts "Actione liturgica feria VI in Passione et Morte Domini usque ad Communionem exclusive" from the violet that otherwise runs from Septuagesima to the Easter Vigil. RG 132 assigns black there. The register recorded this as an acknowledged gap rather than a disputed reading -- the code comment beside the Holy Thursday exception says so in as many words -- and it is closed here. Found by two witnesses outside the Divinum Officium lineage that colitur, lectio and missalemeum all share: O'Connell, The Celebration of Mass, 4th ed. (1964), revised throughout to the Codex Rubricarum (1960) and the 1962 Missal, and a published 1962 Ordo. Both say black. So does missalemeum's own colour set, which orders the day "bv". The rubric is per-action ("usque ad Communionem exclusive") and the model emits one colour per day; black is the day's principal one, the same acknowledged limit RG 126's Palm Sunday blessing already carries. Blast radius: one day per year, colour only, across the whole 1583-9999 domain. Two golden pins re-pinned. Good Friday's 46 differential rows leave C23 for a new C36 gated on the exact triple [First_f; Gospel_f; Colour_f], so C23's own exact-pair gate still means what its note says for its remaining four days: 184 + 46 = 230, no residue, both counts from the comparator rather than hand-counted. --- test/test_differential.ml | 12 ++++++++++++ test/test_golden.ml | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/test_differential.ml b/test/test_differential.ml index c9173d6..c121d91 100644 --- a/test/test_differential.ml +++ b/test/test_differential.ml @@ -893,6 +893,16 @@ let holy_week_slugs = [ "ef-passiontide-2-monday"; "ef-passiontide-2-tuesday"; "ef-passiontide-2-wednesday"; "ef-passiontide-2-thursday"; "ef-passiontide-2-friday"; "ef-passiontide-2-saturday" ] +(* C36 (ef-oconnell-rubrics): Good Friday alone, split out of C23's own + six-slug population because its diff SET grew a third member. RG 128(b) + excepts "Actione liturgica feria VI in Passione et Morte Domini usque ad + Communionem exclusive" from Passiontide's violet and RG 132 assigns black + there -- recorded in register ยง3b as an acknowledged gap since Task 16 and + closed on this branch. lectio, which has no Holy Week propers at all (C23's + own note), keeps showing Passion week's violet, so colour now differs on + this ONE of C23's six days in addition to the two citation fields. *) +let good_friday_slug = "ef-passiontide-2-friday" + (* 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 @@ -1272,6 +1282,8 @@ let layer_c_reason (l : row) (c : row) diffs = and now RG 309(a)'s Mass for it, which answers before step 3's walkback is reached. They still differ from lectio, but for C17's cause, and are 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 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" diff --git a/test/test_golden.ml b/test/test_golden.ml index a073c52..876e3de 100644 --- a/test/test_golden.ml +++ b/test/test_golden.ml @@ -329,7 +329,7 @@ let test_annunciation_transfer_inside_holy_week_2016 () = actually reaches a live case" for exactly this reason. *) check ~msg:"2016-03-25 Good Friday: Triduum outranks the Annunciation (RG91 entry 2 > 11), no commemoration" 2016 3 25 - "2016-03-25 friday season=passiontide week=2 slug=ef-passiontide-2-friday rank=class-1 colour=violet subject=lord \ + "2016-03-25 friday season=passiontide week=2 slug=ef-passiontide-2-friday rank=class-1 colour=black subject=lord \ name_la=Feria VI in Passione et Morte Domini comms=[] in=- out=[annunciation-of-the-blessed-virgin-mary->2016-04-04]"; (* The general RG 96 walk from 26 March would still be inside the Triduum, the Easter octave (all I class, entry 2/10) -- carrying the feast PAST @@ -524,7 +524,7 @@ let test_holy_thursday_is_white_2026 () = name_la=Feria V in Cena Domini comms=[] in=- out=[]"; check ~msg:"2026-04-03 Good Friday: back to violet (RG128) -- Thursday's white is a one-day exception" 2026 4 3 - "2026-04-03 friday season=passiontide week=2 slug=ef-passiontide-2-friday rank=class-1 colour=violet subject=lord \ + "2026-04-03 friday season=passiontide week=2 slug=ef-passiontide-2-friday rank=class-1 colour=black subject=lord \ name_la=Feria VI in Passione et Morte Domini comms=[] in=- out=[]" (* ------------------------------------------------------------------ *) -- cgit v1.3