summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/ef/expected-divergences-missalemeum.sexp8
-rw-r--r--data/ef/expected-divergences.sexp10
-rw-r--r--data/ef/lectionary.sexp17
-rw-r--r--test/test_differential.ml37
-rw-r--r--test/test_lectionary.ml2
-rw-r--r--tools/bootstrap_lectionary.ml40
6 files changed, 105 insertions, 9 deletions
diff --git a/data/ef/expected-divergences-missalemeum.sexp b/data/ef/expected-divergences-missalemeum.sexp
index 90ffceb..effb7c9 100644
--- a/data/ef/expected-divergences-missalemeum.sexp
+++ b/data/ef/expected-divergences-missalemeum.sexp
@@ -250,8 +250,8 @@ REVISED, ef-bvm-saturday task: 395 of the 730 days in this window used to carry
REVISED AGAIN, Task 9 (branch ef-lectionary, layer-4 oracle): 352, down by 42 from 394. NOT a change to this entry's own guard (still, and only, [diffs = [ Observed_identity_unresolved ]] exactly) -- this task compared reading citations for the first time, and 42 of the former 394 rows now ALSO carry a real [First_mismatch]/[Gospel_mismatch] alongside the pre-existing observed-identity gap, so they escape this entry's own EXACT-match guard and move to the FIVE new entries below (M23 2, M24 4, M25 4, M26 30, M27 2 -- 2+4+4+30+2=42, exactly accounting for the drop, verified against the comparator's own failure output, not assumed from the arithmetic alone -- CORRECTED, fix round 1, coordinator review: this note previously miscounted them as \"six\").
-CORRECTED, fix round 1 (coordinator review): the remaining 352 were previously described as every day whose citation \"ALREADY agreed with missalemeum before this task and still does\" -- imprecise for 18 of them. Before this task the citation axis did not exist at all, so NO row's citation was ever actually checked; \"already agreed\" wrongly implies the pre-task VALUE was correct on all 352, when for 18 it was not -- it only became correct, and therefore only started agreeing, because of this task's own three fixes (Holy Name Sunday's own two dates, 2026-01-04/2027-01-03; 12 more January-window ferias across the three RG-17(a)/Holy-Family-propers-rubric families that now resolve at step 2 instead of the walkback, one full list: 2026-01-02/05/07/08/09/12, 2027-01-04/05/07/08/11/12; and Corpus Christi/Sacred Heart in both years, 2026-06-04/06-12, 2027-05-27/06-04 -- 2+12+4=18, independently re-derived against the real resolver, not merely arithmetic). The other 334 were genuinely unaffected by this task, matching both before and after (or, more precisely, would have matched on the day this axis existed either way).")
- (expected_rows 352))
+CORRECTED, fix round 1 (coordinator review): the remaining 352 were previously described as every day whose citation \"ALREADY agreed with missalemeum before this task and still does\" -- imprecise for 18 of them. Before this task the citation axis did not exist at all, so NO row's citation was ever actually checked; \"already agreed\" wrongly implies the pre-task VALUE was correct on all 352, when for 18 it was not -- it only became correct, and therefore only started agreeing, because of this task's own three fixes (Holy Name Sunday's own two dates, 2026-01-04/2027-01-03; 12 more January-window ferias across the three RG-17(a)/Holy-Family-propers-rubric families that now resolve at step 2 instead of the walkback, one full list: 2026-01-02/05/07/08/09/12, 2027-01-04/05/07/08/11/12; and Corpus Christi/Sacred Heart in both years, 2026-06-04/06-12, 2027-05-27/06-04 -- 2+12+4=18, independently re-derived against the real resolver, not merely arithmetic). The other 334 were genuinely unaffected by this task, matching both before and after (or, more precisely, would have matched on the day this axis existed either way). WIDENED 352 -> 355 (movable-date-specs follow-up, 2026-08-17): the three Trinity-week ferias that M26 shape 2(a) used to cover now agree with the oracle on their citations and differ only on observed-identity, which is this entry own generic shape -- a temporal-origin day for which colitur sets no English name. Not a new divergence: the same three days, one of their two causes removed.")
+ (expected_rows 355))
((id M19)
(citation "RG 110's OTHER direction: \"In Officio et Missa S. Petri semper fit commemoratio S. Pauli, ET VICISSIM\" -- the SAME rule M12 used to cite, applied here to Paul's own office commemorating Peter, not Peter's own office commemorating Paul; confirmed a third time by the calendarium's own June table, both photographic scans, word for word: \"In Commemoratione S. Pauli Ap., III classis. / Commemoratio S. Petri Ap.\"")
(verdict colitur)
@@ -290,8 +290,8 @@ SHAPE 1 -- 21 rows: RG 78's own rotating votive Mass of the BVM (\"Missae de san
SHAPE 2 -- 9 rows, a SECOND, DIFFERENT gap: ferias of a week whose own Sunday was DISPLACED that year by a movable named temporal-cycle feast, where the Missal requires the DISPLACED Sunday's own Mass to continue informing that week's ferias, but step 3 walks back to the DISPLACING feast's citation instead. Two witnessed instances: (a) 2026-06-02/03 and 2027-05-24 (the ferias between Trinity Sunday and Corpus Christi) -- the Missal prints a named formula for exactly this week, \"Missa Dominicae I post Pentecosten\" (1 Ioann. 4,8-21/Luc. 6,36-42, docs/research/scan1.txt:21758-21830, found while researching Corpus Christi's own Mass immediately following it), but colitur's step 3 walks back to Trinity SUNDAY's own generic citation instead, since [ef-corpus-christi] (this task's own fix) now correctly interrupts the week at step 2, one Sunday short of what the week's own ferias actually need; (b) 2026-10-26/27/29/30 and 2027-11-03/05 (the ferias of the week Christ the King, I class movable, \"Dominica ultima octobris\", displaces) -- colitur's own citation on all six is LITERALLY Christ the King's own Gospel (John 18:33-37, \"Art thou a king?\"), confirming step 3 walked back to the DISPLACING feast, not the displaced ordinary Sunday; missalemeum shows a different citation each row. No Missal-propers rubric for Christ the King's own week ferias was found the way Holy Name/Holy Family's own each carry one (checked: no rubric text precedes Christ the King's own Mass heading, scan1.txt:39140-39163) -- this half is named from the OBSERVED citation evidence itself, not from a located propers rubric; no citation SPECIFIC to Christ the King's own week is claimed.
-Neither shape is safe to fix inside this task's own scope (extending layer 4 + triage) without the same real, dedicated, TDD/mutation-tested unit of work data/ef/expected-divergences.sexp's own C6/C25 and Task 6's own open item already call for -- a season-keyed ferial/votive-Mass-selection mechanism, new behaviour, not new data. Verdict open, the SAME fourth verdict M15/M18 already establish for a genuine comparator/architecture LIMIT, honestly counted and NAMED rather than silently absorbed, left failing, or buried in an unexplained residue. A literal date list, not a shape predicate: no single structural signal (unlike C17's own [subject = bvm]) distinguishes this population from a genuinely new, unrelated citation bug on some other Time-after-Pentecost feria. Derived directly from the OCaml comparator's own failure output, not hand-counted first and cross-checked after: 30.")
- (expected_rows 30))
+Neither shape is safe to fix inside this task's own scope (extending layer 4 + triage) without the same real, dedicated, TDD/mutation-tested unit of work data/ef/expected-divergences.sexp's own C6/C25 and Task 6's own open item already call for -- a season-keyed ferial/votive-Mass-selection mechanism, new behaviour, not new data. Verdict open, the SAME fourth verdict M15/M18 already establish for a genuine comparator/architecture LIMIT, honestly counted and NAMED rather than silently absorbed, left failing, or buried in an unexplained residue. A literal date list, not a shape predicate: no single structural signal (unlike C17's own [subject = bvm]) distinguishes this population from a genuinely new, unrelated citation bug on some other Time-after-Pentecost feria. Derived directly from the OCaml comparator's own failure output, not hand-counted first and cross-checked after: 30. NARROWED (movable-date-specs follow-up, 2026-08-17): 30 -> 27. SHAPE 2(a) is FIXED, not re-adjudicated -- the three ferias between Trinity Sunday and Corpus Christi now resolve at step 2 from the Mass the Missal itself prints for that week (scan1.txt:21758), under RG 299 explicit escape clause nisi a rubricis aliter provisum sit (scan1.txt:1096-1098). Those days still differ on observed-identity, being temporal-origin, and fall to M18 accordingly. SHAPE 2(b), Christ the King week, is NOT the same case and REMAINS -- but its verdict is now argued rather than merely open: no proper Mass is assigned there (checked directly, no rubric precedes that Mass heading at scan1.txt:39163ff), so RG 299 DEFAULT governs and the Mass of the preceding Sunday genuinely IS Christ the King own, which is what colitur emits. Read on the primary text colitur is right here and missalemeum diverges; kept open rather than closed only because no rubric SPECIFIC to that week was located either way.")
+ (expected_rows 27))
((id M27)
(citation "tools/extract_missalemeum_oracle.py's own header (the extraction script, not an RG citation): Christmas Day has THREE Masses in the 1962 Missal (Midnight/Dawn/Day), each with its own distinct Epistle+Gospel; this fixture's own entry[0] convention (verified, and documented, for every OTHER field it reads) takes the Midnight Mass, while colitur's own citation (bootstrapped from lectio) reflects the Day Mass -- two DIFFERENT, both genuine, Masses of the identical civil day")
(verdict colitur)
diff --git a/data/ef/expected-divergences.sexp b/data/ef/expected-divergences.sexp
index e0a3fed..6dacf11 100644
--- a/data/ef/expected-divergences.sexp
+++ b/data/ef/expected-divergences.sexp
@@ -114,8 +114,8 @@ CORRECTED, Task 9 (branch ef-lectionary, layer-4 oracle): the 13-vs-7 coincident
(verdict colitur)
(note "ef-bvm-saturday task: colitur now builds RG 91 entry 27's votive Office of the BVM on every otherwise-unoccupied IV-class Saturday (Rite_ef.Temporal_ef's own [bvm_saturday_names] citation has the full argument) -- white (RG 431(e) -> RG 121(a) -> RG 120(b); RG 120(b) alone reads \"de festis\" and this Office is not a festum), unconditionally, overriding the season's own colour (violet in Septuagesima, green in Time after Epiphany/Time after Pentecost; Christmastide and ordinary Paschaltide already happened to be white). lectio builds no equivalent office at all -- checked directly against its own tridentine-calendar.ini/generator, no comparable rule exists there, the same genuine upstream gap C15/C16 above document for their own gaps, not a colitur bootstrap miss -- so it keeps showing the plain season colour on every one of these Saturdays. Season, slug and rank all still agree: temporal_ef.ml's own [bvm_saturday_names] citation (\"Slug\" paragraph) deliberately REUSES the ordinary <season>-<week>-saturday ferial slug rather than minting a new one (partly BECAUSE a bespoke uniform slug would itself have broken Colitur_kernel.Validate's own slug-uniqueness invariant, sighted on every otherwise-unoccupied Saturday in a year), so [Colour_f] alone is the complete diff set every one of these rows carries -- never [Slug_f] too. Gated on colitur's own [rank]=class-4, [weekday]=saturday and [colour]=white (test_differential.ml's own [is_bvm_saturday_row]) rather than a date list, unlike C14/C15/C16 above: RG 78's own condition (\"otherwise unoccupied IV-class Saturday\") reduces exactly to this triple, and the population is large (a substantial fraction of all Saturdays in the 2005-2050 window) and entirely formulaic, not a short, individually-interesting list. Derived directly from the OCaml comparator's own failure output (test_layer_c_counts_match_citations), not hand-counted first and cross-checked after.
-NARROWED, task 8: expected_rows moved 416 -> 406. Not a regression -- 10 of the former 416 rows now ALSO carry [First_f]/[Gospel_f] (C19's own Time-after-Epiphany week-numbering-shift years, 2008/2013/2019/2030/2036/2041/2047, on the specific Saturdays where the BVM office and the week-shift coincide) and so no longer satisfy this entry's own EXACT [diffs = [ Colour_f ]] guard -- they move to C19 instead, which explains the SAME colour divergence plus the week-shift's own citation divergence together. This entry's own guard is intentionally NOT widened to `subset`: doing so would risk silently absorbing a future, unrelated citation bug on an otherwise-ordinary BVM Saturday. Re-derived directly from the OCaml comparator's own failure output: 406.")
- (expected_rows 406))
+NARROWED, task 8: expected_rows moved 416 -> 406. Not a regression -- 10 of the former 416 rows now ALSO carry [First_f]/[Gospel_f] (C19's own Time-after-Epiphany week-numbering-shift years, 2008/2013/2019/2030/2036/2041/2047, on the specific Saturdays where the BVM office and the week-shift coincide) and so no longer satisfy this entry's own EXACT [diffs = [ Colour_f ]] guard -- they move to C19 instead, which explains the SAME colour divergence plus the week-shift's own citation divergence together. This entry's own guard is intentionally NOT widened to `subset`: doing so would risk silently absorbing a future, unrelated citation bug on an otherwise-ordinary BVM Saturday. Re-derived directly from the OCaml comparator's own failure output: 406. NARROWED (movable-date-specs follow-up, 2026-08-17): 406 -> 397. Nine of these Saturdays are ALSO the Saturday of the week after Trinity Sunday, where colitur now resolves the printed Mass the Missal assigns that week (RG 299 escape clause -- see C35) while lectio still walks back to Trinity. Those rows carry a citation difference as well as this entry own colour one, so they belong to C35 now; split out to a cited entry rather than silently re-absorbed here, the same discipline C15 own split from C1 set. The colour cause is unchanged on all 397 that remain.")
+ (expected_rows 397))
((id C18)
(citation "RG 124 (\"XVIII - De coloribus paramentorum\", \"C) De colore rubro\"), both photographic scans word for word: 124(b) \"adhibetur color ruber in Officio et Missa de festis: ... Sanctorum Apostolorum et Evangelistarum, in eorum die natalicio, excepto festo S. Ioannis (27 decembris)\"; 124(e) \"Sanctorum Martyrum, quorum colitur aut martyrium\"; register's own audit rewrite, ef-sanctoral-audit task")
(verdict colitur)
@@ -231,3 +231,9 @@ CORRECTED, fix round 1 (coordinator review, Important 1): this note previously d
(verdict colitur)
(note "Task 9 (branch ef-lectionary, layer-4 oracle): the SAME shape as C33 immediately above, for the Sacred Heart of Jesus (`ef-sacred-heart`, I class, movable, Friday after the Octave of Corpus Christi). No lectionary entry at all before this task; both engines independently fell back to Trinity Sunday's own preceding-Sunday citation (\"1 John 3:13-18\") and silently agreed on the wrong answer, the identical \"both wrong, both silent\" shape C33 explains. Gated on the literal slug and `diffs = [ First_f; Gospel_f ]` exactly (identity already agrees -- never impeded, observed on all 46 years). Derived directly from the OCaml comparator's own failure output, not hand-counted first and cross-checked after: 46, the full domain, no residue.")
(expected_rows 46))
+
+ ((id C35)
+ (citation "RG 299 (docs/research/scan1.txt:1096-1098), the general ferial rule: \"Item propriam Missam habent omnes feriae temporis Quadragesimae et Passionis necnon Quatuor Temporum Adventus et septembris. In reliquis feriis dicitur Missa dominicae praecedentis, NISI A RUBRICIS ALITER PROVISUM SIT\" -- restated in the propers (scan1.txt:4933-4935): \"Per totum annum, si dicenda sit infra hebdomadam Missa de feria, adhibetur Missa dominicae praecedentis, NISI PROPRIA MISSA ASSIGNETUR\". The assigned Mass here is the Missal's own printed heading \"Missa dominicae I post Pentecosten\" (scan1.txt:21758), whose readings are \"Lectio Epistolae beati Ioannis Apostoli. 1 Ioann. 4, 8-21\" (scan1.txt:21801-21802) and \"Sequentia sancti Evangelii secundum Lucam. Luc. 6, 36-42\" (scan1.txt:21813-21814).")
+ (verdict colitur)
+ (note "The ferias of the week after Trinity Sunday. Trinity is the temporal identity of its own Sunday, so a plain walkback to \"the preceding Sunday's Mass\" lands on Trinity's -- which is what colitur did until this fix and what lectio still does. But RG 299's rule carries an explicit exception, and this week is the clearest instance of it in the year: the Missal prints a NAMED formula for the week immediately after Trinity, precisely BECAUSE the feast has taken the Sunday's own Mass. colitur now resolves these ferias at step 2 from that formula and never reaches step 3's walkback at all. This is test_oracle.ml's own M26 shape 2(a), fixed rather than allow-listed there. Note what this does NOT cover: M26 shape 2(b), the ferias of Christ the King's week, where no proper Mass is assigned (checked directly -- no rubric precedes that Mass heading, scan1.txt:39163ff) and RG 299's DEFAULT therefore governs, making the preceding Sunday's Mass genuinely Christ the King's own. Gated on the literal 5-slug list, requiring the citation difference to be present, and admitting a colour difference only alongside it -- nine of these days are also unoccupied IV-class Saturdays carrying C17's own BVM-Office colour divergence, and a colour-only Saturday must still fall to C17 rather than be absorbed here. No Thursday in the list: Corpus Christi is Easter+60, which IS this week's Thursday every year, so the slug never exists -- the bootstrap's own reachability guard refuses to emit it. Derived from the comparator's own failure output, not hand-counted: 69.")
+ (expected_rows 69))
diff --git a/data/ef/lectionary.sexp b/data/ef/lectionary.sexp
index ccb2214..a83e12e 100644
--- a/data/ef/lectionary.sexp
+++ b/data/ef/lectionary.sexp
@@ -10,7 +10,7 @@
;
; Source: ../lectio/internal/caldata/tridentine-lectionary.ini
; SHA-256: ccd6640e8c2ae4d260e62c55cfe2b3ea14ab996e8e5a82cc1b9a37bc65ac8591
-; 148 entries (119 ini sections translated/widened into colitur's own
+; 153 entries (119 ini sections translated/widened into colitur's own
; Temporal_ef vocabulary via [colitur_keys]; 1 hand-authored from a
; second source file [vigil_entries]; 6 hand-authored directly from
; the Missal [holy_week_entries]; 1 hand-authored directly from the
@@ -395,6 +395,21 @@
(ef-time-after-epiphany-sunday-6
(((part First) (reference "1 Thess 1:2-10"))
((part Gospel) (reference "Matt 13:31-35"))))
+ (ef-time-after-pentecost-1-friday
+ (((part First) (reference "1 John 4:8-21"))
+ ((part Gospel) (reference "Luke 6:36-42"))))
+ (ef-time-after-pentecost-1-monday
+ (((part First) (reference "1 John 4:8-21"))
+ ((part Gospel) (reference "Luke 6:36-42"))))
+ (ef-time-after-pentecost-1-saturday
+ (((part First) (reference "1 John 4:8-21"))
+ ((part Gospel) (reference "Luke 6:36-42"))))
+ (ef-time-after-pentecost-1-tuesday
+ (((part First) (reference "1 John 4:8-21"))
+ ((part Gospel) (reference "Luke 6:36-42"))))
+ (ef-time-after-pentecost-1-wednesday
+ (((part First) (reference "1 John 4:8-21"))
+ ((part Gospel) (reference "Luke 6:36-42"))))
(ef-time-after-pentecost-sunday-10
(((part First) (reference "1 Cor. 12:2-11"))
((part Gospel) (reference "Luke 18:9-14"))))
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 ] ->
diff --git a/tools/bootstrap_lectionary.ml b/tools/bootstrap_lectionary.ml
index 7fb186d..7df290b 100644
--- a/tools/bootstrap_lectionary.ml
+++ b/tools/bootstrap_lectionary.ml
@@ -599,6 +599,44 @@ let epiphanytide_weekday_citations =
(`TimeAfterEpiphany1, non_saturday_weekdays, pair ~first:"Rom 12:1-5" ~gospel:"Luke 2:42-52")
]
+(* RG 299's own escape clause, exercised (movable-date-specs follow-up,
+ 2026-08-17). The general ferial rule is "In reliquis feriis dicitur Missa
+ dominicae praecedentis, NISI A RUBRICIS ALITER PROVISUM SIT" (RG 299,
+ scan1.txt:1096-1098), restated in the propers as "Per totum annum, si
+ dicenda sit infra hebdomadam Missa de feria, adhibetur Missa dominicae
+ praecedentis, NISI PROPRIA MISSA ASSIGNETUR" (scan1.txt:4933-4935).
+
+ The week after Trinity Sunday is the clearest case of that exception in the
+ whole year. Trinity is the temporal identity of its own Sunday, so step 3's
+ walkback lands on Trinity's Mass -- but the Missal prints a NAMED formula
+ for the week immediately after it, "Missa dominicae I post Pentecosten"
+ (heading, scan1.txt:21758), precisely because the Sunday's own Mass has
+ been taken by the feast. Its readings are "Lectio Epistolae beati Ioannis
+ Apostoli. 1 Ioann. 4, 8-21" (scan1.txt:21801-21802) and "Sequentia sancti
+ Evangelii secundum Lucam. Luc. 6, 36-42" (scan1.txt:21813-21814).
+
+ Given directly here so these ferias resolve at STEP 2 and never reach step
+ 3's walkback at all -- which is both correct and the honest shape: the
+ Missal assigns them a Mass, so they have one, rather than inheriting one.
+
+ This is test_oracle.ml's own M26 shape 2(a). Shape 2(b), Christ the King's
+ week, is NOT the same case and is deliberately not given entries here: no
+ proper Mass is assigned there (checked, scan1.txt:39163 ff, no rubric
+ precedes that Mass heading), so RG 299's DEFAULT governs and the preceding
+ Sunday's Mass genuinely is Christ the King's own. *)
+let trinity_week_citations = pair ~first:"1 John 4:8-21" ~gospel:"Luke 6:36-42"
+
+let trinity_week_entries =
+ List.map
+ (fun wd -> (slug_or_die ("ef-time-after-pentecost-1-" ^ wd), trinity_week_citations))
+ (* NO Thursday: Corpus Christi is Easter+60, which IS the Thursday of this
+ week every year without exception, so the ferial slug never exists.
+ Found by the generator's own reachability guard rather than reasoned
+ out in advance -- the guard refuses to emit a key no Temporal_ef slug
+ can ever match, which is precisely the silent-lookup-miss this
+ lectionary has been bitten by before. *)
+ [ "monday"; "tuesday"; "wednesday"; "friday"; "saturday" ]
+
let epiphanytide_opening_entries =
List.concat_map
(fun (family, wds, cs) ->
@@ -750,7 +788,7 @@ let () =
let entries =
translated @ vigil_entries @ holy_week_entries @ passion_tuesday_entry
@ ember_saturday_corrections @ nativity_octave_entries @ holy_name_entries
- @ epiphanytide_opening_entries @ movable_feast_entries
+ @ epiphanytide_opening_entries @ trinity_week_entries @ movable_feast_entries
in
assert_reachable entries;
let lect =