aboutsummaryrefslogtreecommitdiff
path: root/test/test_rite_ef.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 13:32:13 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 13:32:13 +0200
commit7d3b5ec831a60e8b63466251d63b2bd564acba2b (patch)
treef9e5015704ff74f42b777d7aac207ffda0d55673 /test/test_rite_ef.ml
parent5c9f2cdbffdff67ec8a1939ed6958767acf406fd (diff)
downloadcolitur-7d3b5ec831a60e8b63466251d63b2bd564acba2b.tar.gz
colitur-7d3b5ec831a60e8b63466251d63b2bd564acba2b.zip
fix(rite-ef,kernel): follow the oracle on the Purification; admit reads the day's own Sunday-ness, not observed
Fix round 1 review, two findings landed together because each golden pin's correctness depends on both. CRITICAL (item 1): reverts this branch's own first-pass retag of the Purification (2 February) from Lord back to Bvm -> Lord. The calendarium titles it 'B. Mariae Virg.', but missalemeum -- this project's designated EF oracle -- treats it as taking an occurring II-class Sunday's place outright, commemorations empty, exactly RG16(a)'s own festum Domini treatment (2020-02-02, 2014-02-02, independently fetched). Control, 2019-09-08 (the Nativity of the BVM, an ordinary Marian feast, on a Sunday): the Sunday observed, the feast merely commemorated -- the opposite pattern, proving the Purification's own oracle treatment is deliberate, not a gap. RG16(a) alone, on the untouched data, would have matched the oracle character for character; retagging Bvm is what moved colitur away from it on 1200 domain-wide days. The user has ruled: follow the oracle. Genuine primary-text counter-evidence (RG120(b), the colour rule grouping 2 February under 'B. Mariae Virg.', a category separate from 'Domini') is recorded in the register, not discarded -- a different project could reasonably rule the other way on the same evidence. most-holy-name-of-mary stays retagged Bvm; that one was never disputed. Removes the now-unneeded C12 lectio allow-list entry (data/ef/ expected-divergences.sexp, test_differential.ml): with the Purification Lord again, colitur matches lectio's own class = lord on every affected date, no divergence to allow-list. IMPORTANT (item 2): Precedence.rules.admit gains a ~temporal parameter -- a genuine kernel signature change, unlike RG16(a) itself. RG111(b)'s own Sunday rank floor ('one commemoration, namely of a II-class feast') used to be detected by reading observed's own slug for a Sunday marker, which silently assumed observed IS the day's temporal-cycle office. RG16(a) breaks that assumption on purpose: a Feast of the Lord standing in for an impeded Sunday 'cum omnibus iuribus et privilegiis' keeps the day a dominica II classis for RG111(b) too, even though the FEAST, not the Sunday, is observed. Before this fix an unrelated saint (Pope Sixtus II et al., 6 August, Class3) was wrongly admitted into the freed slot on every one of 1178 domain-wide days. Oracle-confirmed directly: 2023-08-06 (a Sunday) shows him displaced, commemorations empty; 2026-08-06 (an ordinary Thursday) shows him admitted -- being a Sunday is exactly what excludes him. admit now reads Sunday-ness off ~temporal (the day's own temporal-cycle candidate, passed through from Precedence.resolve unchanged) instead of observed. Validate's own admission fixed-point invariant updated to pass the same real temporal candidate through. Both golden pins in test_golden.ml were promoted from actual colitur day output without independently consulting the rubric or the oracle first -- a real defect the review caught. Re-derived from both before re-pinning: 2028-08-06 and 2025-02-02 now pin comms=[], no commemoration at all, matching missalemeum exactly in both cases.
Diffstat (limited to 'test/test_rite_ef.ml')
-rw-r--r--test/test_rite_ef.ml45
1 files changed, 27 insertions, 18 deletions
diff --git a/test/test_rite_ef.ml b/test/test_rite_ef.ml
index ad9057b..6fcb25d 100644
--- a/test/test_rite_ef.ml
+++ b/test/test_rite_ef.ml
@@ -88,22 +88,30 @@ let test_vigil_of_christmas_suppressed () =
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. *)
+ own report). data/ef/sanctoral.sexp is left untouched (still a faithful
+ mirror of lectio, subject `Lord` for every entry below except
+ `most-holy-name-of-mary` -- see test_sanctoral_ef.ml's own "explicit
+ class = lord" spot-check, which loads that file WITHOUT applying this
+ overlay and still passes); the one real correction lives entirely in
+ data/ef/adjustments.sexp's single remaining [Edit] directive, the same
+ mechanism [test_vigil_of_christmas_suppressed] above already proves for
+ a sibling bootstrap defect.
+
+ CORRECTED, fix round 1 (CRITICAL finding, item 1): this test used to
+ also assert `purification-of-the-blessed-virgin-mary` was retagged
+ `Bvm`. REVERTED -- the user has ruled: follow the oracle (register §6.0
+ has the full account, both the calendarium argument for `Bvm` and the
+ oracle evidence against it). The Purification is `Lord` again, one of
+ FIVE untouched entries this test now re-verifies, not four.
+
+ This is the ONE test in the suite that observes the one live retag
+ actually takes effect through the real pipeline -- without it, a typo in
+ the 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 ([test_sanctoral_ef.ml] deliberately never
+ applies the overlay). Also re-verifies the five 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 one that changed. *)
let test_rg16a_subject_retag_in_effect () =
let layer = real_layer () in
let subject_of slug =
@@ -111,10 +119,11 @@ let test_rg16a_subject_retag_in_effect () =
| 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)
+ "Purification stays Lord (reverted, fix round 1 -- the user's ruling: follow the oracle)" true
+ (subject_of "purification-of-the-blessed-virgin-mary" = Subject.Lord);
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