diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-17 21:12:35 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-17 21:12:35 +0200 |
| commit | dcce3a5936c2232aaabbb2e8552be24ea7decdbf (patch) | |
| tree | 98a55dd0fba8435ba4c832244b1b103f4f1c2be6 /test | |
| parent | d8ce8c3806111e1d1ba54d2ef99a8ae550c7567b (diff) | |
| download | colitur-dcce3a5936c2232aaabbb2e8552be24ea7decdbf.tar.gz colitur-dcce3a5936c2232aaabbb2e8552be24ea7decdbf.zip | |
fix(lectionary): the week after Trinity says its own assigned Mass
RG 299 located (scan1:1096-1098), which does two things at once.
First it closes a standing gap: the ferial-Mass selection rule was
recorded in the register as unconfirmed against the primary source, and
step 3 said so in its own comment -- "lectio's own observed behaviour,
not a confirmed Missal citation". It is confirmed now. "In reliquis
feriis dicitur Missa dominicae praecedentis, nisi a rubricis aliter
provisum sit", restated in the propers as "...nisi propria Missa
assignetur".
Second, that escape clause splits M26 shape 2 in half, which is why the
shape was never resolvable as one thing.
Shape 2(a), the week after Trinity, is fixed. Trinity is the temporal
identity of its own Sunday, so a plain walkback lands on Trinity's Mass
-- but the Missal prints a named formula for the following week, "Missa
dominicae I post Pentecosten" (scan1:21758), precisely because the feast
has taken that Sunday's own. Those ferias now resolve at step 2 from it
and never reach the walkback.
Shape 2(b), Christ the King's week, turns out not to be a bug at all. No
proper Mass is assigned there -- checked directly, no rubric precedes
that Mass heading (scan1:39163ff) -- so RG 299's default governs and "the
Mass of the preceding Sunday" genuinely is Christ the King's own, which
is what colitur emits and missalemeum does not. Kept open only because no
rubric specific to that week was located either way; the verdict is now
argued from the primary text rather than resting on oracle disagreement.
No Thursday in the slug list: Corpus Christi is Easter+60, which IS that
week's Thursday every year, so the ferial slug never exists. Found by the
bootstrap's own reachability guard refusing to emit a key no Temporal_ef
slug can match, not reasoned out in advance.
Allow-lists: C35 opened (69 rows, verdict colitur -- lectio still walks
back); C17 narrowed 406 to 397, nine Saturdays moving to C35 because they
carry both a citation and a colour difference, with C35 gated to require
the citation so a colour-only Saturday still falls to C17; M26 narrowed
30 to 27; M18 widened 352 to 355, the same three days keeping only their
observed-identity difference.
Register: section 6.11.
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_differential.ml | 37 | ||||
| -rw-r--r-- | test/test_lectionary.ml | 2 |
2 files changed, 38 insertions, 1 deletions
diff --git a/test/test_differential.ml b/test/test_differential.ml index 31ae046..eb83c0e 100644 --- a/test/test_differential.ml +++ b/test/test_differential.ml @@ -719,6 +719,32 @@ let year_of_date date = int_of_string (String.sub date 0 4) and citation shape are similar. *) let holy_name_sunday_slug = "ef-holy-name-sunday" +(* C35 -- movable-date-specs follow-up (2026-08-17); this is test_oracle.ml's + own M26 shape 2(a), now FIXED rather than allow-listed there. + + RG 299 (scan1.txt:1096-1098) is the general ferial rule: "In reliquis + feriis dicitur Missa dominicae praecedentis, NISI A RUBRICIS ALITER + PROVISUM SIT", restated in the propers (scan1.txt:4933-4935) as "...nisi + propria Missa assignetur". The Missal DOES assign one for this week: it + prints "Missa dominicae I post Pentecosten" (heading, scan1.txt:21758) + immediately after Trinity Sunday's Mass, precisely because Trinity has + taken that Sunday's own -- 1 Ioann. 4, 8-21 (scan1.txt:21801-21802) / + Luc. 6, 36-42 (scan1.txt:21813-21814). + + colitur now resolves these ferias at step 2 from that formula. lectio walks + back to Trinity Sunday's Mass instead (Rom 11:33-36 / Matt 28:18-20) -- + which is exactly what colitur did until this fix. Verdict colitur, on the + Missal's own printed heading. + + No Thursday: Corpus Christi is Easter+60, which IS the Thursday of this + week every year, so that ferial slug never exists at all -- found by the + bootstrap's own reachability guard, which refuses to emit a key no + Temporal_ef slug can ever match. *) +let trinity_week_slugs = + [ "ef-time-after-pentecost-1-monday"; "ef-time-after-pentecost-1-tuesday"; + "ef-time-after-pentecost-1-wednesday"; "ef-time-after-pentecost-1-friday"; + "ef-time-after-pentecost-1-saturday" ] + let christmas_1_weekday_slugs = List.map (fun wd -> "ef-christmas-1-" ^ wd) [ "monday"; "tuesday"; "wednesday"; "thursday"; "friday" ] @@ -1141,6 +1167,17 @@ let layer_c_reason (l : row) (c : row) diffs = (Saturday stays C25's own, narrowed note above explains why). *) diffs = [ First_f; Gospel_f ] && List.mem c.slug christmas_1_weekday_slugs then Some "C30" + (* [Colour_f] is admitted only on the Saturday of this week, and only + alongside the citation difference: that day is ALSO an unoccupied + IV-class Saturday, so RG 78's votive Office of the BVM makes colitur + white where lectio (which builds no such office) is green -- C17's own + shape, landing on the same day as this one. [First_f] is REQUIRED, so a + colour-only Saturday still falls to C17 and cannot be absorbed here. *) + else if + List.mem c.slug trinity_week_slugs + && subset diffs [ First_f; Gospel_f; Colour_f ] + && List.mem First_f diffs + then Some "C35" else if (* C31 -- Task 9: the SAME rubric's own next sentence, "diebus ferialibus a 7 ad 12 ianuarii ante dominicam I post Epiphaniam... diff --git a/test/test_lectionary.ml b/test/test_lectionary.ml index 1f8ed75..7dbb253 100644 --- a/test/test_lectionary.ml +++ b/test/test_lectionary.ml @@ -116,7 +116,7 @@ let test_ef_data_file_loads () = directly from the Missal, two major movable feasts with previously no entry at all ([movable_feast_entries], +2). 116 + 1 + 6 + 1 + 2 + 3 + 2 + 15 + 2 = 148. *) - Alcotest.(check int) "entry count" 148 + Alcotest.(check int) "entry count" 153 (List.length (Lectionary.entries l)); (match Lectionary.find l (slug "ef-lent-1-monday") with | Some [ a; b ] -> |
