From f0c0c7a04a3022934fbec68e142362030cb42b77 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Wed, 12 Aug 2026 17:49:32 +0200 Subject: test(differential): allow-list C12 for the 15-entry rank correction Re-bootstrapping sanctoral.sexp (previous commit) makes 7 of the 15 newly-corrected III-class feasts win an occurrence they previously lost as Commemoration_only: RG 91 entry 24 (a universal III-class feast) outranks entry 28 (a IV-class feria), and the occurrence code that resolves this already existed and needed no change. lectio's own committed differential fixture (test/fixtures/lectio-ef-2005-2050.txt) is a frozen snapshot predating lectio's own equivalent generator fix, so it still shows the class-4 feria observed with the same saint only as a trailing commemoration -- a new, expected divergence from that fixture, 14 rows in the 2005-2050 window. expected_rows (14) is independently re-derived by grepping the regenerated sanctoral.sexp's own post-regeneration civil-day output against the committed lectio fixture directly (two flat-file extractions cross-checked against each other), not transcribed from the comparator's own failing-test output. C12 reuses an id last used, and removed, by the RG16(a) task's own reverted Purification retag -- noted at both the old and new entries' own comments so the id's history is visible to a future reader. --- test/test_differential.ml | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'test') diff --git a/test/test_differential.ml b/test/test_differential.ml index e12cd9a..cf5b95f 100644 --- a/test/test_differential.ml +++ b/test/test_differential.ml @@ -413,6 +413,23 @@ let jan_6_13_slug slug = let nativity_octave_day_slugs = [ "ef-nativity-octave-day-5"; "ef-nativity-octave-day-6"; "ef-nativity-octave-day-7" ] +(* C12 (ef-rebootstrap, 2026-08-12): the exact 15 slugs data/ef/sanctoral.sexp + re-bootstrapped from `rank = commemoration` to a real class-3 feast (the + source's own SHA-256 moved 6a25e634... -> 1b303ef2...) -- a literal list, + not a date-range or slug-prefix pattern, per the SAME discipline the + comment above this one already states for C1/C6 (fix round 1, finding 1): + a slug outside this exact set must fail through to [None], not be + silently absorbed by a citation about a different set of saints. Only 7 + of the 15 are ever actually reachable here (the other 8 never collide + with a plain class-4 feria anywhere in 2005-2050), but the guard is + written against the full set colitur's own data now carries, not the + narrower subset this one 46-year window happens to exercise. *) +let fixed_iii_class_reclassified_slugs = + [ "benedict"; "cyril-of-jerusalem"; "forty-holy-martyrs-of-sebaste"; "frances-rome"; + "francis-of-paola"; "gabriel-the-archangel"; "gregory-the-great"; "isidore-of-seville"; + "john-damascene"; "john-of-capistrano"; "john-of-god"; "patrick"; "sts-felicitas-perpetua"; + "thomas-aquinas"; "vincent-ferrer" ] + (* [layer_c_reason l c diffs] returns the [data/ef/expected-divergences.sexp] [id] this row-pair's remaining (post Layer A/B) diff set belongs to, or [None] if nothing here explains it (a genuine, uncovered failure). *) @@ -456,10 +473,11 @@ let layer_c_reason (l : row) (c : row) diffs = 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. *) + `class = lord` exactly -- no divergence to allow-list. That C12 was + removed, not merely unused -- superseded by the DIFFERENT C12 below, + ef-rebootstrap (2026-08-12), reusing the freed id. *) + else if List.mem c.slug fixed_iii_class_reclassified_slugs && subset diffs [ Slug_f; Rank; Colour_f ] + then Some "C12" else None (* ---------------------------------------------------------------------- *) -- cgit v1.3