Skip to content

Commit 20edbf8

Browse files
committed
docs: crate-registry — 3dgs-* family, CAM SoA mandate, reinvent+reverse-engineer posture
Governance policy doc anticipating the splat/tiles crate battery. Settled rules: - Single family 3dgs-* (no cesium-*, no ada-*). - Posture: we do NOT use ArcGIS/Cesium (no SDK/service/API/wire dependency). Only reinvent (native CAM SoA from first principles) + reverse-engineer (one-way data extraction from static files — a transitional donkey-bridge, retired once a native refactor is feasible). Refactor > reverse-engineer. - CAM SoA is the mandatory representation (CAM-PQ content-addressing + SoA lane carriers + 16384-bit repr(C) planes). Whatever a source contains is reverse-engineered into CAM SoA, ONLY reverse-engineered. - NO JSON IN THE HOTPATH, EVER (matches W1a no-serde/no-JSON-in-types). JSON only at the cold one-time read-only import boundary. - Import adapters read-once, one-way, output CAM SoA. - Creation gate: a crate exists only with >=1 real consumer (>=2 for a generic abstraction); else module-until-earned. - Seed registry of first-party-verified crates + catalogue checklist for the rest (no guessed purposes).
1 parent 41f8883 commit 20edbf8

1 file changed

Lines changed: 110 additions & 0 deletions

File tree

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

Comments
 (0)