diff options
| -rw-r--r-- | data/ef/adjustments.sexp | 40 | ||||
| -rw-r--r-- | data/ef/expected-divergences-missalemeum.sexp | 6 | ||||
| -rw-r--r-- | test/test_oracle.ml | 15 |
3 files changed, 56 insertions, 5 deletions
diff --git a/data/ef/adjustments.sexp b/data/ef/adjustments.sexp index 790665b..ea1fc48 100644 --- a/data/ef/adjustments.sexp +++ b/data/ef/adjustments.sexp @@ -257,6 +257,38 @@ ; rewrite (bucket recomputation) and .superpowers/sdd/2026-08-12-colitur- ; rg16a/sanctoral-audit-report.md. Two shapes of finding follow. ; +; `Add commemoration-of-the-seven-sorrows` -- NEW (2026-08-17). The OTHER +; Seven Sorrows: not the II-class feast of 15 September (which colitur has +; had since the bootstrap, slug `seven-sorrows-of-the-blessed-virgin-mary`) +; but the movable commemoration on the Friday of Passion Week, which colitur +; had no trace of at all. +; +; The 1962 calendarium lists it at the FOOT of March, below the fixed dates, +; exactly where a movable entry belongs (LT.txt:5056, verbatim): "Feria VI +; post dominicam I Passionis: Commemoratio septem Dolorum B. Mariae Virg." +; Note the word: Commemoratio. Under the 1960 rubrics this is a commemoration, +; not a feast -- hence `status Commemoration_only`, and hence it can never win +; the day (band returns `unclassified` for that status, checked first). +; +; Friday after Passion Sunday I is Easter-9 (Passion Sunday is the second +; Sunday before Easter, Easter-14; +5 for the Friday). Confirmed independently +; by BOTH dates the oracle allow-list already disputes: Easter 2026 is 5 April +; and M16's date is 27 March; Easter 2027 is 28 March and M13's is 19 March. +; +; This entity is the single root cause behind BOTH of those entries -- M13 +; (19 March 2027, where missalemeum commemorates the Seven Sorrows and colitur +; had nothing to commemorate) and M16 (27 March 2026, where colitur admits St +; John Damascene instead). It was recorded as "a known unimplemented office" +; and could not be built before Date_spec grew `Easter_offset`: there is no +; (month, day) pair for a Friday that moves with Easter, the same wall +; Rogation Wednesday hit. +; +; `subject Bvm` is accurate rather than conventional here -- this genuinely is +; a commemoration of the Blessed Virgin, unlike the Major Litanies and +; Rogation Wednesday which carry `Saint` by precedent. The one rule that reads +; it, RG 112(d)'s own BVM-Saturday exclusion, is structurally unreachable: +; Passion Friday is never a Saturday. +; ; `Add rogation-wednesday` -- NEW (movable-date-specs task, 2026-08-17). ; RG 87, primary-verified: "Litaniae minores seu Rogationes, per se, ; assignantur feriis II, III et IV ante festum Ascensionis Domini" @@ -373,6 +405,14 @@ (rank Class4) (status Commemoration_only) (colour Violet) (subject Saint) (citations ()) (layer ef-universal))))) (Add + ((date (Easter_offset -9)) + (cel + ((slug commemoration-of-the-seven-sorrows) + (names ((la "Commemoratio septem Dolorum B. Mariae Virginis") + (en "The Seven Sorrows of the Blessed Virgin Mary"))) + (rank Class3) (status Commemoration_only) (colour White) + (subject Bvm) (citations ()) (layer ef-universal))))) + (Add ((date (Easter_offset 38)) (cel ((slug rogation-wednesday) diff --git a/data/ef/expected-divergences-missalemeum.sexp b/data/ef/expected-divergences-missalemeum.sexp index effb7c9..2a21b25 100644 --- a/data/ef/expected-divergences-missalemeum.sexp +++ b/data/ef/expected-divergences-missalemeum.sexp @@ -237,9 +237,9 @@ WIDENED, Task 9 (branch ef-lectionary, layer-4 oracle): [First_mismatch]/[Gospel (note "`barbara` (4 December, data/ef/adjustments.sexp's own new `Add`, ef-sanctoral-audit task) is a genuine DATA GAP in missalemeum too: both years' own 4 December row shows only the Advent feria's own temporal commemoration, Barbara absent entirely, not even listed as displaced -- missalemeum never constructed a candidate for her either, the identical absence lectio's own tridentine-calendar.ini has. Identity-gated the same way [M19] is (coordinator finding F2, that entry's own note): the predicate requires colitur's own admitted set to be exactly the temporal feria plus `barbara`, not merely that some [Comm_count] diff exists on this date. Derived directly from the OCaml comparator's own failure output: 2 (both years in the window).") (expected_rows 2)) ((id M16) - (citation "1962 calendarium's March table (same primary text as M13's own citation): \"Feria VI post dominicam I Passionis: Commemoratio septem Dolorum B. Mariae Virg.\" -- a fixed commemoration of Our Lady's Seven Sorrows for the Friday of Passion Week, every year, confirmed real") - (verdict missalemeum) - (note "27 March 2026 (Friday of Passion Week): colitur admits \"St. John Damascene\" (a real Class3 universal feast that genuinely falls that day, data/ef/sanctoral.sexp's own john-damascene entry, 27 March); missalemeum shows \"For Our Lady of the Seven Sorrows\" instead. The SAME standing gap M13 already names: the Seven-Sorrows-of-Passion-Friday commemoration is confirmed real in the primary text but not implemented anywhere in temporal_ef.ml, so colitur has no candidate for it and falls back to whichever ordinary Class3 saint actually wins that Friday. Verdict missalemeum: colitur is missing a real, primary-cited office, not differently opinioned. Register ยง6 open item (the same one M13's own note already tracks). Only 2026 shows here as an IDENTITY mismatch -- 2027's Friday of Passion Week IS 19 March, M13's own date, where identity comparison cannot even be reached (M13's own rank/colour mismatch already excludes that day from count-matched identity comparison, folded into M13's own widened subset above). NOTE for whoever builds the office (fix round 1, coordinator finding 7): 27 March 2026 is a III-class day, where RG 111(d) admits TWO commemorations -- yet missalemeum admits only the Seven Sorrows and DISPLACES John Damascene entirely, not merely drops him to second place. A naive implementation (one more ordinary III-class commemoration competing for the day's two slots) would give colitur two commemorations where missalemeum shows one; whatever privilege the Seven Sorrows carries must itself explain the exclusion, not just win admission.") + (citation "RG 111(d) (LT.txt:1777-1778): \"in diebus liturgicis III et IV classis, duae tantum admittuntur commemorationes\" -- TWO commemorations are admitted on a III-class day. RG 113 (LT.txt:1800-1802): \"Commemoratio de Tempore fit primo loco. In admittendis et ordinandis aliis commemorationibus, servetur ordo tabellae praecedentiae.\" RG 114: only a commemoration EXCEEDING the day's number is omitted. Calendarium, LT.txt:5056: \"Feria VI post dominicam I Passionis: Commemoratio septem Dolorum B. Mariae Virg.\"") + (verdict colitur) + (note "RE-ADJUDICATED 2026-08-17, and the verdict is REVERSED. This entry previously read verdict missalemeum: colitur admitted St John Damascene where missalemeum showed the Seven Sorrows, because the Seven Sorrows commemoration of Passion Friday was a known unimplemented office -- colitur had no candidate to admit at all. It could not be built before Date_spec grew Easter_offset, the Friday after Passion Sunday being Easter-9 and so having no (month, day) pair to anchor to. It is built now. Both streams name the Seven Sorrows, and the old identity mismatch is gone. What remains is a COUNT difference running the OTHER way: 27 March 2026 is a III-class privileged Passiontide feria, RG 111(d) admits TWO commemorations there, and colitur admits exactly two -- the Seven Sorrows (de Tempore, first, per RG 113) and John Damascene, a real III-class universal feast genuinely falling that day. missalemeum admits only one and reports John Damascene as displaced entirely, dropping a commemoration the rubric allows. Read on the primary text colitur is right. Recorded honestly: this is the fourth divergence in this file adjudicated colitur where missalemeum drops or mis-assigns something (cf. Monica, Perpetua's Common, Christ the King's week), which is a pattern worth watching rather than four coincidences. 1 row: 2026-03-27 only. The 2027 instance is M13's own, a DIFFERENT dispute about whether St Joseph is displaced from Passion Friday at all, unchanged by this work.") (expected_rows 1)) ((id M18) (citation "test_oracle.ml's own header, \"COMMEMORATION IDENTITY\" section, restated for the OBSERVED axis (ef-rg112-rg110 task) -- not an RG citation, a comparator LIMIT: Rite_ef.Temporal_ef never sets an English [names] field on any candidate it builds, the SAME limit M15 already names for a commemoration, now visible for the OBSERVED day itself now that the observed-identity axis exists") diff --git a/test/test_oracle.ml b/test/test_oracle.ml index 656a437..0735cb6 100644 --- a/test/test_oracle.ml +++ b/test/test_oracle.ml @@ -1424,8 +1424,19 @@ let layer_m_reason (c : colitur_row) (o : oracle_row) diffs = temporal candidate outright at Class3 rank, register's own account of this date), so [Observed_identity_unresolved] now fires alongside the pre-existing [Comm_identity_mismatch]. *) - else if List.mem c.c_date m16_dates - && subset diffs [ Comm_identity_mismatch; Observed_identity_unresolved ] + (* M16 RE-ADJUDICATED (2026-08-17): the diff SHAPE changed because the cause + did. colitur now builds the Seven Sorrows commemoration of Passion Friday + (data/ef/adjustments.sexp), so the old [Comm_identity_mismatch] -- colitur + admitting John Damascene where missalemeum showed the Seven Sorrows -- is + gone: both streams now name the Seven Sorrows. What remains is a COUNT + difference running the other way, colitur admitting two commemorations + against missalemeum's one. [Comm_count] is REQUIRED so this cannot quietly + absorb a day whose only difference is the unresolved observed identity, + which is M18's own generic shape. *) + else if + List.mem c.c_date m16_dates + && subset diffs [ Comm_count; Observed_identity_unresolved ] + && List.mem Comm_count diffs then Some "M16" else if diffs = [ Observed_identity_unresolved ] then Some "M18" else if List.mem c.c_date m19_dates && diffs = [ Comm_presence ] && m19_commemoration_matches c then |
