verify_v1.py now applies state vectors' frames as the cluster state spec describes. It is written from the spec text, standard library only, and reproduces all 106 vectors. Falsified: - 12 planted defects caught on their own vectors, with and without -O. - 18 state-machine rule mutations, each caught by a state vector. regeneration.md records the state machine; VERSIONS.md names its spec. Co-Authored-By: Claude Opus 5.5 <[email protected]>
2.7 KiB
Smart Byte Conformance Vector Pack — Version Matrix
This document tracks the correspondence between vector-pack versions and Smart Byte spec versions.
Matrix
| Vector pack | Spec version | Spec source | Status | Notes |
|---|---|---|---|---|
v1/ |
v1.0-draft | ../spec/treatise_v1_parts_I_II_III_combined.md (Parts I-III), ../spec/identity_and_key_rotation.md, ../spec/envelope_wire_format.md, ../spec/cluster_state.md |
DRAFT | Generated by the reference implementation (smart-byte-conformance) and reproduced by crosscheck/verify_v1.py. Regenerated in place while DRAFT (rule 4); every change is in v1/regeneration.md. |
Future entries are appended below this table when a new spec version is introduced. Older entries are never removed; an implementation that pins to a historical spec version must be able to look up that version's vector pack indefinitely.
Version compatibility rules
-
Per-spec-version vector packs. Each major spec version has exactly one vector pack directory (
v1/,v2/, ...). The pack is the canonical conformance suite for that spec version. -
No backporting of incompatible vectors. A vector that depends on wire-format behaviour introduced in spec v2 is never added to
v1/. -
Append-only inside a frozen version. Once a spec version is frozen, its vector pack is append-only: new vectors may be added that exercise additional corners of the same canonical wire format, but no existing vector's
expected_*outputs may be changed. -
Bug fixes via supersession, once frozen. In a frozen version, a vector with an
expected_*field that disagrees with the spec is fixed by adding a new vector (with a distinguishingnamesuffix) and adding a"superseded_by": "<new-name>"field to the original. Implementations pin to vector names, not array positions, so supersession is non-breaking. A DRAFT pack is regenerated in place, with every change recorded in itsregeneration.md. -
Spec-version detection at the wire. The wire format itself carries version information (see spec §8.3, §8.4 — the one-byte algorithm identifier is the substrate's wire-version-equivalent for the cryptographic primitives). Implementations select the conformance pack that matches the wire version they are emitting.
Cross-references
- Spec text:
../spec/ - Pack contents:
./v1/ - Regeneration procedure:
./v1/regeneration.md - CI gate:
../../.github/workflows/conformance.yml