|
| 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 | +## Hard rules |
| 24 | + |
| 25 | +1. **Single crate family: `3dgs-*`.** No `cesium-*`, no `ada-*` (deprecated). |
| 26 | + Naming is `3dgs-<role>` (`3dgs-tiles`, `3dgs-ewa-syrk`, future `3dgs-render`, |
| 27 | + `3dgs-codec`, …). |
| 28 | + |
| 29 | +2. **CAM SoA is the mandatory representation.** CAM SoA = |
| 30 | + - **content-addressable** — addressed by `cam_pq` (CAM-PQ) codebook index, not by position; |
| 31 | + - **structure-of-arrays** — `simd_soa::MultiLaneColumn` / `cognitive-shader-driver::bindspace` columns / lane carriers; |
| 32 | + - **binary planes** — `AwarenessPlane16K` (16384-bit), q8 lanes, `#[repr(C)]`. |
| 33 | + |
| 34 | + Whatever a source contains is **reverse-engineered** into CAM SoA — and |
| 35 | + **ONLY** reverse-engineered: extract and rebuild, never depend on the source |
| 36 | + format as a library, never round-trip it, never emit it. No AoS, no |
| 37 | + source-native structs, no intermediate format survives past the import |
| 38 | + boundary. |
| 39 | + |
| 40 | + **Refactor > reverse-engineer.** The CAM SoA layout is *refactored natively* |
| 41 | + from first principles, not derived from the source's structure. |
| 42 | + Reverse-engineering is the donkey-bridge (see Posture) — a crutch, never the |
| 43 | + design. Never let an imported format's structure calcify into ours. |
| 44 | + |
| 45 | +3. **NO JSON IN THE HOTPATH. EVER.** Restates the existing W1a invariant |
| 46 | + (`no serde`, "no JSON in types", `#[repr(C)]` — see |
| 47 | + `lance-graph-contract::splat`). JSON is permitted **only** at the cold, |
| 48 | + one-time, read-only *import boundary* (reverse-engineering someone else's |
| 49 | + file); it is rebuilt into CAM SoA immediately and **never enters the hotpath, |
| 50 | + is never persisted, and is never emitted**. |
| 51 | + |
| 52 | +4. **Import adapters are read-once, one-way, output-CAM-SoA.** The 3D Tiles |
| 53 | + reader (in `3dgs-tiles`) reads `tileset.json` + `KHR_gaussian_splatting` glTF |
| 54 | + + `ESRI_crs` once, reverse-engineers into CAM SoA, and discards the source. |
| 55 | + No `cesium-*` family; nothing emits or serves their wire format. |
| 56 | + |
| 57 | +5. **Rethink clause.** Our CAM SoA is canonical. An external format is |
| 58 | + reconsidered **only** on falsifiable proof it is strictly better — not by |
| 59 | + default, not for interop convenience. |
| 60 | + |
| 61 | +6. **Creation gate.** A crate exists **only with ≥1 real consumer** (≥2 for a |
| 62 | + generic abstraction — the `certified-field-kernel-substrate` self-fence). |
| 63 | + Until then it stays a **module inside an existing crate**. A `3dgs-*` crate |
| 64 | + with no consumer is the code version of a markdown-only plan. |
| 65 | + |
| 66 | +## Registry (seed — verified first-party only) |
| 67 | + |
| 68 | +`status`: shipped / planned / module-until-earned. Only crates read first-party |
| 69 | +this session carry a description; the rest are the catalogue checklist below. |
| 70 | + |
| 71 | +| Crate / module | Repo | Family | Status | Purpose (verified) | Lane | |
| 72 | +|---|---|---|---|---|---| |
| 73 | +| `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 | |
| 74 | +| `3dgs-ewa-syrk` | ndarray (`benches/`) | `3dgs-*` | planned | EWA-SYRK crossover bench (`project_batch` vs cblas-batched sandwich) | Kernel | |
| 75 | +| `splat3d` (module) | ndarray `src/hpc/` | — (pre-conv.) | shipped | CPU-SIMD forward renderer (`spd3`/`project`/`raster`/`sh`/`tile`/`gaussian`) | — | |
| 76 | +| `cam_pq` (module) | ndarray `src/hpc/` | — | shipped | 6×256 CAM-PQ codebook — the **CAM** in CAM SoA | — | |
| 77 | +| `simd_soa` (module) | ndarray `src/` | — | shipped | `MultiLaneColumn` lane carrier — the **SoA** in CAM SoA | — | |
| 78 | +| `bgz17` | lance-graph | — (bare) | shipped | LOSSY golden-step recoverable sampling (BASE_DIM=17, GOLDEN_STEP=11); `ScalarCsr::spmv_min_plus` | — | |
| 79 | +| `blasgraph` (module) | lance-graph `…/graph/` | — | shipped | **canonical bit-exact** 16384-bit GraphBLAS substrate (7 HDR semirings) | — | |
| 80 | +| `jc` | lance-graph | — (bare) | shipped | 12-pillar proof-in-code (Pillar 10 `pflug`, 11 `hambly_lyons`) | — | |
| 81 | +| `sigker` | lance-graph | — (bare) | shipped | path-signature kernels (`signature_truncated`, `signature_kernel_pde`) | — | |
| 82 | +| `cognitive-shader-driver` | lance-graph | — (bare) | shipped | BindSpace **SoA** / mailbox / token_agreement / codec bridge | — | |
| 83 | +| `lance-graph-contract` | lance-graph | — | shipped | SPLAT-1 CAM SoA contract types (`CamPlaneSplat`/`SplatPlaneSet`/`CamSplatCertificate`/`AwarenessPlane16K`) | — | |
| 84 | + |
| 85 | +**Convention note:** existing bare/`lance-graph-*` crates predate the `3dgs-*` |
| 86 | +convention and are **not force-renamed** (churn). The convention binds **new** |
| 87 | +splat-pipeline crates. CAM SoA (rule 2) and the no-JSON-hotpath rule (rule 3) |
| 88 | +bind **everyone** — old and new. |
| 89 | + |
| 90 | +## Catalogue checklist (not yet first-party read — do not guess purposes) |
| 91 | + |
| 92 | +lance-graph crates to add rows for, from each `lib.rs`, by lane owners: |
| 93 | +`bge-m3`, `bgz-tensor`, `causal-edge`, `deepnsm`, `highheelbgz`, `holograph`, |
| 94 | +`lance-graph-archetype`, `lance-graph-benches`, `lance-graph-callcenter`, |
| 95 | +`lance-graph-catalog`, `lance-graph-codec-research`, `lance-graph-cognitive`, |
| 96 | +`lance-graph-consumer-conformance`, `lance-graph-ontology`, `lance-graph-osint`, |
| 97 | +`lance-graph-planner`, `lance-graph-python`, `lance-graph-rbac`, |
| 98 | +`lance-graph-supervisor`, `lance-graph` (main), `learning`, `neural-debug`, |
| 99 | +`p64-bridge`, `reader-lm`, `sigma-tier-router`, `thinking-engine`. |
| 100 | + |
| 101 | +## Why this exists (governance parallel) |
| 102 | + |
| 103 | +Same shape as #200 Tier-4, one layer down: docs proliferated → needed "2 |
| 104 | +canonical sources + perspective-docs-aren't-evidence"; crates will proliferate → |
| 105 | +need "single `3dgs-*` family + registry + creation gate + CAM SoA as the one |
| 106 | +representation." Naming + registry *track* the battery; the creation gate |
| 107 | +*prevents* the part that shouldn't exist; **CAM SoA + no-JSON-hotpath keep every |
| 108 | +crate speaking the same content-addressed SoA substrate instead of a battery of |
| 109 | +private formats — and the reinvent/reverse-engineer posture keeps us from ever |
| 110 | +becoming an ArcGIS/Cesium consumer.** |
0 commit comments