open-standards/wai/live-conformance/scene/README.md
Transaction Science 0cd7d94709 wai: the media type is application/vnd.wai, in the vendor tree; application/wai is its deprecated alias
WAI objects were served as application/wai, marked proposed and not
registered. A standards-tree name is registered only from an RFC the IESG
approves or from a recognised standards organisation, which then owns it
(RFC 6838 §3.1); the MoQ packaging draft that asked for it no longer carries
the type. The type now has a vendor-tree name, application/vnd.wai, which its
producer registers with IANA directly, under Expert Review, with Transaction
Science, Inc. as change controller (RFC 6838 §3.2). Neither name is
registered yet, and http-delivery §3 still says so. Decision D44.

application/wai becomes the type's deprecated alias (RFC 6838 §4.2.9).
Nothing sends it any more: the origin's headers, wai.mpd, the packager's DASH
catalogs, the glTF writer and wai dev (which served a .wai as
application/octet-stream) send the new name, and wai conform and the
cache-conformance driver require it of an origin, as the type before its
parameters. Every reader accepts both: the glTF reader is the one that
compares a stated type, and both its readings take the alias, in wai-rs and
in scene_verify.py. scene-carriage §5.3 step 6 reads a capability from a
mimeType that states either name; §5.2, which holds a document WAI wrote to
the export of the bundle it carries, now also takes the export written with
the alias, where it would have refused every document the earlier tools
wrote as presentation_mismatch. Two new scene vectors hold it:
carried_alias_gltf (out/full.gltf so written) and foreign_alias_gltf
(docs/foreign_audio.gltf so written) read to the bundles of the documents
they were made from.

Not core: the name is in no core span and its registry entry is not a wire
identifier core/lock.json pins, so candidate 3 stands. The IETF draft is
not changed: since -01 it carries no media type.

Every fixture is written again by its generator: wai registry export,
wai_http_vectors gen, wai_scene_vectors gen and wai-pack conformance regen
(the goldens, mutations, multi-component packages and the composing sink's
reference package). No package receipt changes; each listing that names a
changed MPD moves, and the statements golden signs its MPDs again.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-11 20:54:08 -05:00

43 lines
2.5 KiB
Markdown

# live-conformance/scene — scene carriage
The corpus of [`extensions/scene-carriage.md`](../../extensions/scene-carriage.md) §9:
`vectors.json` and the files it names.
`vectors.json` holds:
- `inputs`: the worlds and audio scenes other corpora commit, by path from this directory,
each pinned by its SHA-256: `scene.wwld` and `basic_kinematics.wwld` of
[`../../world-conformance/vectors/`](../../world-conformance/vectors/), and `moving.wscn`,
`distance.wscn` and `stereo_pair.wscn` of
[`../../audio-conformance/vectors/`](../../audio-conformance/vectors/);
- `files`: every other file with its SHA-256;
- `vectors`, each one of:
- `export`: a `bundle` — `world` and `audio`, each a path or `null`, and `media`, the
media list of §2.2 — written in a `format` (`gltf`, §4; `usda`, §6). `accept` gives the
`file` the writer must produce, byte for byte; `refuse` gives the `code` (§8);
- `import`: a `file` in a `format`, read with `params` (`null` for a document WAI wrote;
otherwise the `actor` in hexadecimal and the `world_contract` and `audio_contract`, each a
JSON text or `null`, of §5.3). `accept` gives the `bundle` it must read to, byte for byte,
and `dropped`, its report of presentation not carried; `refuse` gives the `code`.
Files: `inputs/` the worlds built in code (kinematic0, ballistic0 and truss0 nodes at tick 0,
an asset table) and, in `inputs/neg/`, a world and two audio scenes the export refuses;
`out/` every exported document; `docs/` documents WAI wrote and then altered, and documents
WAI did not write; `imported/` the WAI bytes the accepted documents of `docs/` read to.
`docs/carried_alias.gltf` (`out/full.gltf` written with each `mimeType` naming
`application/wai`) and `docs/foreign_alias.gltf` (`docs/foreign_audio.gltf` so written) state
the media type's deprecated alias, as the tools released before its vendor-tree name wrote
documents, and read to the same bundles as the documents they were made from.
**Exactness.** A verifier conforms when it reaches every vector's outcome, bytes and report.
A document WAI wrote reads back to the bundle it was written from, byte for byte.
**Provenance.** `wai_scene_vectors gen` writes every file but `README.md` and
`.gitattributes` from the pinned inputs and from values written in code
(`scene_map::corpus::generate`): node ids minted from SHA-256 of a label, asset hashes
SHA-256 of a label, positions and times constants, documents written as text in code. No
media, model or recording is in the corpus.
```
python3 -I ../scene_verify.py .
```