summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 17:49:32 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-12 17:49:32 +0200
commitf0c0c7a04a3022934fbec68e142362030cb42b77 (patch)
tree3e1ab4b841ff583373fd6dcce781d2e76d82b890 /test
parent4df03d2f2e0e1da70ffc3d069c6e49a7edd21b31 (diff)
downloadcolitur-f0c0c7a04a3022934fbec68e142362030cb42b77.tar.gz
colitur-f0c0c7a04a3022934fbec68e142362030cb42b77.zip
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.
Diffstat (limited to 'test')
-rw-r--r--test/test_differential.ml26
1 files changed, 22 insertions, 4 deletions
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
(* ---------------------------------------------------------------------- *)