diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-13 17:09:27 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-13 17:09:27 +0200 |
| commit | dce208f57cfeeee0715cf35389d37e7ce98227ae (patch) | |
| tree | 9870e58df161646d71c2f08e5de7f4eefda1434e /test/test_precedence_ef.ml | |
| parent | d5df5e79c731ac7f7f89969c0cafe564fdc6e8ab (diff) | |
| download | colitur-dce208f57cfeeee0715cf35389d37e7ce98227ae.tar.gz colitur-dce208f57cfeeee0715cf35389d37e7ce98227ae.zip | |
fix(ef): RG 112(d) excludes a same-BVM commemoration (fix round 1, F1)
The BVM Saturday Office is itself "de B. Maria Virg."; RG 112(d) (Caput
XVI, "De Commemorationibus") excludes another commemoration whose own
oration invokes the SAME BVM's intercession. our-lady-of-mt-carmel (16
July, Commemoration_only) was wrongly admitted as an ordinary
commemoration alongside the Office on every 16-July-Saturday -- its own
collect explicitly invokes "her" (eius) patronage, and both photographic
scans print a rubric anticipating exactly this collision (an either/or
of Mass texts, not a joint commemoration).
Precedence_ef gains marian_slugs (a closed, hand-verified list of
sanctoral slugs that are themselves feasts of the BVM) and is_bvm_office
(true for subject = Bvm OR a marian_slugs member -- the disjunction is
load-bearing: the Office is identified only by subject, since its own
slug is deliberately reused from the ordinary ferial fallback; Mt Carmel
is identified only by the list, since its own subject tag is Saint, not
Bvm). disposition gains a new branch, checked before the pre-existing
Commemoration_only catch-all, since the one live witness is
Commemoration_only and that branch's own "always Commemorate" had no
exception for this shape.
Checked exhaustively against every Marian-named sanctoral entry: only
Commemoration_only-status entries can ever reach this branch live (a
Feast-status one always wins outright instead of losing). Of the two
such entries in the data, only Mt Carmel is reachable --
our-lady-of-ransom (24 September) is provably unreachable: 24 September
falling on a Saturday forces 1 September to a Thursday, which by
construction makes 24 September the September Ember Saturday, Class2,
every time, not a sampled coincidence.
Re-measured against the full pre-change binary: the original 75,853-day
blast radius is unchanged in total, splitting into 74,633 colour-only +
1,220 colour+comms (16-July Saturdays). Mutation-tested: exactly 3 new
tests redden, nothing else.
Diffstat (limited to 'test/test_precedence_ef.ml')
| -rw-r--r-- | test/test_precedence_ef.ml | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/test/test_precedence_ef.ml b/test/test_precedence_ef.ml index 475ae6e..6f8b5b5 100644 --- a/test/test_precedence_ef.ml +++ b/test/test_precedence_ef.ml @@ -805,6 +805,52 @@ let disposition_cases = "conversion-of-st-paul", cand ~origin:P.Sanctoral ~rank:V.Class2 ~subject:Sub.Lord ~layer:PE.universal_layer "commemoration-of-the-baptism-of-the-lord", + "Commemorate(Ordinary)" ); + (* RG112(d), fix round 1 (coordinator finding F1) -- PE.marian_slugs's + own citation has the full argument (both scans, including the 16 + July "Missa dici potest aut ... aut ..." rubric). [of_temporal] on a + REAL 16-July-Saturday (2033) sources the winner from + Temporal_ef.temporal's own real output, the same review-finding-3 + discipline this file's Ember/vigil rows already use -- not a + hand-typed slug/subject pair that could silently drift from what the + office actually builds. The loser is the real data/ef/sanctoral.sexp + entry, [Commemoration_only], the exact shape that made this branch + need to be checked BEFORE the Commemoration_only catch-all. *) + ( "RG112(d): the BVM Saturday Office excludes a commemoration invoking \ + the SAME BVM's intercession -- Omit, not Commemorate (Mt Carmel, \ + 16 July 2033, a real otherwise-unoccupied Saturday)", + of_temporal (mk 2033 7 16), + cand ~origin:P.Sanctoral ~rank:V.Class3 ~status:Cel.Commemoration_only ~subject:Sub.Saint + ~layer:PE.universal_layer "our-lady-of-mt-carmel", + "Omit" ); + (* Conjunct 1/2, LOSER identity: an ORDINARY Commemoration_only saint + NOT on PE.marian_slugs must still reach the ordinary commemorate + flow even when the winner is the BVM Saturday Office -- proves + RG112(d) excludes a specific same-BVM collision, not every + commemoration the office happens to outrank (the real live shape, + 1 August, Holy Machabees, PE.marian_slugs's own comment). *) + ( "RG112(d) does NOT fire when the LOSER is not a Marian commemoration \ + -- an ordinary saint stays Commemorate(Ordinary) even under the BVM \ + Saturday Office (1 August 2026, Holy Machabees)", + of_temporal (mk 2026 8 1), + cand ~origin:P.Sanctoral ~rank:V.Class3 ~status:Cel.Commemoration_only ~subject:Sub.Saint + ~layer:PE.universal_layer "holy-machabees", + "Commemorate(Ordinary)" ); + (* Conjunct 2/2, WINNER identity: an ordinary (non-Bvm, non-Marian- + titled) winner must not exclude Mt Carmel either -- RG112(d) is + keyed on the WINNER also being "de B. Maria Virg.", not merely on + the loser's own identity. SYNTHETIC: no live date has an ordinary + Class3 saint winning outright while Mt Carmel also loses that same + day (Mt Carmel's own fixed date, 16 July, has no other real + sanctoral entry to construct this from) -- proves the conjunct is + real, not merely untested, the same "SYNTHETIC" discipline the + RG112(a) rows above already use for their own second conjunct. *) + ( "SYNTHETIC: RG112(d) does NOT fire when only the LOSER is Marian -- \ + an ordinary winner leaves Mt Carmel Commemorate(Ordinary)", + cand ~origin:P.Sanctoral ~rank:V.Class3 ~subject:Sub.Saint ~layer:PE.universal_layer + "ef-synthetic-ordinary-winner", + cand ~origin:P.Sanctoral ~rank:V.Class3 ~status:Cel.Commemoration_only ~subject:Sub.Saint + ~layer:PE.universal_layer "our-lady-of-mt-carmel", "Commemorate(Ordinary)" ) ] @@ -1507,6 +1553,32 @@ let test_bvm_saturday_loses_to_a_real_feast_end_to_end () = [ ("ef-time-after-pentecost-15-saturday", "omitted: yielded to a higher day") ] (List.map (fun (c, reason) -> (S.to_string c.P.cel.Cel.slug, reason)) resolution.P.omitted) +(* RG112(d), fix round 1 (coordinator finding F1) -- PE.marian_slugs's own + citation has the full argument. End-to-end through the REAL pipeline + (PE.band, PE.disposition AND PE.admit together): 16 July 2033, a real + otherwise-unoccupied Saturday, with the real data/ef/sanctoral.sexp + [our-lady-of-mt-carmel] entry as the day's only competing candidate. + Before this fix, [resolution.P.commemorations] held + [our-lady-of-mt-carmel:Ordinary] (confirmed live against real 2005/2033 + `colitur day` output before this fix existed); after, it is empty and + Mt Carmel is reported omitted, not silently dropped. *) +let test_bvm_saturday_excludes_mt_carmel_end_to_end () = + let date = mk 2033 7 16 in + let day_ctx = ctx date in + let bvm_saturday = of_temporal date in + let mt_carmel = + cand ~origin:P.Sanctoral ~rank:V.Class3 ~status:Cel.Commemoration_only ~subject:Sub.Saint + ~layer:PE.universal_layer "our-lady-of-mt-carmel" + in + let resolution = P.resolve real_rules day_ctx ~temporal:bvm_saturday ~sanctoral:[ mt_carmel ] in + Alcotest.(check string) "the BVM Saturday office is observed" + "ef-time-after-pentecost-5-saturday" (S.to_string resolution.P.observed.P.cel.Cel.slug); + Alcotest.(check (list string)) "Mt Carmel is NOT commemorated (RG112(d))" [] + (List.map (fun (c, _) -> S.to_string c.P.cel.Cel.slug) resolution.P.commemorations); + Alcotest.(check (list (pair string string))) "Mt Carmel is reported omitted, not silently dropped" + [ ("our-lady-of-mt-carmel", "omitted: yielded to a higher day") ] + (List.map (fun (c, reason) -> (S.to_string c.P.cel.Cel.slug, reason)) resolution.P.omitted) + (* RG 16(a) (register ยง6.0) reached end-to-end through the REAL pipeline ([PE.band], [PE.disposition] AND [PE.admit] together, not any one of them in isolation as this file's own hand-tagged rows test them @@ -1989,6 +2061,10 @@ let suite = (2026-09-12)" `Quick test_bvm_saturday_loses_to_a_real_feast_end_to_end; Alcotest.test_case + "RG112(d), fix round 1 (F1): the BVM Saturday office excludes Mt Carmel, end-to-end \ + (2033-07-16)" + `Quick test_bvm_saturday_excludes_mt_carmel_end_to_end; + Alcotest.test_case "RG16(a): a Feast of the Lord suppresses the Sunday's own commemoration entirely, \ end-to-end (2028-08-06)" `Quick test_rg16a_lord_feast_suppresses_sunday_end_to_end; |
