diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-14 12:51:19 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-14 12:51:19 +0200 |
| commit | 148729e731370f56a50c3819a7d81808c6e602ca (patch) | |
| tree | e739546256e34e16d651c69b86d8a898b50b4191 /test/test_oracle.ml | |
| parent | 2af482c7293d821f10c3bbc96b7913d658c5839c (diff) | |
| parent | d0468f53820585e7b4e4bfeb9a4a18f672b821a5 (diff) | |
| download | colitur-148729e731370f56a50c3819a7d81808c6e602ca.tar.gz colitur-148729e731370f56a50c3819a7d81808c6e602ca.zip | |
Merge branch 'ef-sanctoral-audit': the sanctoral against the Missal
The first full check of all 327 sanctoral entries against the primary
calendarium, read from page images of both photographic scans rather
than either PDF's OCR text layer -- the second scan's layer interleaves
its two print columns row by row and is unusable.
Findings that stand: St Barbara (4 December), a Commemoratio both scans
carry with her own Mass propers, absent from colitur and from lectio's
source alike -- 7196 clean additions, never displacing anything. And 18
colour corrections, all traced to the same bootstrap defect as the
earlier eusebius-confessor fix, now shown systemic rather than isolated;
several of lectio's own Polish name fields contradict its own colour
tag.
The Commemoration_only ranks are reframed rather than resolved: the
calendarium carries 57 Commemoratio lines and not one gives a class
numeral, for anyone. That is a source ceiling, not 105 open questions,
and nothing a primary-source read can close.
Three corrections did not survive review and are reverted here. RG
120(f) names Cathedrae S. Petri (22 februarii) and Conversionis S. Pauli
(25 ianuarii) in its own enumeration of white, fifteen lines above the
RG 124(b) they were cited to; RG 124(b)'s own 'in eorum die natalicio'
excludes them independently; RG 475(e) confirms it a third time. Both
oracles said white because both were right.
The cause is worth more than the entries: the page-image method was
applied to the calendarium and not to the rubric, and in the text layer
the two-column interleave hyphen-splits Cathedrae so it does not grep. A
text-layer read of that chapter finds 124 and cannot find 120(f).
Two safeguards had been reporting this correctly and were overridden --
a golden pin asserting white, edited to red and rewritten to guard
against restoring it, and two allow-lists told to ignore divergences
where both oracles were correct. Both restored.
Anastasia (25 December) was found and deliberately not added: she is
scoped to the second of Christmas's three Masses and the data model has
no Mass scope. Now recorded in the tracked tree, beside barbara, where
the next auditor will be standing.
Diffstat (limited to 'test/test_oracle.ml')
| -rw-r--r-- | test/test_oracle.ml | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/test/test_oracle.ml b/test/test_oracle.ml index 3a9e499..c1d0e6a 100644 --- a/test/test_oracle.ml +++ b/test/test_oracle.ml @@ -910,6 +910,52 @@ let m19_commemoration_matches (c : colitur_row) = | [ (slug, _, _, _) ] -> String.equal slug "commemoration-of-st-peter" | _ -> false +(* M21 -- ef-sanctoral-audit task (2026-08-14): the SAME closed 14-slug list + test_differential.ml's own [audit_colour_corrected_slugs] uses (RG 124, + data/ef/adjustments.sexp's own audit-block comment has the full + citation), now checked against THIS window's own oracle. Two of the + fourteen (`apollinaris`, 23 July; `josaphat`, 14 November) and one + further entry not on the Feast-status list at all (`chair-of-st-peter`, + 22 February, a Feast in its own right, RG124(b)) disagree with + missalemeum's own colour TOO, not merely lectio's -- a SECOND, + independent data source repeating the same defect (Apollinaris and + Josaphat are each martyr-bishops, RG 124(e); Peter's Chair is an + Apostle's own feast day, RG 124(b) -- both scan-verified word for word, + data/ef/adjustments.sexp's own comment), so this is not a case of + "missalemeum corroborates colitur, only lectio disagrees": the primary + TEXT is what decides it, and missalemeum is simply wrong on these three + the same way lectio is on all fourteen. [Comm_identity_unresolved] is + allowed alongside on 22 February specifically: that date's OTHER + commemoration (the ordinary Lenten feria RG 110 rides in alongside Paul) + is TEMPORAL-origin and already unresolved for identity, the same + pre-existing gap [M15]/[M18] elsewhere in this file document -- a + different axis, not something this entry's own citation explains, so it + is admitted by the subset check rather than folded into the citation. *) +let m21_colour_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" ] + +(* M22 -- ef-sanctoral-audit task: `barbara` (4 December, data/ef/ + adjustments.sexp's own new `Add`) is a genuine DATA GAP in missalemeum + too, the identical shape M1/M3/M8/M10/M19 above already document (each + "missalemeum does not implement X"): both years' own 4 December row + shows only the Advent feria's own temporal commemoration, no Barbara at + all, not even displaced -- missalemeum never constructed a candidate for + her either, the same absence lectio's own tridentine-calendar.ini has + (data/ef/adjustments.sexp's own `Add barbara` comment). Identity-gated + the same way [M19] is (coordinator finding F2): the predicate requires + colitur's own admitted set to be EXACTLY the temporal feria plus + `barbara`, not merely that SOME count diff exists on this date, so a + future unrelated regression on 4 December cannot silently hide behind + this citation. *) +let m22_dates = [ "2026-12-04"; "2027-12-04" ] + +let m22_commemoration_matches (c : colitur_row) = + match List.map (fun (slug, _, _, _) -> slug) c.c_commemorations with + | [ a; b ] -> (String.equal a "barbara") <> (String.equal b "barbara") + | _ -> false + (* [_o] (the oracle's own row) is unused now that M2 -- its one reader, via [o.o_title] -- is closed/removed (see the comment above [m1_dates]): every remaining predicate below reads only [c]/[diffs]. Kept as a named, @@ -965,6 +1011,11 @@ let layer_m_reason (c : colitur_row) (_o : oracle_row) diffs = else if List.mem c.c_date m19_dates && diffs = [ Comm_presence ] && m19_commemoration_matches c then Some "M19" else if + List.mem c.c_observed_slug m21_colour_slugs && diffs = [ Colour_f ] + then Some "M21" + else if List.mem c.c_date m22_dates && diffs = [ Comm_count ] && m22_commemoration_matches c then + Some "M22" + else if List.mem c.c_date m20_dates && subset diffs [ Comm_identity_mismatch; Observed_identity_unresolved ] && m20_commemoration_matches c |
