aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/ef/adjustments.sexp40
-rw-r--r--data/ef/expected-divergences-missalemeum.sexp6
-rw-r--r--test/test_oracle.ml15
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