diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-12 12:17:27 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-12 12:17:27 +0200 |
| commit | cab8b0702b6ba02e1e6293a6e06e77664e1604a1 (patch) | |
| tree | b535f923222e19501bc69740168d92f73a643b52 /test | |
| parent | 04f7521a9143d8888d1e29a3e5c2d60eaae56951 (diff) | |
| download | colitur-cab8b0702b6ba02e1e6293a6e06e77664e1604a1.tar.gz colitur-cab8b0702b6ba02e1e6293a6e06e77664e1604a1.zip | |
data(ef): retag the Purification and Most Holy Name of Mary as BVM, not Lord
Both entries carried (subject Lord) in data/ef/sanctoral.sexp, inherited
unchecked from lectio's own class = lord field. The calendarium says
otherwise: 2 February reads "IN PURIFICATIONE B. MARIAE VIRG." and
12 September reads "Sanctissimi Nominis Mariae" -- both name Mary, not
the Lord, unlike the four genuine Lord entries' own "D. N. I. C."
formula (Precious Blood, Transfiguration, Exaltation of the Holy Cross,
Dedication of the Archbasilica of the Most Holy Saviour), all of which
were checked against the same calendarium and left untouched.
This matters together with RG16(a): applying the rule while the
Purification was still mistagged Lord would have made it outrank an
occurring II-class Sunday and then wrongly suppress that Sunday's own
commemoration under RG16(a) too, the opposite of the intended fix.
Retagged, the Purification no longer bands at RG91 entry 14, so the
Sunday is observed and the Purification survives as its own ordinary
commemoration.
Corrected via a new data/ef/adjustments.sexp overlay (Set_subject Bvm),
the same mechanism that file already uses to suppress vigil-of-christmas
as a bootstrap duplicate, not a hand-edit of sanctoral.sexp itself: that
file's own header asks for edits to go through the generator, and its
SHA-256 provenance covers a byte-faithful mirror of lectio's INI. The
Purification retag changes which day the lectio differential observes on
2 February whenever it falls on a Sunday (six years, 2005-2050); allow-
listed as C12 in data/ef/expected-divergences.sexp, expected_rows derived
independently (date -d <year>-02-02 for each year in range), not
transcribed from a comparator run.
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_differential.ml | 13 | ||||
| -rw-r--r-- | test/test_rite_ef.ml | 40 |
2 files changed, 53 insertions, 0 deletions
diff --git a/test/test_differential.ml b/test/test_differential.ml index a9bdb91..aa75737 100644 --- a/test/test_differential.ml +++ b/test/test_differential.ml @@ -450,6 +450,19 @@ let layer_c_reason (l : row) (c : row) diffs = && subset diffs [ Slug_f; Rank; Colour_f ] then Some "C10" else if String.equal c.slug "ef-passiontide-2-thursday" && diffs = [ Colour_f ] then Some "C11" + (* RG16(a) task (register §6.0 + the sanctoral subject audit, this task's + own report): 2 February on a Sunday. colitur now observes the Sunday + (data/ef/adjustments.sexp retags the Purification `Bvm`, so it no + longer bands at RG 91 entry 14 -- only a Feast of the LORD does); the + Purification survives as its own commemoration, matching the register's + ruling, just not as [c]'s OBSERVED slug here. lectio still tags it + `class = lord` (unretagged upstream) and so still observes it outright. + Matched on [l.slug] (lectio's side), the only side that can show this + literal now -- colitur's own [c.slug] is whichever Sunday family the + date falls in (time-after-epiphany or Septuagesima), not one fixed + literal, unlike [c7]/[c11]'s single-slug tests above. *) + else if String.equal l.slug "purification-of-the-blessed-virgin-mary" && subset diffs [ Slug_f; Colour_f ] + then Some "C12" else None (* ---------------------------------------------------------------------- *) diff --git a/test/test_rite_ef.ml b/test/test_rite_ef.ml index c150a6d..ad9057b 100644 --- a/test/test_rite_ef.ml +++ b/test/test_rite_ef.ml @@ -87,6 +87,44 @@ let test_vigil_of_christmas_suppressed () = Alcotest.(check bool) "vigil-of-christmas appears NOWHERE in the resolved year" false appears_anywhere +(* RG16(a) task (register §6.0 + the sanctoral subject audit, this task's + own report): data/ef/sanctoral.sexp is left untouched (still a faithful + mirror of lectio, subject `Lord` for both entries below -- see + test_sanctoral_ef.ml's own "explicit class = lord" spot-check, which + loads that file WITHOUT applying this overlay and still passes); the + correction lives entirely in data/ef/adjustments.sexp's two [Edit] + directives, the same mechanism [test_vigil_of_christmas_suppressed] + above already proves for a sibling bootstrap defect. This is the ONE + test in the suite that observes the two retags actually take effect + through the real pipeline -- without it, a typo in either directive's + slug (silently a no-op diagnostic, not a hard failure -- Overlay.apply's + own contract) or a reverted adjustments.sexp would leave every other + test green (2 February isn't a Sunday in any golden-pinned year, and + [test_sanctoral_ef.ml] deliberately never applies the overlay). Also + re-verifies the four entries the audit confirmed correct and left + untouched, so a future accidental retag of one of THEM would be caught + here too, not just the two that changed. *) +let test_rg16a_subject_retag_in_effect () = + let layer = real_layer () in + let subject_of slug = + match Layer.find layer (Slug.of_string_exn slug) with + | Some e -> e.Layer.cel.Cel.subject + | None -> Alcotest.failf "slug %s not found in the overlaid layer" slug + in + Alcotest.(check bool) "Purification retagged Bvm (calendarium: \"B. MARIAE VIRG.\")" true + (subject_of "purification-of-the-blessed-virgin-mary" = Subject.Bvm); + Alcotest.(check bool) "Most Holy Name of Mary retagged Bvm (calendarium: \"Nominis Mariae\")" true + (subject_of "most-holy-name-of-mary" = Subject.Bvm); + Alcotest.(check bool) "Precious Blood stays Lord (calendarium: \"D. N. I. C.\") -- audit, not touched" true + (subject_of "precious-blood-of-our-lord-jesus-christ" = Subject.Lord); + Alcotest.(check bool) "Transfiguration stays Lord (calendarium: \"D. N. I. C.\") -- audit, not touched" true + (subject_of "transfiguration-of-our-lord" = Subject.Lord); + Alcotest.(check bool) "Exaltation of the Holy Cross stays Lord -- audit, not touched" true + (subject_of "exaltation-of-the-holy-cross" = Subject.Lord); + Alcotest.(check bool) + "Dedication of the Archbasilica of the Most Holy Saviour stays Lord -- audit, not touched" true + (subject_of "dedication-of-the-archbasilica-of-our-holy-savior" = Subject.Lord) + (* Coordinator review, finding 2, reproduced through the project's OWN extension path (an overlay), the same way the reviewer found it: adding an I-class feast on 25 December (competing against, and losing to, the @@ -255,6 +293,8 @@ let suite = ( "Rite_ef (real data: overlay-in-effect, domain-ceiling)", [ Alcotest.test_case "the overlay suppression is observably in effect" `Quick test_vigil_of_christmas_suppressed; + Alcotest.test_case "RG16(a) task: the two subject retags are in effect, the other four untouched" + `Quick test_rg16a_subject_retag_in_effect; Alcotest.test_case "RG96 search does not raise at the domain ceiling (real data)" `Quick test_transfer_search_does_not_raise_at_domain_ceiling; Alcotest.test_case "no transfer ever lands inside [Easter, Easter+7], 2005-2050" `Quick |
