aboutsummaryrefslogtreecommitdiff
path: root/test/test_differential.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-14 12:00:24 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-14 12:00:24 +0200
commitbf326ab963f46c42dc1a3b5141f2022bed81756d (patch)
tree398519ccbf0b495c59ee5be78597ba6acd732eaa /test/test_differential.ml
parent2af482c7293d821f10c3bbc96b7913d658c5839c (diff)
downloadcolitur-bf326ab963f46c42dc1a3b5141f2022bed81756d.tar.gz
colitur-bf326ab963f46c42dc1a3b5141f2022bed81756d.zip
data(ef): sanctoral audit — one genuine gap, 21 wrong colours (RG124)
Full re-extraction of the primary CALENDARIUM (both photographic scans, missale-romanum-1962.pdf and Missale Romanum 1962_text.pdf, rendered page images read directly rather than trusting either PDF's own OCR text layer) against all 327 base sanctoral entries plus the two prior overlay Adds. Both scans agree throughout; no OCR ambiguity required adjudication this round. Add `barbara` (4 December): both scans carry a Commemoratio nested under Peter Chrysologus's own entry, absent from data/ef/sanctoral.sexp AND from lectio's own tridentine-calendar.ini (confirmed directly) — the same upstream-gap shape as the five entries the ef-rebootstrap task already added (agnes-secundo/boniface-martyr/eusebius-confessor/evaristus/ theodore). Correct 21 sanctoral colours against RG 124 ("De coloribus paramentorum"), scan-verified word for word: 124(b) red for an Apostle/Evangelist's own feast day except John's (27 December, already correct); 124(e) red for a Martyr's own martyrdom; RG 117's five-colour residual otherwise white. Every one of the 21 is a confirmed lectio/missalemeum bootstrap defect — checked individually against lectio's own ini, several of whose Polish name fields already contradict that same record's own colour tag (e.g. `martha`: "Dziewicy", Virgin, no "Męczennicy", yet `colour = red`) — the identical root cause and mechanism the `eusebius-confessor` fix already established. Colour is confirmed read nowhere in Precedence_ef's resolution logic (grep), so these are output-correctness fixes with zero observed-office blast radius; three (apollinaris/josaphat/chair-of-st- peter) additionally disagree with missalemeum's own oracle, not only with lectio, so they are adjudicated from RG 124's text directly rather than by which engine happens to agree. Both corrections applied via data/ef/adjustments.sexp's established Overlay mechanism (data/ef/sanctoral.sexp stays generated, untouched). Pinned: test_rite_ef.ml (two new tests, verified to fail against the pre-fix data); test_differential.ml's new C18 predicate (526 rows, 2005-2050) and test_oracle.ml's new M21/M22 predicates (20 + 2 rows, 2026-2027), each with data/ef/expected-divergences{,-missalemeum}.sexp entries citing RG124 or the matching upstream-gap precedent; test_golden.ml's 1902-02-22 pin corrected (chair-of-st-peter was white in the stale pin, RG124(b) makes it red). All 329 tests green, including the full 1583-9999 exhaustive sweep. Full method, per-entry adjudication table and corrected bucket counts: docs/research/rules-register.md (gitignored) and .superpowers/sdd/2026-08-12-colitur-rg16a/sanctoral-audit-report.md (gitignored).
Diffstat (limited to 'test/test_differential.ml')
-rw-r--r--test/test_differential.ml22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/test_differential.ml b/test/test_differential.ml
index 5093484..a4e550d 100644
--- a/test/test_differential.ml
+++ b/test/test_differential.ml
@@ -465,6 +465,27 @@ 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" ]
+(* C18 (ef-sanctoral-audit, 2026-08-14): the closed set of colitur
+ [status = Feast] sanctoral slugs whose bootstrapped [colour] was
+ corrected against RG 124 (data/ef/adjustments.sexp's own audit-block
+ comment has the full citation and per-slug reasoning); every one of
+ these still carries lectio's OLD, uncorrected colour, so a row where
+ this is the ONLY colitur candidate observed for its own date diffs on
+ [Colour_f] alone whenever it wins the day (most years -- these are all
+ ordinary universal feasts, rarely impeded). Deliberately a literal list,
+ not a shape predicate, the same discipline C6/C14/C15/C16 already use:
+ a colour diff on any OTHER slug must still surface as unexplained. Eight
+ further audit corrections (prisca/peter/vitus/margaret/agapitus/liborii/
+ mark-i, all Commemoration_only, plus the new `barbara` Add) are NOT
+ listed here and need no predicate: [colitur_rows_2005_2050] emits only
+ the OBSERVED day's own record, and a [Commemoration_only] candidate can
+ never be observed (Precedence.resolve's own design), so their corrected
+ colours have no row in this comparison to explain. *)
+let audit_colour_corrected_slugs =
+ [ "conversion-of-st-paul"; "chair-of-st-peter"; "john-of-san-fecundo"; "ephrem-of-syria";
+ "julia-of-falconieri"; "john-gualbert"; "camillus-de-lellis"; "jerome-emiliani"; "apollinaris";
+ "martha"; "alphonsus-liguori"; "augustine"; "rose-of-lima"; "josaphat" ]
+
(* C14 (ef-rebootstrap fixture refresh, 2026-08-12; replaces the closed C9,
see data/ef/expected-divergences.sexp's own C14 note for the full RG
citation): the exact 3 civil days, across the whole 2005-2050 window,
@@ -620,6 +641,7 @@ let layer_c_reason (l : row) (c : row) diffs =
&& String.equal c.slug "ef-holy-name"
then Some "C16"
else if is_bvm_saturday_row c diffs then Some "C17"
+ else if diffs = [ Colour_f ] && List.mem c.slug audit_colour_corrected_slugs then Some "C18"
else None
(* ---------------------------------------------------------------------- *)