open-standards/mesh
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science beec37f47c
All checks were successful
jouleclaw fabrics / cuda (linux, RTX 4050 + Vulkan loader) (pull_request) Successful in 18s
jouleclaw fabrics / vulkan (linux, RTX 4050 + Vulkan loader) (pull_request) Successful in 17s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 1m37s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Successful in 1m44s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 8s
WAI conformance / does this change touch it (pull_request) Successful in 11s
WAI energy receipts / does this change touch it (pull_request) Successful in 5s
WAI JPEG-AI whole decode (pinned inputs, required) / does this change touch it (pull_request) Successful in 10s
WAI neural sink gates / does this change touch it (pull_request) Successful in 5s
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Successful in 5s
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 1m1s
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 5s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 5s
wai-quantum WebGPU member / does this change touch it (pull_request) Successful in 5s
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Successful in 5s
wai-web wasm32 / does this change touch it (pull_request) Successful in 5s
standards workspaces build + test / jouleclaw-rs (-nodebug, jouleclaw/jouleclaw-rs, -p jouleclaw-energy --features rapl,nvml, jouleclaw-rs, linux-arm64, -C target-feature=+fp16) (pull_request) Successful in 3m28s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 4m12s
standards workspaces build + test / joulecontract-rs (joulecontract/joulecontract-rs, joulecontract-rs, linux-arm64, true) (pull_request) Successful in 58s
standards workspaces build + test / mesh-rs (mesh/mesh-rs, -p mesh-engine-gguf -p mesh-openai --features mesh-engine-gguf/gguf,mesh-openai/server, mesh-rs, linux-arm64) (pull_request) Successful in 58s
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 12m57s
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Successful in 7m38s
standards workspaces build + test / openpay (openpay, openpay, linux-arm64) (pull_request) Successful in 3m41s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 15s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 12s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 24s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m20s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 16m38s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m19s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 7m43s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 28s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m50s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m39s
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Successful in 28m23s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 34m50s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 2m44s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 5s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 5s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 55s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 5s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 59s
standards workspaces build + test / jcp-rs (jcp-conformance, jcp/jcp-rs, -p jcp-energy --features nvml, jcp-rs, linux) (pull_request) Successful in 2m4s
standards workspaces build + test / eoc-rs (eoc/eoc-rs, -p eoc-meter --features cuda, eoc-rs, linux) (pull_request) Successful in 2m13s
standards workspaces build + test / joule-ui-rs (joule-ui/joule-ui-rs, joule-ui-rs, linux) (pull_request) Successful in 1m13s
standards workspaces build + test / joulehook-rs (joulehook/joulehook-rs, joulehook-rs, linux) (pull_request) Successful in 1m12s
standards workspaces build + test / proof-rs (proof-conformance, proof/proof-rs, proof-rs, linux, true) (pull_request) Successful in 1m33s
standards workspaces build + test / sandbox-rs (sandbox-conformance, sandbox/sandbox-rs, -p sandbox-tee --features amd-kds,intel-pcs, sandbox-rs, linux) (pull_request) Successful in 3m0s
standards workspaces build + test / smart-byte-rs (smart-byte/smart-byte-rs, smart-byte-rs, linux) (pull_request) Successful in 4m9s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m13s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 29s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m20s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 18m57s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 1m23s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m40s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 6m54s
wai-pack / wai-pack · linux (pull_request) Successful in 1m34s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m35s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m8s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m5s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m20s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m23s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 3m1s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m42s
jouleclaw fabrics / metal (macOS, Apple GPU) (pull_request) Successful in 1m25s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 11m19s
standards workspaces build + test / jouledesk-rs (jouledesk/jouledesk-rs, jouledesk-rs, macos) (pull_request) Successful in 5m13s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 23m35s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 26s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 58s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 7m45s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 2m52s
wai-pack / wai-pack · macos (pull_request) Successful in 1m17s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m23s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 3m0s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m43s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 6m45s
Security: patched crate versions across the workspaces; wasmtime 50 in the sandbox; quick-xml 0.42 where outside XML is parsed
Every workspace lockfile was checked against the RustSec database as of 2026-10-22.
What our code reaches is fixed here.

- wasmtime 43 -> 50 in sandbox-rs, whose wasm executor runs untrusted guests:
  - RUSTSEC-2026-0379 (Cranelift on aarch64 can jump to the wrong target on a large
    br_table);
  - RUSTSEC-2026-0327 (an unvalidated callback result count overflows a native stack);
  - RUSTSEC-2026-0269 (filesystem sandbox escape through trailing slashes);
  - and the rest of the 2026 wasmtime advisories.
  The core module API it uses compiles unchanged. WASMTIME_VERSION, which attestations
  record, is now 50.0.0, as are the spec's example and two test samples.
- Compatible updates in 13 workspaces:
  - rustls 0.23.46 (RUSTSEC-2026-0285, 0346, 0348, 0349);
  - rustls-webpki 0.103.16, webpki-roots 1.0.10 and webpki-root-certs 1.0.10
    (distrusted emSign intermediates, RUSTSEC-2026-0381 to 0383);
  - quinn-proto 0.11.19 (remote panics and memory exhaustion, RUSTSEC-2026-0185, 0338
    to 0343);
  - h2 0.4.20 (RUSTSEC-2026-0258);
  - tokio 1.54.1 (RUSTSEC-2026-0384);
  - crossbeam-epoch 0.9.21 (RUSTSEC-2026-0204).
- quick-xml 0.36 -> 0.42 (RUSTSEC-2026-0194 and 0195: quadratic duplicate-attribute
  checks and unbounded namespace allocation) where outside XML is parsed:
  - openpay's op-screening sanctions-list updater (OFAC SDN, UN, EU), op-3ds2, op-batch
    and op-iso20022;
  - jouleclaw's OpenVINO IR loader and Maltego TRX parser.
  Each reference (&, &) now arrives as its own event. The parsers gather an
  element's text from both kinds of event and trim it once, so names keep their spaces.
  Attribute values go through normalized_value. The EU parser had kept `&` in
  wholeName literally; it now reads as `&`. New tests cover references in every list
  format and in TRX values, fields and messages.
- joule-code-collab's MLS keying test moves to openmls 0.9.1 (matching joule-moq-mls),
  removing hpke-rs 0.2.0 (RUSTSEC-2026-0069 to 0072) from the lockfile. It was a
  dev-dependency only.
- op-3ds2 drops an unused rsa dependency (RUSTSEC-2023-0071 has no fix).

Left as they are, and why:
- zip < 9 is only a transitive dependency (c2pa, candle, a build helper of livekit). No
  code of ours calls its extract().
- open_board_format reads .obz in memory in a test only. aac-core's import accepts
  stored entries alone, so nothing is inflated.
- rsa via c2pa and sandbox-tee is used for public-key verification, which Marvin does
  not reach.
- h2 0.3 (via hf-hub's reqwest 0.11), hickory-proto 0.25, libcrux-kem 0.0.9 (via
  hpke-rs-libcrux), pyo3 0.28 and rkyv 0.7 (via rust_decimal) are client-side or
  unused paths with no patched release on their lines. They are noted for the next
  dependency round.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 10:12:06 -04:00
..
conformance/v1 mesh/1 + AR-1: receipts commit to the output; deterministic serves replay 2026-10-21 04:35:32 -04:00
mesh-rs Security: patched crate versions across the workspaces; wasmtime 50 in the sandbox; quick-xml 0.42 where outside XML is parsed 2026-10-22 10:12:06 -04:00
tools/joules-per-decision mesh: withdraw the GPU per-decision figure — another process held 99.5% of the GPU 2026-10-05 07:20:58 -04:00
CONTRIBUTING.md wai.generate.spectral: extend the lexicon to 370 words (data-only, pin unchanged) 2026-06-27 05:33:47 -04:00
LICENSE wai.generate.spectral: extend the lexicon to 370 words (data-only, pin unchanged) 2026-06-27 05:33:47 -04:00
LICENSE-SPEC wai.generate.spectral: extend the lexicon to 370 words (data-only, pin unchanged) 2026-06-27 05:33:47 -04:00
README.md mesh: a grant is spent only by its issuer, at the steward it names, and its spend survives a restart 2026-10-17 17:13:42 -04:00
SPEC.md Merge pull request 'mesh: say what the energy figure covers — the served span, not the request' (#385) from fix/mesh-energy-span-scope into main 2026-10-21 10:20:04 -04:00

Mesh

Energy-accounted inference serving & routing. One of the Transaction Science open standards.

Mesh treats every inference as a metered transaction. A request declares a joule ceiling and a fidelity floor; the mesh routes it to the cheapest-sufficient model on the cheapest-sufficient backend, serves it under an energy meter, and seals a receipt whose headline figure is microjoules per accepted output token — measured at the meter, not estimated from a price list.

The serving shelf reports dollars per token and tokens per second. Mesh reports the number that is physical, comparable across hardware, and impossible to inflate: the joule.

The shape

ServeRequest ──▶ route (cheapest-sufficient) ──▶ authorise (JCP grant)
                                                     │
                                                     ▼
                     meter + debit ◀── serve (engine) ──▶ tokens
                                                     │
                                                     ▼
                         sealed JCR-1 receipt: µJ / accepted token

Four roles — caller, router, engine, steward — and four phases per serve: route, authorise, meter, seal. The grant is decided by JCP's own runtime before any work runs, so its expiry, caveats and remaining budget bind here as at any JCP enforcement point, and the metered joules are debited against it afterwards. A grant is spent only by its issuer, who signs each presentation for one request, and only at the steward it was issued to; each decision is journalled before the work, so a restart gives no budget back. See SPEC.md §2.

The reference workspace

mesh-rs/ is a pure-Rust reference implementation:

Crate What it is
mesh-schema wire types — ServeRequest, Fidelity, two-part Energy, RouteDecision, ServeOutcome
mesh-router energy-weighted cheapest-sufficient routing with a full candidate audit
mesh-engine the ServingEngine interface + a deterministic, weights-free ReferenceEngine
mesh-engine-gguf a real backend (behind gguf): wraps the family's pure-Rust GGUF/Metal inference substrate so the mesh routes and meters actual model tokens
mesh-meter the meter window; an always-available estimator + an optional bridge to the family hardware meter (RAPL / NVML / Apple) behind hw-meter, and ProcessMeter: this process's own CPU and GPU energy for an engine that runs in process, measured when a span covers the whole request
mesh-receipt the mesh/1 receipt, JCR-1 sealing (det-CBOR + COSE_Sign1), and a hash-chained log
mesh-core the orchestration that ties route → authorise → meter → seal together
mesh-conformance the deterministic reference scenario, its checks, and the gen-vectors bin

Mesh rides on JCP (a serve request is authorised by a JCP grant; receipts seal in JCR-1), dispatches to runtimes such as JouleClaw, and routes across compute described by EOC and isolated by Sandbox. It introduces no new cryptography (see SPEC.md §9).

Run it

cd mesh-rs

# all crates green
cargo test --workspace
cargo clippy --workspace --all-targets

# end-to-end: mint a JCP grant, serve, print the sealed receipt
cargo run -p mesh-core --example demo

# on Linux/RAPL or a CUDA/NVML box, meter real silicon (HwShunt provenance, where
# the counter is live; a counter that is not live falls back to the estimator)
cargo run -p mesh-core --example demo --features hw-meter-rapl

# regenerate the published conformance vectors
cargo run -p mesh-conformance --bin gen-vectors -- ../conformance/v1

# serve a REAL model end-to-end through Mesh (Falcon-H1 0.5B), seal the receipt
cargo run --release -p mesh-engine-gguf --features gguf --bin serve_falcon -- \
    /path/to/falcon-h1-0.5b-instruct 12 "The capital of France is"

The serve_falcon run demonstrates the whole standard on real model tokens: a JCP grant authorises each request (an underfunded grant is refused before any decode runs), the cheapest-sufficient backend is chosen, the decode is metered, and a mesh/1 receipt is sealed and hash-chained across the session — e.g. prompt "The capital of France is" → " Paris. It is known for its historical landmarks", prompt "Photosynthesis is the process by which" → " plants convert sunlight into chemical energy in the form of", with both seals verifying and the chain's prev-links intact.

The demo prints the route (every backend weighed, with the reason each was kept or rejected), the honest energy provenance, and the wedge metric — then verifies the sealed envelope under the steward key.

Status

v0.1.0-draft.1. Reference workspace builds and tests green (mesh-schema, mesh-router, mesh-engine, mesh-meter, mesh-receipt, mesh-core, mesh-conformance); cargo clippy --all-targets warning-free; published vectors in conformance/v1/. The reference engine is deterministic and weights-free; production backends implement the same ServingEngine interface — mesh-engine-gguf (behind gguf) is a real one over the family's pure-Rust GGUF/Metal substrate, kept out of the default build so it needs no weights.