Three reducers, one protocol. Each compiles the same canonical event into the same state mutation. Conformance is the share of the public test-vector suite a reducer currently passes at protocol version v0.48.0. The Rust crate is the normative reference; the Python and TypeScript reducers track it.
Specimens
-
Reference implementation
vela-rs
Rust
100 % conformanceuse vela::{StateEvent, Status, Reducer}; let event = StateEvent::accepted_transition() .frontier("alzheimers.neurovascular.bbb") .finding("vf_06cfcbe7c449d86a") .from(Status::Contested) .to(Status::Replicated) .evidence(["ev_perturb_441", "ev_cohort_118"]) .sign(&keypair)?; state.apply(&event)?; -
Researcher binding
vela-py
Python
96 .4 % conformancefrom vela import StateEvent, Status, apply event = StateEvent.accepted_transition( frontier="alzheimers.neurovascular.bbb", finding="vf_06cfcbe7c449d86a", from_=Status.CONTESTED, to=Status.REPLICATED, evidence=["ev_perturb_441", "ev_cohort_118"], ).sign(keypair) apply(state, event) -
Read-side reducer
vela-ts
TypeScript
81 .2 % conformanceimport { StateEvent, Status, verify } from "@vela/core"; const event = StateEvent.acceptedTransition({ frontier: "alzheimers.neurovascular.bbb", finding: "vf_06cfcbe7c449d86a", from: Status.Contested, to: Status.Replicated, evidence: ["ev_perturb_441", "ev_cohort_118"], }); verify(state, event); // read-side reducer
Install
Pick a reducer for your environment. The Rust crate is the canonical commit path: anyone applying state transitions for a frontier should run vela-rs (directly or via the Python binding). The TypeScript reducer is read-only and is suitable for atlases, viewers, and verification at the edge.
-
vela-rs Rust
Cargo
Source on GitHub# Cargo.toml [dependencies] vela = "0.48.0" # or from source cargo add vela@0.48.0 -
vela-py Python
uv / pip
Source on GitHub# uv (recommended) uv add vela # pip pip install vela==0.48.0 -
vela-ts TypeScript
npm / pnpm / bun
Source on GitHubpnpm add @vela/core@0.48.0 # or npm install @vela/core@0.48.0 bun add @vela/core@0.48.0
Conformance
The public test-vector suite at vela-science/vela/test-vectors is the single source of truth for what "passes" means. Each test vector pairs a canonical event with the state mutation a conforming reducer must produce. The Rust reducer passes the whole suite by construction; the Python and TypeScript reducers report their pass rate against the same vectors at every release.
Test-vector counts taken from the suite tagged
vectors/v0.48.0. The number grows monotonically
with each protocol version; reducers must pass every prior
version's vectors plus the new ones.