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]>
3 KiB
Interactive-Worlds Conformance Corpus
Vectors for the interactive-worlds extension's replay-equivalence criterion: given the same world container and op set, a conforming sink MUST produce the identical BLAKE3 state hash at every checkpoint, on every machine, under every permitted arrival order. Verification is hash equality — there is no tolerance parameter.
Provenance. Generated here: wai_world_vectors gen writes every world from scenes authored in code. No capture.
Vectors run the registered sim capabilities wai.world.sim.kinematic0,
wai.world.sim.ballistic0, and wai.world.sim.truss0 (the
solver-backed registrant: position-based dynamics, 8 Gauss–Seidel
iterations, strain + fracture) under the wai.det.fixed64 numeric
profile; the verifier dispatches on each container's contract.sim.
Keys are fixed test keys (actors [1;32], [2;32]; publisher
[9;32]) — the corpus is fully deterministic and regenerable
byte-for-byte.
Layout
vectors/*.wwld— sealedwai.world.replaycontainers. Verify the seal against the publisher key inexpected_hashes.json, replay, and compare every checkpoint hash.basic_kinematics— two actors: creates, cross-actor impulse, scalar set, reposition, delete; 200 ticks.conflict_lww— same tick, same node, two SET_SCALAR writers; the canonical-order last writer must win.conflict_sum— same tick, same node, equal-and-opposite IMPULSE; both must act (net zero — the no-impulse hash).ballistic_bounce—ballistic0sim: a restitution-½ ball dropped from y=10, nudged mid-flight; 300 ticks of gravity and ground bounces, bit-exact through every bounce.truss_fracture—truss0sim: two actors pull the two ends of a yield-10% member in opposite directions at the same tick; the constraint violation exceeds yield and the member fractures — the SUM conflict rule feeding the solver, failure as an emergent, bit-exact consequence.
vectors/scene.wwld— the shared tick-0 scene for live vectors.vectors/*.ops— live-ingestion vectors: concatenated signed CausalOps in a fixed adversarial arrival order. Ingest in file order, advance tofinal_tick, comparefinal_hash.dep_gap— the dependent op arrives before its dep (must buffer, then drain).past_tick— an op for tick 30 arrives after tick-90 ops (must re-derive).basic_shuffled_1..3— seeded shuffles ofbasic_kinematics's op set (must reach the sealed vector's hashes).
expected_hashes.json— per-vector expectations.
Running
cd ../wai-rs
cargo run --features world --bin wai_world_vectors -- verify ../world-conformance
cargo run --features world --bin wai_world_vectors -- gen ../world-conformance # regenerate
An independent implementation conforms iff verify (or its equivalent)
passes against vectors it did not generate. A failed vector is a
conformance failure of either the file or the sink — report it failed,
never approximately right.