summaryrefslogtreecommitdiff
path: root/test/test_golden_of.ml
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-26 13:57:14 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-26 13:57:14 +0200
commit03d3c00ccdde318207c8b4fdc456e5e64d6b4abf (patch)
treeeaa8b77b549f6751594b2868798c7ca2d1b3ca70 /test/test_golden_of.ml
parent9b8821f7b914c94f5b2c8eeda05407ee921b3d5a (diff)
downloadcolitur-03d3c00ccdde318207c8b4fdc456e5e64d6b4abf.tar.gz
colitur-03d3c00ccdde318207c8b4fdc456e5e64d6b4abf.zip
feat(of-lectionary): hand-author the Christmas Day Mass, close the gap
colitur readings --rite of printed "- | -" on 25 December every year -- lectio's own 988 keys never included the Christmas DAY Mass at all, only the Vigil (already correctly noted, but left unfilled, in tools/bootstrap_lectionary_of.ml's own named_overrides comment). Sourced, not guessed: docs/research/of/olm-1981-ocr.txt:4513-4520, "16 Ad Missam in die", the same primary authority this module already cites for the cycle rules. First reading and Gospel only, matching this file's own scope everywhere else (First/Gospel is the kernel's own boundary, I7, a separate deferred task) -- Isaiah 52:7-10 / John 1:1-18 (OLM's own LONGER form; the file's LINEAGE section already discloses that short/long-form choices are not modelled anywhere in this data, so this is an application of an existing limitation, not a new one). Injected via a new hand_authored table in the generator, merged into entries before assert_reachable/Lectionary.of_entries -- there is no ini section to derive this from. One new lookup_any call (readings' own existing temporal-slug fallback, unmodified) now resolves BOTH the formulary and the citations for 25 December from the same entry, so both halves of the "citations-unresolved"/"formulary" gap close together, not just the citation half. Verified across the WHOLE domain, not assumed: test_validate_of.ml's exhaustive sweep (COLITUR_EXHAUSTIVE_SWEEP=1, all 8 416 years) now asserts the Nativity gap fires on NONE of them, down from all 8 416 before this fix -- and is kept as a live, dedicated "must never recur" counter rather than deleted. test_rite_of.ml's landmark-year check and test_lectionary_of.ml's 2026 coverage pins are updated the same way (the unresolved-day set that used to be pinned as {25 December} is now pinned as empty, not merely a count going to zero). A concrete golden pin (test_golden_of.ml) locks the exact citations through the full resolved pipeline. data/of/lectionary.sexp regenerated (771 entries, was 770); its own SHA-256 re-pinned. make check (COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force, unpiped, foreground): exit 0, 895 tests, ~536s.
Diffstat (limited to 'test/test_golden_of.ml')
-rw-r--r--test/test_golden_of.ml31
1 files changed, 29 insertions, 2 deletions
diff --git a/test/test_golden_of.ml b/test/test_golden_of.ml
index f40b62a..fd4f781 100644
--- a/test/test_golden_of.ml
+++ b/test/test_golden_of.ml
@@ -34,7 +34,10 @@
5. All Souls (2 November).
6. The Sacred Heart (Easter+68).
Plus 17 December's own date-keyed reading (Gen 49:2,8-10 / Mt 1:1-17,
- fixed earlier on this branch, commit b6d0eba0). *)
+ fixed earlier on this branch, commit b6d0eba0), and, added by the
+ fix-wave-2 review (I8), 25 December's own reading (Isa 52:7-10 /
+ Jn 1:1-18, hand-authored from OLM 1981 -- see [test_christmas_day_
+ reading]'s own header). *)
module Cal = Colitur_kernel.Calendar
module Layer = Colitur_kernel.Layer
@@ -317,6 +320,29 @@ let test_december_17_reading () =
letter"
2027 12 17 "2027-12-17 slug=of-advent-3-friday first=Genesis 49:2,8-10 gospel=Matthew 1:1-17"
+(* ------------------------------------------------------------------ *)
+(* 8. Christmas Day itself: fix wave I8 (final-review.md, 2026-08-25- *)
+(* colitur-of-phases-3-5). lectio's own 988 keys never covered the *)
+(* Christmas DAY Mass at all (only the Vigil) -- `colitur readings *)
+(* --rite of` used to print "- | -" on 25 December, every year (pinned, *)
+(* before this fix, by test_validate_of.ml's own exhaustive-sweep *)
+(* counter: fired on all 8 416 swept years). tools/ *)
+(* bootstrap_lectionary_of.ml's own [hand_authored] table now injects it *)
+(* directly from OLM 1981's own "16 Ad Missam in die" *)
+(* (docs/research/of/olm-1981-ocr.txt:4513-4520): First = Isaiah *)
+(* 52:7-10, Gospel = John 1:1-18 (OLM's own LONGER form -- the file's own*)
+(* LINEAGE section already discloses that short/long-form choices are *)
+(* not modelled anywhere in this data, so this is an application of an *)
+(* existing, stated limitation, not a new one). Fixed civil-date entry, *)
+(* not cycle-lettered (the Christmas Day Mass does not vary by A/B/C or *)
+(* I/II), so a single year is sufficient -- unlike item 7 above, there is*)
+(* no cycle-letter axis to re-confirm in a second year. ------------------ *)
+
+let test_christmas_day_reading () =
+ check_readings ~msg:"2026-12-25: the Christmas Day Mass, hand-authored from OLM 1981 (Isa 52:7-10/John \
+ 1:1-18) -- was \"- | -\" before fix wave I8"
+ 2026 12 25 "2026-12-25 slug=of-nativity first=Isaiah 52:7-10 gospel=John 1:1-18"
+
let suite =
( "golden-of",
[ Alcotest.test_case "Ordinary Time skips a week (2026); Mary, Mother of the Church" `Quick
@@ -328,5 +354,6 @@ let suite =
test_annunciation_holy_week_2027;
Alcotest.test_case "All Souls (2026)" `Quick test_all_souls_2026;
Alcotest.test_case "the Sacred Heart, Easter+68 (2026)" `Quick test_sacred_heart_2026;
- Alcotest.test_case "17 December's own date-keyed reading, two civil years" `Quick test_december_17_reading
+ Alcotest.test_case "17 December's own date-keyed reading, two civil years" `Quick test_december_17_reading;
+ Alcotest.test_case "Christmas Day's own reading (fix wave I8)" `Quick test_christmas_day_reading
] )