From 7d3b5ec831a60e8b63466251d63b2bd564acba2b Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Wed, 12 Aug 2026 13:32:13 +0200 Subject: 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. --- test/test_differential.ml | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'test/test_differential.ml') diff --git a/test/test_differential.ml b/test/test_differential.ml index aa75737..e12cd9a 100644 --- a/test/test_differential.ml +++ b/test/test_differential.ml @@ -450,19 +450,16 @@ 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" + (* RG16(a) task, fix round 1 (CRITICAL finding): a C12 entry briefly lived + here, allow-listing 2 February on a Sunday against lectio, when + `data/ef/adjustments.sexp` retagged the Purification `Bvm`. REVERTED -- + the user has ruled: follow the oracle (register §6.0 has the full + account). The Purification is `Lord` again, colitur observes it + outright on those six 2-February Sundays, matching lectio's own + `class = lord` exactly -- no divergence to allow-list. Left + unimplemented here deliberately, not merely absent by oversight: this + comment is the record that C12 existed and was removed, should a + future reader wonder why the numbering skips it. *) else None (* ---------------------------------------------------------------------- *) -- cgit v1.3