Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:<num>`
xref (measured 1,957/1,990 = 98.3% of the real corpus), its DisMech-domain
Expand Down Expand Up @@ -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
Expand Down
77 changes: 32 additions & 45 deletions .claude/board/TECH_DEBT.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.

---

Expand Down Expand Up @@ -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.
25 changes: 15 additions & 10 deletions .claude/plans/ogar-classid-registration-v1.md
Original file line number Diff line number Diff line change
@@ -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/
Expand Down Expand Up @@ -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
Expand Down
24 changes: 12 additions & 12 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down