diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-18 11:43:13 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-18 11:43:13 +0200 |
| commit | 9a34f7d8a60ef390a98011ad7ee7cbd2ad4a3f4e (patch) | |
| tree | 3b3d4140d0b3feb005a1bf36b52458b662944e3c /test | |
| parent | cb07b035170eb22e0cff30be6449c74af897cda1 (diff) | |
| parent | 0281a846ac7c22d22990a6664a37205930a94b7d (diff) | |
| download | colitur-9a34f7d8a60ef390a98011ad7ee7cbd2ad4a3f4e.tar.gz colitur-9a34f7d8a60ef390a98011ad7ee7cbd2ad4a3f4e.zip | |
merge: EF rubrical corrections from O'Connell and a published 1962 Ordo
Three colour fixes, each argued from the Missal and each invisible to every
validation layer that shares colitur's own data lineage.
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_differential.ml | 22 | ||||
| -rw-r--r-- | test/test_golden.ml | 35 | ||||
| -rw-r--r-- | test/test_oracle.ml | 31 |
3 files changed, 85 insertions, 3 deletions
diff --git a/test/test_differential.ml b/test/test_differential.ml index c9173d6..849bde4 100644 --- a/test/test_differential.ml +++ b/test/test_differential.ml @@ -893,6 +893,25 @@ 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" + +(* 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 @@ -1272,6 +1291,9 @@ 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 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" diff --git a/test/test_golden.ml b/test/test_golden.ml index a073c52..33ca362 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=[]" (* ------------------------------------------------------------------ *) @@ -1315,9 +1315,38 @@ let test_rogation_wednesday_yields_to_a_feast_2026 () = "2026-05-13 wednesday season=paschaltide week=6 slug=ef-ascension-vigil rank=class-2 colour=white \ subject=temporal name_la=- comms=[robert-bellarmine:ordinary] in=- out=[]" +(* RG 128, transcribed in docs/research/rules-register.md §3b: violet is used + for "II/III-class vigils outside Paschaltide". Two of colitur's five vigils + disagreed with that rule until the ef-oconnell-rubrics branch -- the + Assumption's (II class, 14 August) was White and St Lawrence's (III class, + 9 August) was Red. Both are outside Paschaltide, so both are violet. + + O'Connell, The Celebration of Mass 4th ed. (1964), section 4(c) states the + same rule and its footnote 169 names the sole exception -- "the only vigil + of II class within Eastertide is that of the Ascension and its colour is + white" -- which colitur already emits correctly (ef-ascension-vigil, white, + pinned by the two Rogation Wednesday cases just above). + + Pinned in years where each vigil is actually OBSERVED rather than impeded: + 9 August 2025 is a Saturday and 14 August 2025 a Thursday, both checked + with `date -d`. In 2026, 9 August is a Sunday and the vigil never appears. *) +let test_vigil_of_st_lawrence_is_violet_2025 () = + check ~msg:"RG 128: III-class vigil outside Paschaltide is violet, not red" 2025 8 9 + "2025-08-09 saturday season=time-after-pentecost week=8 slug=vigil-of-st-lawrence \ + rank=class-3 colour=violet subject=saint name_la=- comms=[romanus:ordinary] in=- out=[]" + +let test_vigil_of_the_assumption_is_violet_2025 () = + check ~msg:"RG 128: II-class vigil outside Paschaltide is violet, not white" 2025 8 14 + "2025-08-14 thursday season=time-after-pentecost week=9 slug=vigil-of-the-assumption \ + rank=class-2 colour=violet subject=saint name_la=- comms=[eusebius-confessor:ordinary] in=- out=[]" + let suite = ( "golden pins (known-tricky years)", - [ Alcotest.test_case "Easter extreme: 1598 earliest (22 Mar, Gauss-verified)" `Quick + [ Alcotest.test_case "RG128: St Lawrence's vigil is violet (2025)" `Quick + test_vigil_of_st_lawrence_is_violet_2025; + Alcotest.test_case "RG128: the Assumption's vigil is violet (2025)" `Quick + test_vigil_of_the_assumption_is_violet_2025; + Alcotest.test_case "Easter extreme: 1598 earliest (22 Mar, Gauss-verified)" `Quick test_easter_extreme_1598; Alcotest.test_case "Easter extreme: 1666 latest (25 Apr, Gauss-verified)" `Quick test_easter_extreme_1666; diff --git a/test/test_oracle.ml b/test/test_oracle.ml index 5177716..129c43b 100644 --- a/test/test_oracle.ml +++ b/test/test_oracle.ml @@ -1323,6 +1323,21 @@ let m25_dates = [ "2026-03-09"; "2026-03-24"; "2027-03-01"; "2027-03-16" ] to distinguish this population from a genuinely new, unrelated citation bug on some other Time-after-Pentecost feria): the SAME discipline this file's own header names for every other entry here. *) +(* M29 (ef-oconnell-rubrics) -- RG 128: violet for "vigils of II and III + class outside Paschaltide". The Vigil of St Lawrence (9 August, III class) + and the Vigil of the Assumption (14 August, II class) both qualify; + missalemeum keeps red and white respectively, as lectio and colitur also + did before this branch, because all three descend from Divinum Officium's + data files. This is the one divergence class in the file where the oracle + is not an independent witness against colitur at all -- it is colitur's own + discarded ancestor. See data/ef/expected-divergences.sexp's C37, the same + fix seen from the lectio side, and register 6.20 on the shared lineage. + Spans all three oracle windows. 2026-08-09 is absent because it is a + Sunday that year and the vigil never occurs; checked with `date -d`. *) +let m29_dates = + [ "2026-08-14"; "2027-08-09"; "2027-08-14"; "2035-08-09"; "2035-08-14"; "2038-08-09"; + "2038-08-14" ] + let m26_dates = [ "2026-01-03"; "2026-01-10"; "2026-02-14"; "2026-06-02"; "2026-06-03"; "2026-06-20"; "2026-06-27"; "2026-07-04"; @@ -1477,6 +1492,7 @@ let layer_m_reason (c : colitur_row) (o : oracle_row) diffs = List.mem c.c_date m27_dates && subset diffs [ Observed_identity_unresolved; First_mismatch; Gospel_mismatch ] then Some "M27" + else if List.mem c.c_date m29_dates && subset diffs [ Colour_f ] then Some "M29" else None (* ---------------------------------------------------------------------- *) @@ -1919,6 +1935,17 @@ let classify_2038 (c : colitur_row) (o : oracle_row) diffs = Some "IMPEDED-SUNDAY-COMM (M8's rule, RG 109(a)/111(a))" else if List.mem Comm_identity_unresolved diffs then Some "COMM-IDENTITY-UNRESOLVED (temporal-origin, no English name -- M15's limit)" + (* RG 128 -- the two vigils of II/III class outside Paschaltide whose + colour this branch (ef-oconnell-rubrics) corrected from the values + inherited via lectio from missalemeum's own Divinum Officium data. + Same population as M29 in the 2026-2027 window and C37 in the lectio + differential; named here in this window's own vocabulary. Gated on the + exact date and colour alone, so any other divergence on these days + would still surface. *) + else if + List.mem c.c_date [ "2035-08-09"; "2035-08-14"; "2038-08-09"; "2038-08-14" ] + && diffs = [ Colour_f ] + then Some "VIGIL-COLOUR-RG128 (M29, colitur; see C37)" else None (* COMMEMORATIONS join the live-window comparison (2026-08-18). @@ -2038,6 +2065,10 @@ let test_2038_class_counts () = ("CHRIST-THE-KING-WEEK (M26 shape 2b)", 2); ("CHRISTMAS-MULTI-MASS (M27)", 1); ("COLOUR (M21)", 7); + (* RG 128, ef-oconnell-rubrics: the two vigils of II/III class outside + Paschaltide. 2 of 2 possible -- neither 9 nor 14 August 2038 is a + Sunday, so both vigils are actually observed that year. *) + ("VIGIL-COLOUR-RG128 (M29, colitur; see C37)", 2); ("COMM-NAME-FORM (same entity, different English name)", 2); ("COMM-ONLY-TIE-BREAK (RG-under-determined convention -- register 6.16)", 1); ("JOSEPH-ANNUNCIATION-TRANSFER-ORDER (C14's own collision)", 2); |
