summaryrefslogtreecommitdiff
path: root/test/test_golden.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 17:49:46 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 17:49:46 +0200
commit8240dbe8221792510aba2405652b59c22f865957 (patch)
tree9d496d01e553a35d1ac885b345ffc7e26e09dcc4 /test/test_golden.ml
parent4ab0e8aeb83dfc41d03ee8e4dabea018b74a22bd (diff)
downloadcolitur-8240dbe8221792510aba2405652b59c22f865957.tar.gz
colitur-8240dbe8221792510aba2405652b59c22f865957.zip
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.
Diffstat (limited to 'test/test_golden.ml')
-rw-r--r--test/test_golden.ml95
1 files changed, 84 insertions, 11 deletions
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
] )