|
| 1 | +# Crate registry + naming convention (3dgs-* family) |
| 2 | + |
| 3 | +> **AUTHORITATIVE policy** (a decision, not inspiration — unlike the plans triage). |
| 4 | +> Anticipates a battery of splat/tiles crates; this is the index + the rules that |
| 5 | +> keep them tracked and stop the battery from becoming empty shells. |
| 6 | +
|
| 7 | +## Posture (read this first) |
| 8 | + |
| 9 | +**We do not *use* ArcGIS / Cesium.** No SDK, no service integration, no |
| 10 | +API/wire compatibility, no runtime dependency. The relationship is exactly two |
| 11 | +things, and nothing else: |
| 12 | + |
| 13 | +- **Reinvent** — build native CAM SoA from the data's first principles. This is |
| 14 | + the goal. |
| 15 | +- **Reverse-engineer** — one-way extraction of data out of their static files, |
| 16 | + rebuilt as CAM SoA. This is a *donkey-bridge*: transitional grounding, |
| 17 | + acceptable **only** when a native refactor isn't yet feasible, retired the |
| 18 | + moment it is. |
| 19 | + |
| 20 | +Using-ArcGIS vs reinventing-and-reverse-engineering is a completely different |
| 21 | +animal. We are the latter, never the former. |
| 22 | + |
| 23 | +**Optional grounding pillar (modesty clause).** We keep *one* optional, |
| 24 | +feature-gated `cesium` **reference** crate — never in the production hotpath, |
| 25 | +never a runtime dependency — whose only job is to run the real Cesium/ArcGIS |
| 26 | +path and emit reference output we diff against. This is the *runnable* form of |
| 27 | +the legacy pillar: it keeps "we're at parity / better" honest by **measuring** |
| 28 | +against a live oracle instead of asserting it from a capability matrix. It is |
| 29 | +the institutional humility against reinvention-hubris — the same "measure, |
| 30 | +don't assert" discipline we apply everywhere, turned on our own reinvention |
| 31 | +claim. It reads their JSON because it *is* the reference path; that's fine — |
| 32 | +it's dev/reference, walled off from production, so rule 3 still holds. |
| 33 | + |
| 34 | +## Hard rules |
| 35 | + |
| 36 | +1. **Single production crate family: `3dgs-*`.** No `cesium-*` *production* |
| 37 | + family, no `ada-*` (deprecated). Naming is `3dgs-<role>` (`3dgs-tiles`, |
| 38 | + `3dgs-ewa-syrk`, future `3dgs-render`, `3dgs-codec`, …). **One exception:** a |
| 39 | + single *optional, feature-gated* `cesium` **reference** crate — the runnable |
| 40 | + legacy pillar / parity oracle (see Posture's modesty clause), never in the |
| 41 | + production hotpath, never a runtime dependency. |
| 42 | + |
| 43 | +2. **CAM SoA is the mandatory representation.** CAM SoA = |
| 44 | + - **content-addressable** — addressed by `cam_pq` (CAM-PQ) codebook index, not by position; |
| 45 | + - **structure-of-arrays** — `simd_soa::MultiLaneColumn` / `cognitive-shader-driver::bindspace` columns / lane carriers; |
| 46 | + - **binary planes** — `AwarenessPlane16K` (16384-bit), q8 lanes, `#[repr(C)]`. |
| 47 | + |
| 48 | + Whatever a source contains is **reverse-engineered** into CAM SoA — and |
| 49 | + **ONLY** reverse-engineered: extract and rebuild, never depend on the source |
| 50 | + format as a library, never round-trip it, never emit it. No AoS, no |
| 51 | + source-native structs, no intermediate format survives past the import |
| 52 | + boundary. |
| 53 | + |
| 54 | + **Refactor > reverse-engineer.** The CAM SoA layout is *refactored natively* |
| 55 | + from first principles, not derived from the source's structure. |
| 56 | + Reverse-engineering is the donkey-bridge (see Posture) — a crutch, never the |
| 57 | + design. Never let an imported format's structure calcify into ours. |
| 58 | + |
| 59 | +3. **NO JSON IN THE HOTPATH. EVER.** Restates the existing W1a invariant |
| 60 | + (`no serde`, "no JSON in types", `#[repr(C)]` — see |
| 61 | + `lance-graph-contract::splat`). JSON is permitted **only** at the cold, |
| 62 | + one-time, read-only *import boundary* (reverse-engineering someone else's |
| 63 | + file); it is rebuilt into CAM SoA immediately and **never enters the hotpath, |
| 64 | + is never persisted, and is never emitted**. |
| 65 | + |
| 66 | +4. **Import adapters are read-once, one-way, output-CAM-SoA.** The 3D Tiles |
| 67 | + reader (in `3dgs-tiles`) reads `tileset.json` + `KHR_gaussian_splatting` glTF |
| 68 | + + `ESRI_crs` once, reverse-engineers into CAM SoA, and discards the source. |
| 69 | + No `cesium-*` family; nothing emits or serves their wire format. |
| 70 | + |
| 71 | +5. **Rethink clause.** Our CAM SoA is canonical. An external format is |
| 72 | + reconsidered **only** on falsifiable proof it is strictly better — not by |
| 73 | + default, not for interop convenience. The optional `cesium` reference crate |
| 74 | + (Posture / rule 1 exception) is the instrument that *produces* that proof. |
| 75 | + |
| 76 | +6. **Creation gate.** A crate exists **only with ≥1 real consumer** (≥2 for a |
| 77 | + generic abstraction — the `certified-field-kernel-substrate` self-fence). |
| 78 | + Until then it stays a **module inside an existing crate**. A `3dgs-*` crate |
| 79 | + with no consumer is the code version of a markdown-only plan. |
| 80 | + |
| 81 | +## Registry (seed — verified first-party only) |
| 82 | + |
| 83 | +`status`: shipped / planned / module-until-earned. Only crates read first-party |
| 84 | +this session carry a description; the rest are the catalogue checklist below. |
| 85 | + |
| 86 | +| Crate / module | Repo | Family | Status | Purpose (verified) | Lane | |
| 87 | +|---|---|---|---|---|---| |
| 88 | +| `3dgs-tiles` | lance-graph | `3dgs-*` | planned | 3D Tiles reader. **Reverse-engineers** KHR_gaussian_splatting glTF + ESRI_crs → CAM SoA (donkey-bridge, transitional); JSON read-once at the cold boundary only | Geo | |
| 89 | +| `3dgs-ewa-syrk` | ndarray (`benches/`) | `3dgs-*` | planned | EWA-SYRK crossover bench (`project_batch` vs cblas-batched sandwich) | Kernel | |
| 90 | +| `cesium` (reference) | tbd | **optional/dev** | planned | runnable **legacy pillar / parity oracle** — runs the real Cesium/ArcGIS path, emits reference output to diff against. Feature-gated, never hotpath, never a runtime dep. The grounding + modesty instrument | tbd | |
| 91 | +| `splat3d` (module) | ndarray `src/hpc/` | — (pre-conv.) | shipped | CPU-SIMD forward renderer (`spd3`/`project`/`raster`/`sh`/`tile`/`gaussian`) | — | |
| 92 | +| `cam_pq` (module) | ndarray `src/hpc/` | — | shipped | 6×256 CAM-PQ codebook — the **CAM** in CAM SoA | — | |
| 93 | +| `simd_soa` (module) | ndarray `src/` | — | shipped | `MultiLaneColumn` lane carrier — the **SoA** in CAM SoA | — | |
| 94 | +| `bgz17` | lance-graph | — (bare) | shipped | LOSSY golden-step recoverable sampling (BASE_DIM=17, GOLDEN_STEP=11); `ScalarCsr::spmv_min_plus` | — | |
| 95 | +| `blasgraph` (module) | lance-graph `…/graph/` | — | shipped | **canonical bit-exact** 16384-bit GraphBLAS substrate (7 HDR semirings) | — | |
| 96 | +| `jc` | lance-graph | — (bare) | shipped | 12-pillar proof-in-code (Pillar 10 `pflug`, 11 `hambly_lyons`) | — | |
| 97 | +| `sigker` | lance-graph | — (bare) | shipped | path-signature kernels (`signature_truncated`, `signature_kernel_pde`) | — | |
| 98 | +| `cognitive-shader-driver` | lance-graph | — (bare) | shipped | BindSpace **SoA** / mailbox / token_agreement / codec bridge | — | |
| 99 | +| `lance-graph-contract` | lance-graph | — | shipped | SPLAT-1 CAM SoA contract types (`CamPlaneSplat`/`SplatPlaneSet`/`CamSplatCertificate`/`AwarenessPlane16K`) | — | |
| 100 | + |
| 101 | +**Convention note:** existing bare/`lance-graph-*` crates predate the `3dgs-*` |
| 102 | +convention and are **not force-renamed** (churn). The convention binds **new** |
| 103 | +splat-pipeline crates. CAM SoA (rule 2) and the no-JSON-hotpath rule (rule 3) |
| 104 | +bind **everyone** — old and new. |
| 105 | + |
| 106 | +## Catalogue checklist (not yet first-party read — do not guess purposes) |
| 107 | + |
| 108 | +lance-graph crates to add rows for, from each `lib.rs`, by lane owners: |
| 109 | +`bge-m3`, `bgz-tensor`, `causal-edge`, `deepnsm`, `highheelbgz`, `holograph`, |
| 110 | +`lance-graph-archetype`, `lance-graph-benches`, `lance-graph-callcenter`, |
| 111 | +`lance-graph-catalog`, `lance-graph-codec-research`, `lance-graph-cognitive`, |
| 112 | +`lance-graph-consumer-conformance`, `lance-graph-ontology`, `lance-graph-osint`, |
| 113 | +`lance-graph-planner`, `lance-graph-python`, `lance-graph-rbac`, |
| 114 | +`lance-graph-supervisor`, `lance-graph` (main), `learning`, `neural-debug`, |
| 115 | +`p64-bridge`, `reader-lm`, `sigma-tier-router`, `thinking-engine`. |
| 116 | + |
| 117 | +## Why this exists (governance parallel) |
| 118 | + |
| 119 | +Same shape as #200 Tier-4, one layer down: docs proliferated → needed "2 |
| 120 | +canonical sources + perspective-docs-aren't-evidence"; crates will proliferate → |
| 121 | +need "single `3dgs-*` family + registry + creation gate + CAM SoA as the one |
| 122 | +representation." Naming + registry *track* the battery; the creation gate |
| 123 | +*prevents* the part that shouldn't exist; **CAM SoA + no-JSON-hotpath keep every |
| 124 | +crate speaking the same content-addressed SoA substrate instead of a battery of |
| 125 | +private formats — and the reinvent/reverse-engineer posture keeps us from ever |
| 126 | +becoming an ArcGIS/Cesium consumer.** |
0 commit comments