aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-17 14:26:42 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-17 14:26:42 +0200
commit1915f3bb9d74998a411bd55ae658cb3f58fd3477 (patch)
tree072174590e6aef6a684b24960e8894e8bc5865bc /test
parent3565ebd1608a7d87e0d890f9953845efcfe743ca (diff)
downloadcolitur-1915f3bb9d74998a411bd55ae658cb3f58fd3477.tar.gz
colitur-1915f3bb9d74998a411bd55ae658cb3f58fd3477.zip
docs(ef): fix round 2 -- three miscitations and a recorded blind spot
Comment and citation corrections found by review, plus one finding that survived an attempt to reconstruct it. No behaviour change; the suite is unchanged at 358 green. The ferial rubric "Diebus ferialibus a 2 ad 5 ianuarii Missa dicitur ut die 1 ianuarii" was attributed to RG 17(a) in three test comments. It is not RG 17(a). RG 17(a) (LT.txt:843) fixes only WHEN the Holy Name is kept -- "celebrandum dominica quae occurrit a die 2 ad 5 ianuarii; secus die 2 ianuarii". The rubric quoted is a Mass-propers rubric printed under the Sanctissimi Nominis Iesu heading (scan1:6523-6526, corroborated scan2:7216), governing what the ordinary ferias of that window say when they are not the feast at all. Two rules sharing a date window. Fix round 1 had already corrected this on the data side; the generator's own comment was right throughout. Only the test comments were stale. test_differential.ml named bootstrap_lectionary.ml's derived_entries as the source of ef-holy-name's citations. That binding no longer exists -- it was the mechanism that derived them from ef-holy-name-sunday's wrongly-widened ini translation, removed in Task 9 because the derivation was itself the error. They are hand-authored from the scans now, as holy_name_entries. M26's shape 1 described its 21 rows as votive Masses of the BVM "on an otherwise-unoccupied feria, not only a Saturday", splitting them into 4 BVM-Saturday rows and 17 "ordinary weekday ferias". Every one of the 21 is a Saturday, each checked individually against date -d. The error was not merely verbal: it made the gap look broader than a single cause and pointed away from the one rule that explains all 21. The sub-groups differ by season, not weekday, and only in what colitur shows in the votive Mass's place. One gap -- the office is built (RG 91 entry 27), the seasonal selection among the five Masses is not. Recorded, not fixed: step 4 of the reading chain has no oracle witness at all. This began as a note to write up a live-oracle confirmation for Felicitas and Perpetua; the reconstruction contradicted its premise. The sweep ran over 2028, where 6 March resolves as a Lenten feria with the saint admitted only as a commemoration, so her own Mass is never read that year. The finding underneath is firmer: only five saints route through a Common, they are the observed office on five days in all of 2005-2050 (isidore-of-seville 2008/2035/2046, frances-rome and sts-felicitas-perpetua both 2038), two are never observed in 46 years, and none falls in layer 4's window. Layer 3 does not cover it either -- lectio resolves the literal "-"/"-" sentinel there, which is what C18 is gated on, so it confirms only that colitur emits a citation where lectio emits none, never that it is right. Closing it needs the oracle fixture extended to 2035, 2038 or 2046; that is a fixture-scope decision. Register: sections 6.6 and 6.7. CLAUDE.md's layer-blindness list gains the step-4 entry.
Diffstat (limited to 'test')
-rw-r--r--test/test_differential.ml34
-rw-r--r--test/test_lectionary.ml5
-rw-r--r--test/test_lectionary_ef.ml6
-rw-r--r--test/test_oracle.ml40
4 files changed, 62 insertions, 23 deletions
diff --git a/test/test_differential.ml b/test/test_differential.ml
index 3ca24ca..31ae046 100644
--- a/test/test_differential.ml
+++ b/test/test_differential.ml
@@ -994,8 +994,18 @@ let september_ember_sat_slug = "ef-september-ember-sat"
NARROWED, Task 9 (branch ef-lectionary, layer-4 oracle): three of the
four weekdays (Wednesday/Thursday/Friday) now have their OWN direct
lectionary entry (tools/bootstrap_lectionary.ml's own
- [epiphanytide_opening_entries], RG 17(a)'s "diebus ferialibus a 2 ad 5
- ianuarii Missa dicitur ut die 1 ianuarii", both scans) -- they no
+ [epiphanytide_opening_entries], "Diebus ferialibus a 2 ad 5 ianuarii
+ Missa dicitur ut die 1 ianuarii, cum Gloria et praefatione de
+ Nativitate, sine Credo et Communicantes proprio" -- scan1.txt:6523-6526,
+ corroborated scan2.txt:7216 -- CORRECTED, fix round 2: this cited the
+ rubric as RG 17(a), which it is not. RG 17(a) (LT.txt:843) says only
+ WHEN the Holy Name is kept ("celebrandum dominica quae occurrit a die 2
+ ad 5 ianuarii; secus die 2 ianuarii"). The text quoted here is a
+ MASS-PROPERS rubric, printed under the "Sanctissimi Nominis Iesu"
+ heading, governing what the ORDINARY FERIAS of 2-5 January say when
+ they are not the feast at all. Two different rules that happen to share
+ a date window; only the second one is what these three weekdays read) --
+ they no
longer reach step 3's one-hop walkback THIS entry's own citation
describes at all, so keeping them here would misdescribe what
actually happens on those three weekdays now. See [C30] below for
@@ -1087,8 +1097,15 @@ let layer_c_reason (l : row) (c : row) diffs =
List.mem l.date holy_name_fallback_dates_2005_2050
(* Task 8: [First_f; Gospel_f] joined the accepted set. Now that
[ef-holy-name] carries its own citations (tools/bootstrap_lectionary.ml's
- own [derived_entries], sourced from RG 17(a)'s single Mass heading
- covering both shapes), most of these 20 rows already match lectio's
+ own [holy_name_entries], sourced from the Missal's single Mass
+ heading covering both of RG 17(a)'s shapes -- CORRECTED, fix round 2:
+ this named [derived_entries], a binding that no longer exists. That
+ was the mechanism which DERIVED [ef-holy-name] from
+ [ef-holy-name-sunday]'s own, then wrongly-widened, ini translation,
+ and it was removed in Task 9 precisely because the derivation WAS
+ the error; the citations are hand-authored from the scans now. See
+ that file's own note above [holy_name_citations]), most of these 20
+ rows already match lectio's
own citation by coincidence -- lectio's OWN plain-ferial fallback,
on years with no Sunday 2-5 January, usually lands on a December
Sunday whose slug collapses to the SAME "ef-christmas-sunday-0" key
@@ -1116,9 +1133,12 @@ let layer_c_reason (l : row) (c : row) diffs =
diffs = [ First_f; Gospel_f ] && String.equal c.slug holy_name_sunday_slug
then Some "C29"
else if
- (* C30 -- Task 9: RG 17(a)'s own "diebus ferialibus a 2 ad 5 ianuarii"
- rubric, the five non-Saturday weekdays (Saturday stays C25's own,
- narrowed note above explains why). *)
+ (* C30 -- Task 9: the Missal's own Mass-propers "diebus ferialibus a 2 ad
+ 5 ianuarii" rubric (CORRECTED, fix round 2: this said RG 17(a)'s,
+ which it is not -- see the C25 note above, and this entry's own
+ citation in data/ef/expected-divergences.sexp, which fix round 1
+ already corrected on the data side), the five non-Saturday weekdays
+ (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"
else if
diff --git a/test/test_lectionary.ml b/test/test_lectionary.ml
index a6ca334..1f8ed75 100644
--- a/test/test_lectionary.ml
+++ b/test/test_lectionary.ml
@@ -149,7 +149,10 @@ let test_ef_data_file_loads () =
check_entry "ef-holy-name-sunday" "Acts 4:8-12" "Luke 2:21";
check_entry "ef-christmas-sunday-0" "Gal 4:1-7" "Luke 2:33-40";
check_entry "ef-holy-name" "Acts 4:8-12" "Luke 2:21";
- (* Task 9: RG 17(a)'s own "diebus ferialibus" rubric (2-13 January,
+ (* Task 9: the Missal's own Mass-propers "diebus ferialibus" rubric
+ (CORRECTED, fix round 2: this said RG 17(a)'s, which it is not --
+ RG 17(a) fixes only WHEN the Holy Name is kept; the rubric quoted
+ governs what the ordinary ferias say when it is not) (2-13 January,
three 5-weekday families -- bootstrap_lectionary.ml's own
[epiphanytide_opening_entries] comment has the full citations and
the RG 78/BVM-Saturday reasoning for why Saturday is excluded from
diff --git a/test/test_lectionary_ef.ml b/test/test_lectionary_ef.ml
index 39e3cb8..3ed6987 100644
--- a/test/test_lectionary_ef.ml
+++ b/test/test_lectionary_ef.ml
@@ -159,8 +159,10 @@ let test_step3_advent_feria_resumes_sunday () =
REPLACED AGAIN, Task 9 (branch ef-lectionary, layer-4 oracle): 2028-01-05
("ef-christmas-1-wednesday") stopped exercising step 3 too, the SAME
- fate as the 2025-12-29 case this comment already documents -- RG 17(a)'s
- own "diebus ferialibus a 2 ad 5 ianuarii" rubric now gives it a direct
+ fate as the 2025-12-29 case this comment already documents -- the
+ Missal's own Mass-propers "diebus ferialibus a 2 ad 5 ianuarii" rubric
+ (CORRECTED, fix round 2: attributed to RG 17(a) here, which it is not --
+ RG 17(a) fixes only WHEN the Holy Name is kept) now gives it a direct
entry (tools/bootstrap_lectionary.ml's own
[epiphanytide_opening_entries]), so it resolves at step 2. The three
families this task's own fix closed (2-5 January, 7-12 January, Holy
diff --git a/test/test_oracle.ml b/test/test_oracle.ml
index 1e724b8..2d7060b 100644
--- a/test/test_oracle.ml
+++ b/test/test_oracle.ml
@@ -1230,19 +1230,33 @@ let m25_dates = [ "2026-03-09"; "2026-03-24"; "2027-03-01"; "2027-03-16" ]
Mass... needs... a season-keyed selection among five formularies" --
RG 309(a), "iuxta temporum diversitatem"):
- SHAPE 1 -- 21 rows: a rotating VOTIVE MASS OF THE BVM ("Missae de
- sanctae Mariae in sabbato" I-V and their Time-after-Pentecost
- siblings, missalemeum's own "II/III/V Mass of the B. V. M." titles) on
- an otherwise-unoccupied feria, not only a Saturday -- 2026-01-03/
- 2026-01-10/2027-01-02/2027-01-09 are RG 78's own BVM SATURDAY Office
- specifically (Task 6's own named open item; colitur's own step-3
- fallback, not the votive Mass, is what these four rows actually show
- -- 2026-01-03/2027-01-09 are `ef-christmas-1-saturday`, C25's own
- unchanged population in the sibling lectio differential; 2026-01-10/
- 2027-01-02 are `ef-christmas-2-saturday`); the other 17 of these 21
- are ordinary weekday ferias in Time after Pentecost showing the SAME
- votive-Mass title (2026-02-14/06-20/06-27/07-04/07-11/08-01/10-31/
- 11-07/11-28; 2027-07-17/07-24/09-04/09-11/10-30/11-06/11-13/11-27).
+ SHAPE 1 -- 21 rows, EVERY ONE A SATURDAY: a rotating VOTIVE MASS OF THE
+ BVM ("Missae de sancta Maria in sabbato" I-V, missalemeum's own
+ "II/III/V Mass of the B. V. M." titles) on an otherwise-unoccupied
+ IV-class Saturday -- RG 78's own Office throughout, and RG 309(a)'s own
+ "iuxta temporum diversitatem" selection of WHICH of the five Masses it
+ says.
+
+ CORRECTED, fix round 2: this read "on an otherwise-unoccupied feria, not
+ only a Saturday", and split the 21 into 4 BVM-Saturday rows plus "the
+ other 17 ... ordinary weekday ferias in Time after Pentecost". Both
+ halves of that are wrong, and the error was not merely verbal -- it made
+ the gap look BROADER than a single cause, and pointed the diagnosis away
+ from the one rule that actually explains all 21. Every date was checked
+ individually against `date -d`, not inferred: the 17
+ (2026-02-14/06-20/06-27/07-04/07-11/08-01/10-31/11-07/11-28;
+ 2027-07-17/07-24/09-04/09-11/10-30/11-06/11-13/11-27) are Saturdays
+ exactly like the four January ones. The real distinction between the two
+ sub-groups is SEASON, not weekday, and it matters only for what colitur
+ shows in the votive Mass's place: the four Christmastide rows
+ (2026-01-03/2027-01-09, `ef-christmas-1-saturday`, C25's own unchanged
+ population in the sibling lectio differential; 2026-01-10/2027-01-02,
+ `ef-christmas-2-saturday`) show its own step-3 ferial fallback, the 17
+ Time-after-Pentecost rows its own season fallback. ONE gap, not two:
+ colitur builds the Office itself (RG 91 entry 27, register ยง6.4) but not
+ the seasonal selection among the five Masses, which that task
+ deliberately deferred to the lectionary as a Mass-propers question
+ rather than an office question.
SHAPE 2 -- 9 rows, a SECOND, DIFFERENT and DISTINCT gap: ferias of a
week whose own Sunday was DISPLACED that year by a movable, named