summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/ef/expected-divergences.sexp5
-rw-r--r--test/test_differential.ml26
2 files changed, 27 insertions, 4 deletions
diff --git a/data/ef/expected-divergences.sexp b/data/ef/expected-divergences.sexp
index c8d863d..373827a 100644
--- a/data/ef/expected-divergences.sexp
+++ b/data/ef/expected-divergences.sexp
@@ -72,3 +72,8 @@
(verdict colitur)
(note "Holy Thursday (\"ef-passiontide-2-thursday\") is white in colitur, per RG 128(b)'s explicit exception -- independently confirmed by the missalemeum oracle (Task 16 report), whose colour set for that day is white alone, unlike the surrounding Triduum days which include violet as an option. lectio has no such exception and prints Passiontide's base violet straight through Holy Thursday. Found via Task 16's oracle comparison, not the original lectio differential (lectio's own colour did not previously disagree, because colitur's own bug matched it) -- fixed in colitur, so this row records a NEW divergence from lectio's still-uncorrected violet, not a pre-existing one.")
(expected_rows 46))
+ ((id C12)
+ (citation "RG 91 entry 24 (\"Festa III classis, in calendario Ecclesiae universae inscripta\") outranks entry 28 (\"feriae IV classis\") -- register §4's own Table of Precedence, unchanged by this task; only the underlying DATA changed, ef-rebootstrap (2026-08-12): 15 entries in data/ef/sanctoral.sexp were wrongly bootstrapped `rank = commemoration` (RG 91 gives a bare commemoration no table row at all, register §6.1) where the 1962 calendarium's own text gives each a class number instead -- primary-source-verified, all 15 falling 6 March-5 April (benedict 21 Mar, cyril-of-jerusalem 18 Mar, forty-holy-martyrs-of-sebaste 10 Mar, frances-rome 9 Mar, francis-of-paola 2 Apr, gabriel-the-archangel 24 Mar, gregory-the-great 12 Mar, isidore-of-seville 4 Apr, john-damascene 27 Mar, john-of-capistrano 28 Mar, john-of-god 8 Mar, patrick 17 Mar, sts-felicitas-perpetua 6 Mar, thomas-aquinas 7 Mar, vincent-ferrer 5 Apr). Corrected upstream in lectio's own generator and re-bootstrapped here (source SHA-256 1b303ef2...); the occurrence/precedence code that resolves entry 24 over entry 28 already existed and needed no change.")
+ (verdict colitur)
+ (note "5 of the 15 corrected slugs fall on a date that lands inside a plain class-4 Paschaltide or Septuagesima feria somewhere in 2005-2050 (frances-rome, francis-of-paola, isidore-of-seville, john-of-god, sts-felicitas-perpetua, thomas-aquinas, vincent-ferrer -- 7 unique slugs, 14 rows total, independently re-derived by grepping data/ef/sanctoral.sexp's own post-regeneration output against the committed lectio fixture directly, not by transcribing the comparator's own count): colitur now correctly observes the FEAST itself (e.g. `vincent-ferrer class-3 white`); lectio's fixture (frozen before lectio's own equivalent generator fix) still shows the class-4 feria observed with the SAME saint only as a trailing commemoration (e.g. `ef-easter-2-tuesday class-4 white +vincent-ferrer`) -- confirming the saint was already the correct candidate on both sides, and only the OCCURRENCE RESOLUTION differs, exactly as RG 91's own numeric table (24 < 28) requires. C12 was previously used, briefly, for an unrelated Purification-retag divergence that was reverted in the RG16(a) task (see test_differential.ml's own layer_c_reason comment) -- reused here since that earlier entry no longer exists.")
+ (expected_rows 14))
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
(* ---------------------------------------------------------------------- *)