|
| 1 | +# Splat-Native Ultrasound — OGAR's §6 FMA-Litmus Customer |
| 2 | + |
| 3 | +> **Status:** PROPOSAL / cross-session architectural delta. |
| 4 | +> **Authored:** 2026-06-05 (session `claude/lance-graph-ontology-review-Pyry3`, |
| 5 | +> cross-repo). |
| 6 | +> **Companion to:** `docs/RDF-OWL-ALIGNMENT.md` (OGAR PR #30) — specifically §6 |
| 7 | +> "FMA bones-rendering as the architectural litmus" and §10 Phase 8. |
| 8 | +> |
| 9 | +> **Canonical plan:** `lance-graph/.claude/plans/splat-native-ultrasound-v1.md`. |
| 10 | +> This OGAR-side doc names splat-native ultrasound as the **explicit customer** |
| 11 | +> of OGAR's §6 litmus + Phase 8 FMA hydration. |
| 12 | +
|
| 13 | +--- |
| 14 | + |
| 15 | +## 0. TL;DR |
| 16 | + |
| 17 | +OGAR PR #30 §6 names FMA bones-rendering as the architectural litmus: |
| 18 | + |
| 19 | +> "If HHTL can traverse 'what nerves innervate the left biceps brachii' in |
| 20 | +> sub-millisecond without heap allocation, the architecture works." |
| 21 | +
|
| 22 | +**Splat-native ultrasound is the customer of that litmus.** A CPU-only |
| 23 | +Gaussian-splat ultrasound SaMD pipeline (the canonical plan in lance-graph) |
| 24 | +needs exactly this query at exactly this latency, on exactly this corpus |
| 25 | +(~75K FMA classes, ~2.1M relationships), for the splat-to-splat registration |
| 26 | +loop in stage 6 of the architecture (live splat volume ↔ FMA atlas splat |
| 27 | +volume, via Σ-sandwich Mahalanobis ICP). |
| 28 | + |
| 29 | +The cross-session decision (2026-06-05): the splat-native arc IS the §6 |
| 30 | +litmus passing. Not a future customer; **the contemporary customer**. The |
| 31 | +arc lands D-SPLAT-1 through D-SPLAT-14 across 4 repos (ndarray + lance-graph |
| 32 | ++ MedCare-rs + OGAR); OGAR's share is Phase 8 of #30 (FMA hydrate) + |
| 33 | +KnowableFromStore registration for splat ingest classes, both already on the |
| 34 | +OGAR roadmap. |
| 35 | + |
| 36 | +**For OGAR the three high-leverage takeaways:** |
| 37 | + |
| 38 | +1. **Phase 8 from PR #30 is no longer abstract.** It has a concrete customer |
| 39 | + waiting downstream. The TTL produced by OGAR Phase 8 is consumed by |
| 40 | + lance-graph D-SPLAT-8 (FMA atlas hydrator) which emits typed `FmaEntity` |
| 41 | + SoA + a pre-computed atlas splat volume (~150M Gaussians full body, |
| 42 | + ~5 GB compressed via the SH-aware palette extension in D-SPLAT-4). |
| 43 | + |
| 44 | +2. **ADR-022 (The Firewall) is the SaMD evidence base.** The splat-native |
| 45 | + arc lands as a SaMD Class IIa device (Forschungstool → klinische Studie → |
| 46 | + Class IIa, per the user-supplied business-facing diagram). The |
| 47 | + audit-controls + access-controls evidence the regulator wants IS the |
| 48 | + ADR-022 firewall discipline + `LanceMembrane::commit_event` audit chain |
| 49 | + + `KnowableFromStore` registry that PRs #25/#26/#28/#31 already shipped. |
| 50 | + No new OGAR architecture for SaMD certification — only documentation |
| 51 | + that names what's already true. |
| 52 | + |
| 53 | +3. **The §6 FMA litmus is reframed.** It was "if this can be done, the |
| 54 | + architecture works." With splat-native arriving, it becomes "if this |
| 55 | + doesn't work, the splat-native SaMD doesn't ship." Same statement, |
| 56 | + higher stakes — the litmus is no longer optional; the FMA atlas |
| 57 | + substrate IS the operational atlas-registration substrate for the |
| 58 | + SaMD device. Phase 8 work transitions from "demo target" to "load |
| 59 | + path." |
| 60 | + |
| 61 | +--- |
| 62 | + |
| 63 | +## 1. Why OGAR is involved |
| 64 | + |
| 65 | +The canonical plan's §11.2 work-division rule states: |
| 66 | + |
| 67 | +> **OGAR owns the upstream ontology; lance-graph owns the runtime atlas; |
| 68 | +> MedCare-rs owns the PHI wire.** Three firewalls, three owners. |
| 69 | +
|
| 70 | +OGAR is the **upstream ontology owner** — prepares the FMA TTL and its |
| 71 | +alignment to the OGAR `Class` IR; lance-graph hydrates the prepared TTL |
| 72 | +into the runtime `fma_atlas.lance` dataset + the pre-computed atlas splat |
| 73 | +volume; MedCare-rs handles patient-identifying ingestion. |
| 74 | + |
| 75 | +This matches the existing OGAR architecture without modification. The |
| 76 | +splat-native arc consumes: |
| 77 | + |
| 78 | +- **`Class` IR + `Attribute` + `Association` + `EnumDecl`** — for FMA |
| 79 | + classes (Bone, Muscle, Innervation, Vasculature, etc.) |
| 80 | +- **NiblePath identity prefixes** — `ogit-fma/Bone#7474`, etc. The |
| 81 | + prefix-radix shape that PR #31's `register_class_knowable_from` |
| 82 | + canonical-identity keying assumes. |
| 83 | +- **`KnowableFromStore::register` with the OGIT-prefixed identity** — |
| 84 | + per PR #31's amended C-2 framing (registry assigns; caller registers |
| 85 | + + DDL hint). |
| 86 | +- **ADR-022 firewall discipline** — inner = HHTL leaf-rename at |
| 87 | + compile-time; outer = `ExternalMembrane`/`LazyLock`. Splat-native ingest |
| 88 | + enters via `LanceMembrane::commit_event` (callcenter PR #467, the |
| 89 | + sole-writer membrane). |
| 90 | +- **`HEALTHCARE-TRANSCODING.md §3` Security Mesh** — splat-native PHI |
| 91 | + redaction inherits this directly via MedCare's `column_mask_bridge` |
| 92 | + (cited from §3.3 production-instance reference, PR #31). |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +## 2. What this arc adds to OGAR's roadmap |
| 97 | + |
| 98 | +### Confirms (no new work) |
| 99 | + |
| 100 | +- **OGAR PR #30 §10 sequencing.** Phase 8 ("OGAR-side FMA `Class` walk") |
| 101 | + stays as planned, but now with a named customer downstream. No timeline |
| 102 | + acceleration mandate; just clearer prioritization signal. |
| 103 | +- **OGAR PR #25/#31 `KnowableFromStore` trait.** The registry-assigns |
| 104 | + pattern + canonical-identity keying from PR #31 are exactly what splat |
| 105 | + ingest needs (D-SPLAT-11 in the canonical plan). No trait extension |
| 106 | + required. |
| 107 | +- **ADR-022 (The Firewall) inner/outer boundary.** Splat-native |
| 108 | + consumes the boundary as-is; the SaMD certification documentation |
| 109 | + (D-SPLAT-14) cites it directly. No firewall redesign. |
| 110 | + |
| 111 | +### Surfaces (small, additive) |
| 112 | + |
| 113 | +- **A new `vocab/fma-alignment.ttl`** — OWL alignment file declaring the |
| 114 | + FMA ↔ OGAR `Class` correspondence (per the §5 alignment table pattern |
| 115 | + in PR #30). Size: ~75K classes × a handful of axioms ≈ a few MB of TTL. |
| 116 | + Per the Phase 8 sized "2 sprints" estimate in #30 §10. **Sized within |
| 117 | + the existing Phase 8 budget.** |
| 118 | +- **OGIT vocabulary extension for FMA** — `vocab/ogit-fma.ttl` declaring |
| 119 | + FMA-specific OGIT predicates (`isA`, `partOf`, `innervates`, `supplies`, |
| 120 | + etc.) per the §6 worked example. Mirrors the existing `vocab/ogit.ttl` |
| 121 | + pattern. |
| 122 | + |
| 123 | +### Reframes (zero new work; framing only) |
| 124 | + |
| 125 | +- **§6 from "demo target" → "load path".** No change to §6's prose, but the |
| 126 | + sequencing weight shifts: phases that previously came "before §6 demo" |
| 127 | + now come "before §6 splat-native production wire." The FMA bones-rendering |
| 128 | + customer is no longer hypothetical. |
| 129 | +- **§10 sequencing.** Phase 8 was sized "2 sprints" in the #30 plan with no |
| 130 | + specific customer. With splat-native arriving as the customer, the Phase |
| 131 | + 8 deliverables get a concrete acceptance gate: the atlas splat volume |
| 132 | + must round-trip through the §6 sub-millisecond HHTL traversal at the |
| 133 | + scale lance-graph D-SPLAT-8 expects (~75K classes + ~150M atlas |
| 134 | + Gaussians). |
| 135 | + |
| 136 | +--- |
| 137 | + |
| 138 | +## 3. The litmus, restated |
| 139 | + |
| 140 | +OGAR PR #30 §6, condensed: |
| 141 | + |
| 142 | +> ~75K static anatomy classes, ~2.1M relationships, perfect fit for |
| 143 | +> compile-time HHTL. The 3D mesh + locale labels live at the per-deployment |
| 144 | +> Adapter (pragmatic-layer rebind). If HHTL can traverse "what nerves |
| 145 | +> innervate the left biceps brachii" in sub-millisecond without heap |
| 146 | +> allocation, the architecture works. |
| 147 | +
|
| 148 | +The splat-native arc adds: **and the live splat volume aligns to the atlas |
| 149 | +at frame rate.** |
| 150 | + |
| 151 | +The composed litmus, full version (the SaMD acceptance gate): |
| 152 | + |
| 153 | +> Given a live ultrasound splat volume (~10⁶–10⁷ Gaussians per frame, ~30 |
| 154 | +> frames/s, CPU-only on a HoloLens-class device) and the FMA atlas splat |
| 155 | +> volume (~150M Gaussians, ~5 GB on disk, region-paged), the inner loop |
| 156 | +> must: |
| 157 | +> |
| 158 | +> 1. Resolve `atlas_region_id` from the live volume's dominant Gaussians |
| 159 | +> (NiblePath traversal — sub-millisecond per region; the original §6 |
| 160 | +> claim). |
| 161 | +> 2. Page the matching atlas-region Gaussians into memory (~10⁵ Gaussians |
| 162 | +> per region; <10ms on warm cache). |
| 163 | +> 3. Run Σ-sandwich Mahalanobis ICP (D-SPLAT-5 in the canonical plan; |
| 164 | +> <100ms on the 1M × 1M scale). |
| 165 | +> 4. Emit pose + per-Gaussian class_id back to the live volume. |
| 166 | +> 5. Render the patient-aligned overlay (D-SPLAT-12; <33ms per frame). |
| 167 | +> |
| 168 | +> Total inner-loop budget: <150ms per frame, CPU-only, no GPU vendor lock. |
| 169 | +> Sub-millisecond on step 1 (the §6 claim) is the gating threshold. |
| 170 | +
|
| 171 | +If step 1 doesn't hit sub-millisecond, the rest of the loop doesn't matter |
| 172 | +— the splat-native SaMD device doesn't ship at clinical AR rates. |
| 173 | + |
| 174 | +This is **the** OGAR architectural acceptance gate for the splat-native |
| 175 | +arc. |
| 176 | + |
| 177 | +--- |
| 178 | + |
| 179 | +## 4. Cross-references |
| 180 | + |
| 181 | +### OGAR repo (this repo, public) |
| 182 | + |
| 183 | +- `docs/RDF-OWL-ALIGNMENT.md` §§6, 8, 10 — the litmus + multi-hop alignment |
| 184 | + + sequencing. |
| 185 | +- `docs/THE-FIREWALL.md` §7 — the HIPAA worked example (splat-native is a |
| 186 | + super-set: HIPAA + SaMD Class IIa). |
| 187 | +- `docs/HEALTHCARE-TRANSCODING.md` §3, §4 — Security Mesh + label-free PII |
| 188 | + guarantee; splat-native inherits both via MedCare-rs's |
| 189 | + `column_mask_bridge` (cited §3.3 production-instance reference, PR #31). |
| 190 | +- `docs/ARCHITECTURAL-DECISIONS-2026-06-04.md` ADR-022 — The Firewall; |
| 191 | + SaMD certification evidence base. |
| 192 | +- `crates/ogar-knowable-from/src/lib.rs` — the `KnowableFromStore` trait |
| 193 | + consumed by splat ingest (D-SPLAT-11 in the canonical plan). |
| 194 | + |
| 195 | +### Canonical splat-native arc |
| 196 | + |
| 197 | +- `lance-graph/.claude/plans/splat-native-ultrasound-v1.md` — canonical plan |
| 198 | + (this doc's source of truth). |
| 199 | +- `lance-graph/.claude/plans/splat-native-ultrasound-v1.md` §3.8 / §3.9 — |
| 200 | + D-SPLAT-8 (FMA atlas hydrator) + D-SPLAT-9 (FMA `style_recipe`) detailed |
| 201 | + specs. |
| 202 | +- `ndarray/.claude/plans/splat-native-ultrasound-simd-substrate-v1.md` — |
| 203 | + ndarray-side companion (D-SPLAT-2 SIMD ops). |
| 204 | +- `MedCare-rs/.claude/handovers/2026-06-05-splat-native-medcare-hipaa-wire.md` |
| 205 | + — MedCare-rs-side companion (D-SPLAT-10/11 HIPAA wire). |
| 206 | + |
| 207 | +### Cross-session precedents |
| 208 | + |
| 209 | +- **bardioc PR #17** — Rubicon kanban impl (splat actors D-SPLAT-7 consume). |
| 210 | +- **bardioc PR #18** — `BINDSPACE_DISSOLUTION_HANDOVER.md` (runtime-side |
| 211 | + architectural delta; lance-graph PR #470 is the lance-graph-side pointer). |
| 212 | +- **bardioc PR #19** — substrate-b-shadow scaffold (the dry-run / §14 |
| 213 | + oracle pattern; **directly relevant to D-SPLAT-14 SaMD clinical-study |
| 214 | + validation** — same shadow pattern + offline comparator). |
| 215 | +- **lance-graph PR #434** — unified-SoA convergence (`E-SOA-IS-THE-ONLY`); |
| 216 | + splat-native inherits the carrier doctrine. |
| 217 | +- **lance-graph PR #467** — `LanceMembrane::commit_event` sole-writer |
| 218 | + membrane (splat ingest audit home). |
| 219 | +- **lance-graph PR #470** (open) — BindSpace dissolution; scoped to |
| 220 | + cognitive-shader-driver, doesn't affect splat-native carriers per C-1 in |
| 221 | + PR #162. |
| 222 | +- **MedCare-rs PR #162** — HIPAA architectural-delta handover (splat-native |
| 223 | + D-SPLAT-10/11 inherits the firewall + the F-1 production-instance |
| 224 | + reference now cited from this repo's `HEALTHCARE-TRANSCODING.md §3.3`). |
| 225 | +- **ndarray PR #189** — `OntologySchema::is_ancestor` (FMA atlas |
| 226 | + NiblePath traversal uses this; sub-millisecond is the §6 acceptance gate). |
| 227 | +- **OGAR PR #25 / #31** — `KnowableFromStore` trait; canonical-identity |
| 228 | + keying with the OGIT prefix. |
| 229 | +- **OGAR PR #30** — RDF/OWL alignment; §6 litmus; §10 Phase 8 sequencing |
| 230 | + (this doc's anchor). |
| 231 | + |
| 232 | +### Upstream W3C / OMG / domain references |
| 233 | + |
| 234 | +- **FMA (Foundational Model of Anatomy)** — University of Washington; |
| 235 | + ~75K static anatomy classes; OWL/RDF representation; the §6 corpus. |
| 236 | +- **PROV-O** — W3C provenance ontology; the `commit_event` audit chain |
| 237 | + inherits PROV-O semantics per ADR-022. |
| 238 | +- **DICOM (Digital Imaging and Communications in Medicine)** — NEMA; |
| 239 | + ultrasound metadata interoperability (out of scope for v1; relevant for |
| 240 | + v3 Class IIa interop). |
| 241 | +- **FHIR R4** — HL7; structural arm of the medical-imaging consumer |
| 242 | + (per HEALTHCARE-TRANSCODING.md §1). |
| 243 | +- **IEC 62366 (usability) + IEC 80001 (risk) + ISO 14971 (risk mgmt)** — |
| 244 | + SaMD certification standards referenced by D-SPLAT-14. |
| 245 | +- **IVD-MDR Rule 11** — EU SaMD risk classification (Class IIa for |
| 246 | + diagnostic-software with non-critical decision support). |
| 247 | + |
| 248 | +--- |
| 249 | + |
| 250 | +## 5. FINDING (verified against existing OGAR + lance-graph state) |
| 251 | + |
| 252 | +- **F-SPLAT-O-1.** The FMA TTL preparation work (Phase 8 of PR #30) is |
| 253 | + pre-condition for lance-graph D-SPLAT-8 (FMA atlas hydrator) per the |
| 254 | + canonical plan §3.8 + §4 phase P4 sequencing. The TTL → typed Rust SoA |
| 255 | + pipeline mirrors the existing Odoo extraction (PR #426/#432: source- |
| 256 | + extracted typed `OdooEntity` SoA; ~3,328 functions / 53 entities → 66 |
| 257 | + entities). The same pattern at FMA scale is ~75K classes / ~2.1M |
| 258 | + relationships — 1-2 orders of magnitude larger but architecturally |
| 259 | + identical. |
| 260 | + |
| 261 | +- **F-SPLAT-O-2.** The `KnowableFromStore` registry-assigns pattern (PR |
| 262 | + #25/#31) is splat-native-ready. Splat ingest calls `register("ogit- |
| 263 | + medcare/ultrasound_ingest", Some(ddl_hint))` and gets back a monotonic |
| 264 | + `knowable_from: u64`. Per C-2 amended (PR #162), the registry assigns, |
| 265 | + not the caller — same as every other ingest pattern. No trait extension |
| 266 | + needed for v1. |
| 267 | + |
| 268 | +- **F-SPLAT-O-3.** The `HEALTHCARE-TRANSCODING.md §3.3` production-instance |
| 269 | + reference (cited via PR #31) names MedCare's `column_mask_bridge` as the |
| 270 | + Security Mesh production form. Splat-native ingest extends |
| 271 | + `SensitivityReason` with `UltrasoundRawPHI` + `UltrasoundAnonymized` |
| 272 | + variants but reuses the existing `RedactionMode::{Hash, Constant, Null, |
| 273 | + Truncate(n)}` set — no new redaction primitive owed. |
| 274 | + |
| 275 | +## CONJECTURE (needs OGAR-session confirmation when Phase 8 lands) |
| 276 | + |
| 277 | +- **C-SPLAT-O-1.** The FMA TTL's NiblePath identity prefix structure |
| 278 | + (`ogit-fma/Bone#7474`, etc.) is sub-millisecond-traversable at ~75K |
| 279 | + classes per the §6 litmus claim. **Open:** confirm via prototype |
| 280 | + traversal on real FMA TTL (not synthetic). If sub-millisecond is not |
| 281 | + met, the splat-native frame rate target degrades; D-SPLAT-12 (renderer) |
| 282 | + drops back to atlas-region-cached (warm-only) mode and accepts a 1-frame |
| 283 | + registration lag. |
| 284 | + |
| 285 | +- **C-SPLAT-O-2.** The `vocab/ogit-fma.ttl` predicate set is sufficient |
| 286 | + for splat-native registration. **Open:** at minimum needs `isA`, |
| 287 | + `partOf`, `innervates`, `supplies`. Additional predicates (`adjacent_to`, |
| 288 | + `crosses`, `originates_from`) may be required for higher-fidelity |
| 289 | + registration; defer to D-SPLAT-9 review (the FMA `style_recipe` DAtom |
| 290 | + catalogue). |
| 291 | + |
| 292 | +- **C-SPLAT-O-3.** The §14 oracle pattern from bardioc PR #19 |
| 293 | + (substrate-b-shadow) is the right shape for splat-native clinical-study |
| 294 | + validation. **Open:** confirm by adopting the bardioc shadow pattern as |
| 295 | + the SaMD §14-oracle pattern in D-SPLAT-14 — same EdgeDecoder + DryRunRecorder |
| 296 | + + offline-comparator structure, applied to splat-native vs 2D-B-mode |
| 297 | + parity comparison rather than HIRO-vs-NEW parity. |
| 298 | + |
| 299 | +--- |
| 300 | + |
| 301 | +## 6. Action items for OGAR session |
| 302 | + |
| 303 | +When Phase 8 (FMA hydrate) work opens (per PR #30 §10 sequencing): |
| 304 | + |
| 305 | +- [ ] Read the canonical plan: |
| 306 | + `lance-graph/.claude/plans/splat-native-ultrasound-v1.md` §3.8 / §3.9 |
| 307 | + (D-SPLAT-8 / D-SPLAT-9 detailed specs). |
| 308 | +- [ ] Read the §6 acceptance gate at the splat-native scale (§3 of this |
| 309 | + doc): sub-millisecond HHTL traversal + atlas-region paging + <100ms |
| 310 | + registration + <33ms render = <150ms per frame total. |
| 311 | +- [ ] Confirm C-SPLAT-O-1 via prototype FMA TTL traversal (real FMA, |
| 312 | + not synthetic); report sub-millisecond or otherwise back to this |
| 313 | + session for D-SPLAT-12 fallback design. |
| 314 | +- [ ] Author `vocab/fma-alignment.ttl` declaring FMA ↔ OGAR `Class` |
| 315 | + correspondence per the §5 alignment-table pattern in PR #30. |
| 316 | +- [ ] Author `vocab/ogit-fma.ttl` with the four minimum predicates + |
| 317 | + whatever D-SPLAT-9 review surfaces (C-SPLAT-O-2 resolution). |
| 318 | +- [ ] Consider adopting bardioc PR #19's substrate-b-shadow pattern as |
| 319 | + the SaMD §14-oracle template for D-SPLAT-14 (C-SPLAT-O-3). |
| 320 | + |
| 321 | +--- |
| 322 | + |
| 323 | +## 7. Status |
| 324 | + |
| 325 | +- This OGAR-side doc: filed in branch `claude/splat-native-customer` on |
| 326 | + this repo. |
| 327 | +- Canonical plan in lance-graph at |
| 328 | + `.claude/plans/splat-native-ultrasound-v1.md`. |
| 329 | +- Companion docs in `ndarray/.claude/plans/` and |
| 330 | + `MedCare-rs/.claude/handovers/`. |
| 331 | +- **No action required of the OGAR session in the immediate term;** this |
| 332 | + doc names the customer for Phase 8 and the SaMD evidence base for |
| 333 | + ADR-022 + PR #25/#31, so future OGAR sessions can sequence Phase 8 with |
| 334 | + the customer in mind. |
| 335 | + |
| 336 | +--- |
| 337 | + |
| 338 | +_End of OGAR companion v1._ |
0 commit comments