aboutsummaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 11:21:58 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-08-13 11:21:58 +0200
commit204fd4e4a09a00e7edc240020249ffda5fd512b4 (patch)
tree775773f5d7b1c0fa5e6f64e8124884496d0ec248 /CLAUDE.md
parentee5c81e70adcd2ce6cecc57da4c416d482c187ca (diff)
downloadcolitur-204fd4e4a09a00e7edc240020249ffda5fd512b4.tar.gz
colitur-204fd4e4a09a00e7edc240020249ffda5fd512b4.zip
docs: close the Holy Name / RG 110 open items in CLAUDE.md
Both items this file tracked as open since branch ef-rg112-rg110 (Holy Name of Jesus's subject tag and missing RG 17(a) fallback; RG 110's inseparable Peter/Paul commemoration) are resolved. Adds item 4 to the behaviour-items list with the account and measured blast radius, renumbers the structural items 5-7, and removes both from the "Unbuilt, recorded" paragraph. Updates the two allow-list active-entry counts (differential 5 -> 6 for C16; oracle stays 12, M12 closed and M19 opened).
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md106
1 files changed, 68 insertions, 38 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index 54ae709..f652a33 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -218,11 +218,15 @@ ferias, four Ember sets, Rogations, `anchors`) · `precedence_ef` (the full RG 9
commemorations RG 108–112, transfers RG 96–98) · `rite_ef` (the bundle).
**Data**: `data/ef/sanctoral.sexp` (322 entries, bootstrapped from lectio, SHA-256
-in its provenance header) · `data/ef/adjustments.sexp` (overlay) · two cited
-allow-lists, `expected-divergences.sexp` (5 active entries, vs lectio — C1, C6,
-C8, C14, C15; several more closed and recorded in the register, not deleted) and
-`expected-divergences-missalemeum.sexp` (12 active, vs the oracle). Fixtures
-live in `test/fixtures/` with asserted SHA-256s.
+in its provenance header) · `data/ef/adjustments.sexp` (overlay — `Add` as well
+as `Suppress`/`Edit`: RG 110's own 30 June companion, `commemoration-of-st-peter`,
+is genuinely missing from lectio's own source, not merely from colitur's
+bootstrap, so it is hand-authored here rather than upstream) · two cited
+allow-lists, `expected-divergences.sexp` (6 active entries, vs lectio — C1, C6,
+C8, C14, C15, C16; several more closed and recorded in the register, not deleted)
+and `expected-divergences-missalemeum.sexp` (12 active, vs the oracle — M12
+closed/M19 opened this task, net count unchanged). Fixtures live in
+`test/fixtures/` with asserted SHA-256s.
**CLI**: `colitur easter <year>`, `temporal <year>`, `day <year>`.
@@ -253,9 +257,10 @@ dune exec colitur -- day 2026 | head
- **Plan 4 — OF rite module** (proves `RITE` generalizes) → the lectionary
bootstrap and citations → full output/rendering → hardening and a first tag.
- **All three behaviour items below are now RESOLVED** (RG 16(a) and
+ **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`) — kept here as
+ and observed identity, closed on branch `ef-rg112-rg110`; Holy Name of
+ Jesus/RG 110, closed on branch `ef-holyname-rg110`) — kept here as
the record of what the five layers, taken together, used to sleep through,
and as the shape a future gap of the same kind would need to be caught by.
@@ -267,7 +272,7 @@ triage, and the whole-branch review — is in
workspace is deliberately kept, because it and the register corrections exist
nowhere in git (`docs/` is gitignored).
-**The three behaviour items, in order:**
+**The four behaviour items, in order:**
1. **RG 16(a) — RESOLVED (RG16(a) task, branch `ef-rg16a`, 2026-08-12; ONE
FIX ROUND of review after the first pass — see register §6.0 for the full,
@@ -372,37 +377,68 @@ nowhere in git (`docs/` is gitignored).
was expected.** The differential's own C1 (the 6-13 January blanket) lost
exactly those 7 (of the 1 220) rows within its 2005–2050 window and they
were split into their own new cited entry (C15), not silently
- re-absorbed — the same discipline the task brief demanded. Not built:
- RG 110 (inseparable Peter/Paul, still open, M12) — out of this task's own
- dispatched scope despite the branch name. Holy Name of Jesus (RG 17(a))
- has the identical "generic-Sunday-slug masking a real named feast" shape
- Holy Family had — flagged as a new open item, not fixed here (no live
- collision exists for it in today's data, so nothing is currently WRONG
- about it the way Holy Family's own Baptism collision was). **A SECOND,
- more severe Holy Name gap, found in review (fix round 1, coordinator
- finding 9): unlike RG 17(b)'s own 7–13 January window (never empty),
- RG 17(a)'s narrower 2–5 January window CAN be empty of a Sunday, and the
- calendarium carries an explicit fallback ("vel, ea deficiente, die 2
- ianuarii") colitur does not implement at all — 3 619 of 8 417 years in
- the domain (independently computed, matched exactly) have NO Holy Name
- office whatsoever, a genuine missing II-class feast on 43% of years, not
- merely an unnamed one. Recorded, not fixed — out of this task's own
- dispatched scope.
+ re-absorbed — the same discipline the task brief demanded. Not built at
+ the time: RG 110 (inseparable Peter/Paul, still open, M12) — out of this
+ task's own dispatched scope despite the branch name. Holy Name of Jesus
+ (RG 17(a)) had the identical "generic-Sunday-slug masking a real named
+ feast" shape Holy Family had, PLUS a second, more severe gap (no RG 17(a)
+ fallback for its own 2–5 January window when empty of a Sunday — 3 619 of
+ 8 417 domain years). **Both are now RESOLVED — see item 4 below.**
+4. **Holy Name of Jesus (RG 17(a)) + RG 110 — RESOLVED (2026-08-13, branch
+ `ef-holyname-rg110`; see register §6.3 for the full account).** Holy Name
+ gained the `subject = Lord` tag Holy Family already had (RG 91 entry 14),
+ plus a genuinely new office: RG 17(a)'s own fallback, *"secus die 2
+ ianuarii"* — 2 January carries the feast whenever no Sunday falls 2–5
+ January that year, tagged and ranked identically to the Sunday shape (ONE
+ feast, per the Mass propers' own single heading covering both dates, both
+ scans). Before this fix colitur emitted no Holy Name office at all in
+ 3 619 of 8 417 domain years — a genuine missing II-class feast, not
+ merely an unnamed one. A real asymmetry the fix's own synthetic
+ precedence tests found and kept honest rather than forced: a losing
+ Holy-Name-SUNDAY is RG 109(a)-privileged and survives RG 111(a)'s cap; a
+ losing Holy-Name-FALLBACK is not (2 January genuinely is not a Sunday, no
+ other RG 109 category names it) — both correct readings of RG 109/111's
+ own closed lists, no live witness for either today.
+ RG 110 (*"In Officio et Missa S. Petri semper fit commemoratio S.
+ Pauli, et vicissim... pro unica habeantur"*) gained a THIRD sub-clause
+ this register had not transcribed before, (c) — the same inseparable
+ commemoration also fires when one Apostle is admitted merely AS a
+ commemoration, not only when he is the day's own office. Three real
+ pairs in the 1962 calendar (25 January, 22 February, 30 June); the third
+ had no companion candidate anywhere — a genuine gap in lectio's own
+ source data AND in missalemeum's own oracle output, not only a colitur
+ bootstrap miss — closed via `data/ef/adjustments.sexp`'s own `Add`
+ directive. Built in `Precedence_ef.admit` (`rg110_additions`), layered on
+ AFTER `admit`'s own four RG 111 branches decide their ordinarily-capped
+ result, uncapped and additional, never competing for a slot.
+ **Blast radius, measured (`git archive` pre-change binary vs HEAD, full
+ 1583–9999 sweep, diffed): 14 627 days, ALL FOUR predicted shapes, zero
+ unclassified** — 3 619 the Holy Name fallback itself; 3 533 Paul wrongly
+ excluded from Chair of St Peter's own day by a competing privileged
+ feria (RG 110 shapes (a)/(b) — supersedes an earlier 852-day estimate
+ that measured only a delta between two older commits, not the rule's
+ full scope); 593 Chair of St Peter admitted only as an ordinary
+ commemoration, Paul entirely absent (shape (c) — a real 7% of the
+ domain, not a corner case); 6 882 the new 30-June companion. The lectio
+ differential needed no RG 110 change at all (it does not compare
+ commemorations); the oracle allow-list needed M12 removed, M15 widened
+ by one date (a newly-exposed instance of its own pre-existing limit),
+ and a new M19 for the 30-June gap.
**Structural items, cheapest to fix before OF exists:**
-4. **`Record` and `Liturgical_day` both claim to be "the single stable output
+5. **`Record` and `Liturgical_day` both claim to be "the single stable output
schema".** `Record` cannot express what the engine now computes (no observed
celebration, no commemorations, no transfers), has **no test file**, and is
used only by the legacy `colitur temporal` path — `day` hand-formats instead.
Plan 2's carried item (add a `cycle` field for OF's Sunday A/B/C and weekday
I/II) is still open and now costlier: it must pass through `Temporal.t`, which
is embedded in the sexp-derived `Liturgical_day.t`.
-5. **`Temporal.RITE` and `Rite.t` are two competing abstractions.** The module
+6. **`Temporal.RITE` and `Rite.t` are two competing abstractions.** The module
type still exists and `temporal_ef` still satisfies it, but it carries none of
`rules`, `anchors`, `season_runs`, `transfer_target` — satisfying it now proves
almost nothing. `Rite.t` is the load-bearing one.
-6. **EF-shaped things still in "rite-agnostic" kernel code**: `validate.ml`
+7. **EF-shaped things still in "rite-agnostic" kernel code**: `validate.ml`
hardcodes Sunday as the week start; `Liturgical_day.transferred_in` is an
`option` justified by RG 96; `Precedence.privilege` is defined by RG 111;
`Repose` is EF vocabulary emitted by nothing. Each is one field short of the
@@ -417,17 +453,11 @@ Boniface 14 May, Evaristus, Theodore); and `romanus`, which should not exist on
lineage, not two independent sources.
**Unbuilt, recorded**: the Sacred Triduum has no proper office (it uses ordinary
-Passiontide ferial slugs); RG 91 entry 27's BVM Saturday Office; RG 110's
-inseparable commemorations; Major Litanies (25 April); the Rogation-Wednesday
-commemoration; Holy Name of Jesus (RG 17(a)) still carries `subject = Temporal`
-like an ordinary Sunday, the same identity gap Holy Family had until this task,
-found while closing it (register §6.2) but not itself fixed — no live collision
-exists for it in today's data; **Holy Name of Jesus also has no RG 17(a) fallback
-for its own 2–5 January window when it is empty of a Sunday (unlike RG 17(b)'s
-7–13 January, never empty) — 3 619 of 8 417 domain years have no Holy Name office
-at all, found in review (fix round 1, finding 9), a genuine missing II-class
-feast, not merely an unnamed one.** Allow-list entries M11 and M13 are `verdict
-open` by design.
+Passiontide ferial slugs); RG 91 entry 27's BVM Saturday Office; Major Litanies
+(25 April); the Rogation-Wednesday commemoration; RG 112(b)/(c)/(d) (only (a)
+has a live witness this codebase's data can construct). Allow-list entries M11
+and M13 are `verdict open` by design. Holy Name of Jesus (RG 17(a)) and RG 110
+(inseparable Peter/Paul commemorations) are **RESOLVED — see item 4 above.**
## How to work here