aboutsummaryrefslogtreecommitdiff
path: root/CLAUDE.md
Commit message (Collapse)AuthorAgeFilesLines
* feat(test): oracle layer compares commemoration identity, not just countLukasz Kasprzak2026-08-121-5/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | test_oracle.ml (validation layer 4) used to compare commemoration presence and List.length only -- cardinality, never which candidate is admitted. A reviewer proved this vacuous by reversing admit's dignity sort (the engine admitting the worst commemoration, an outright RG 111 violation) and finding every assertion in this file green across all 730 days. tools/extract_missalemeum_oracle.py now also emits each commemoration's own missalemeum id (field 9, commemoration_ids), parallel to the existing title field; fixture regenerated from the same underlying lectio snapshot (commit d7da4b0, re-verified, first 8 fields byte-identical), read from a scratch copy so ~/git/projects/lectio was never touched. SHA-256 pin and provenance updated. The mapping: colitur identifies a commemoration by slug, missalemeum by an English title string. No hand-built slug<->title table -- colitur's own Celebration.t.names already carries the same English text for every SANCTORAL-origin commemoration (bootstrapped from lectio, verified to match missalemeum's titles character-for-character). This resolves identity for every sanctoral-origin commemoration but cannot resolve a TEMPORAL-origin one (Rite_ef.Temporal_ef never sets a celebration name) -- that case is a new, distinct outcome (Comm_identity_unresolved), counted and allow-listed, never silently skipped: 19 of 227 non-empty-commemoration days over 2026-2027. Two genuine identity mismatches found and adjudicated (new allow-list entries M15-M17, one is the unresolved bucket): M16, 27 March 2026, the already-known unimplemented Seven Sorrows of Passion Friday office (verdict missalemeum); M17, 22 September 2027, the RG 113 same-band tie-break residual (verdict open, per the sibling admit fix). A new corroborating check cross-references missalemeum's own id-embedded rank against colitur's, split by status: Feast-status matches must agree exactly (none reachable in this 2-year window, checked regardless); Commemoration_only-status matches either genuinely agree or fit a known, pre-existing, already-registered convention gap (colitur's bootstrap rank vs missalemeum's own sentinel) -- not a title-matching defect. Perturbation test performed and reverted: reversing admit's dignity- based ordering (compare_precedence's real committed form uses band, not dignity -- this reproduces the historical defect shape directly) turns the oracle layer red: "no differences outside the cited allow-list" fails with an unexplained commemoration-identity-mismatch on 2026-09-23 (colitur admits "St. Thecla" where the rubric and missalemeum both require "St. Linus"). Reverted; diff against the prior commit confirms no residue. CLAUDE.md's "know what each layer cannot see" section updated: the commemoration-identity gap it documented as open is now closed, with the mapping's limits and the RG 113 tie-break finding summarised. 271 -> 273 tests (274 with the exhaustive sweep), all green.
* docs: fix round 1 -- Purification reversal, the admit fix, RG112, layer ↵Lukasz Kasprzak2026-08-121-17/+47
| | | | | | | | | | | | | | | | | | | | | blindness CLAUDE.md's own carried-item record, updated to match the register's full account: the Purification retag reversed (follow the oracle, not the calendarium title, per the user's ruling), the admit/~temporal kernel signature change (a genuine one, unlike RG16(a) itself), RG112 recorded as a newly-found, unimplemented rule (a feast/mystery of one Divine Person excludes a commemoration of another of the same Person -- confirmed live on 13 January in seven real differential-window years, independent of the subject question), and the Dedication-of-a-Church classification question (measured, not applied: St Michael's own Dedication, 29 September, may also be a feast of the Lord -- 1200 days domain-wide if so). Extends the existing 'commemoration identity is unasserted' item: this is the exact gap the whole RG16(a) fix round exploited both ways -- the original bug and the review's own catch (Pope Sixtus II wrongly admitted, both golden pins promoted from output) were both invisible to every layer except unit tests and two golden pins.
* docs: close the RG16(a) CLAUDE.md item, correct its signature-change claimLukasz Kasprzak2026-08-121-7/+16
| | | | | | | | | | | Mirrors the register §6.0 correction: the carried-item list previously said the fix "needs a signature change -- privilege_of cannot currently see the winner's subject", which was true of privilege_of specifically but wrong about what the fix required -- disposition already took the winner. Marked resolved, with a pointer to the register's own full account (audit, fix, blast radius, allow-list) and to one further sanctoral subject defect this task found but did not fix (13 January, Baptism of the Lord, mistagged Saint).
* docs: refresh CLAUDE.md for Plan 3Lukasz Kasprzak2026-08-121-34/+128
| | | | | | | | | | | | | | | | | | | Plans 1-3 are done: the resolution engine, the sanctoral data, and all five validation layers. Records what each layer CANNOT see, which is the part a fresh session most needs and the part a green suite hides -- the lectio differential never compares commemorations and shares colitur's own data lineage, the oracle is two years wide and never compares celebration identity, and between them they sleep through commemoration identity entirely. Carries into Plan 4 the two behaviour items that all five layers currently miss (RG 16(a), 5996 wrong days; commemoration identity), the structural items cheapest to fix before a second rite exists, and the data defects traced upstream into lectio's generator. Adds the exhaustive-sweep invocation to the build block: the default suite samples, so the "clean across every year" claim is reproducible only on demand.
* docs: add CLAUDE.md working context for the repoLukasz Kasprzak2026-08-111-0/+168
Orients a fresh session: what colitur is, the authoritative docs, the binding decisions, the architecture, the five validation layers, current state and what comes next. The design spec and research register it points at stay local (docs/ is gitignored).