diff options
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 83 |
1 files changed, 74 insertions, 9 deletions
@@ -449,18 +449,18 @@ nowhere in git (`docs/` is gitignored). failure mode, proven by fabricating a second companion and watching the whole suite stay green pre-fix). -5. **`Record` and `Liturgical_day` both claim to be "the single stable output +6. **`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`. -6. **`Temporal.RITE` and `Rite.t` are two competing abstractions.** The module +7. **`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. -7. **EF-shaped things still in "rite-agnostic" kernel code**: `validate.ml` +8. **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 @@ -474,12 +474,77 @@ Boniface 14 May, Evaristus, Theodore); and `romanus`, which should not exist on 9 August. lectio's ini is **generated from missalemeum**, so the two are one 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; 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.** +**Unbuilt, recorded**: RG 91 entry 27's BVM Saturday Office; 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.** The Sacred Triduum's own identity is **RESOLVED — see item 5 below.** +Major Litanies (25 April) and the Rogation-Wednesday commemoration are +**NARROWED, still unbuilt — see item 5 below**: both rules are now +scan-verified and register-cited, but neither is built, because both need the +SAME missing machinery (a rite-computed, Easter-relative, non-competing +commemoration candidate — no channel in `Precedence.resolve`/`calendar.ml` +constructs one; sanctoral candidates are Fixed-date only, the day's temporal +candidate is exactly one and already spoken for). + +5. **The Sacred Triduum (RG 91 entry 2) — RESOLVED (2026-08-13, + `ef-triduum-litanies` task); Major Litanies (RG 80) and Rogation + Wednesday's own commemoration (RG 87-89) — established from a + photographic scan, deliberately NOT built.** Holy Thursday/Good + Friday/Holy Saturday kept their existing slugs + (`ef-passiontide-2-{thursday,friday,saturday}` — RG 91 entry 2 is + identified structurally by `Precedence_ef.band`, off rank and Easter + offset, never off the slug) and gained `Celebration.names` (Latin, both + photographic scans, corroborated by the electronic transcription's own + table-of-contents listing at the identical headings: "Feria V in Cena + Domini", "Feria VI in Passione et Morte Domini", "Sabbato Sancto") and + `subject = Lord` (verified safe: RG 112(a) only fires when both sides of + an occurrence are `Lord`, and no `Lord`-subject sanctoral entry has a + fixed date inside Holy Week's own movable range). **Full 1583-9999 + blast radius, measured (`git archive` pre- vs post-change, `colitur day` + CLI output diffed): ZERO differing lines anywhere in the domain** — the + CLI prints neither `names` nor `subject`, so this whole change is + invisible to the differential (layer 3), the oracle (layer 4), and even + the exhaustive property sweep (layer 2); only `test_golden.ml`'s + `describe` (widened this task to add a `name_la` field, the same lesson + its own `subject` field was added for) and one new `test_temporal_ef.ml` + unit test see it at all. Mutation-tested: reverting `temporal_ef.ml` + alone reddens 6 tests across those two files. + + Major Litanies (25 April, RG 80) and Rogation Wednesday's own + commemoration (RG 87-89, Minor Litanies) were both investigated to the + same depth and **both scan-verified and fully register-cited, but + deliberately not built**: RG 80's own transfer clause (25 April moving to + the following Tuesday whenever it coincides with Easter Sunday or Easter + Monday — **194 of 8,417 domain years, ≈2.3%, measured**, not assumed + rare) and Rogation Wednesday's own commemoration (RG 88/89, competing + only when the Ascension Vigil already occupies the day) both need a + commemoration candidate keyed to a MOVABLE, Easter-relative date that + is not the day's own temporal office — a kind of thing + `Precedence.resolve`'s architecture has no channel for: sanctoral + candidates come exclusively from `Layer.on_date`'s Fixed-`Date_spec` + lookup (`date_spec.ml`'s own header: Easter-relative forms "arrive with + the OF sanctoral" — not yet), and the day's temporal candidate is + exactly one, already spoken for. RG 110's own `rg110_additions` + mechanism (item 4 above) looks like a precedent but is not one: it only + ever RE-INCLUDES a candidate that already exists elsewhere in that + date's own candidate pool (both Peter and Paul are ordinary Fixed-date + sanctoral entries); neither the Major Litanies' Easter+2 target nor + Rogation Wednesday's own Mass commemoration has any such pre-existing + candidate to find. Major Litanies' ORDINARY case (the ≈97.7% of years + RG 80's transfer clause does not trigger) is independently buildable + today with zero new machinery — a `Commemoration_only` `Fixed(4,25)` + sanctoral entry, `Precedence_ef.privilege_of`'s already-present, dead RG + 109(f) branch wired to it — but building only that would leave the + transfer years with a NEW wrong answer (a phantom commemoration on + Easter Sunday/Monday itself, which RG 80 explicitly forbids), not merely + the old, understood gap, so it was not built either. Full reasoning, + including the paths considered and rejected (a kernel signature + extension threading Easter-offset into `disposition`/`admit` closes half + of the Major Litanies problem — suppression — but not the relocation + half, and Rogation Wednesday has no equivalent half-solution at all): the + `ef-triduum-litanies` task report and register (Rogations/§4, and the two + narrowed open items in §6). ## How to work here |
