From 557b01466ec79aa0b65c079804cec176ab20751b Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 17 Aug 2026 21:05:04 +0000 Subject: [PATCH] docs: mark OGAR classid registration complete, correct medcare-dismech claim MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ogar-dismech merged (AdaWorldAPI/OGAR#274) — 0x0333 is now compile-time collision-guarded. Marks the plan checklist and TECH_DEBT.md entry done. Also corrects a stale claim carried in CLAUDE.md and TECH_DEBT.md that MedCare-rs holds a crates/medcare-dismech resolver: re-checked directly against the live MedCare-rs checkout, no such crate exists anywhere in that repo. Struck rather than deleted, per this repo's own TECH_DEBT convention. --- .claude/board/LATEST_STATE.md | 13 ++-- .claude/board/TECH_DEBT.md | 77 ++++++++----------- .claude/plans/ogar-classid-registration-v1.md | 25 +++--- CLAUDE.md | 24 +++--- 4 files changed, 66 insertions(+), 73 deletions(-) diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index f2183d2..cbdc7c5 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -42,9 +42,10 @@ consumer holds an odd-stride run from `0x0307` through `0x031D` (live, with `0x031F` and `0x0321` retired-not-reused); `META_STUDY_SPINE` landed at `0x0340`-`0x0347` after two prior collisions. `0x0333` sits clear of all of the above — above the private consumer's run ending `0x0321`, -below `META_STUDY_SPINE`'s `0x0340` — **but is currently documented only -in this repo, not yet protected by a compile-time collision guard on the -OGAR side.** See `TECH_DEBT.md` and `.claude/plans/ogar-classid-registration-v1.md`. +below `META_STUDY_SPINE`'s `0x0340` — **and is now compile-time +collision-guarded on the OGAR side** via `ogar-dismech` +(https://github.com/AdaWorldAPI/OGAR/pull/274, merged 2026-08-17). See +`.claude/plans/ogar-classid-registration-v1.md` (all items checked). **Mirrored addressing**: where a disorder resolves to a `MONDO:` xref (measured 1,957/1,990 = 98.3% of the real corpus), its DisMech-domain @@ -75,9 +76,9 @@ statement. ## Active / queued work -- **Queued, not started:** `ogar-dismech` OGAR-side classid collision - guard — see `.claude/plans/ogar-classid-registration-v1.md`. Mark this - line done when that plan's checklist is fully checked. +- **Done 2026-08-17:** `ogar-dismech` OGAR-side classid collision guard + — https://github.com/AdaWorldAPI/OGAR/pull/274, merged. See + `.claude/plans/ogar-classid-registration-v1.md` (all items checked). - **Named goal, not yet built:** S3 sink-in to the shared `lance-graph` SoA table, "volume01" hot reload, q2-repository-pattern re-embedding, paging/SPOG routing. Today's output is a flat `.soa` blob plus a diff --git a/.claude/board/TECH_DEBT.md b/.claude/board/TECH_DEBT.md index 55b959e..c97e305 100644 --- a/.claude/board/TECH_DEBT.md +++ b/.claude/board/TECH_DEBT.md @@ -7,40 +7,25 @@ --- -## OPEN — `0x0333` classid is not yet collision-guarded on the OGAR side - -**Dated:** 2026-08-17 - -**What:** `DISMECH_CONCEPT: u16 = 0x0333` (`crates/dismech-bake/src/ -pack.rs:36`) is currently documented ONLY in this repo (`CLAUDE.md` + -`LATEST_STATE.md`). It was measured clear of every existing OGAR `0x03XX` -registration at the time of reservation (`grep -rn "0x0333"` across every -crate in `AdaWorldAPI/OGAR`, zero hits before this reservation), but -nothing on the OGAR side actually *enforces* that — there is no -compile-time test that would fail if some future OGAR change (e.g. a -`META_STUDY_SPINE`-style expansion) accidentally claimed `0x0333`. - -**Why it matters:** OGAR's own `0x03XX` domain has a real collision -history — `OBO_CORE` (`0x0301`-`0x0305`), `ogar-ro`'s -`RELATION_BODY_CONCEPT_ID` (`0x0306`), a private downstream consumer's -odd-stride run (`0x0307`-`0x031D` live, `0x031F`/`0x0321` -retired-not-reused), and `META_STUDY_SPINE` (`0x0340`-`0x0347`, which -itself collided twice before landing there). A silent future collision -at `0x0333` would corrupt cross-domain joins (the mirrored-addressing -scheme this repo depends on for the 98.3% MONDO-resolved disorders). - -**The fix (not yet built):** `ogar-ro` already has the pattern — -`RELATION_BODY_CONCEPT_ID = 0x0306` plus a `#[cfg(test)] mod -concept_id_collision_guard` asserting no `ogar_obo::registry::{OBO_CORE, -META_STUDY_SPINE}` row claims the same id. Mirror it exactly: a new tiny -OGAR crate `ogar-dismech` with `DISMECH_CONCEPT_ID: u16 = 0x0333` plus an -equivalent guard test. See `.claude/plans/ogar-classid-registration-v1.md` -for the full checklist. - -**Scope note:** this repo's `dismech-bake` crate does NOT gain an OGAR -dependency as part of this fix — the guard lives entirely on the OGAR -(authority) side. `dismech-bake` stays zero-dependency for the byte -layout, same as today. +## ~~OPEN — `0x0333` classid is not yet collision-guarded on the OGAR side~~ RESOLVED 2026-08-17 + +**Dated:** 2026-08-17 (opened and resolved same day) + +**What it was:** `DISMECH_CONCEPT: u16 = 0x0333` (`crates/dismech-bake/ +src/pack.rs:36`) was documented only in this repo, with no compile-time +enforcement on the OGAR side against a future collision. + +**Resolution:** `ogar-dismech` — a new tiny crate in `AdaWorldAPI/OGAR` +mirroring `ogar-ro`'s `RELATION_BODY_CONCEPT_ID` pattern exactly: +`DISMECH_CONCEPT_ID: u16 = 0x0333` plus a `concept_id_collision_guard` +test module asserting no `ogar_obo::registry::{OBO_CORE, +META_STUDY_SPINE}` row claims it, and a band-clearance test against the +documented odd-stride run (`0x0307`-`0x031D` live, `0x031F`/`0x0321` +retired) and `META_STUDY_SPINE` (`0x0340`-`0x0347`). Merged: +https://github.com/AdaWorldAPI/OGAR/pull/274 (commit `15c5dcb`). +`dismech-bake` stayed zero-dependency, as scoped — the guard lives +entirely on the OGAR (authority) side. Full checklist: +`.claude/plans/ogar-classid-registration-v1.md`. --- @@ -70,16 +55,18 @@ are named goals only. --- -## OPEN — `MedCare-rs`'s `medcare-dismech` crate: move-or-not undecided +## ~~OPEN — `MedCare-rs`'s `medcare-dismech` crate: move-or-not undecided~~ CORRECTED 2026-08-17 -**Dated:** 2026-08-17 +**Dated:** 2026-08-17 (opened and corrected same day) + +**What this entry claimed:** that `MedCare-rs` has an earlier +hand-transcribed causal-graph resolver crate (`crates/medcare-dismech`) +that might need moving here. -**What:** `MedCare-rs` has an earlier hand-transcribed causal-graph -resolver (`crates/medcare-dismech`) built against a Python source -citation that turned out to reference a file that does not exist in the -real `monarch-initiative/dismech` upstream. Recommended path (not yet -executed): re-ground that resolver's behavior against this repo's real -corpus bake once it covers enough of the graph to be a real replacement, -then decide on the move. See `CLAUDE.md` "Open questions" for the full -statement — this is a private-repo-facing decision, tracked here only as -a pointer. +**Correction:** re-checked directly against the live `MedCare-rs` +checkout — `find /home/user/MedCare-rs -iname "*dismech*"` returns zero +hits, in both `crates/` and the whole tree. No such crate exists. This +entry (and the matching line in `CLAUDE.md`'s "Open questions") was +carried forward from an earlier, apparently mistaken, session claim — +struck here rather than deleted per this repo's TECH_DEBT convention. +There is nothing to move and no decision pending. diff --git a/.claude/plans/ogar-classid-registration-v1.md b/.claude/plans/ogar-classid-registration-v1.md index b531bdd..d92816c 100644 --- a/.claude/plans/ogar-classid-registration-v1.md +++ b/.claude/plans/ogar-classid-registration-v1.md @@ -1,6 +1,9 @@ # Plan: `ogar-classid-registration-v1` -**Status:** ACTIVE — nothing checked off yet. +**Status:** DONE — `ogar-dismech` merged into `AdaWorldAPI/OGAR` main +(https://github.com/AdaWorldAPI/OGAR/pull/274, squash-merged +2026-08-17). `0x0333` is now a compile-time collision-guarded +reservation. **Repo touched:** `AdaWorldAPI/OGAR` (this is a cross-repo plan; the checklist items below run in OGAR, not in `dismech-rs`). **Owning repo for this doc:** `dismech-rs` (`.claude/plans/ @@ -33,27 +36,29 @@ HPO, Uberon, PATO, RO) don't require every consumer to depend on ## Checklist -- [ ] Create a new tiny crate `ogar-dismech` in the OGAR workspace, +- [x] Create a new tiny crate `ogar-dismech` in the OGAR workspace, mirroring `ogar-ro`'s footprint exactly (same crate layout, same minimal deps — likely just `ogar-obo` for the registry types to check against). -- [ ] Add `pub const DISMECH_CONCEPT_ID: u16 = 0x0333;` to +- [x] Add `pub const DISMECH_CONCEPT_ID: u16 = 0x0333;` to `ogar-dismech`. -- [ ] Add a `concept_id_collision_guard` test module (mirroring +- [x] Add a `concept_id_collision_guard` test module (mirroring `ogar-ro`'s own guard) that chains `OBO_CORE.specs().iter().chain(META_STUDY_SPINE.specs())` (and any other registered `0x03XX` spec sets that exist in OGAR at the time this is built) and asserts none claim `0x0333`. -- [ ] Add a second test asserting `DISMECH_CONCEPT_ID` stays inside the +- [x] Add a second test asserting `DISMECH_CONCEPT_ID` stays inside the `0x03` domain and clears both the documented private-consumer run (`0x0307`-`0x031D` live, `0x031F`/`0x0321` retired-not-reused) and the `META_STUDY_SPINE` band (`0x0340`-`0x0347`). -- [ ] Add `ogar-dismech` to the OGAR workspace `Cargo.toml` members list. -- [ ] Run `cargo test -p ogar-dismech -p ogar-obo -p ogar-ro` in the +- [x] Add `ogar-dismech` to the OGAR workspace `Cargo.toml` members list. +- [x] Run `cargo test -p ogar-dismech -p ogar-obo -p ogar-ro` in the OGAR workspace and confirm all guard tests pass green. -- [ ] Open a PR in `AdaWorldAPI/OGAR` for the new crate. -- [ ] Merge the OGAR PR once green. -- [ ] Come back to `dismech-rs` and update `.claude/board/ +- [x] Open a PR in `AdaWorldAPI/OGAR` for the new crate. + → https://github.com/AdaWorldAPI/OGAR/pull/274 +- [x] Merge the OGAR PR once green. + → merged as commit `15c5dcb` on 2026-08-17. +- [x] Come back to `dismech-rs` and update `.claude/board/ LATEST_STATE.md`'s "Active / queued work" section and `TECH_DEBT.md`'s "OPEN — `0x0333` classid is not yet collision-guarded" entry to mark this done, with a pointer to the diff --git a/CLAUDE.md b/CLAUDE.md index 0c591d6..2de104c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -83,18 +83,18 @@ full real corpus: 1,990/1,990 files parsed, **zero parse errors**, ## Open questions — not yet decided -- **Should `MedCare-rs`'s `crates/medcare-dismech`** (the earlier - hand-transcribed causal-graph resolver, built against Python source - citations that turned out to reference a file that doesn't exist in - the real upstream repo) **move here?** Recommended: yes, once this - repo's bake covers enough of the corpus to be a real replacement — but - NOT executed yet. That crate's resolver logic was built against an - unconfirmed Python source; before moving it, its behavior needs - re-grounding against what the real corpus (this repo's source of - truth) actually contains, not against citations to a file that isn't - there. -- **`ogar-dismech`** — does not exist anywhere in OGAR (checked - 2026-08-17). Nothing to move. +- ~~Should `MedCare-rs`'s `crates/medcare-dismech` move here?~~ + **Corrected 2026-08-17:** re-checked directly against the live + `MedCare-rs` checkout — no such crate exists anywhere in that repo + (`find -iname "*dismech*"` returns zero hits). This question was + carried forward from an earlier, apparently mistaken, session claim. + There is nothing to move and no decision pending. (See + `.claude/board/TECH_DEBT.md` for the full correction.) +- **`ogar-dismech`** — exists now. Built and merged 2026-08-17: + https://github.com/AdaWorldAPI/OGAR/pull/274. It is the OGAR-side + compile-time collision guard for `0x0333` (mirrors `ogar-ro`'s + `RELATION_BODY_CONCEPT_ID` pattern) — nothing from this repo moved + into it; `dismech-bake` stays zero-dependency. - **S3 sink-in to the shared `lance-graph` SoA table, "volume01" hot reload, q2-repository-pattern re-embedding, paging/SPOG routing** — named goals, not yet built. This repo currently produces a flat