From 957a6d88ed447be16aa8c7e71250f4c9b87a832b Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Thu, 13 Aug 2026 15:57:26 +0200 Subject: data(ef): close and derive the RG 91 entry 27 allow-list rows The BVM Saturday office is now genuinely correct, so both comparators' allow-lists move -- every count derived from the harnesses' own failure output, never transcribed or guessed. lectio differential (data/ef/expected-divergences.sexp, C17, new, colitur): lectio builds no equivalent office at all, so it keeps showing the plain season colour on every otherwise-unoccupied Class4 Saturday where colitur now shows white. Season, slug and rank all still agree (the office deliberately reuses the ordinary ferial slug), so Colour_f alone is the complete diff set -- gated on colitur's own rank/weekday/colour rather than a date list, the same shape M2 used, at 416 rows over 2005-2050. missalemeum oracle (data/ef/expected-divergences-missalemeum.sexp): M2 is CLOSED, REMOVED, the same shape as this file's own M4/M6/M7/M9/M12/ M14/M17 precedents -- not re-adjudicated to a different verdict, gone because the colour divergence it named no longer occurs on any of its former 22 dates. What is left on all 22 is Observed_identity_unresolved alone (colitur's BVM-Saturday candidate is temporal-origin and deliberately carries no English name) -- exactly M18's own shape, not a distinct citation any more. Keeping M2 as a separate id would have kept silently absorbing these rows under a stale "colour differs" citation whose own reason had stopped firing (subset's own diff-set test admits a SMALLER set than the one named) -- the same "count proving cardinality where identity was required" trap this project's review process watches for. M18's own expected_rows moves 373 -> 395 accordingly. --- test/test_oracle.ml | 67 ++++++++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 31 deletions(-) (limited to 'test/test_oracle.ml') diff --git a/test/test_oracle.ml b/test/test_oracle.ml index 58ceb26..c0badfe 100644 --- a/test/test_oracle.ml +++ b/test/test_oracle.ml @@ -475,25 +475,30 @@ let contains_substring s ~needle = own "in dominica quavis" (ANY Sunday, unqualified) -- verdict colitur. *) let m1_dates = [ "2026-06-28"; "2026-08-09" ] -(* M2 -- RG 91 entry 27 ("Officium sanctae Mariae in sabbato"): every - otherwise-unoccupied IV-class Saturday should carry the votive Office of - the BVM (white; missalemeum's own title cycles "I".."V Mass of the - B. V. M. - Salve, Sancta Parens"), a genuinely DISTINCT office from an - ordinary green/violet feria. temporal_ef.ml's [band] already carries an - entry-27 comment acknowledging this row of RG 91 exists, but nothing in - [Temporal_ef.temporal]'s actual CONSTRUCTION builds this office -- an - unimpeded Time-after-Epiphany/-Pentecost Saturday still gets the bare - ferial slug and [season_colour]'s green. A genuine, primary-attested - FEATURE GAP (not a citation dispute) -- verdict missalemeum: colitur is - short a whole office here, not merely differently-opinioned. Registered - as an open item (register ยง6) rather than built in this task: it needs - its own proper texts/citations, the same scope line "Major Litanies" - (M5 below) already sits on. Matched on the oracle's own title substring, - not a hardcoded date list -- the title IS the distinguishing evidence, - and every Paschaltide occurrence (where colitur's season colour is - already white, RG 119) never reaches this predicate at all, since its - diffs are already empty before [layer_m_reason] is ever called. *) -let bvm_saturday_title = "Salve, Sancta Parens" +(* M2 -- CLOSED, REMOVED (ef-bvm-saturday task), same shape as M12/M17's own + removal elsewhere in this suite (not re-adjudicated to a different + verdict, gone because the underlying divergence stopped occurring): RG 91 + entry 27 ("Officium sanctae Mariae in sabbato") is now built + (Rite_ef.Temporal_ef's own [bvm_saturday_names] citation has the full RG + 78/RG 120(b) argument) -- white, unconditionally, on every otherwise- + unoccupied IV-class Saturday, so [Colour_f] no longer appears in this + predicate's own diff set on ANY of these 22 dates (checked: 0 of them + retain it). What is left on every one of them is [Observed_identity_ + unresolved] ALONE -- colitur's own BVM-Saturday candidate is + temporal-origin and deliberately carries no ENGLISH name (Latin only, + the same zero-circularity discipline Holy Family/Holy Name/the Sacred + Triduum already established) -- which is EXACTLY [M18]'s own shape + ([diffs = [ Observed_identity_unresolved ]], nothing else disagreeing), + not a distinct citation any more. Kept as a separate id here would have + been the same "count proving cardinality where identity was required" + trap this project's own review process watches for: [subset] admits a + SMALLER diff set than the one named, so this branch would have kept + silently absorbing these 22 rows under a stale "colour differs" citation + even though that citation's own reason no longer fires -- checked + directly, not assumed: removing this branch and re-running moves the + count from M2's own former 22 to M18's own count rising by exactly 22 + (373 -> 395, see M18's own note below), with the "no unexplained + differences" test staying green throughout. *) (* M3 -- RG 87 (Minor Litanies/Rogations): the SAME gap the lectio differential's own C8 already names (data/ef/expected-divergences.sexp) @@ -822,7 +827,12 @@ let m19_commemoration_matches (c : colitur_row) = | [ (slug, _, _, _) ] -> String.equal slug "commemoration-of-st-peter" | _ -> false -let layer_m_reason (c : colitur_row) (o : oracle_row) diffs = +(* [_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, + typed parameter (not dropped from the signature) so a FUTURE oracle-title + predicate has somewhere to plug back in without a signature change. *) +let layer_m_reason (c : colitur_row) (_o : oracle_row) diffs = if diffs = [] then None (* M1's own subset widened (this task): colitur's observed day on both dates is TEMPORAL-origin (the Sunday itself, RG33's own point -- the @@ -832,17 +842,12 @@ let layer_m_reason (c : colitur_row) (o : oracle_row) diffs = else if List.mem c.c_date m1_dates && subset diffs [ Rank; Colour_f; Comm_presence; Observed_identity_unresolved ] then Some "M1" - (* M2's own subset widened (this task): every BVM-Saturday date's observed - celebration is temporal-origin (the ordinary Saturday feria colitur - computes, not the distinct Office of the BVM missalemeum's title - names -- M2's own gap), so [Observed_identity_unresolved] now fires - alongside [Colour_f] where it used to fire alone, AND alone on its own - on every Paschaltide occurrence M2's own comment already says never - reached this predicate before (colour already agrees there; only the - new axis has anything left to say). *) - else if contains_substring o.o_title ~needle:bvm_saturday_title - && subset diffs [ Colour_f; Observed_identity_unresolved ] - then Some "M2" + (* M2 -- CLOSED, REMOVED (ef-bvm-saturday task): see this file's own M2 + note above (near [m1_dates]) for the full account -- the RG 91 entry 27 + office is now built, so every one of these 22 dates now falls through + to [M18]'s own generic predicate below instead ([diffs = [ + Observed_identity_unresolved ]] exactly), which is what actually + catches them now. *) (* M3's own subset widened (this task): the Rogation Monday feria colitur observes is temporal-origin, same root cause as M1/M2 above. *) else if List.mem c.c_date m3_dates && subset diffs [ Colour_f; Observed_identity_unresolved ] then -- cgit v1.3