diff options
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 123 |
1 files changed, 105 insertions, 18 deletions
@@ -113,11 +113,54 @@ against missalemeum; layer 5 pins ~30 dates. the week column. It also **shares colitur's own lineage**: colitur's data was bootstrapped from lectio, so an error both inherited is invisible here. Proven: Holy Thursday was violet in both because both were wrong. -- Layer 4 is **two years wide** and compares rank, colour-membership and - commemoration presence/count — **never celebration identity**. -- Together they sleep through **commemoration identity**: reversing `admit`'s - dignity sort, so the engine admits the *worst* commemorations, leaves all eight - differential and oracle assertions green across 17 531 days. +- **Layer 4's commemoration-identity gap is CLOSED** (2026-08-12, Task B, branch + `ef-rg16a`, two fix rounds): it used to compare presence/count only, never + *which* commemoration won — reversing `admit`'s dignity sort (the engine + admitting the *worst* commemoration, an outright RG 111 violation) left all + eight differential and oracle assertions green across 17 531 days. Layer 4 now + also compares **identity** — colitur's own resolved English name + (`Celebration.t.names`, `en`) against missalemeum's title text, for every day + both streams admit the same count. The mapping resolves **every + SANCTORAL-origin commemoration** (colitur's own name field, bootstrapped from + lectio, verified to match missalemeum's titles character-for-character); it + **cannot resolve a TEMPORAL-origin one** (an impeded feria/Ember/Rogation day — + `Rite_ef.Temporal_ef` never sets a celebration name) — that case is **never + silently skipped**: it is a separate, counted, allow-listed outcome + (`Comm_identity_unresolved`, 19 of 227 non-empty-commemoration days over + 2026–2027), not a silent pass. ONE genuine identity mismatch remains adjudicated + open (register §4/§6.1, `data/ef/expected-divergences-missalemeum.sexp` M16): a + known unimplemented office (the Seven Sorrows of Passion Friday). Proof of + teeth, reproduced twice: reversing `admit`'s *dignity*-based sort (the + historical defect shape) turns layer 4 red — an unexplained + `commemoration-identity-mismatch` day (colitur admitting "St. Thecla" where + both the rubric and missalemeum require "St. Linus"); separately, disabling + `band`'s own `Commemoration_only` guard (below) also turns it red, on the same + date this whole gap was originally found through — both reverted after + confirming. +- **The `admit` same-rank tie-break is RG 113, not an uncited convention** (same + task, fix round 1): RG 113's own second sentence ("in admittendis et ordinandis + aliis commemorationibus, servetur ordo tabellae praecedentiae"), previously + quoted only in its first half, is the real rule — `admit` now orders/selects by + `Precedence_ef.band` (RG 91's own table), not RG 8's coarse four-class rank. + **`band` itself had a fidelity bug this exercise surfaced**: RG 91's table + enumerates only "dies liturgici" (real feasts), so a `Celebration.t.status = + Commemoration_only` candidate has NO row in it at all — `band` used to read + `rank` alone and silently lent such a candidate the same table entry as a + genuine `Feast` of its own rank, manufacturing ties RG 113 never created (the + original "Maurice vs Thomas of Villanova, both entry 24" example was this bug, + not a real RG 91 tie). Fixed at the source: `band` now returns `unclassified` + for any `Commemoration_only` candidate, checked first. Measured, independently, + twice (`compare_precedence`'s own ordering-criterion change, then `band`'s + fidelity fix): the ORDERING-CRITERION change alone is zero-blast-radius + (byte-identical across the whole 1583–9999 domain — a correctness-of-citation + fix, not an answer-changing one); the `band`-FIDELITY fix has a real, large, + fully-classified effect, **4 451 days across the whole domain, exactly 4 + verified shapes, no surprises** (register §6.1). A genuine "two different + candidates on the identical REAL table entry" residual was searched for + exhaustively across the whole domain and found EMPTY — the tie-break `admit` + still breaks alphabetically is real but narrower than first thought: it is only + 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`) @@ -186,8 +229,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. - **Open Plan 4 with the two behaviour items below**, before OF: they are the - places the five layers, taken together, currently sleep through a real error. + **Both behaviour items below are now RESOLVED** (RG 16(a) and commemoration + identity, closed on branch `ef-rg16a`) — 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. ### Carried into Plan 4 (read before starting) @@ -199,17 +244,59 @@ nowhere in git (`docs/` is gitignored). **The two behaviour items, in order:** -1. **RG 16(a) — the largest known-wrong output on the branch.** A Feast of the - Lord occurring on a II-class Sunday takes the Sunday's place *"cum omnibus - iuribus et privilegiis: de dominica, proinde, **nulla fit commemoratio**"*. - colitur commemorates the Sunday anyway: **5 996 wrong days over 1583–9999**, - 369 of them in 1583–2100. **Zero** instances fall in the oracle window and none - is pinned, so all five layers miss it. Needs a signature change — `privilege_of` - cannot currently see the winner's `subject`. Register §6.0. -2. **Commemoration identity is unasserted** outside ~3 test rows (see the layer - caveats above). Related: `compare_dignity` breaks same-rank ties - **alphabetically**, with no RG warrant, and over 2005–2050 the admission cut - falls between two same-rank candidates on **66 days**. +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, + corrected account).** Was the largest known-wrong output on the branch: a + Feast of the Lord occurring on a II-class Sunday takes the Sunday's place + *"cum omnibus iuribus et privilegiis: de dominica, proinde, **nulla fit + commemoratio**"*, and colitur used to commemorate the Sunday anyway + (**5 996 wrong days over 1583–9999**, 369 of them in 1583–2100, + re-confirmed exactly, twice, independently). Fixed in + `Rite_ef.Precedence_ef.disposition` with **no signature change** — + `disposition` already took `winner:...` (RG 33's own vigil-omission branch + already read it). A SECOND, related bug needed a genuine kernel signature + change: `Precedence.rules.admit` gained a `~temporal` parameter, because + RG 16(a) also breaks the assumption that `observed` IS the day's own + temporal-cycle office for RG 111(b)'s Sunday rank-floor check (an + unrelated saint could otherwise be wrongly admitted into the freed slot — + confirmed on 1 178 real days, 6 August, before this second fix). + **The sanctoral data question was more contested than the first pass + found**: the Purification (2 Feb) was FIRST retagged `Bvm` (calendarium + title argument), then REVERTED to `Lord` in fix round 1 on the user's own + ruling — follow the oracle, which treats the Purification as taking an + occurring Sunday's place outright, unlike an ordinary Marian feast (real + primary-text counter-evidence, RG 120(b)'s colour rule, remains on record + as the argument the other way). Only `most-holy-name-of-mary` stays + retagged `Bvm`. A related, unresolved primary-source finding: the Common + of the Dedication of a Church's own classification (*"Festum + Dedicationis Ecclesiae est festum Domini"*) means St Michael's Dedication + (29 Sep) may also be `Lord`, not `Saint` — measured, not applied (1 200 + days domain-wide if it were). Two further open items recorded, not fixed: + 13 January (Baptism of the Lord, mistagged `Saint`, and separately, RG 112 + — a feast/mystery of one Divine Person excludes a commemoration of + another of the SAME Person — entirely unimplemented, confirmed live on 7 + real years). +2. **Commemoration identity — RESOLVED (Task B, branch `ef-rg16a`, 2026-08-12; + ONE FIX ROUND of review after the first pass — see register §6.1 for the + full, corrected account).** Was unasserted outside ~3 test rows — **the + exact gap the RG 16(a) fix round above had exploited**: the lectio + differential (layer 3) compares season/slug/rank/colour only, never + commemorations, BY DESIGN (lectio has no RG 111 admission logic of its + own) and still does not — that part of this item is unchanged and remains + the reason layer 4, not layer 3, had to close this gap. Layer 4 + (missalemeum, 2026–2027) now compares commemoration IDENTITY, not only + presence/count (see the "know what each layer cannot see" section above + for the mapping and its limits). While building it, found and fixed a + SECOND, independent bug the exercise surfaced: `Precedence_ef.band` gave a + `Commemoration_only` candidate the same RG 91 table entry as a genuine + `Feast` of its own rank (RG 91's table has no row for a bare commemoration + at all) — **4 451 days wrong across the whole 1583–9999 domain**, exactly + 4 verified shapes, fixed at the source. The `admit` same-rank tie-break + itself is RG 113 (previously uncited), not the alphabetical convention + this item used to describe — reconciled against the Plan-3-era "66 days" + figure: 599 is the tie POPULATION, 65 (or 67) the real ADMITTED-SET + decisions within it, 149 order-only — all now independently reproduced + (register §6.1), not merely asserted. **Structural items, cheapest to fix before OF exists:** |
