aboutsummaryrefslogtreecommitdiff
path: root/test/test_lectionary_ef.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-17 21:45:47 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-17 21:45:47 +0200
commitcffb879fa124c22acd400f59152a57d20cec036f (patch)
treed44a6a1f80828b356ec122483f6fd71701b36e71 /test/test_lectionary_ef.ml
parent6e42b2f524b283f43e05a967295e244e4083725f (diff)
downloadcolitur-cffb879fa124c22acd400f59152a57d20cec036f.tar.gz
colitur-cffb879fa124c22acd400f59152a57d20cec036f.zip
feat(ef): the votive Mass of Our Lady on Saturday (RG 309(a))
RG 78's office has been built since ef-bvm-saturday: an otherwise unoccupied IV-class Saturday is de sancta Maria in sabbato, white, IV class. The Mass stayed the feria's, so the day observed Our Lady and then read Colossians on the parable of the weeds. That is M26 shape 1. RG 309(a) is the rule -- the Masses the Missal assigns "iuxta temporum diversitatem" -- and it prints five, each under its own season heading. All ten citations are transcribed from the scans with line numbers in the source. Masses II-V were confirmed twice, against the scan and against a live missalemeum capture of 2038 which names them and agrees on both readings. Mass I rests on the scan alone: no oracle year to hand has an Advent Saturday carrying this office. One witness where the others have two, and the code says so rather than blurring it. The mapping looked like the hard part and dissolved. The Missal's ranges are cut by civil dates and movable feasts, not by this rite's seasons -- II ends mid-season at the Purification, III spans four seasons. But measured against what a IV-class Saturday can actually be, it reduces to a seasonal mapping plus one date test at 2/3 February, with no Easter arithmetic at all: III's end to IV's start leaves the Triduum unassigned, unreachable because Holy Saturday is I class; IV's end to V's start leaves Pentecost week unassigned, also unreachable because that week's Saturday is an Ember Saturday. Time after Pentecost then begins exactly at Trinity, exactly where Mass V begins. Both gaps verified by sweep -- zero IV-class Saturdays in either across 2000-2059 -- not inferred. The office is identified structurally, never off the slug, which it deliberately shares with the ordinary feria: subject Bvm, IV class, Saturday. Blast radius: 87611 reading rows over the full domain, every one a Saturday. Allow-lists: M26 27 to 6, shape 1 gone, leaving only the Christ-the-King residue argued in colitur's favour last commit. The 2038 suite's BVM-SATURDAY-MASS class is removed rather than zeroed -- an id with no rows must not be declared. M18 355 to 376. C17 widened 397 to 445, taking its own Saturdays back from C1, C19 and C25, since one cause should not be filed under two ids; C31 89 to 103; C25 closed at 0 rows, its Holy-Name-week Saturdays now answered before step 3 is reached. Three unit tests pinned the old behaviour and are corrected rather than re-pinned: two asserted the day "keeps its ferial Mass", which was the honest thing to assert while this was unimplemented. The third still tests what it always did -- that step 4 refuses a temporal office -- and only what answers instead has changed. Register: section 6.13.
Diffstat (limited to 'test/test_lectionary_ef.ml')
-rw-r--r--test/test_lectionary_ef.ml29
1 files changed, 23 insertions, 6 deletions
diff --git a/test/test_lectionary_ef.ml b/test/test_lectionary_ef.ml
index 3ed6987..a5a0f6e 100644
--- a/test/test_lectionary_ef.ml
+++ b/test/test_lectionary_ef.ml
@@ -180,8 +180,14 @@ let test_step3_advent_feria_resumes_sunday () =
only the Holy-Name-Sunday alias was wrong, not this citation itself). *)
let test_step3_christmas_feria_resumes_sunday () =
Alcotest.(check (list string))
- "Saturday of Holy Name week resumes the Nativity-Octave Sunday's Mass"
- [ "Gal 4:1-7"; "Luke 2:33-40" ]
+ (* SUPERSEDED, not merely re-pinned (BVM Saturday Mass, 2026-08-17): this
+ Saturday is an unoccupied IV-class Saturday, so it carries RG 78's own
+ office -- and now RG 309(a)'s Mass for it, which answers before step 3's
+ walkback is ever reached. The Nativity-Octave Sunday's Mass is no longer
+ what this day says, and should not be: the day's office is Our Lady's.
+ Mass II, "A Nativitate Domini usque ad Purificationem". *)
+ "Saturday of Holy Name week says the BVM Saturday Mass, not the Sunday's"
+ [ "Titus 3:4-7"; "Luke 2:15-20" ]
(refs (day 2026 1 3))
(* Fix round 1 (coordinator review, Important finding 1): the original test
@@ -328,8 +334,13 @@ let test_step1_proper_francis_of_paola () =
[sanctoral_office = true] and all 357 tests stayed green). *)
let test_step4_leaves_a_temporal_office_alone_on_shipped_data () =
Alcotest.(check (list string))
- "4 July 2026 (a BVM Saturday) keeps its ferial Mass"
- [ "1 Pet 3:8-15."; "Matt 5:20-24." ]
+ (* CORRECTED (BVM Saturday Mass, 2026-08-17). This pinned the GAP -- the
+ office was Our Lady's while the Mass stayed the feria's -- which was the
+ honest thing to assert while RG 309(a) was unimplemented. It is
+ implemented now, so the day says Mass V, "A festo Ss. Trinitatis usque
+ ad sabbatum ante dominicam I Adventus". *)
+ "4 July 2026 (a BVM Saturday) says the BVM Saturday Mass"
+ [ "Ecclus 24:14-16"; "Luke 11:27-28" ]
(refs (day 2026 7 4))
(* THE GUARD, pinned. The guard is a no-op on shipped data by design, so the
@@ -368,8 +379,14 @@ let test_step4_guard_refuses_a_common_assigned_to_a_ferial_slug () =
"the synthetic table really does resolve that ferial slug to a Common" true
(Lectionary_ef.commons_for ~commons:hostile ferial_slug <> None);
Alcotest.(check (list string))
- "4 July 2026 keeps its ferial Mass even so: step 4 refuses a temporal office"
- [ "1 Pet 3:8-15."; "Matt 5:20-24." ]
+ (* The point of this test is UNCHANGED and still worth asserting: step 4
+ (the Common route) must refuse a temporal-origin office, so a Commons
+ assignment cannot leak onto the BVM Saturday. What changed is only what
+ answers instead -- formerly the feria's Mass via step 2, now RG 309(a)'s
+ own via the BVM step. If step 4 ever did fire here it would produce a
+ Common's readings, which are neither of these. *)
+ "4 July 2026: step 4 still refuses a temporal office; the BVM Mass answers"
+ [ "Ecclus 24:14-16"; "Luke 11:27-28" ]
(refs (day_with ~commons:hostile 2026 7 4))
(* THE DATA ASSERTION, and the one that cannot drift: after Task 6, every