openpay/
compliance/ PCI-DSS readiness package (scope-map,
pci-zero-architecture, hsm-kms-guidance,
qsa-checklist), citing PCI-DSS v4.0.1
requirements. (#1)
examples/pci-zero/ Runnable example demonstrating a deployment
where merchant code never touches a PAN. (#1)
crates/op-core/ Tokenized<Card> typestate + NetworkToken
+ CardNetwork + Cryptogram. (#2)
crates/op-rails-card/network_token/
NetworkTokenProvider trait + VTS adapter
+ MDES adapter, with deterministic stubs
behind a 'live' feature flag. (#2)
crates/op-driver-sdk/conformance/network_token.rs
Conformance harness for third-party
NetworkTokenProvider implementations. (#2)
crates/op-cli/src/ledger/ 'openpay ledger as-of' subcommand for
bi-temporal queries. (#3)
crates/op-orchestrator/src/telemetry.rs
OpenTelemetry span emission per
Payment<S> transition with semantic-
conventions tags. (#3)
docs/observability/ Grafana dashboard JSON + wiring guide
for the bi-temporal ledger lens. (#3)
smart-byte/
smart-byte-rs/ Rust reference implementation: envelope
encode/decode (canonical CBOR + BLAKE3
content addressing), Ed25519 sign +
verify, lockstep BFT commit MVP, Iroh
transport scaffold, CLI. (#4)
spec/identity_and_key_rotation.md
Adopts KERI SAIDs + key-event log
format; explicitly does not adopt ACDC
chaining wholesale. (#5)
conformance/v1/ 21 test vectors covering canonicalisation,
SAID computation, signature verification,
lockstep commit, gossip propagation.
CI gate enforces spec/vector coupling. (#6)
eoc/
eoc-rs/ Rust + WASM reference implementation:
4-stage cascade (cache -> kv -> graph ->
neural), joule counters via RAPL / NVML /
powermetrics, CLI, wasm-bindgen surface.
18 tests pass. (#7)
eoc-bench/ Benchmark harness, MT-Bench and Router
case sets, 'joules per MT-Bench point'
metric, 'eoc-bench run | compare' CLI. (#8)
standards/sci-for-ai-submission.md
Submission proposal mapping EOC's
receipt schema to GSF SCI-for-AI. (#9)
cookbook/ HuggingFace-style cookbook (markdown +
runnable Python) demonstrating EOC's
cascade with HF AI Energy Score. (#9)
docs/bench-v0.md Reproducibility doc for eoc-bench.
Workspace state:
- openpay clippy -- -D warnings: clean across all touched crates
- smart-byte-rs cargo test --workspace + clippy: clean
- eoc-rs cargo test --workspace + clippy: clean (18 tests)
- eoc-bench cargo check --workspace + clippy + 15 tests: clean
Rust 1.95.0 edition 2024 pinned at the open-standards root via
rust-toolchain.toml; every workspace inherits.
Closes #1 #2 #3 #4 #5 #6 #7 #8 #9.
5 KiB
Smart Byte Conformance Vectors
This directory contains the conformance test-vector pack for the Smart Byte substrate specification. Any third-party implementation, in any language, can consume these vectors to self-certify against the canonical wire format without trusting the reference implementation.
The vectors are the social contract. The spec text in ../spec/ says what the
substrate is; the vectors here say what the substrate's wire format looks
like, byte for byte, on the inputs the spec text describes. An implementation
that passes the vectors is canonical. An implementation that fails the vectors
is not.
The vectors are licensed CC-BY-4.0, consistent with the spec directory. They
contain no $ref pointers, no external URLs, and no runtime dependencies.
What is in the pack
Each spec version has its own subdirectory (v1/, v2/, ...). Today only
v1/ exists; it corresponds to the spec text in
../spec/treatise_v1_parts_I_II_III_combined.md.
A pack for a given version contains five JSON files plus regeneration.md:
| File | Tests |
|---|---|
canonicalisation_vectors.json |
CBOR canonical-encoding rules (§8 wire format) |
said_vectors.json |
SAID computation: BLAKE3-256 over canonical CBOR (§8.2) |
signature_vectors.json |
Ed25519 sign + verify over SAIDs (§8.3, §8.4) |
lockstep_vectors.json |
BFT supermajority commit logic (§9, §13) |
gossip_vectors.json |
Gossip propagation, conflict detection, ordering (§17) |
regeneration.md documents how to regenerate the vectors from the Rust
reference implementation (smart-byte-rs, landing alongside spec v1.0).
How to consume the vectors
Each JSON file is a top-level array of vector objects. Vector objects share the common shape:
{
"name": "short-stable-identifier",
"description": "human-readable description of what is being tested",
...test-specific fields...
}
The conventional flow for an implementation under test (IUT):
- Load the JSON file for the relevant spec version.
- For each vector, run the IUT against the
input(or equivalent field) and compare its output to theexpected_*field. - A vector passes if the IUT's output is byte-for-byte equal to the
expected_*field (or, for negative vectors, the IUT rejects the input with the documentederrorclass). - The IUT is canonical for a spec version iff every vector in that version's pack passes.
There is no scoring, no "mostly conforms" status, and no waiver process. A vector pack is a hard gate.
Versioning rule
Vectors are versioned per spec version, not per implementation, not per calendar release of the conformance pack.
v1/corresponds to spec v1. Once spec v1 is frozen,v1/is append-only in scope (additional vectors may be added that test the same canonical wire format) and never modifies existing vectors'expected_*outputs.v2/will appear when (and only when) the spec moves to a new version that introduces an incompatible wire-format change. The compatibility matrix lives inVERSIONS.md.- A bug in a vector pack (e.g. an
expected_*field that disagrees with the spec) is fixed by superseding the vector with a new one whosenamecarries a suffix (-fixed,-corrected); the original is retained with a"superseded_by"field so historical IUTs that pinned to the old vector can detect the supersession.
CI gate
../../.github/workflows/conformance.yml is the repository-level CI gate.
Every PR that touches smart-byte/spec/ or smart-byte/conformance/ must
pass the gate. The gate validates:
- Every JSON file in
v*/parses as valid JSON. - Every spec change is accompanied by a vector-pack update (a PR that
modifies
smart-byte/spec/without modifyingsmart-byte/conformance/is rejected at the gate).
The gate's purpose is procedural: a spec change without a vector change is
either a clarifying edit (which should declare itself by also touching the
vector pack's regeneration.md to record the editorial reason) or a
silent wire-format change (which is prohibited). Either way, both
directories move together.
What the pack does not cover
The pack is the wire-format gate. It does not cover:
- Application-layer cargo schemas. Cargo is opaque to the substrate; what a USD-byte or a joule-byte or a sensor-reading-byte means is a layer-2 protocol concern. Layer-2 protocols ship their own vectors.
- Performance. The pack tests correctness, not throughput, latency, or energy cost. Performance is documented in the reference implementation's benchmarks.
- Operational concerns. Cluster topology choice, key custody, hardware procurement, regulatory compliance for specific cargo types — all out of scope for the substrate's conformance pack.
License
The vector pack is licensed CC-BY-4.0. See ../../LICENSE for the
repository-level license terms.