| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
wai cross-architecture byte-equality / windows-x86_64 (pull_request) Successful in 30s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Successful in 42s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Failing after 1m3s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 1m1s
WAI conformance / cargo-class corpora · windows (pull_request) Successful in 1m21s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 58s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 20s
WAI conformance / cross-arch byte-equality · windows (pull_request) Successful in 22s
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Successful in 14s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 29s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 15s
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Successful in 55s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Failing after 1m5s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 13m25s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 3m42s
Toolchain 1.97.1 -> 1.98.0 (released 2026-08-18) in both `rust-toolchain.toml`
files, 33 pins across 5 CI workflows, and 26 workspace `rust-version`
declarations. Nothing pinned to 1.97 remains.
Dependencies refreshed in all 25 workspaces: 1,751 changes, every one
semver-compatible. The vendored `jouledesk-rs/vendor/libwebrtc` tree is
deliberately excluded — it is a patched vendor drop, not a managed dependency.
Note the `1.97` in `jouleclaw-loader-gguf/BENCHMARKS.md` is a benchmark timing
("1.97 ms"), not a version; a blind find-and-replace would have corrupted a
results table, so pins were matched by field rather than by string.
Also completes a cross-workspace regression this repo has been carrying. When
`budget_funds` and `caveats` were added to `jcp_schema::Grant`, the workspaces
that path-depend on `jcp-schema` were fixed one wave at a time, and three were
missed: `joule-ui`, `jouleclaw` and `mesh` still built `Grant` without the new
fields and had been failing to compile since. `cargo test --workspace` inside
`jcp-rs` never builds them, which is exactly why it went unseen; checking every
workspace independently is what surfaced it. Two of the six sites used field-init
shorthand (`budget_uj,` with no colon), so they needed a separate pass — a
reminder that a regex over initializers is not a substitute for compiling.
Verified: 21 of 25 workspaces `cargo check --workspace --all-targets` clean.
Not fixed here, and NOT caused by this change — each verified against the
pristine tree rather than assumed:
- `eoc/eoc-rs`: `RequestBuilder::query` is unavailable because reqwest is taken
with `default-features = false`, which drops the feature providing it.
reqwest is 0.13.4 before and after, and `serde_urlencoded` is absent from the
lock in both, so this predates the refresh. Fixing it is a choice between
enabling the feature and changing the call sites.
- `openpay`: `Hmac::new_from_slice` unresolved. hmac 0.12.1, digest 0.10.7 and
sha2 0.10.9 are identical before and after — same versions in, same result.
- `smart-byte/smart-byte-rs`: never resolved on main. Its manifest asked for two
features that do not exist (`rand_core`'s `alloc`, which no version has ever
had, and `cbc`'s `std`, where 0.2 offers `alloc`); both are corrected here,
which advances it from "will not resolve" to "will not compile" and exposes
the real problem — the manifest wants `rand = "0.10"` while the lock pinned
`rand 0.8.8` and 38 files still use the 0.8-era API (`thread_rng`,
`rand::rngs::OsRng`). That is a two-major-version source migration and wants
its own change, not a side effect of a toolchain bump.
`wai/wai-rs` needs libjxl present to build its default feature set; CI installs
`libjxl-dev`, so this is a local environment gap rather than a repo failure.
|
||
| .. | ||
| archive | ||
| conformance | ||
| joulecontract-rs | ||
| provenance | ||
| LICENSE | ||
| LICENSE-SPEC | ||
| README.md | ||
| SPEC.md | ||
JouleContract
A carrier for obligation. Five clauses, one signed receipt, owned by no one.
JouleContract is the contract cargo class of the Transaction Science substrate. Where Smart Byte carries value, EOC carries compute, Joule Code carries coding work, and Map carries place, JouleContract carries the promise itself: a content-addressed statement of what a unit of work must hold (pre, post, inv), what it may touch (frame), and what it may spend (ceiling, a joule EnPI against a signed baseline). It is the operand the rest of the family acts on — Joule Code carries its changes, the proof standard discharges its obligations, JouleClaw budgets dispatch against its ceiling — and its single signed receipt simultaneously evidences functional safety, energy management, and AI governance: three audit programs collapsed into three projections of one receipt log.
The doctrine
Inherit, don't invent — bind, don't name — seal, don't float. Three normative consequences:
- The binding rule. Every trust-bearing field — generator, frame, qualification, independence, the joule figure itself — binds to a key, a sealed attestation, or an independent timestamp, or serializes one of twenty-two demoted states. A field that is named but not bound does not exist in a conformant receipt.
Meteredwithout a meter attestation ismetered_unattested; independence is computed from key disjointness, never copied from a producer's flag. - The sealing rule. Conformance is evaluated once, at discharge, against a content-addressed evidence bundle, and sealed. Re-verification is resolution-free — no DNS, no live registry, no reachable authority — which is also what makes conformant receipts producible air-gapped. Receipts do not rot, and nothing re-grades them later.
- Breach is deviation without amendment. Contracts bend instead of break: amendments are metered, independently timestamped transitions that govern the future only. A withheld receipt is visible as withheld; a past out-of-frame effect stays a breach forever; an unamended deviation caps the Governance class until closed.
Rigor, honestly
Conformance is a composed profile — ⟨Rigor JR-1..4 · Energy class · Governance class⟩ — gated by the least-bound axis, with a claim-discipline rule: the bare word "conformant" is itself a non-conformant claim. The limits no document can mechanize are named residuals, not hidden: obligation-set adequacy, common control, issuer-pays gravity, and the demand side — the standard prices honesty; relying parties price assurance.
Provenance
This standard was hardened by adversarial diff, and the diffs are part of it: each version was attacked by independent review lenses, the findings published, and the repairs folded as traced amendments with real digests. SPEC.md §16 carries the full chain; archive/ holds every prior version byte-exact so the chain verifies; provenance/ holds the four diff rounds that produced it — three against the spec text, the fourth against the reference implementation itself.
Contents
SPEC.md— normative specification v0.6.0 (RFC 2119), self-hosting amendment log with verified digest chain.archive/— prior spec versions (v0.1.0–v0.5.0), byte-exact anchors of the amendment chain.provenance/— the adversarial diff rounds that drove each amendment.joulecontract-rs/— Rust reference workspace: schema, receipt validation, evidence sealing, amendment/key-log machinery, conformance harness.
Reference implementation and consumers
joulecontract-rs implements the core object, the demoted-state vocabulary, computed independence, the least-bound-axis profile gates, resolution-free sealed verification, and forward-only temporal ordering. The first family consumer is live: joule-code-joulecontract runs a coding operation under a contract — the edit set is the frame, the tier cost is the ceiling, JCR provenance maps downward-only onto the energy classes — and discharges it into a receipt that grades honestly under the two-stage rule. The JouleClaw runtime and the proof standard's cascade are next.
Status
v0.8.0 draft. The amendment chain is real (archive digests verify against §16, mechanically, on every cargo test — seven anchors, v0.1 through v0.7). The reference workspace covers the schema, the receipt-local and composed validators (two-stage evaluation is now normative: local witnesses at most JR-2; JR-3/JR-4 and certified are composed verdicts over the sealed evidence bundle, the office key log, and the transition interval), composition with per-component ceiling accountability (intra-batch netting is structurally dead), the per-EnB ratchet, recourse and sector-equivalence bindings, the mechanical lost/never evidence distinction, cross-digest re-anchoring, evidence sealing with expected-signer verification, the in-toto/DSSE recognized edge, and a regenerable conformance vector pack whose expected verdicts come from the validators themselves. Five adversarial rounds are on the record (provenance/): three against the spec text, the fourth against the implementation (28 findings, four guarantee bypasses, all repaired — folded back as v0.7), and the fifth a clean-room implementability audit of the published artifacts alone, which found the composed validation path unbuildable without reading the reference code — folded back as v0.8, which makes the bundle construction, canonical JSON, quorum scope, obligation matching, and key-log event model normative text, and expands the pack from 13 to 22 vectors with every composed input shipped (member bytes included). Every §15 demoted state is producible by the reference implementation, and a third party can now build the composed validator from the published artifacts alone.
Licence
- Reference code: Apache-2.0
- Specification text: CC-BY-4.0