Skip to content

Commit 03b2f87

Browse files
authored
Merge pull request #41 from AdaWorldAPI/claude/domain-instances-geospatial-osm
docs: OSM as 6th domain instance + RDF-OWL §10 Phase 2a/2b shipped + 2c queued
2 parents 0acdcd1 + 1bb5497 commit 03b2f87

2 files changed

Lines changed: 81 additions & 17 deletions

File tree

docs/DOMAIN-INSTANCES.md

Lines changed: 78 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
| **Elixir / HIRO** | migration target (OLD stack) | `docs/ELIXIR-HIRO-PREFETCH.md` + `crates/ogar-from-elixir` | scaffold; merged |
5252
| **Odoo / ERP** | **production instance** | `docs/ODOO-TRANSCODING.md` + a production ERP deployment | shipping |
5353
| **HIPAA / healthcare** | **production instance** | a production healthcare (HIPAA) deployment | shipping |
54+
| **Geospatial / OSM** | calibration (geographic) | `docs/RDF-OWL-ALIGNMENT.md §10` Phase 2c + `lance-graph` PR #473 `cesium-osm-substrate-v1.md` (D-OSM-1..7) | spec'd; runtime addendum shipped; `ogar-from-osm-pbf` queued |
5455

5556
The first three are how the substrate is *calibrated* (chess proves the
5657
Semantik/Syntax/Pragmatik trichotomy separates cleanly; OpenProject
@@ -122,31 +123,92 @@ A production HIPAA deployment proves the firewall split is a
122123
*requirement*, not a nicety: a real HIPAA-compliant system needs fast
123124
inner auth AND durable outer audit, and ships exactly that separation.
124125

126+
### 2.6 Geospatial / OSM — geographic calibration
127+
128+
**What OSM proves: geography doesn't break the IR.** OSM IDs are
129+
*already* prefix-structured (`country/region/city/street/house`), so
130+
the adapter is doing identity-*extraction*, not identity-construction
131+
— a much smaller surface than typical. Three OSM Classes (`Node`,
132+
`Way`, `Relation`) lift via the queued `ogar-from-osm-pbf` adapter
133+
(`docs/RDF-OWL-ALIGNMENT.md §10` Phase 2c). Exercises:
134+
135+
- **Spatial prefix-locality** — Cesium TMS quadkey as `NiblePath`
136+
prefix, per Q2 coordination outcome locked in `lance-graph` PR #473
137+
§2. HHTL trie routes `osm/<quadkey>/way/123` byte-identically to
138+
`ogit-erp/sale.order/42` and `fma/Femur`. The *runtime session's*
139+
Cesium tile pyramid math (`crates/cesium/src/sse.rs` +
140+
`implicit_tiling.rs`) already uses quadkey addressing; aligning
141+
OGAR routes both sides through the same address arithmetic.
142+
143+
- **Tag-as-Class final / Arrow-list v1 fallback** — Q1 coordination
144+
outcome locked in `lance-graph` PR #473 §2. Final shape: Tag is a
145+
`Class` related via `has_tag: HasMany<Tag>` (SPO-natural emission
146+
`(Way#123, ogar:hasTag, Tag#building=yes)`); v1 implementation
147+
ships the Arrow `List<Struct>` fallback in `D-OSM-1/2` for
148+
cardinality control while Tag interning matures. The IR (`Class`
149+
shape) carries no OSM-specific dialect — same ADR-023 discipline
150+
Odoo's `_inherit`/`_inherits` already follows.
151+
152+
- **Palette256 codec (ADR-024) adopts its third domain.** OSM tag
153+
values cluster within a tile (most zoom-21 tiles have ≤256
154+
distinct tag values); per-tile palette + const-table lookup
155+
yields ~5-10× compression on way attributes. The `D-OSM-2`
156+
Arrow→Lance ingest reports ρ-vs-reference per the ADR-024
157+
adoption checklist (lance-graph PR #473's §11 callout — the
158+
runtime session's commitment after ADR-024 merged in PR #39).
159+
160+
- **The OGAR-crossing deliverable is `D-OSM-3`** — the SPO triple
161+
lift in `lance-graph-ontology`. That's the producer-side contract
162+
the `ogar-from-osm-pbf` adapter consumes. OGAR session signed off
163+
on the surface in 2026-06-05 cross-session coordination; the
164+
adapter is unblocked.
165+
166+
**The geographic litmus complements the anatomical one: the same
167+
compile-time HHTL primitive resolves `Femur is_a LongBone` AND
168+
`Marienplatz is_in Munich` in sub-microsecond.** That's the
169+
falsifiable property — measurable, not aspirational. If it holds,
170+
*"instance proves universality"* is non-trivial; if it fails on
171+
either, the substrate is leaking dialect into the codec.
172+
173+
The OSM instance is calibration-grade like Chess and OpenProject (no
174+
production deployment owned by the workspace yet), but the *runtime
175+
side* — Cesium tilesets, Lance-backed OSM datasets, 3DGS splat
176+
batches over OSM building footprints — is shipping per the
177+
`cesium-osm-substrate-v1.md` deliverable line. The OGAR side
178+
contributes the schema lift; the runtime side contributes the
179+
rendering substrate; together they form the geographic counterpart
180+
to the FMA-bones anatomical case (`docs/RDF-OWL-ALIGNMENT.md §6`).
181+
125182
## 3. Capability coverage matrix
126183

127184
Which domain proves which substrate capability (Foundry-parity columns
128185
from `SUBSTRATE-ENDGAME.md §5.2`):
129186

130-
| Capability | Chess | OpenProject | Elixir/HIRO | Odoo/ERP | HIPAA |
131-
|---|:--:|:--:|:--:|:--:|:--:|
132-
| Ontology (Class/Association) ||||||
133-
| Action types / lifecycle FSM ||| ✓ (gen_statem) | ✓ (workflows) ||
134-
| `Postpone` / `StateTimeout` | ✓ (premove/clock) | partial ||||
135-
| `Depends` (data-causal) || ✓ (reactive) || ✓ (`@api.depends`) ||
136-
| Time-versioned / time-travel || ✓ (paper-trail) ||| ✓ (audit) |
137-
| **Row-level permissions** || partial (RBAC) || partial | **✓ (HIPAA, palette256)** |
138-
| **Immutable audit** || ✓ (journals) ||| **✓ (HIPAA, signed)** |
139-
| Multi-language frontends | (Rust) | Ruby | Elixir | Python (Odoo)+SeaORM | Rust |
140-
| Money/decimal fidelity |||| **✓ (ERP)** ||
141-
| Migration scaffold || ✓ (target) | ✓ (spine) | (already Rust) | (already Rust) |
187+
| Capability | Chess | OpenProject | Elixir/HIRO | Odoo/ERP | HIPAA | OSM |
188+
|---|:--:|:--:|:--:|:--:|:--:|:--:|
189+
| Ontology (Class/Association) |||||||
190+
| Action types / lifecycle FSM ||| ✓ (gen_statem) | ✓ (workflows) |||
191+
| `Postpone` / `StateTimeout` | ✓ (premove/clock) | partial |||||
192+
| `Depends` (data-causal) || ✓ (reactive) || ✓ (`@api.depends`) |||
193+
| Time-versioned / time-travel || ✓ (paper-trail) ||| ✓ (audit) | ✓ (changesets) |
194+
| **Row-level permissions** || partial (RBAC) || partial | **✓ (HIPAA, palette256)** | — (ODbL-public) |
195+
| **Immutable audit** || ✓ (journals) ||| **✓ (HIPAA, signed)** | ✓ (OSM changeset history) |
196+
| Multi-language frontends | (Rust) | Ruby | Elixir | Python (Odoo)+SeaORM | Rust | Rust (via `osmpbf`) |
197+
| Money/decimal fidelity |||| **✓ (ERP)** |||
198+
| Migration scaffold || ✓ (target) | ✓ (spine) | (already Rust) | (already Rust) | (already Rust) |
199+
| **Spatial prefix routing** (Cesium TMS quadkey via NiblePath) |||||| **✓ (OSM)** |
200+
| **Palette256 codec adoption** (ADR-024) ||||| ✓ (security) | **✓ (tag values + tile-local coords)** |
142201

143202
**Coverage observation:** no single domain exercises everything, but the
144-
five together cover the full surface. The HIPAA instance is the *only*
203+
six together cover the full surface. The HIPAA instance is the *only*
145204
one that hard-proves row-level perms + signed audit (the Security Mesh);
146205
the Odoo/ERP instance is the *only* one that hard-proves money/decimal
147-
fidelity + production `@api.depends`. The calibration trio
148-
(chess/OP/HIRO) proves the lifecycle + migration core. **That's why all
149-
five matter** — drop any and a capability loses its production witness.
206+
fidelity + production `@api.depends`; the OSM instance is the *only*
207+
one that hard-proves spatial prefix routing (Cesium TMS quadkey as
208+
`NiblePath`) AND drives the second production adoption of the
209+
palette256 codec from ADR-024. The calibration trio (chess/OP/HIRO)
210+
proves the lifecycle + migration core. **That's why all six matter**
211+
— drop any and a capability loses its production witness.
150212

151213
## 4. Why the two production instances change the Foundry argument
152214

docs/RDF-OWL-ALIGNMENT.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,9 @@ same TTL.
734734
| Phase | Deliverable | Sized | Status |
735735
|---|---|---|---|
736736
| **1** | This doc (`docs/RDF-OWL-ALIGNMENT.md`) | 1 PR | **this PR** |
737-
| **2** | `ogar-adapter-ttl` crate scaffold — parse / emit / round-trip against `vocab/ogar.ttl` | 1 sprint | Next OGAR PR after #25 P2 fix + surrealql AST walk |
737+
| **2a** | `ogar-adapter-ttl` crate scaffold — parse / emit / round-trip against `vocab/ogar.ttl` | 1 sprint | **Shipped** (PR #37, merged 2026-06-05) |
738+
| **2b** | `ogar-adapter-clickhouse-ddl` crate — CREATE TABLE → `Class` + emit; sqlparser ClickHouseDialect; composes with bardioc PR #19's `substrate-b-shadow::ClickHouseQuery` | 1 sprint | **Shipped** (PR #38 + #40 dotted-name fix, merged 2026-06-05) |
739+
| **2c** | `ogar-from-osm-pbf` crate scaffold — consumes `osmpbf` (b-r-u) + `D-OSM-3`'s SPO triple lift contract from `lance-graph` PR #473 (`cesium-osm-substrate-v1.md`). Three fixed Classes (`Node`/`Way`/`Relation`); Cesium TMS quadkey as `NiblePath` prefix (Q2 outcome); Tag-as-Class final shape with Arrow `List<Struct>` v1 fallback (Q1 outcome). Reports ρ-vs-reference per ADR-024 adoption checklist on first per-country PBF run | 1 sprint | Queued — D-OSM-1/2/3 critical path upstream; landing after runtime-side D-OSM-3 SPO surface is observable |
738740
| **3** | `ogar-knowable-from::vart-backend` feature — wires VART as the cache | 1 sprint | Concurrent with phase 2 |
739741
| **4** | `ogar-pattern` crate — recognition library + confidence scoring + 10-15 patterns (FMA-D, FIBO-FND, schema.org, SKR, PROV-O-audit, etc.) | 2 sprints | After phase 2 |
740742
| **5** | `ogar-actionable` crate — lifecycle extraction + `ActionDef` / `KausalSpec` proposal | 2 sprints | After phase 4 |

0 commit comments

Comments
 (0)