open-standards/wai/live-conformance/splat/README.md
Transaction Science 5c9aff43c1 wai: register wai.splat.exact — registry, wire identifiers, SPEC §5, CHANGELOG, the corpus README and the CI step
The record wai.splat.exact; the document kinds wai-splat-commitment and
wai-splat-view, the scheme wai-splat-render:i1, and the proposed glTF
extension name EXT_gaussian_splatting_compression_wai under a new wire
identifier kind, gltf-extension (schema enum, REGISTRY.md prose). The
wai-conformance.yml step runs the module's tests and splat_exact_verify.py,
and its paths take the extension, its schema and wai_ops_check.py. The
extension's §11 records the GPU run.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 03:33:47 -04:00

55 lines
3.8 KiB
Markdown

# live-conformance/splat — exact splats
The corpus of [`extensions/splat-exact.md`](../../extensions/splat-exact.md) §11: glTF 2.0 assets
that carry a `wai.splat.int_codec` object through `EXT_gaussian_splatting_compression_wai` (a
compression extension of `KHR_gaussian_splatting`), the origin's commitments to frames of
`wai-splat-render:i1` at canonical poses, origin claims, and sinks' view statements.
- `assets/<asset>.gltf` — an asset's JSON. Its buffer 0 is `assets/<scene>.bin`: the object's
`WAI1` envelope, then (where the asset carries it) the parameter set's one file. Its buffer 1,
where it has a commitment, is `assets/<asset>.commitment.json`, the commitment's JCS text. An
asset's buffers are named by `uri` beside it.
- `vectors.json` — the index. `held` maps a parameter set's SHA-256 to the committed file that
holds it (paths relative to `wai/`). Each case names its `asset`, the sets it holds (`held`),
the splat set's origin claim (`origin`, a text or `null`), its view statements (`statements`,
texts), and what a verifier gives it (`expect`): `refused` with its `reason` and its place
(`at`: `asset`, `commitment`, `view n`, `origin` or `statement n`), or `accepted` with the
statements of §9.3: the `object`'s content hash, the `attributes` digest, `n_gaussians`, each
canonical `frames` digest, and each statement's `canonical` and `class`.
**Exact-splat equivalence.** For each case, a conforming verifier reaches the outcome, place and
statements it states. Every code of §10 refuses a case. Among the refused cases are the negative
controls §11 names: `cluster_reordered` (frames committed with a tie of distance broken by the
greater index), `statement_frame` (a frame rendered without the low pass, which does not
recompute), `cluster_wrong_splats` (a commitment over another scene's attributes) and
`statement_pose` (a pose outside the pinned set claimed canonical).
**Provenance.** Generated here: `wai_splat_exact_vectors gen` writes every file. Its scenes:
- `shell` — the learned cloud of [`../../wai-rs/tests/vectors/int_splat/`](../../wai-rs/tests/vectors/int_splat/):
its payload `splat.wis1` and its synthesis `splat_gs.bin`, which `tools/wai_int_splat_export.py`
trained on a seeded procedural cloud (that directory's README states it). The set is held by
digest, not carried in the asset.
- `cluster` and `tiny` — authored here as integer attribute bytes: Gaussians placed by hand (a
pair at exactly equal distance from the first pose's eye, elongated and rotated ones, a zero
quaternion, one partly off the frame, one inside the near plane and one too wide on screen at
the fourth pose), and the rest drawn from a fixed SHA-256 stream. They are carried through the
identity set (§11): a one-layer `WHM1` network that decodes each latent value to one byte, so
the planes are coded as they are. `tiny13` and `tiny_negscale` are `tiny` with thirteen planes
and with a scale range below zero.
Every key is SHA-256 of the corpus's label and an index, every time is a constant, and Ed25519
signing is deterministic, so every file is the same bytes on every machine. No image, model or
text here comes from outside the repository.
```
cd ../../wai-rs
cargo run --no-default-features --features splat_exact --bin wai_splat_exact_vectors -- gen ../live-conformance/splat
cargo run --no-default-features --features splat_exact --bin wai_splat_exact_vectors -- verify ../live-conformance/splat
python3 -I ../live-conformance/splat_exact_verify.py ../live-conformance/splat
```
The second implementation decodes each payload with the repository's other second
implementations (`int-payload-conformance/int_payload_verify.py`'s parser and rANS decoder, and
`tools/wai_ops_check.py`'s `whm1/1` lowering and interpreter) and renders each view with its own
integer renderer. `--png DIR` writes each committed frame as a PNG.