From 8240dbe8221792510aba2405652b59c22f865957 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Wed, 12 Aug 2026 17:49:46 +0200 Subject: test(golden): pin the six days RG91 entry24>28 now resolves correctly 2008-04-02/04/05 and 2038-03-06/08/09 are the six dates the re-bootstrap's own brief named as producing a wrong observed office under the old data (a III-class feast wrongly demoted to Commemoration_only, unable to win against an ordinary class-4 feria it should trivially outrank). Verified against the Missal before pinning, per this file's own rule: RG 91 entry 24 ("Festa III classis, in calendario Ecclesiae universae inscripta") outranks entry 28 ("feriae IV classis"), a plain, unqualified table reading, and the calendarium text for all six was already primary-verified in the register before this task ran -- only the data was wrong. Each pin proves the mechanism, not merely the answer: an omitted_has check (one per season family, Paschaltide and Septuagesima) confirms the displaced class-4 feria actually reached disposition and was actively excluded under RG26, not merely absent because nothing was ever offered. test_easter_extreme_2038_late_modern's own header previously recorded these three March dates as a DELIBERATE EXCLUSION because they were known wrong; corrected in place to point at the now-existing pin instead of continuing to justify an exclusion whose reason no longer holds. --- test/test_golden.ml | 95 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 84 insertions(+), 11 deletions(-) (limited to 'test') diff --git a/test/test_golden.ml b/test/test_golden.ml index fb3cff4..9d26196 100644 --- a/test/test_golden.ml +++ b/test/test_golden.ml @@ -163,16 +163,21 @@ let test_easter_extreme_1666 () = the SAME extreme as 1666, reached independently), chosen because it is a near-term year rather than a 17th-century one. - DELIBERATE EXCLUSION, not an oversight: register §6's F4 finding - confirms 2038-03-06 (+sts-felicitas-perpetua), 2038-03-08 (+john-of-god) - and 2038-03-09 (+frances-rome) are WRONG -- three sanctoral entries - bootstrapped from lectio carry a Commemoration_only status that should be - a real III-class Feast (a bootstrap-generator defect traced to - missalemeum's own commemoration-id ranks, not fixable without touching - lectio). Pinning those three dates as "correct" would freeze a known bug - into a regression test that then fights its own fix -- the report's own - warning against exactly this. Only the Easter-week days (temporal-cycle - territory, untouched by the March sanctoral bug) are pinned here. *) + ORIGINAL EXCLUSION, now RESOLVED (ef-rebootstrap, 2026-08-12): this + comment used to say 2038-03-06 (+sts-felicitas-perpetua), 2038-03-08 + (+john-of-god) and 2038-03-09 (+frances-rome) were deliberately left + unpinned because they were WRONG -- three sanctoral entries bootstrapped + from lectio carried a `Commemoration_only` status that should have been a + real III-class Feast. That defect was in lectio's own generator, not + fixable without touching lectio; lectio's generator has SINCE been fixed + (source SHA-256 6a25e634... -> 1b303ef2...) and colitur re-bootstrapped + from it, so this specific exclusion reason no longer holds. These three + dates, plus three more of the same shape (2008-04-02/04/05), are now + pinned below in [test_iii_class_feast_wins_class4_feria] -- the deferred + pin this comment always pointed at, not a new finding. Kept as a + temporal-cycle-only test regardless (the two concerns -- Easter-extreme + arithmetic and a sanctoral occurrence rule -- stay separate pins even + though nothing forces that any more). *) let test_easter_extreme_2038_late_modern () = check ~msg:"2038-04-24 Holy Saturday: still Passiontide, violet (RG 128)" 2038 4 24 "2038-04-24 saturday season=passiontide week=2 slug=ef-passiontide-2-saturday rank=class-1 colour=violet \ @@ -580,6 +585,70 @@ let test_purification_on_a_sunday_2025 () = "2025-02-02 sunday season=time-after-epiphany week=4 slug=purification-of-the-blessed-virgin-mary \ rank=class-2 colour=white comms=[] in=- out=[]" +(* ------------------------------------------------------------------ *) +(* RG 91 entry 24 ("Festa III classis, in calendario Ecclesiae universae + inscripta") outranks entry 28 ("feriae IV classis") -- ef-rebootstrap + (2026-08-12). Fifteen data/ef/sanctoral.sexp entries, 6 March-5 April, + were wrongly bootstrapped `rank = commemoration` (Commemoration_only, + which RG 91's table has no row for at all, register §6.1's own Maurice/ + Thomas finding) where the 1962 calendarium gives each a real class + number instead; corrected upstream in lectio's own generator and + re-bootstrapped here (source SHA-256 1b303ef2...). Only 7 of the 15 ever + land on a date that collides with a plain CLASS-4 feria somewhere in the + domain (the other 8 always fall inside Lent/Passiontide proper, RG 91 + entry 22, which already outranks entry 24 regardless of the saint's own + rank -- entry 22 < 24 -- so their status change is invisible to any + civil-day dump; a fact independently confirmed, not assumed, by a full + 1583-9999 blast-radius sweep finding zero diff rows for those 8 slugs + anywhere in the domain). These are the SIX dates the task brief that + started this re-bootstrap named as producing "a wrong observed office" + under the OLD data (2008-04-02/04/05, 2038-03-06/08/09) -- + [test_easter_extreme_2038_late_modern]'s own header above is the record + of why they were deliberately left unpinned until now. *) + +let test_iii_class_feast_wins_class4_feria () = + (* Two [omitted_has] checks, one per season family (Paschaltide, + Septuagesima), prove the displaced CLASS-4 feria actually reached + [disposition] and was actively omitted under RG26 ("IV-class ferias + are never commemorated"), not merely absent because no candidate was + ever offered -- this file's own established convention (the RG16(a) + and "IV-class ferias never commemorated" tests above), not repeated + for all six to avoid duplicating the same proof six times. *) + let d1 = fetch 2008 4 2 in + Alcotest.(check bool) + "2008-04-02: the displaced class-4 Paschaltide feria is in [omitted] (RG26), proving RG91 entry24>28 fired" + true + (omitted_has d1 "ef-easter-2-wednesday"); + Alcotest.(check string) "2008-04-02: Francis of Paola (III class, RG91 entry 24) outranks the class-4 feria" + "2008-04-02 wednesday season=paschaltide week=2 slug=francis-of-paola rank=class-3 colour=white comms=[] \ + in=- out=[]" + (describe d1); + check ~msg:"2008-04-04: Isidore of Seville (III class) outranks the class-4 Paschaltide feria, same shape" 2008 + 4 4 + "2008-04-04 friday season=paschaltide week=2 slug=isidore-of-seville rank=class-3 colour=white comms=[] in=- \ + out=[]"; + check ~msg:"2008-04-05: Vincent Ferrer (III class) outranks the class-4 Paschaltide feria, same shape" 2008 4 5 + "2008-04-05 saturday season=paschaltide week=2 slug=vincent-ferrer rank=class-3 colour=white comms=[] in=- \ + out=[]"; + let d4 = fetch 2038 3 6 in + Alcotest.(check bool) + "2038-03-06: the displaced class-4 Septuagesima feria is in [omitted] (RG26), proving RG91 entry24>28 fired" + true + (omitted_has d4 "ef-septuagesima-2-saturday"); + Alcotest.(check string) + "2038-03-06: Sts Perpetua and Felicity (III class, RG91 entry 24) outrank the class-4 feria; RED per their \ + own martyrs' colour, not the season's violet" + "2038-03-06 saturday season=septuagesima week=2 slug=sts-felicitas-perpetua rank=class-3 colour=red comms=[] \ + in=- out=[]" + (describe d4); + check ~msg:"2038-03-08: John of God (III class) outranks the class-4 Septuagesima feria, same shape" 2038 3 8 + "2038-03-08 monday season=septuagesima week=3 slug=john-of-god rank=class-3 colour=white comms=[] in=- \ + out=[]"; + check ~msg:"2038-03-09: Frances of Rome (III class) outranks the class-4 Septuagesima feria, same shape" 2038 3 + 9 + "2038-03-09 tuesday season=septuagesima week=3 slug=frances-rome rank=class-3 colour=white comms=[] in=- \ + out=[]" + let suite = ( "golden pins (known-tricky years)", [ Alcotest.test_case "Easter extreme: 1598 earliest (22 Mar, Gauss-verified)" `Quick @@ -612,5 +681,9 @@ let suite = `Quick test_rg16a_lord_feast_no_sunday_commemoration_2028; Alcotest.test_case "RG16(a), the Purification (oracle-ruled): observed outright, the Sunday not commemorated (2025-02-02)" - `Quick test_purification_on_a_sunday_2025 + `Quick test_purification_on_a_sunday_2025; + Alcotest.test_case + "ef-rebootstrap: RG91 entry24 (III-class feast) outranks entry28 (class-4 feria) -- the six dates \ + deferred since 2038's own Easter-extreme pin (2008-04-02/04/05, 2038-03-06/08/09)" + `Quick test_iii_class_feast_wins_class4_feria ] ) -- cgit v1.3