open-standards/wai/volumetric-conformance/README.md
Transaction Science 3fac029a71 wai: every corpus states the provenance of its content
Each *-conformance/README.md now has a line that begins **Provenance.**:
the generator that writes the corpus and its input, and for an input not
generated here its source and licence. OER/2's corpus is settled and left
as it is. byte-exact-conformance and quantum-ops-conformance get a README.
wai-rs/tests/vectors/README.md gives a row per vector directory. Where the
staged-delivery, staged-measurement and telemetry READMEs called their
content "synthetic", that sentence is now their provenance line.

Two vectors are recorded as not generated, from the provenance audit:
int_video's video_real (a pan over a third-party picture) and
neural-conformance's photo (a third-party picture, with a decoder trained on
unrecorded images). Their lines say so and that they are to be replaced;
the photo bullet no longer names the picture's source product.

tests/corpus_provenance.rs requires the line in every corpus and a row for
every vector directory; CI runs it with the carriage tests. CONTRIBUTING
states the rule: corpus content is generated here, or recorded with a
licence that permits redistribution, and a word like "synthetic" is not a
provenance line.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 10:09:21 -04:00

42 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Volumetric / 4D Splat Conformance Corpus
Vectors for the volumetric extension (`wai.splat.4d`). The criterion is
**frame-state-equivalence**: given the same temporal-splat clip, a
conforming sink MUST reconstruct the identical Gaussian set at every
frame, hence the identical BLAKE3 — on every machine, no tolerance
parameter. The temporal counterpart of the static splat, with the
single cloud replaced by per-Gaussian keyframed tracks.
**Provenance.** Generated here: `wai_splat4d_vectors gen` writes every vector from clouds and tracks authored in code. No capture.
Each Gaussian carries a track of keyframes (`frame`, position, scale,
rotation quaternion, color, opacity, all `wai.det.fixed64`); the sink
interpolates linearly in the `Fx` floor at any frame. The frame hash is
`BLAKE3(domain || frame || n_gaussians | per-Gaussian 14×i64)`. The
render of that set (EWA splatting, sort, blend) is the sink's
presentation, never in the hash.
Clips are self-contained, so each vector is a `.w4ds` container + its
per-frame expected hashes.
## Layout
- `vectors/<name>.w4ds` — the `W4DS` container (contract + Gaussian
tracks).
- `expected_hashes.json` — per clip: `n_gaussians`, `n_frames`,
`clip_hash`, and `frames[]` = `{frame, hash}` for every frame.
Vectors:
- `orbit` — two Gaussians swap x positions across 12 frames.
- `pulse` — one Gaussian scales up and fades out across 10 frames.
- `morph` — one Gaussian shifts color red → cyan across 8 frames.
## Running
```
cd ../wai-rs
cargo run --features splat4d --bin wai_splat4d_vectors -- verify ../volumetric-conformance
cargo run --features splat4d --bin wai_splat4d_vectors -- gen ../volumetric-conformance # regenerate
```
Pass = clip-hash and every frame-hash equality.