Skip to content

Commit 6c480eb

Browse files
committed
Add 3DGS domain adapter strategy plan
1 parent 81a6085 commit 6c480eb

1 file changed

Lines changed: 209 additions & 0 deletions

File tree

Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
# 3DGS Domain Adapter Strategy Plan — lance-graph
2+
3+
## Goal
4+
5+
Define how the wider 3DGS / HHTL / certified-field substrate should support many domains without collapsing into a single domain-spaghetti crate.
6+
7+
The rule:
8+
9+
```text
10+
core substrate stays domain-neutral
11+
adapters carry domain semantics
12+
certificates cross the boundary through stable DTOs
13+
```
14+
15+
## Core substrate
16+
17+
The core should know only about:
18+
19+
```text
20+
hierarchical blocks
21+
block metadata
22+
kernel summaries
23+
error certificates
24+
skip/refine/hydrate actions
25+
reason codes
26+
storage references
27+
query/render budgets
28+
```
29+
30+
It should not know what a gene, neuron, ultrasound probe, asset, or customer ticket means.
31+
32+
## Adapter shape
33+
34+
Every domain adapter should implement the same conceptual flow:
35+
36+
```text
37+
source payload
38+
-> domain metadata extraction
39+
-> block hierarchy
40+
-> kernel summary
41+
-> certificate request
42+
-> query/render/hydrate action
43+
```
44+
45+
Candidate trait shape:
46+
47+
```rust
48+
pub trait CertifiedFieldAdapter {
49+
type Source;
50+
type Block;
51+
type Query;
52+
type Output;
53+
54+
fn describe_source(&self, source: &Self::Source) -> SourceDescriptor;
55+
fn build_blocks(&self, source: &Self::Source) -> Vec<Self::Block>;
56+
fn summarize_block(&self, block: &Self::Block) -> KernelSummary;
57+
fn plan(&self, query: &Self::Query, blocks: &[Self::Block]) -> Vec<BlockDecision>;
58+
fn execute(&self, decisions: &[BlockDecision]) -> Self::Output;
59+
}
60+
```
61+
62+
This should remain plan-level until at least two concrete adapters exist.
63+
64+
## Shared DTOs
65+
66+
Keep common DTOs narrow:
67+
68+
```text
69+
SourceDescriptor
70+
BlockDescriptor
71+
KernelSummary
72+
ErrorCertificateSummary
73+
BlockDecision
74+
DecisionReason
75+
ExecutionBudget
76+
ProvenanceRef
77+
```
78+
79+
Do not put domain-specific fields directly in these DTOs. Use typed extension payloads or adapter-owned tables.
80+
81+
## Adapter candidates
82+
83+
### Datalake adapter
84+
85+
```text
86+
source: Lance / Parquet / Iceberg dataset
87+
block: fragment / row group / page
88+
query: SQL / DataFusion logical plan / vector query
89+
output: selected fragments / exact scan / approximate aggregate
90+
```
91+
92+
### Geospatial adapter
93+
94+
```text
95+
source: 3D Tiles / ArcGIS / Cesium / GeoJSON
96+
block: tile / content / splat block
97+
query: camera / spatial predicate / feature query
98+
output: render schedule / selected features / tile decision report
99+
```
100+
101+
### RAG memory adapter
102+
103+
```text
104+
source: document corpus / embedding index
105+
block: document / section / chunk family
106+
query: user question / semantic vector / filters
107+
output: grounded chunks + confidence report
108+
```
109+
110+
### Observability adapter
111+
112+
```text
113+
source: logs / traces / metrics / deploy events
114+
block: service / time window / trace family
115+
query: incident question / anomaly signature
116+
output: root-cause candidates + hydrate traces
117+
```
118+
119+
### Ultrasound adapter
120+
121+
```text
122+
source: RF / IQ / Doppler / IMU frames
123+
block: frame / scanline group / splat volume block
124+
query: pose / atlas / anatomical region / time
125+
output: fused volume / registration report
126+
```
127+
128+
### Genetics adapter
129+
130+
```text
131+
source: FASTA / FASTQ / expression matrix / variant set
132+
block: sequence window / motif / gene / pathway
133+
query: motif / variant / pathway / sample state
134+
output: matched blocks + confidence envelope
135+
```
136+
137+
### Neuronal adapter
138+
139+
```text
140+
source: activation traces / connectome / model attention graph
141+
block: neuron / synapse / microcircuit / region
142+
query: state / activation / subgraph pattern
143+
output: state comparison / selected subgraph
144+
```
145+
146+
## Promotion criteria
147+
148+
A domain adapter should not become implementation work until it has:
149+
150+
```text
151+
one small public or synthetic fixture
152+
one concrete query type
153+
one block hierarchy
154+
one measurable certificate
155+
one useful output
156+
one acceptance test
157+
```
158+
159+
## Repository placement
160+
161+
Keep Ring-1 adapters close:
162+
163+
```text
164+
crates/adapter-datalake
165+
crates/adapter-geospatial
166+
```
167+
168+
Keep exploratory adapters either in docs or separate experimental crates:
169+
170+
```text
171+
crates/adapter-ultrasound-experimental
172+
crates/adapter-genetics-experimental
173+
crates/adapter-neuronal-experimental
174+
```
175+
176+
Names are placeholders.
177+
178+
## Certificate discipline
179+
180+
A certificate must affect behavior:
181+
182+
```text
183+
skip
184+
refine
185+
hydrate exact
186+
fallback
187+
warn
188+
reject
189+
```
190+
191+
If it is only logged and never changes the decision, it is telemetry, not a certificate.
192+
193+
## Acceptance criteria
194+
195+
- Core DTOs remain domain-neutral.
196+
- Two adapters can share the same decision/report machinery.
197+
- Domain-specific tables do not pollute common schemas.
198+
- Certificates are behavior-affecting.
199+
- Exploratory domains cannot block Ring-1 datalake/geospatial progress.
200+
201+
## Implementation priority
202+
203+
```text
204+
1. datalake adapter
205+
2. geospatial adapter
206+
3. RAG / observability adapter
207+
4. ultrasound research adapter
208+
5. genetics / neuronal exploratory adapters
209+
```

0 commit comments

Comments
 (0)