aboutsummaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-24 16:29:23 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-24 16:29:23 +0200
commit8a5da8756cf6b57aa36c01b71ce893f7967d3a29 (patch)
tree10873a692400fa25ce54c67ac9fc34d46af86272 /CLAUDE.md
parent4f87cbde4ee79ac96aa7ebfed105b3a5ec02be43 (diff)
parent73b15551804bb63ee0081005e2869d36afb54be2 (diff)
downloadcolitur-8a5da8756cf6b57aa36c01b71ce893f7967d3a29.tar.gz
colitur-8a5da8756cf6b57aa36c01b71ce893f7967d3a29.zip
merge: celebrant Mass rubrics, and four rubrical corrections
colitur now prints what a real ordo prints for the Mass: which formulary is said and how it was reached, the Gloria, the Creed, the preface, and the commemorations with their Low-Mass/sung distinction. colitur rubrics joins day and readings. Four defects were found and fixed on the way, each by an external witness rather than by inspection: the Creed said at Requiem Masses (RG 476(f)), the missing bissextile shift of St Matthias and St Gabriel (2 041 leap years), Rogation Monday and Tuesday coloured violet in Paschaltide (RG 119(b)), and the ferias after the Ascension resuming the wrong Sunday's Mass rather than the Ascension's. Validation gained a sixth layer and then some: the preface is checked against three independent publishers over seven witness-years (FIUV, three LMS editions, three extraordinaryform.org editions), none of which shares the Divinum Officium -> missalemeum -> lectio lineage the older layers all descend from.
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md42
1 files changed, 35 insertions, 7 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index 23dce0b..f4f6b7b 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -100,7 +100,7 @@ overlays**.
- **Data format**: **S-expressions** (`sexplib`/`ppx_sexp_conv`) — the OCaml type
*is* the format, parse/print auto-derived, no hand-written parser.
-## Validation (the "sure bet" pillar — 5 layers)
+## Validation (the "sure bet" pillar — 6 layers)
1. **Types** — illegal states unrepresentable (closed variants for ranks/colours/
seasons; dates validated at construction; resolution total).
@@ -113,11 +113,30 @@ overlays**.
citations).
4. **Oracle cross-check** — vs missalemeum (EF) / litcal (OF) in lectio's `sources/`.
5. **Golden regression** — landmark + known-tricky years pinned.
+6. **LMS Ordo cross-check** (`test_lms_ordo.ml`, added `celebrant-rubrics-phase1`) —
+ the Creed (RG 475–476), the RG 78/309(a) Saturday votive Mass's own seasonal
+ selection, and the reading-formulary override, each compared against a printed
+ Latin Mass Society Ordo for England & Wales (Peter Day-Milne, v2.21) over one
+ liturgical year, 2024-11-27–2025-12-31 (400 days). Genuinely a FOURTH lineage,
+ not a re-count of layer 4 — see the very next bullet, which this layer
+ supersedes for the "no independent witness" half of its own claim.
-**Status: all five layers are built and green.** Layer 2 is exhaustively clean over
+**Status: all six layers are built and green.** Layer 2 is exhaustively clean over
all 8 417 years (`COLITUR_EXHAUSTIVE_SWEEP=1 dune test --force`, ~50 s; the default
suite samples). Layer 3 compares 16 801 days against lectio; layer 4, 730 days
-against missalemeum; layer 5 pins ~30 dates.
+against missalemeum; layer 5 pins ~30 dates; layer 6 compares 400 days against the
+LMS Ordo, full 1:1 on the Creed axis, and found a real colitur defect on its first
+run (RG 476(f), closed — see the register).
+
+**Layer 6's own blind spots, stated plainly rather than left implied**: it covers
+ONE civil year, not the whole 2005–2050 differential window; the formulary-
+override axis compares only 3 of {!Mass_formulary.source}'s 5 constructors
+(`Own_slug` is excluded — a real, evidenced data-representation ambiguity in
+colitur's own citations, not a gap in the Ordo, and `Votive` is covered by a
+separate, dedicated seasonal-numeral check instead); and it is an England & Wales
+DIOCESAN Ordo — universal-calendar days are compared, the diocesan variant on 156
+of its 400 days is not. `docs/research/ordo/PROVENANCE-lms.md` has the full
+source citation, SHA-256 and characterisation record.
**Know what each layer cannot see** — this is load-bearing, not a caveat:
- **LAYERS 3 AND 4 ARE ONE LINEAGE, not two** (register §6.20, 2026-08-18 —
@@ -132,9 +151,18 @@ against missalemeum; layer 5 pins ~30 dates.
The genuinely independent witness found is the **published Ordo** (clergy-
compiled, not software): it confirmed seven colitur positions including
three hand-authored entries missing from the entire DO tree (Major
- Litanies, the RG 110 Peter companion, St Barbara). Not wired in as a layer —
- its PDF columns shift between pages and extraction is unreliable; a
- structured Ordo would be the only way to add a fourth *lineage*.
+ Litanies, the RG 110 Peter companion, St Barbara).
+ *(CORRECTED, `celebrant-rubrics-phase1`, 2026-08-22: this paragraph
+ previously ended "Not wired in as a layer — its PDF columns shift between
+ pages and extraction is unreliable; a structured Ordo would be the only
+ way to add a fourth lineage." That is still true of THIS SPECIFIC Ordo
+ (the one that confirmed the three entries above) — it remains unwired,
+ for that exact reason. But its own closing prediction has since been
+ fulfilled by a DIFFERENT, later-acquired published Ordo: the Latin Mass
+ Society's, structurally parseable (`tools/extract_lms_ordo.ml`), now
+ wired in as layer 6 — see the validation section above. Two distinct
+ printed Ordos, not one: this file's own historical entries about the
+ first should not be read as describing the second.)*
- **THE CHAIN IS NOW BROKEN AT ONE LINK, AND LAYER 4 IS THE OUTLIER**
(2026-08-18). lectio has ADOPTED eight corrections colitur argued from the
Missal — `ubaldus`/`didacus` promoted to III-class feasts, both August
@@ -354,7 +382,7 @@ Litanies, Barbara and Rogation Wednesday. `Overlay.merge` is
last-writer-wins, so a local calendar can still override a universal entry
by naming its slug. Refused on `easter`/`temporal` (they read no sanctoral
data) rather than silently ignored. **An overlay is applied, not validated**
-— the five layers assert things about the SHIPPED data and cannot vouch for
+— the six layers assert things about the SHIPPED data and cannot vouch for
a user file; a directive matching nothing warns on stderr and continues, a
file that fails to load is fatal. Worked example, both a fixed and a movable
local feast: `test/fixtures/overlay-example-diocesan.sexp`.