Skip to content

FMA skeleton: 3D-octree CRS · cascade builder · projection contract · NodeGuid audit#117

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/medcare-bridge-lance-graph-wmx76z
Jun 23, 2026
Merged

FMA skeleton: 3D-octree CRS · cascade builder · projection contract · NodeGuid audit#117
AdaWorldAPI merged 1 commit into
mainfrom
claude/medcare-bridge-lance-graph-wmx76z

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

Builds on the merged FMA skeletal spine (#116) with the four follow-ups.

1. Cascade / ontology Guid builder (soft tissue)

Guid::ontological(classid, heel, hip, twig, leaf) — the self-speaking
classification path (ANAT0001-CARD-HERT-LVNT-PAPMUS-<id>), the Cascade
counterpart to Guid::located() for bones. Same [container:member] tier
algebra; only the HHTL reading differs (ontology vs spatial). This is the
soft-tissue case (the heart muscle, the sinus): classified, then a splat
projects onto it.

2. Full 3D-octree HEEL/HIP (true CRS)

morton::{morton3_encode, morton3_decode} (24-bit octree) + guid::located_3d
/ position_3d. Bones now carry a real x:y:z coordinate (HIP's reserved odd
bits used), so the body is an ArcGIS / Cesium-grade spatial layer —
prefix containment over HEEL ++ HIP.container is 3D octree containment.
Bone::position() decodes it back. Supersedes the coronal-tile + depth-slice
v0.

3. ModalityProjection contract (projection.rs)

The seam where "address the heart muscle with ArcGIS, measure the sinus with
ViT" lands: every modality (Xray / Ultrasound / Doppler / Vit)
implements register(&Skeleton) -> RigidTransform (align to the bone
fiducials) + project(&pose) -> Vec<ProjectionSample> (emit Guid-addressed
samples). The address is the join key letting heterogeneous sensors write to
the same node. Worked example XrayBoneFiducial; a real ViT/ultrasound engine
implements the same trait downstream.

4. NodeGuid canon audit (docs/NODEGUID-CANON-AUDIT.md)

Group-by-group reconciliation of the FMA tier Guid against lance-graph
NodeGuid per the canon rule ("wrappers audited against OGAR, never the
reverse"
). It caught a real cross-repo bug:

F-1 (high): lance-graph NodeGuid::CLASSID_FMA = 0x0901 collides with
OGAR patient = 0x0901
. This session's new 0x0A Anatomy domain resolves
it — recommend retargeting CLASSID_FMA → 0x0A01.

Plus documented divergences (each with a reconciliation): classid width (2 B
vs 4 B), family/identity 256:256 vs u24:u24 (the economy decision),
endianness (FMA container-first vs canon LE — the membrane owns the
adaptation), and the 12+4 EdgeBlock (canon keeps it; the operator superseded
it with family nodes this session). No lance-graph code is changed
findings are for the operator / a lance-graph session.

Tests / gates

cargo test --workspacefully green; ogar-fma-skeleton 25 lib + 3
doctests, clippy-clean. New coverage: 3D CRS laterality + depth via decoded
position, the cascade ontology path, X-ray projection addressed by bone Guid,
3D-Morton roundtrip.

DISCOVERY-MAP: D-GUID-TIER, D-NODEGUID-AUDIT.

🤖 Generated with Claude Code


Generated by Claude Code

…act + NodeGuid audit

The four follow-ups, as one increment:

1. Cascade/ontology Guid builder — Guid::ontological() for soft tissue (the
   self-speaking ANAT-CARD-HERT-LVNT-PAPMUS path), alongside Guid::located()
   for bones. Same tier algebra, two HHTL readings.

2. Full 3D-octree HEEL/HIP — morton3_encode/decode (24-bit octree) + guid::
   located_3d / position_3d; bones now carry a true x:y:z CRS (HIP's reserved
   bits used), ArcGIS/Cesium-grade. Bone::position() decodes it.

3. ModalityProjection contract (projection.rs) — the seam ViT / X-ray /
   ultrasound×Doppler implement: register() to the bone fiducials + project()
   Guid-addressed samples. Worked example XrayBoneFiducial. "Measure the sinus
   with ViT" lands measurements at the address.

4. NodeGuid canon audit (docs/NODEGUID-CANON-AUDIT.md) — group-by-group vs
   lance-graph NodeGuid per the wrapper-audit rule. CAUGHT F-1: lance-graph
   CLASSID_FMA=0x0901 collides with OGAR patient=0x0901; this session's 0x0A
   Anatomy domain resolves it. Plus classid/family/identity width, endianness
   (LE vs container-first), and 12+4-EdgeBlock divergences — each with a
   reconciliation. No lance-graph code touched (operator's call).

Tests rewritten/added (25 lib + 3 doctests, workspace fully green, clippy
clean): 3D CRS laterality+depth via decoded position, cascade ontology path,
X-ray projection addressed by bone Guid. DISCOVERY-MAP: D-GUID-TIER,
D-NODEGUID-AUDIT.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYvNjD8M8LMNYbRy3gq2FP
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@AdaWorldAPI AdaWorldAPI merged commit 998db08 into main Jun 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants