Skip to content

Commit ae92159

Browse files
committed
docs(splat-native): §6 FMA-litmus customer narrative
Cross-session companion to the lance-graph splat-native-ultrasound-v1 canonical plan. Names splat-native ultrasound as the explicit downstream customer of OGAR PR #30 §6 FMA bones-rendering litmus + Phase 8 FMA hydration. The §6 litmus transitions from "demo target" to "load path" — splat-native is the contemporary customer of the FMA atlas substrate at the sub-millisecond HHTL traversal claim. The SaMD Class IIa certification track uses ADR-022 (The Firewall) + KnowableFromStore (PR #25/#31) + commit_event audit (callcenter PR #467) as the audit-controls evidence base — no new OGAR architecture for SaMD; only documentation that names what's already true. No code. Spec/narrative only.
1 parent 90783ed commit ae92159

1 file changed

Lines changed: 338 additions & 0 deletions

File tree

docs/SPLAT-NATIVE-CUSTOMER.md

Lines changed: 338 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,338 @@
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

Comments
 (0)