summaryrefslogtreecommitdiff
path: root/CLAUDE.md
diff options
context:
space:
mode:
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md38
1 files changed, 33 insertions, 5 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index 174bf30..0f18537 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -113,11 +113,39 @@ 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`): 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. Two genuine identity mismatches surfaced
+ and were adjudicated (register §4/§6.1, `data/ef/expected-divergences-missalemeum
+ .sexp` M16/M17): a known unimplemented office (the Seven Sorrows of Passion
+ Friday) and the RG 113 same-band tie-break residual (below), the latter left
+ explicitly OPEN, not defaulted to either side. Proof of teeth: reversing
+ `admit`'s *dignity*-based sort (the same historical defect shape) now turns
+ layer 4 red — `test_no_unexplained_differences` reports an unexplained
+ `commemoration-identity-mismatch` day (colitur admitting "St. Thecla" where both
+ the rubric and missalemeum require "St. Linus") — reverted after confirming.
+- **The `admit` same-rank tie-break is RG 113, not an uncited convention** (same
+ task): 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.
+ Measured (not assumed): the fix's blast radius against the pre-change binary is
+ **zero admitted-commemoration changes across the entire 1583–9999 domain** — a
+ correctness-of-citation fix, not an answer-changing one, on this codebase's
+ current data. A narrower residual remains open where two candidates land on the
+ *identical* RG 91 table entry (RG 113 gives no further instruction there);
+ `admit` still breaks that alphabetically, still uncited, register §6.1.
## Current state (Plans 1–3 DONE — verify with `git log`)