aboutsummaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md37
1 files changed, 31 insertions, 6 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index 0819c88..9f8352c 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -224,13 +224,13 @@ against missalemeum; layer 5 pins ~30 dates.
ever exercised between two `Commemoration_only` candidates, neither of which has
any RG 91 table position to compare in the first place.
-## Current state (Plans 1–3 DONE — verify with `git log`)
+## Current state (Plans 1–3 + the EF lectionary DONE — verify with `git log`)
**Plans 1 + 2 are on `main` (35 commits). Plan 3 and its follow-on fix/feature
tasks (RG 16(a), Holy Family/RG 112(a), Holy Name/RG 110, the Sacred Triduum,
the BVM Saturday Office, the Major Litanies) have landed on a chain of feature
-branches since — test count keeps climbing task by task (325 tests green, 326
-with the exhaustive sweep, as of `ef-major-litanies`; this line is not kept in
+branches since — test count keeps climbing task by task (369 tests green, 370
+with the exhaustive sweep, as of `ef-lectionary`; this line is not kept in
lockstep with every task, `git log`/`dune test` are the actual source of
truth).** The kernel, the **complete EF
temporal cycle**, the **resolution engine**, the **sanctoral data**, and **all five
@@ -277,7 +277,19 @@ earlier one; M5 corrected (a prior note had 2027's own outcome backwards) and
M20 added by the `ef-major-litanies` task, M18 394 not 395 accordingly).
Fixtures live in `test/fixtures/` with asserted SHA-256s.
-**CLI**: `colitur easter <year>`, `temporal <year>`, `day <year>`.
+**CLI**: `colitur easter <year>`, `temporal <year>`, `day <year>`,
+`readings <year>`.
+
+`readings` is a **separate command, not extra columns on `day`**, for a
+mechanical reason worth not rediscovering: a citation contains spaces and
+commas (`Ezech 34:11-16`, `Ecclus 51:1-8, 12`) while a `day` row is
+space-separated with a variable-length `+slug` commemoration tail, so
+appending them there leaves the row unsplittable by field number. `day`'s
+format is therefore **byte-identical** to what it was before the lectionary
+existed (asserted in `test/cli.t`). Both are a **stopgap**, not the project's
+answer to output: the design still calls for one schema rendered through a
+logic-less template engine — two ad-hoc formats are easier to retire than one
+overloaded format with unwritten parsing rules.
`band` is **provably total** over everything the engine constructs: zero
`unclassified` across all 8 417 years, for a 28-branch hand-transcribed table.
@@ -304,8 +316,21 @@ dune exec colitur -- day 2026 | head
## What's next
-- **Plan 4 — OF rite module** (proves `RITE` generalizes) → the lectionary
- bootstrap and citations → full output/rendering → hardening and a first tag.
+- **The EF lectionary is DONE** (branch `ef-lectionary`, 20 commits): the four-
+ step reading-resolution chain, its data (`data/ef/lectionary.sexp`,
+ `commons.sexp`, sanctoral propers), all five validation layers extended to
+ citations, and `colitur readings`. Layer 2 asserts that **every day of every
+ year 1583–9999 resolves exactly one Epistle and one Gospel** — measured, and
+ mutation-proved live rather than silently inert. **Chants (Psalm, Second,
+ Tract, Alleluia, Sequence) remain deliberately unbuilt**: no source, no
+ oracle, and `Validate`'s own `citations` check now *rejects* any part outside
+ First/Gospel, so one appearing would be a defect rather than a feature
+ arriving early.
+- **Plan 4 — OF rite module** (proves `RITE` generalizes) → full output/
+ rendering → hardening and a first tag. (The lectionary bootstrap and
+ citations this line used to defer to Plan 4 landed early, on
+ `ef-lectionary`; what remains here is OF's own lectionary, not the
+ mechanism, which is now built and rite-agnostic.)
**All four behaviour items below are now RESOLVED** (RG 16(a) and
commemoration identity, closed on branch `ef-rg16a`; Holy Family/RG 112(a)
and observed identity, closed on branch `ef-rg112-rg110`; Holy Name of