open-standards/jouleclaw/jouleclaw-rs/Cargo.toml
Transaction Science 031ccb235b sec: move quick-xml to 0.41 where we control it — the ISO 20022 deserializer parses counterparty XML
RUSTSEC-2026-0194 (quadratic run time checking a start tag for duplicate
attribute names) and -0195 (unbounded namespace-declaration allocation in
`NsReader`) are both 7.5 denial-of-service defects in quick-xml.

-0195 is not reachable: `NsReader` appears nowhere in the tree. -0194 is,
and on a path that matters — `openpay/crates/op-iso20022/src/codec.rs` calls
`quick_xml:🇩🇪:from_str` on ISO 20022 messages, which arrive from payment
counterparties. Attacker-shaped XML is the normal case there, not the
exception, so a quadratic parse is a real availability vector on payment
ingestion.

Bumped 0.36 -> 0.41.0 in the four lockfiles where the version is ours to
choose: openpay, jouleclaw, mesh, and the l3-jouleclaw example.

Two remain pinned by dependents and cannot be fixed from here:
  - openpay also resolves quick-xml 0.37.5 through `open-payments-iso20022
    v1.0.10`. That is the same ISO 20022 surface, so this bump hardens our own
    deserializer but NOT that library's internal parsing. Closing it needs an
    upstream release; it is not closed by this commit.
  - smart-byte resolves 0.39.4 through plist -> netdev -> netwatch -> iroh.
    That path parses macOS plists, not counterparty XML, so the exposure is
    materially lower.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-22 09:48:55 -04:00

1224 lines
59 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[workspace]
resolver = "3"
members = [
# Phase 1 — foundation
"crates/jouleclaw-core",
"crates/jouleclaw-topology",
"crates/jouleclaw-energy",
"crates/jouleclaw-fabric",
# Phase 2 — cascade + format + persistence + wire
"crates/jouleclaw-cascade",
"crates/jouleclaw-loader-gguf",
"crates/jouleclaw-pack",
"crates/jouleclaw-history",
"crates/jouleclaw-wire",
# Phase 3 — backends + runtime
"crates/jouleclaw-backend-reference",
"crates/jouleclaw-backend-apple",
"crates/jouleclaw-runtime",
# Phase 4 — model tiers
"crates/jouleclaw-liquid", # L3 CfC SSM
"crates/jouleclaw-prism", # L3 1-bit / ternary BitNet
"crates/jouleclaw-mrl", # L2 Matryoshka embeddings
"crates/jouleclaw-lmm", # L3 multimodal (vision/text/audio)
"crates/jouleclaw-ebm", # L1/L3 energy-based constraint sat
# gemma4 deferred — depends on joule-l1 + pattern-core (OpenIE IP).
# Will port with surgery once jouleclaw-l1 ships a thin lawful-tier
# trait surface in Phase 6.
# Phase 5 — omni-modal generation (single crate; will split later)
"crates/jouleclaw-omni", # diffusion / stable-diffusion / musicgen
# / whisper / gaussian3d / video / fusion
# / 5 modalities / HAL / orchestrator /
# server — ported wholesale from efficient-genai
# Phase 6 — agentic v6 (plan/execute/diagnose/compose surface)
"crates/jouleclaw-schema",
"crates/jouleclaw-plan",
"crates/jouleclaw-execute",
"crates/jouleclaw-compose",
"crates/jouleclaw-deberta",
"crates/jouleclaw-diagnose",
"crates/jouleclaw-edge-cli",
"crates/jouleclaw-edge-client",
# Phase 6 — net-new (the standard-defining moat)
"crates/jouleclaw-prov", # signed receipt per resolution
"crates/jouleclaw-fresh", # search-first + provenance envelope
"crates/jouleclaw-mcp", # rmcp-compatible + joule-mcp profile
"crates/jouleclaw-cli", # jclaw binary (Pi-class minimal harness)
"crates/jouleclaw-edge", # end-to-end edge demo + LawfulRegistryTier shim
"crates/jouleclaw-verify", # verifier-in-the-loop — AI proposes, verifier disposes
"crates/jouleclaw-deterministic", # L1 standard library — 30+ deterministic primitives
# Pre-cascade resolver — registered, never-evicted lookup table.
"crates/jouleclaw-lut",
# L0.5 tool-compute tier — 484 deterministic, zero-hallucination pure-function tools.
"crates/jouleclaw-tools",
# L0.25 formula-first tier — structural-contrast relationship resolver.
"crates/jouleclaw-formula",
# L0.5 tool-tier — Tier adapter over jouleclaw-tools (registry of 484 deterministic tools).
"crates/jouleclaw-tool-tier",
# Regulatory-compliance wedge built on the energy substrate.
"crates/jouleclaw-compliance",
# Grammar-constrained decoding for L3/L4 model outputs.
"crates/jouleclaw-decode",
# L4.5 proof-solver tier — deterministic CSP at constraint-solver energy.
"crates/jouleclaw-proof-tier",
# Typed-signature programs — DSPy-style modules + compiler, pure Rust.
"crates/jouleclaw-program",
# L0.75 SSM-router tier — local intent classifier, picks downstream tiers.
"crates/jouleclaw-ssm-router",
# L1.25 GraphRAG tier — deterministic entity extraction + KG enrichment.
"crates/jouleclaw-graph-rag",
# L1.375 structural-contrast tier — second formula pass with graph context.
"crates/jouleclaw-struct-contrast",
# L1.5 SSM-reader tier — local reading-comprehension QA over passages.
"crates/jouleclaw-ssm-reader",
# L2 federation tier — multi-provider parallel search + fusion.
"crates/jouleclaw-federation",
# L2.5 neural-rerank tier — reranker (BM25 default; ColBERT/SPLADE plug-in).
"crates/jouleclaw-rerank",
# L1 local-index tier — BM25-shaped retrieval over an in-process corpus.
"crates/jouleclaw-local-index",
# L3 cheap-LLM tier — sync trait surface, EchoBackend default.
"crates/jouleclaw-llm",
# L4 cross-model verification tier — parallel dispatch + agreement checker.
"crates/jouleclaw-verification-tier",
# L5 learned-routing tier — episode-memory dispatch ordering (meta).
"crates/jouleclaw-routing",
# L6 agent tier — multi-step recursive cascade (decompose/dispatch/compose).
"crates/jouleclaw-agent",
# L7 reflection — offline meta-cognitive learning, promote/demote lessons.
"crates/jouleclaw-reflection",
# L8 self-tuner — five damped control loops over cascade dynamics.
"crates/jouleclaw-tuner",
# L9 supervisor — pathology detection (explosion/starvation/oscillation/inversion).
"crates/jouleclaw-supervisor",
# L10 governor — rolling joule budget, per-tenant quotas, kill switch.
"crates/jouleclaw-governor",
# Full-stack assembler — wires the tier crates into one runnable Runtime + control plane.
"crates/jouleclaw-stack",
# Yang→yin promotion — verified model answers become permanent deterministic facts (cost→0 with use).
"crates/jouleclaw-promote",
# Skill-compilation — verified resolutions become typed parameterized deterministic skills (a whole query class, no model).
"crates/jouleclaw-skill",
# Agent memory layer — CoALA-typed (working/episodic/semantic/procedural), content-addressed, signed-receipt-ready facts.
"crates/jouleclaw-memory",
# L1 fact extraction — deterministic regex extractor (hashtags / mentions / quoted / key:value) that composes with jouleclaw-memory.
"crates/jouleclaw-extract",
# Composed recall — memory BM25 top-N → jouleclaw-rerank → top-K (the Hindsight pattern, substrate-grade).
"crates/jouleclaw-recall",
# Consolidation — CoALA episodic→semantic, scheduled batch. Deterministic tag-clustering reference + trait for LLM abstraction.
"crates/jouleclaw-consolidate",
# Writer-critic pattern — fresh-context adversarial gate over (artifact, rubric) with a falsification pass. Builds on jouleclaw-verify.
"crates/jouleclaw-critic",
# Persisted run-state — durable typed DAG for multi-step resolutions (linear + branch + join), joule-stamped checkpoints, RunStore trait.
"crates/jouleclaw-graph",
# Approval gates — pause a dispatch for review before it runs; energy-shaped (only expensive model calls gated).
"crates/jouleclaw-approve",
# Cost-table model-bank dispatcher — route a query to the cheapest capable reasoner slot by measured joules.
"crates/jouleclaw-dispatch",
# Session tree — energy-attributed, branchable log of resolutions (Pi-style --fork).
"crates/jouleclaw-session",
# AGENTS.md / CLAUDE.md hierarchical discovery, joule-stamped per file read.
"crates/jouleclaw-agents-md",
# Progressive-disclosure 3-tier loading (Anthropic Skills-shape); per-tier joule cost is first-class.
"crates/jouleclaw-disclosure",
# Eval-driven skill engineering — Executor/Grader/Comparator with energy-as-pass-criterion (EnergyBudgetGrader).
"crates/jouleclaw-evals",
# Runtime-enforced control-flow gates over a Run, including EnergyBudgetGate (physics-grounded refusal).
"crates/jouleclaw-gate",
# Doctrine traits — BoundedError + FastStrong + Scored. The (ε,δ), fast-path-vs-strong, and score+explanation patterns.
"crates/jouleclaw-bounded",
# ai-verify port: Bolero/Kani/MIRI/Loom orchestration; joule-stamped ProofReport.
"crates/jouleclaw-audit",
# SonarSource cognitive-complexity reimpl over `syn` AST. Percentile-rank only, never threshold.
"crates/jouleclaw-cognitive",
# DDSketch quantile sketches with α-relative-error bounds; HDR opt-in for JVM interop.
"crates/jouleclaw-quantile",
# Probabilistic sketches: Count-Min, HyperLogLog++, BinaryFuse8 — all with (ε,δ) introspection.
"crates/jouleclaw-sketch",
# Drift detection: Page-Hinkley + DDSketch p99 two-detector. Distinguishes systematic drift from tail noise.
"crates/jouleclaw-drift",
# Geometric outlier detection: Tukey fences + Isolation Forest. Score + explanation, never boolean.
"crates/jouleclaw-outlier",
# Two-tier integrity: CRC32C (Castagnoli) fast-path + blake3 tamper-evident. Postgres 18 / RocksDB doctrine.
"crates/jouleclaw-integrity",
# Determinism-contract layer — wave-5: ai-scientist that delivers deterministically, not stochastically.
#
# Pre-registration: lock analysis plan + held-out data hash BEFORE proposer sees test set. OSF Replication Recipe shape.
"crates/jouleclaw-prereg",
# Inference pin: (model, weights blake3, kernel versions, seed, batch_invariant). Thinking Machines / SGLang batch-invariant kernels.
"crates/jouleclaw-pin",
# Lab backend trait: SiLA 2 + Opentrons + Emerald escape hatch. Submit/poll/fetch over a Protocol enum.
"crates/jouleclaw-lab",
# Formalization-faithfulness checker: (informal, formal) pair with typed FaithfulnessEvidence; trait + reference deterministic checker.
"crates/jouleclaw-formalize",
# Verification artifact: typed enum {FormalProof | PinnedContainer | LabTrace | ReplayJournal}, RO-Crate v1.0 / PROV-O aligned. ArtifactGate.
"crates/jouleclaw-artifact",
# MCP mutation tools for Run-graph traversal: list_nodes / get_node / append_child / mark_replicated / verify_artifact. The first scientific-MCP mutation verbs.
"crates/jouleclaw-graph-mcp",
# Wave-6 — sandbox teeth + DB-grade cost-model + transform-graphs + mech-interp.
#
# RATS RFC 9334 + EAT RFC 9711 attestation envelope.
"crates/jouleclaw-attest",
# OCI image + ORAS referrer content-addressed distribution substrate.
"crates/jouleclaw-oci",
# In-toto Statement + SLSA v1.1 Build-track Provenance predicate.
"crates/jouleclaw-slsa",
# Runtime claim + CapabilitySet (bwrap/gVisor/Kata/Firecracker/Wasmtime tags). The PinnedContainer sandbox teeth.
"crates/jouleclaw-sandbox",
# Cache policy — the 4-vendor 0.1× input-token cache-read convention (Anthropic / Google / OpenAI / DeepSeek).
"crates/jouleclaw-cache",
# Transform-graph: Entity / Transform / TransformResult PROV-O-tagged. First cross-tool transform-graph schema in the field.
"crates/jouleclaw-transform",
# Mech-interp FeatureActivation tuple + Neuronpedia identifier (Gemma Scope 2 / SAELens / TransformerLens alignment).
"crates/jouleclaw-mechinterp",
# Wave-7 — close the honest narrowings from wave-6.
#
# Signature verification (Ed25519, JWS, COSE_Sign1) — closes "no signature crypto in v1".
"crates/jouleclaw-attest-sig",
# Per-vendor TEE quote parsers (Intel TDX, AMD SEV-SNP, InTotoSlsa) — closes "no per-vendor TEE parsing".
"crates/jouleclaw-attest-vendor",
# CoRIM (IETF draft) CBOR reference-value format — closes "no CoMID/CoRIM hard dep".
"crates/jouleclaw-corim",
# SandboxEscapeBench harness + EnvironmentProbe trait — closes "no escape-proof claim" by measuring the gap.
"crates/jouleclaw-sandbox-audit",
# Maltego TRX XML adapter — closes "PROV-O JSON-LD only".
"crates/jouleclaw-transform-trx",
# Safetensors SAE loader for Gemma Scope 2 — closes "no SAE weight loading".
"crates/jouleclaw-mechinterp-loader",
# Wave-8 — comprehension positioning + audit-surface gaps (5-lens cross-talk).
#
# QueryIntent taxonomy + deterministic-first heuristic classifier with LLM seam.
# Closes the "Priscilla 67%/2% unmeasurable on a JouleClaw deployment" gap.
"crates/jouleclaw-intent",
# Append-only Receipts log + by_agent / by_tool / by_tier / by_window / by_intent
# queries. Closes the "no aggregated cost ledger" gap flagged by all 5 audit lenses.
"crates/jouleclaw-ledger",
# Wave-9 — JCR-1 Receipt Specification reference: canonical det-CBOR signed core
# (RFC 8949 §4.2.1), COSE_Sign1 envelope (RFC 9052 / EdDSA), 10 conformance vectors,
# plus the Python + Go independent verifiers and a Rust producer example. Closes
# the wave-7 honest narrowing "no canonical serialization the spec — not the crate
# — is the source of truth for."
"crates/jouleclaw-jcr1",
# Wave-10 — calibrated escalation gate: Platt-scaled probabilities + split-conformal
# abstention + EscalationGate trait. Pure arithmetic, trusted-core safe. Closes the
# 5-lens cross-talk audit's load-bearing correctness gap: "how does a tier know it
# failed?" — answered with calibration math instead of a hand-rolled threshold.
"crates/jouleclaw-calibration",
# Wave-13 — out-of-process deny-by-default policy engine. Companion to the
# existing escape-probe sandbox harness (which is a test, not a gate) and the
# L10 governor (per-tenant quotas). Adopts NVIDIA OpenShell's Policy Engine
# primitive into the JouleClaw open-standards surface: filesystem / network /
# process granularity at binary/destination/method/path, deny-by-default,
# live policy updates, full audit trail ready to feed jouleclaw-ledger.
"crates/jouleclaw-policy",
# Wave-14 — bridge from jouleclaw-policy AuditEvents to JCR-1-style signed
# receipts: canonical det-CBOR + COSE_Sign1 envelope (alg=-8, Ed25519)
# under the same steward identity as the cascade-receipt stream, plus an
# in-memory and a JSONL sink and an idempotent PolicyShipper. Lifts every
# policy decision into the same unified auditable log the joules / intent
# stream already speaks. First-class jouleclaw-ledger integration is the
# follow-up.
"crates/jouleclaw-policy-receipt",
# Wave-20 — persistent structured workspace for long-running L6 agents
# (proposal #4). Content-addressed entries (BLAKE3), Ed25519-signed
# manifests, in-memory + file-backed reference backends. Deterministic
# state primitive — NOT an LLM dependency. NVIDIA-OpenShell "File
# System" parity inside the JouleClaw open-standards surface.
"crates/jouleclaw-workspace",
# Wave-21 — out-of-process transport for the policy engine. Same
# trait surface as the in-process reference, but the engine runs in
# its own process (jclaw-policyd) and the agent talks to it over
# line-delimited JSON on stdin/stdout. Closes the final outstanding
# follow-up from the policy adoption proposal: a compromised agent
# process cannot in-process patch the policy decision, because the
# engine is on the other side of the kernel boundary.
"crates/jouleclaw-policy-ipc",
# Wave-22 — Hydra Core Vocabulary emitter. Turns a JouleClaw tool
# surface into a hydra:ApiDocumentation JSON-LD document so a generic
# third-generation agent client discovers what an instance exposes at
# runtime without bespoke integration. Composes with the /vocab/v1
# JouleClaw vocabulary shipped wave-22 #1.
"crates/jouleclaw-hydra",
# Wave-22 #3 — Minimal SHACL Core validator for JouleClaw wire forms.
# Validates Receipt / PolicyReceipt / WorkspaceManifest / Action /
# Decision against the v1 shape graph at /vocab/v1.shapes.ttl, before
# an agent calls a tool. Local validation, no model-side guessing.
"crates/jouleclaw-shacl",
# Wave-22 #4 — Generic third-generation Hydra client. Reads any
# hydra:ApiDocumentation, validates input against the linked SHACL
# shapes, dispatches via a pluggable Transport, emits a JCR-1
# ToolTouch per call. Closes the Kerduchi triangle: §13 vocabulary
# + §14 Hydra discovery + §15 SHACL validation + this crate as the
# agent-side consumer.
"crates/jouleclaw-hydra-client",
# Wave-22 #6 — WASM bindings for jouleclaw-hydra-client. Compiles
# the generic third-generation agent client to a browser-loadable
# WebAssembly module so /third-gen runs the REAL Rust client in
# the browser, not a JavaScript stand-in. Excluded from the
# native test sweep — wasm-only by definition.
"crates/jouleclaw-hydra-client-wasm",
# Wave-24 #1 — Validation contract. Planning artifact that lives
# independently of code: typed assertions (each with a stable id
# and a falsifiable check), features that claim them, mechanical
# coverage matrix at validation time. The load-bearing primitive
# that lets a multi-day run not drift. Source: Luke Marsden /
# factory.ai "Missions" talk; same lineage as the Kerduchi
# Gen-3 wave-22 architecture.
"crates/jouleclaw-contract",
# Wave-24 #3 — Three-role mission orchestrator
# (Orchestrator / Worker / Validator) composing
# jouleclaw-contract + jouleclaw-graph::Journal +
# WorkerHandoff. Serial-by-default; opt-in parallel for
# read-only fan-out.
"crates/jouleclaw-mission",
# Wave-25 — Bridge from jouleclaw-contract::ContractVerdict
# to a JCR-1-shaped signed receipt (sibling schema
# `verdict-receipt/1`). Same canonical det-CBOR +
# COSE_Sign1 (alg=-8 EdDSA) envelope the cascade and
# policy receipt streams use, so verdicts join the
# unified auditable log. Closes the SPEC.md §16.5 promise
# that "the verdict is the artifact a receipt links to".
"crates/jouleclaw-contract-receipt",
# Wave-25 #3 — Source-as-truth fetcher. Given a PackageSpec
# (npm / PyPI / crates.io / GitHub / generic URL), fetch
# the package's actual source into the workspace as a
# content-addressed L1 entry; record source URL + bundle
# hash + fetched-at as ClaimProvenance for the receipt
# stream. Pluggable SourceFetcher trait; in-tree
# StaticBundleFetcher is the deterministic reference (no
# network in the trusted core). Implements JouleClaw's
# "fresh > frozen" doctrine for third-party code.
"crates/jouleclaw-source",
# Wave-25 #4 — Scored review-revise loop. Composes (artifact,
# Reviser, jouleclaw-bounded::Scored, threshold, max_iters)
# into a bounded loop with a typed RevisionLog. The
# `/grebloop` shape made into a first-class primitive; no
# model invocation in the trusted core (Reviser is a trait).
"crates/jouleclaw-revise",
# Wave-26 #1 — Stuck-pattern detector over a run journal.
# Typed StuckSignal { RepeatIntent | ExplicitComplaint |
# Abandonment | ClusteredFailures | Solved } emitted by a
# pluggable StuckDetector trait. Solved is the transition
# marker the experiment layer harvests. Source: Lovable /
# Benjamin Forsbeck "continuous learning at scale" talk.
"crates/jouleclaw-stuck",
# Wave-26 #3 — A/B causal-impact layer for context
# injection. KnowledgeBank holds candidate entries;
# inject_or_blank() emits Treatment or Control
# deterministically per call_id; record_outcome() pairs
# outcomes with assignments; effect_estimate() returns the
# Welch's-t lift + 95% CI. prune_underperforming() drops
# stale entries so context rot is detected and removed.
"crates/jouleclaw-experiment",
# Wave-27 #1 — System Use Case spec. The intent-side
# companion to jouleclaw-contract::ValidationContract.
# Jacobson-template fields (actor, goal, pre/post conditions,
# main / alternative / error flows, business rules) as a
# typed source artifact; to_assertions() mechanically
# derives the verification rubric. Source: Martinelli
# AI-unified-process talk.
"crates/jouleclaw-usecase",
# Wave-27 #2 — Spec-drift detector across (use_case,
# test_set, impl_set). UseCaseRef tags + SpecCoverageReport
# surface unverified postconditions, unverified business
# rules, unreferenced tests, unreferenced impl. The
# load-bearing failure mode every long-running AI project
# eventually hits.
"crates/jouleclaw-spec-coverage",
# Wave-27 #3 — Brownfield reverse-engineering of UseCases
# from existing code or text. UseCaseReverser trait + a
# deterministic HeuristicReverser reference (Markdown
# heading scan). The Martinelli brownfield workflow as a
# first-class primitive; production extractors (LLM-backed
# or language-aware) live behind the trait.
"crates/jouleclaw-usecase-reverse",
# Wave-28 #4 — OpenTelemetry GenAI semconv adapter for every
# JouleClaw receipt shape (cascade Receipt, PolicyReceipt,
# ContractVerdict, WorkerHandoffEvent, AgentFeedbackEvent).
# Pure projection — no opentelemetry runtime dep; transport
# lives in a follow-on crate. Operators ingest JouleClaw
# receipts into Datadog/Grafana/Honeycomb via the same
# pipeline they already run.
"crates/jouleclaw-otel",
# Wave-28 #1 — Pinned batch-invariant kernel registry +
# verification gate. Closes the determinism story at the
# physics layer: a backend that claims batch_invariant=true
# MUST commit to a registered kernel set (SGLang
# deterministic-inference; Thinking Machines reference set;
# future Rust ports). BatchInvarianceGate refuses pins that
# drift from the registry.
"crates/jouleclaw-batch-invariant",
# Wave-29 — A2A v1.0 protocol surface (Google → Linux
# Foundation, April 2026). Typed AgentCard (signed JSON-LD
# with Ed25519 signature stripes), Task / TaskResult call
# surface, Hydra → AgentCard projection, well-known
# discovery helper. Reuses jouleclaw-attest::AgentIdentity
# + jouleclaw-attest-sig for keys; transport stays
# downstream. Lets JouleClaw publish + consume agents over
# the open agent-to-agent protocol.
"crates/jouleclaw-a2a",
# Wave-30 — Agent Performance Primitives. Speculative
# branching for the L6 agent: dispatch cheap-tier and
# expensive-tier in parallel, commit cheap if it verifies,
# otherwise fall back to expensive (already running). Honest
# energy accounting records both joules_committed_uj and
# joules_speculative_lost_uj so operators see the true
# speculation cost. The biggest single energy win missing
# from JouleClaw's sequential cascade. Source: NVIDIA NeMo
# Agent Toolkit APP + "Speculative Actions" paper.
"crates/jouleclaw-agent-app",
# Wave-31 — Unfolding-tool primitive. Expose ONE meta-tool
# `discover_tools(category)` to the agent; reveal specific
# tool descriptors only when asked. Cuts the fixed
# prompt-token cost of every agent turn for deployments with
# large tool catalogs (50-200 MCP tools). Token-budget-aware
# fan-out with honest dropped-count reporting. Composes on
# jouleclaw-mcp + jouleclaw-tools; pure types, no model
# invocation. Source: Embable unfolding-tool + the 2026
# convergence on meta-tools-with-disclosure.
"crates/jouleclaw-unfolding",
# Wave-32 — Perimeter primitive. Outbound-only RPC tunnel
# for the Anthropic Code-with-Claude pattern: agent on
# vendor side, tool execution / policy decisions / workspace
# I/O / receipt writes stay inside the customer perimeter
# via one signed outbound stream. Energy-aware framing
# (JWP-shaped) + Ed25519 per-frame signatures + sequence
# replay protection. Pure types + InMemoryTransport
# reference; production transports (QUIC / JWP / gRPC) live
# downstream.
"crates/jouleclaw-perimeter",
# Wave-33 — RunMutation channel. Mid-task instruction /
# permission / budget updates to a live Run without
# breaking the upstream KV cache. Anthropic Messages May
# 2026 shape. Typed RunMutation enum split by
# cache-stability (suffix-appending vs prefix-rewriting);
# honest accounting of cache invalidations in the audit log.
"crates/jouleclaw-msgsdk",
# Wave-34 — A*-search runtime re-planner. Per-step
# adaptation (vs jouleclaw-plan's one-shot CSP):
# after every action, search the shortest joule-weighted
# path of remaining actions. Pluggable PlanState trait;
# deterministic tie-breaks; expansion-limit fallback.
# Same shape Embable uses for goal-oriented agents.
"crates/jouleclaw-replan",
# Wave-35 — Workspace dep-graph verification. The
# Spring-Modulith `verify()` pattern for Cargo: each crate
# may declare an `allowed_in` allowlist of consumers under
# [package.metadata.jouleclaw.boundaries]; the verifier
# surfaces boundary violations + cycles. Pure types + TOML
# parsing — no Cargo subprocess.
"crates/jouleclaw-boundaries",
# Wave-36 — Workspace dep-graph visualisation. Mermaid /
# Graphviz DOT / PlantUML emitters over a
# jouleclaw-boundaries::WorkspaceGraph + a typed Topology
# summary (entrypoints, sinks, longest-path layers). CI
# bakes the diagram into docs so the architecture map
# stays accurate by construction.
"crates/jouleclaw-workspace-map",
# Wave-37 — Architecture Decision Record. The persistent
# *why* behind a piece of architecture, in a typed form an
# agent can read on every turn. Different slot from
# jouleclaw-usecase (intent) and jouleclaw-contract
# (rubric): an ADR captures why + how-it's-enforced.
# Typed Enforcement (Lint / Test / Boundary / Manual),
# path-glob lookup, Markdown round-trip. Source: Mikuel /
# Spec27 talk on capturing decisions for humans and AI
# alike.
"crates/jouleclaw-adr",
# Wave-38 — Ebbinghaus-style memory decay. Typed
# DecayPolicy { half_life, max_age, min_observations,
# frequency_weight, prune_threshold } + per-record
# DecayedRelevance { score, recency, frequency, age }.
# Composes with jouleclaw-memory; pure stats, no clock.
# Microsoft Scout / Werner shape: unused fades, frequently
# used reinforces. Different from jouleclaw-experiment
# (A/B causal) and jouleclaw-drift (statistical drift).
"crates/jouleclaw-memory-decay",
# Wave-39 — Sandbox lifecycle protocol. Where
# jouleclaw-sandbox carries CapabilitySet claims (what was
# enforced), this adds the SandboxRuntime trait
# (create / start / exec / kill / status / destroy) +
# typed SandboxSpec + EgressPolicy. Pluggable backends
# (Docker / K8s / gVisor / Firecracker / OpenSandbox /
# local-process). Alibaba OpenSandbox shape, CNCF
# Landscape June 2026; honest in-tree LocalProcessRuntime
# reference tagged SandboxKind::Unattested.
"crates/jouleclaw-sandbox-protocol",
# Wave-40 — Sub-artifact annotation primitive. OpenAI
# Codex annotations shape (Nov 2026): select a span in a
# deliverable (TextRange / Cells / SlideRegion /
# DomSelector / Custom) and ask the agent to explain or
# edit just that span. PatchSet wire form lets the caller
# apply edits without re-running the produce-loop.
# Composes with jouleclaw-revise (scored iteration on
# annotations) and jouleclaw-mission (annotations as
# features).
"crates/jouleclaw-annotate",
# Wave-41 — Information Conservation Law as a typed claim.
# The Datum / Spec27 keystone primitive for the
# information-theory leg of the JouleClaw triangle. A
# correct output contains AT LEAST the information of its
# specification AND AT MOST (spec + delta + substrate).
# Anything beyond that is hallucination — typed,
# measurable, refusable. Pluggable InformationMeasure;
# canonical-JSON byte-count reference; deterministic
# verifier with three findings (BelowSpec, Hallucination,
# MissingDelta) plus Conforming. The first leg of the
# triangle, fully realized.
"crates/jouleclaw-conservation",
# Wave-42 — The cone. ConeCoord { complexity, novelty } +
# NoveltyBand dispatch by information-distance to the
# nearest known arrangement, NOT by heuristic. Pluggable
# ComplexityEstimator + NoveltyEstimator; generic over
# tier ids so any cascade adopts it (Datum's lut/
# formulaic/stochastic + JouleClaw's L0..L4 ship as
# defaults). The second leg of the triangle.
"crates/jouleclaw-cone",
# Wave-43 — The Oracle. Closure-gate Verdict { Pass |
# Fail(reasons) }. Datum's loop-closer; the third leg of
# the triangle. Distinct from existing scoring primitives
# (jouleclaw-calibration, -critic, -verification-tier,
# -evals): those produce scores, this produces a gate
# decision. Typed FailReason (Compile / TypeCheck / Test
# / Lint / Contract / Conservation / Custom);
# CompositeOracle chains backends with short-circuit-on-
# first-fail.
"crates/jouleclaw-oracle",
# Wave-44 — The Elicitor. Deterministic structured intake
# at the front door. Walks a free-form RawRequest through
# a typed list of Slots; emits ElicitationGaps one at a
# time until every required slot is filled, then yields
# an IntentDraft. The model — if used at all — lives at
# the *question* (suggesting slot order), never at the
# *answer*. Reference SlotWalker is pure data, no model,
# no entropy; the determinism floor under Datum's G1-G5.
# The fourth leg of the triangle (conservation + cone +
# oracle + elicitor) — sets up wave-45's Datum lift.
"crates/jouleclaw-elicitor",
# Wave-45 — Datum, lifted into JouleClaw. The
# demonstration crate: once the four load-bearing
# primitives (-conservation / -cone / -oracle / -elicitor)
# ship as standalone JouleClaw crates, Datum reduces to a
# thin wiring layer. Datum-local types only: TemplateId,
# Template (with body + typed Slot list), InMemoryStore,
# lut_resolve (pure substitution), conservation_check
# (bridges Intent → ConservationClaim → Verifier), and
# dispatch_one_shot (cone-classify → resolve → conserve
# → oracle-verify → DatumOutcome). The proof-by-
# construction that the random-walk AI features (RAG /
# database / geospatial / world model / agent harness)
# are one-crate compositions over the triangle.
"crates/jouleclaw-datum",
# Wave-46 — context-store. SQLite + FTS5 full-text search
# over agent / CLI / chat turns (microjoules per query, zero
# LLM cost) + a typed FrozenSnapshot block with bounded
# byte budgets whose mutations defer to the next session so
# the LLM prefix-cache stays warm. Ingested from Hermes
# Agent's documented memory pattern; the deterministic
# recall floor between L0 cache and L2 embedding+retrieval.
"crates/jouleclaw-context-store",
# Wave-46 — adversarial-fuzz Oracle backend. Implements
# jouleclaw-oracle::Oracle over a caller-supplied
# deterministic FuzzProperty; each round seeds ChaCha20 with
# (seed, round) to produce reproducible inputs; first failure
# short-circuits with the counterexample carried as
# FailReason::Custom. Composes via CompositeOracle alongside
# type-checkers / linters / a Lean-backed Oracle. Ingested
# from the OSS-maintainer crash-harness pattern (Valkey CVE
# hunt); the substrate version is the typed harness, not the
# agent that drives it.
"crates/jouleclaw-oracle-fuzz",
# Wave-47 — typed primitives for streaming / continuous-
# interaction cascades. Tick + TickKind (Audio/Text/Video/
# Marker including BargeIn) + StreamWindow + StreamSpec +
# RollingConservationLedger. Ingested from the 2026 multi-
# stream micro-turn pattern (Thinking Machines Interaction
# Models May 2026, OpenAI gpt-realtime, Google gemini-live,
# τ-Voice ICASSP-2026 benchmark): 200 ms ticks as the
# canonical quantum, < 150 ms barge-in deadline, gate-per-
# window verification. Pure types — no audio codec, no
# network, no model.
"crates/jouleclaw-stream",
# Wave-47 — gate-per-window Oracle for streaming cascades.
# StreamOracle trait + WindowVerdict { Pass | Fail | Yield |
# NeedMore } — Yield is load-bearing for barge-in. Reference
# backends: AlwaysPassStream, BargeInDetector, PerTickAdapter
# (lifts a per-request jouleclaw-oracle::Oracle into the
# streaming surface), CompositeStreamOracle (dominance-rank
# composition: Fail > Yield > NeedMore > Pass; always runs
# every backend, unlike the per-request composite that
# short-circuits).
"crates/jouleclaw-stream-oracle",
# Wave-48 — typed UI-output ladder. UiOutput { Static |
# Declarative | Generative } + ComponentRegistry +
# CapabilityPolicy + a stable MIME so streaming ticks carry
# UI outputs without extending the tick schema. Ingested
# from the 2026 generative-UI convergence: MCP Apps (Jan
# 2026), AG-UI, A2UI (Google), Open-JSON-UI all settled on
# the same three rungs with iframe sandboxing for the
# generative rung. Pure types — no renderer, no sandbox
# runtime; per-rung Oracles + JCR-1 ui-output/1 receipt live
# downstream.
"crates/jouleclaw-ui-output",
# Wave-48 — per-rung Oracle backends for jouleclaw-ui-output.
# StaticUiOracle (component_id ∈ registry), DeclarativeUiOracle
# (descriptor.kind ∈ allow-list), GenerativeUiOracle
# (CapabilityPolicy + byte budget + deny-substring list). All
# implement the per-request jouleclaw-oracle::Oracle trait so
# they compose via CompositeOracle and lift into the streaming
# cascade via jouleclaw-stream-oracle::PerTickAdapter.
"crates/jouleclaw-ui-oracle",
# Wave-49 — typed cross-standards binding for the JouleClaw /
# Sandbox / Joule-Code triad. CrossStandardBinding records
# the three reference ids per trace + the verifiable
# invariants (trace-id equality, joule agreement within
# tolerance, worst-counter energy provenance ACROSS standards,
# trusted-stewards set, sandbox grants ⊆ cascade
# authorisation). Wire-layer composition via JCR-1-shaped
# canonical JSON + BLAKE3 content addressing; no cross-
# workspace path deps. The substrate auditors check when
# proving a trace went through all three standards
# consistently.
"crates/jouleclaw-cross-binding",
# Wave-50 — streaming coding operations. The missing
# integration between wave-47's streaming substrate and
# Joule-Code's coding-op cargo. CodingEvent { TypedChar |
# SuggestionAppeared | SuggestionAccepted | SuggestionRejected
# | CursorMoved | DiagnosticDelta } sits in tick bytes under
# canonical MIME `application/x.jouleclaw-coding-event+json`.
# CodingOpMaterializer accumulates accepted suggestions across
# windows + materializes them into a content-addressed
# MaterializedCodingOp matching joule-code-cargo's wire shape;
# the wave-47 streaming substrate doesn't change.
"crates/jouleclaw-coding-stream",
# Wave-54 — event-sourced agent substrate. Append-only event
# log (BLAKE3-chained, content-addressed) + deterministic
# replay via content-addressed model+tool cache (ActiveGraph
# 2026 convention: LLM key = BLAKE3 of (system, user_messages,
# model_id, tool_defs, output_schema); tool key = (tool_id,
# args_hash)) + lineage trace. Ingested from ActiveGraph
# (Nakajima, arxiv 2605.21997, May 2026, v1.0 May 2026), the
# uncontested 2026 SOTA event-sourced agent runtime. The
# substrate JouleClaw's receipts + cascade pointed at but
# didn't name as one typed primitive.
"crates/jouleclaw-event-log",
# Wave-55 — Lean-backed Oracle. Implements Oracle over a
# Lean 4 toolchain; the candidate's source is written to a
# temp file, lean is invoked, exit code maps to
# Verdict { Pass | Fail }. Composes with the fuzz Oracle in
# a CompositeOracle: fuzz finds counterexamples, Lean proves
# their absence. The Axiom-Math-style code-with-proof gate
# the verified-code/1 schema's Lean variant has been
# pointing at.
"crates/jouleclaw-oracle-lean",
# Wave-56 — Sandbox runtime as a Tier wrapper. Wraps any
# jouleclaw-cascade::Tier in a SandboxRuntime so dispatches
# happen inside a bounded isolation unit with explicit
# capability grants + a sandbox attestation alongside the
# cascade Answer. Trait + reference PassthroughRuntime here;
# real isolation backends (sandbox-rs Wasmtime / Firecracker /
# TEE) implement the same trait downstream. The Rust-source
# binding the wave-49 wire-layer composition was deferring.
"crates/jouleclaw-sandbox-tier",
# Wave-57 — Typed multimodal-view primitive. The 2026
# multimodal-lakehouse pattern (Pixeltable computed columns +
# LanceDB storage) expressed as vendor-neutral types:
# MultimodalSchema + ColumnType (Image/Video/Audio/Document/
# Json/Scalar/Vector) + ComputedColumn (declarative
# transformation, BLAKE3 cache key for incremental
# evaluation) + MaterializedIndex (vector / FTS, auto-synced
# to source) + IteratorView (parent → child explosion) +
# VersionedQuery + BackendStore trait. Reference
# InMemoryStore.
"crates/jouleclaw-multimodal-view",
# Wave-58 — Citation-at-storage-boundary primitive. Typed
# CitationAllowList of permitted source ids the runtime
# enforces BEFORE any cited output is written to durable
# storage. Fabricated citations are dropped at the boundary,
# not post-hoc filtered. Pairs with the worst-counter
# provenance rule + JCR-1 receipts. The conservation
# primitive lifted from Symdue's claim, made vendor-neutral.
"crates/jouleclaw-citation-whitelist",
# Wave-59 — RFC 8785 JSON Canonicalization Scheme. JSON
# track for JCR-1: callers choose CBOR+COSE_Sign1 for
# binary-efficient interop, or JCS for JSON-native ecosystems
# (web tooling, OTel exporters, transparency-log APIs that
# take JSON). Matches the 2026 convergence (Sello, Traceseal,
# OrgKernel — all use Ed25519 + JCS + SHA-256 or similar).
"crates/jouleclaw-jcs",
# Wave-60 — OTel GenAI semantic conventions. Typed gen_ai.*
# attribute namespace + jouleclaw.* substrate extensions
# under a separate namespace so they don't collide with the
# spec. Used by jouleclaw-otel to surface JouleClaw runs in
# every OTel-compatible backend (Phoenix, Langfuse, Datadog,
# Honeycomb) without per-vendor adapters. Tracks the OTel
# GenAI working group spec — the 2026 default substrate for
# LLM observability.
"crates/jouleclaw-otel-genai",
# Wave-61 — OpenInference attribute mapping. Arize's OTel-
# aligned semantic-convention SUPERSET adds AI-specific
# attributes the bare gen_ai.* spec doesn't cover: retrieval
# operations, agent reasoning steps, eval results, tool
# invocations. JouleClaw runs surface in Arize Phoenix,
# Langfuse, OpenLIT, and any OpenInference-aware tool.
"crates/jouleclaw-openinference",
# Wave-62 — Merkle transparency log. Append-only log of
# receipt content hashes with RFC 6962-style Merkle tree +
# inclusion proofs + consistency proofs between tree states.
# BLAKE3 hash (JouleClaw-native) with RFC 6962 leaf / node
# domain separators (0x00 / 0x01) preserved. The auditor-
# grade primitive Sello (Notarized Agents, arxiv 2606.04193)
# named as the missing tier in JouleClaw's stack: any party
# proves a receipt was included without trusting the log
# operator.
"crates/jouleclaw-transparency-log",
# Wave-63 — Theorem-prover Elicitor. Wraps 2026 SOTA Lean 4
# provers (Leanstral, Goedel-Prover-V2, DeepSeek-Prover-V2,
# Kimina-Prover, Aristotle) as candidate PRODUCERS that
# jouleclaw-oracle-lean (the gate) then accepts/rejects.
# Trait-based; per-prover configs are typed; MockProverBackend
# for tests; ProverEnsemble falls through across multiple
# producers. The substrate proposes, the type-checker
# disposes.
"crates/jouleclaw-prover-adapter",
# Wave-64 — HPKE (RFC 9180) confidential JCR-1 receipts.
# X25519-HKDF-SHA256 + HKDF-SHA-256 + ChaCha20-Poly1305.
# Encrypts a receipt body so only the designated recipient
# reads it; verifier proves authenticity offline against the
# outer envelope. The Sello / Notarized-Agents confidential
# payload pattern.
"crates/jouleclaw-hpke",
# Wave-65 — Attestor role typing. SelfAttested |
# Independent | Quorum. AcceptancePolicy { Any |
# AtLeastIndependent | Independent | Quorum } checks a
# receipt's declared role against pinned mediator sets +
# quorum thresholds. The Notarized Agents doctrine:
# independent attestation > self-attestation when the
# receipt is consumed off-host.
"crates/jouleclaw-attestor",
# Wave-66 — OpenAI-compatible HTTP-endpoint types. Drop-in
# /v1/chat/completions + /v1/embeddings + /v1/models. Every
# OpenAI-SDK-shaped client speaks to JouleClaw with no code
# changes; cascade dispatches cheapest-tier-first under the
# hood.
"crates/jouleclaw-openai-api",
# Wave-67 — TokenPowerBench-compat energy benchmark surface
# (AAAI 2026 arxiv 2512.03024). Types + JSON output schema
# for per-scenario joules_per_token + tokens_per_second +
# honest worst-counter provenance.
"crates/jouleclaw-tokenpower-bench",
# Wave-68 — FrugalGPT (Chen et al., arxiv 2305.05176) three-
# component primitives. Router (selects backend) +
# AnswerScorer (rates output) + StopJudger (accept vs
# escalate). FrugalCascade composes the three into one
# solve(query) call with full audit trail.
"crates/jouleclaw-frugalgpt",
# Wave-69 — Cache-Augmented Generation (CAG). Preloaded KV
# cache as a typed first-class object: knowledge corpus
# encoded ONCE into KV cache; queries reuse the cached
# prefix without retrieval. Trait-based KvCacheBackend so
# vLLM APC / SGLang RadixAttention / FusionRAG / CacheBlend
# each conform. The 2026 RAG alternative for fixed-corpus
# tasks (arxiv 2412.15605).
"crates/jouleclaw-cag",
# Wave-70 — Backend determinism probes. Verifies byte-
# identical outputs across repeat-identical / batch-
# invariance / seed-diversity checks. Emits a
# DeterminismReport with the declared mode (vLLM-batch-
# invariant / SGLang-deterministic / Thinking-Machines
# batch-invariant / LLM-42 verified speculation / default)
# so the cascade routes deterministic queries only to
# backends that pass.
"crates/jouleclaw-determinism-check",
# G1 — Categorical typed shapes per Wang & Buehler 2026
# (arxiv 2606.01444). Schema, Copresheaf I_t: S → Set,
# Category of Elements, Endofunctor, Left Kan Extension
# Lan_u I_t. Adds the schema-mutation case the existing
# event-log + graph (fixed-schema endofunctors) didn't have.
# Pairs with jouleclaw-revise::information_criteria (MDL,
# AIC) — those are the gate criterion; this crate is the
# algebra.
"crates/jouleclaw-category",
# G2 — Prime Intellect Verifiers env exporter. Adapter that
# emits a typed VerifiersEnvManifest a Python harness can
# publish via `prime env push`. Maps JouleClaw (Oracle,
# EventLog, Sandbox, JCR-1 receipt) → Verifiers (Rubric,
# state, harness, signed transcript). Closes Lewis Tunstall's
# explicit 2026 "no Rust-native receipt-sealed envs" gap.
"crates/jouleclaw-verifiers-export",
# R3 — Recursive Self-Aggregation scaffold. 2026 test-time-
# compute pattern Lewis Tunstall named. Generator (N
# candidates from a seed) + Scorer + Aggregator (top-K → one)
# in a bounded loop with accept-threshold + max-rounds.
# Composes with jouleclaw-revise (Reviser can be a
# Generator's inner step) and the Scored trait from
# jouleclaw-bounded.
"crates/jouleclaw-rsa",
# R4 — Benchmark shells. Typed shapes + reference graders
# for AlgoTune (Press et al. NeurIPS 2025, $1-per-task
# numerical-program speedup; empirically validates the
# cascade thesis "cheap models with iteration > frontier
# single-shot") and CodeClash (Press et al. 2026, two
# agents writing competing code in arenas, multi-round
# iteration). GeometricSpeedupGrader +
# RoundWinRatioGrader.
"crates/jouleclaw-bench-suite",
# Harness economics — the joint, ungameable metric joules-AND-dollars
# per VERIFIED fix, with the skill-compilation repeat curve that bends
# the marginal cost of recurring work toward zero. The honest answer to
# SWE-bench-%/$-per-task. Reuses cascade + skill; local=energy-priced,
# remote=call-priced.
"crates/jouleclaw-harness-econ",
# Adapter 3 — HF Hub model-weight downloader. Thin wrapper
# around the upstream hf-hub crate with BLAKE3 content-hash
# of every downloaded file (for receipts) + a typed
# DownloadedFile shape. The enabler for jouleclaw-embed-candle
# and jouleclaw-rerank-candle.
"crates/jouleclaw-hf-hub",
# Adapter 4 — Local embedder via Candle. BGE / sentence-bert
# family through candle_transformers::models::bert::BertModel.
# Pooling (CLS/Mean/Last) + L2 normalization. Tokenizer via
# the `tokenizers` crate. The L2 cascade tier's no-API
# backend.
"crates/jouleclaw-embed-candle",
# Adapter 5 — Local cross-encoder reranker via Candle.
# bge-reranker / ms-marco MiniLM family. BERT base + Linear
# classification head; tokenises (query, document) pairs;
# returns [(doc_index, score)] sorted descending. The L2.5
# cascade tier's no-API backend.
"crates/jouleclaw-rerank-candle",
# Paid / hosted embedding-API backends — OpenAI, Voyage,
# Cohere, Jina hosted. Sibling to jouleclaw-embed-candle
# (local). L2 cascade tier's any-cloud backends.
"crates/jouleclaw-embed-api",
# Paid / hosted rerank-API backends — Cohere Rerank v3,
# Voyage rerank, Jina hosted reranker. Sibling to
# jouleclaw-rerank-candle (local). L2.5 cascade tier's any-
# cloud backends.
"crates/jouleclaw-rerank-api",
# Skills-curator loop — an agent rewrites a skill definition
# from observed session traces. Vincent's OpenClaw dot.skills
# self-improvement loop as typed Rust. Composes jouleclaw-llm
# (backend) + the SkillDefinition / SessionTrace shapes.
"crates/jouleclaw-skill-curator",
# Coherence / waffling detector — typed score over an agent
# trace surfacing when the agent is bullshitting (hedge
# density, vague pronouns, fillers, repeated 6-grams).
# Distinct from jouleclaw-stuck (pattern-matching for
# repeat-intent); semantic-quality detector for the
# supervisor's pathology probe set.
"crates/jouleclaw-coherence",
# ActiveGraph (Nakajima 2026, arXiv 2605.21997) ingest —
# fork + structural-diff over jouleclaw-event-log. Replay
# determinism JouleClaw already had; fork-at-any-event and
# typed diff between branched projections is what this crate
# adds. Composes with the existing event-log + content-
# addressed cache for full event-sourced agent state.
"crates/jouleclaw-event-fork",
# Graphify (safishamsi/graphify, 2026) ingest — corpus →
# typed graph (GraphBuilder + LexicalCodeBuilder), community
# detection (CommunityDetector + ConnectedComponents),
# token-budgeted subgraph query (BudgetedQuery +
# LexicalBudgetedQuery). Reuses jouleclaw-graph-rag's
# Entity/Edge/KnowledgeGraph primitives; deterministic-first
# reference impls (tree-sitter + Leiden wireable as later
# features).
"crates/jouleclaw-codegraph",
# Bitemporal claim primitive — BitemporalClaim<T> with
# valid_time + transaction_time, supersession + lineage,
# as_of(reference_time, txn_cutoff) projection. Closes the
# absent-time gap in the 2026 knowledge-management stack
# (none of Notion/Obsidian/NotebookLM/Karpathy-wiki/mem0/
# LangMem/Cognee/GraphRAG carry valid_time; only Zep's
# Graphiti does). Generic primitive: composes into
# jouleclaw-memory (Fact gains canonical bitemporal
# envelope) and jouleclaw-fresh (RetrievedClaim gains
# valid-window). Reference time lives on the QUERY (recorded
# on AsOfReceipt), so the resolution is forever stamped
# with the temporal frame the consumer chose.
"crates/jouleclaw-bitemporal",
# Adjudication primitive — typed "who held the ruler, how,
# at what cost, independent of the seller?" stamp.
# AdjudicatedClaim<T> + VerificationStamp + Adjudicator +
# VerificationMethod (Mechanical / Statistical / Human /
# Crowd / External / SelfClaimed) + VerificationDecision
# (Pass / Refute / Inconclusive). Load-bearing query:
# `unbuyable()` — at least one Pass from an adjudicator
# independent of the seller. The substrate expression of
# the conversation's "a signal only counts if the bar is
# adjudicated by someone other than the seller." Distinct
# from jouleclaw-prov (who CREATED the artifact) and
# jouleclaw-verify (in-process verification harness).
"crates/jouleclaw-adjudication",
# Recombination provenance — typed UpstreamRef +
# Origin (Original | Recombination { upstream }) +
# RecombinationStamp + BorrowedAdjudication. Records what
# fraction of an artifact came from each upstream and how
# much NOVELTY MASS remains (the fraction needing fresh
# adjudication). Load-bearing query:
# `BorrowedAdjudication::unbuyable()` — passes via inherited
# path (fully covered by upstream unbuyable stamps) OR
# fresh path (claim has its own independent stamp). Closes
# the conversation gap: AI coding "works" because it
# inherits open-source verification, but borrowed stamps
# don't auto-cover novelty. Resemblance alone never passes.
"crates/jouleclaw-recombination",
# RCE ports 1/2/5 — Reason + Currency + Foreman.
# Port of joulesperbit/crates/rce primitives that JouleClaw
# lacked: first-class verifiable PURPOSE (Reason), first-
# class verifiable FRESHNESS (Currency), and the typed
# ForemanResponse { Resolved | Defer | Reject } escalation
# envelope + LlmForeman adapter wrapping any LlmBackend.
"crates/jouleclaw-reason",
"crates/jouleclaw-currency",
"crates/jouleclaw-foreman",
# RCE port 3 — HandlerSpec 10-variant typed interpreter.
# The load-bearing "compile AI into determinism" primitive:
# Passthrough / Constant / Project / Validate / Wrap /
# Pipeline / AlwaysEscalate / AlwaysError / IfHasField /
# GeneratedRust (the last carries source for audit + a
# safe fallback the runtime actually executes). HandlerResult
# { Ok | Escalate | Error } as the three corners every
# handler resolves to. JSON-described, content-hashable,
# sealable into JCR-1 receipts. Significantly richer than
# jouleclaw-skill::Procedure (which has only 3 variants).
"crates/jouleclaw-handler-spec",
# RCE port 4 — 9-step typed PromotionStep gate +
# PromotionRecord + InMemoryPromotionPathStore. Makes the
# promotion discipline auditable: PrototypeWritten →
# SchemaValidated → CurrencyChecked → RustGenerated →
# CompilerPassed → PropertyTested → FormallyVerified →
# ReasonAttached → Promoted. No skipping, no backtracking,
# sealed at Promoted. Each gate carries an evidence_hash
# the substrate can later re-verify. Composes with
# handler-spec (body being promoted), currency (gate 3),
# reason (gate 8).
"crates/jouleclaw-promotion-path",
# RCE port 5 (originally tagged port 6 in audit) — Hindsight
# engine. Observation → Insight → Recommendation lifecycle
# for NODE-LEVEL graph mutation. Four FeedbackKind classes
# (FixTheCode / AdaptTheGraph / InvalidateReason /
# ParadigmPressure) classify the correction; six
# RecommendedAction variants (ReplaceHandler / AddNode /
# RemoveNode / Reroute / RevalidateReason /
# RecordParadigmPressure) carry the graph-mutation payload.
# Distinct from jouleclaw-reflection (cascade-tier scheduling
# Promote/Demote/KeepAsIs); the two compose — reflection
# reorders the cascade, hindsight rewrites the graph.
"crates/jouleclaw-hindsight",
# Tool-call repair primitive — absorbs Ahmad Awais (Command
# Code, ~600B tokens/day) insight: open-weight LLMs
# (DeepSeek V4 Pro, Kimi K2, MiniMax) have specific tool-call
# mis-shaping variations they REPEAT 50+ times instead of
# correcting from a returned schema error. The fix is at the
# HARNESS layer: detect deterministically, repair the call,
# return the result + a hint so the model learns. Provides
# DetectPattern (6 variants) + RepairAction (5 variants) +
# RepairRule + RepairLibrary + a `presets` module with
# reference rules for the variations Ahmad called out.
"crates/jouleclaw-toolcall-repair",
# KL-delta accumulator (Ahmad's TASTE primitive). Records
# ONLY THE DELTA between what a model would do by default
# and what the user is observed to prefer. Distinct from
# jouleclaw-skill-curator (one-shot LLM rewrite) — taste is
# continuous, deterministic, per-repo. Includes the typed
# MERGE primitive Ahmad explicitly punted on: conflicts
# surface as typed MergeConflict shapes for human review or
# strategy-driven auto-resolution. PR-reviewable markdown
# emission so the file lives in git, not in a model.
"crates/jouleclaw-taste",
# Agentic authorization telemetry — tracks Abdel Fang
# (Open A2A) OTel semconv proposal (issue 180). Typed
# AgentIdentity with Ed25519-anchored capability declaration,
# AuthorizationDecision { Allow | Deny { reason } },
# AuthorizationSpan with agent.id + agent.public_key +
# capability + decision path + trust/drift scores.
# Capability-first allow-list semantics — system prompt as
# security guardrail is structurally precluded. Closes the
# gap between jouleclaw-prov (CLAIM provenance) and
# agent-action authorization.
"crates/jouleclaw-agent-auth",
# Typed workflow-vs-agent dispatch decision. Encodes the
# operational cheat-sheet (high-stakes / well-defined I/O /
# cost-sensitive → Workflow; reasoning-heavy / high edge-case
# volume / human-in-loop available → Agent) as deterministic
# rules. Returns a Recommendation with typed RuleHit
# rationale (auditable: "why did this query go through the
# agent?"), detects drift across two ProcessCharacteristics
# snapshots, and emits Hybrid recommendations when
# saturation signals (high support count + low unobserved
# branches) suggest the agent's resolutions are ready to
# promote to a deterministic workflow.
"crates/jouleclaw-dispatch-profile",
# Typed (model, harness-conditions) tuple as substrate
# identity. Same model behaves differently under different
# harness conditions: tool-call repair on/off, permission
# mode, multimodal attachments, coherence supervisor,
# decoding grammar, system-prompt overlay. Routing /
# reflection / dispatch crates key on the tuple, not on
# bare model id. content_hash() is the substrate cache key;
# wire() emits a compact model@hash[..12] tag for spans.
"crates/jouleclaw-harness-profile",
# RCE port — engine-internal CommsFabric. Per-node bounded
# FIFO mailboxes + tick-driven heartbeat liveness monitor.
# Distinct from jouleclaw-wire / jouleclaw-mcp /
# jouleclaw-a2a (external protocol surfaces); this is the
# runtime's internal fabric for node-to-node messaging +
# supervisor liveness detection. Substrate-clean: caller
# supplies tick (no Instant::now).
"crates/jouleclaw-comms-fabric",
# RCE port — brownfield onramp. Take an existing codebase
# corpus + produce typed knowledge: CodebaseMap of modules
# / functions / external deps, InferredReason with typed
# ReasonConfidence (Documented / Institutional / Inferred /
# Lost — never guess), ReverseCompileResult naming the
# explicit holes (missing reasons, currency gaps). Distinct
# from jouleclaw-codegraph (which builds a queryable graph
# for retrieval); brownfield understands existing code at
# its own level so a deterministic substrate can be
# retrofitted on top. Substrate-clean: accepts
# &[(PathBuf, String)]; v0 Rust lexical extractor handles
# the demonstrator (jouleclaw-rs itself).
"crates/jouleclaw-brownfield",
# Agentic-authorization telemetry (OTel semconv proposal:
# identity + capability + trust/drift score + fine-grained
# decision path on spans).
#
# jouleclaw-trust — per-agent trust + drift scoring ledger fed
# by typed TrustSignals (policy denies, capability violations,
# verification failures). Pairs the bounded trust score with
# jouleclaw-drift's two-detector classification over the score
# series. A behavioral prior, never a security boundary.
"crates/jouleclaw-trust",
# jouleclaw-otel-authz — projects AgentIdentity (did:key +
# public key), the requested capability, TrustSnapshot scores,
# and jouleclaw-policy's TracedDecision into a parent authz
# span + one child span per DecisionStep. Pure projection on
# top of jouleclaw-otel's SpanData.
"crates/jouleclaw-otel-authz",
"crates/jouleclaw-jcp",
"crates/jouleclaw-corpus",
]
[workspace.package]
version = "0.1.0"
edition = "2024"
rust-version = "1.97"
license = "Apache-2.0"
repository = "https://github.com/Transaction-Science/open-standards"
authors = ["JouleClaw Contributors"]
description = "JouleClaw — energy-optimised AI runtime. Apache-2.0 Rust reference implementation."
[workspace.dependencies]
# Core
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_cbor = "0.11"
serde_yml = "0.0.12"
toml = "0.8"
thiserror = "2"
blake3 = "1"
sha2 = "0.11"
base64 = "0.22"
# Wave-7 — close-the-gaps deps
ciborium = "0.2" # CBOR for EAT-CWT + CoRIM (IETF RATS WG canonical CBOR codec)
ed25519-dalek = "2" # Ed25519 signing — rustcrypto, widely audited
quick-xml = "0.41" # Maltego TRX XML round-trip (serde-feature)
safetensors = "0.4" # HuggingFace SAE weight loader (Gemma Scope 2 alignment)
# DB-grade verification + error tracking primitives (wave-4 ingest)
crc32c = "0.6" # Castagnoli CRC32C — Postgres 18 / RocksDB default
sketches-ddsketch = "0.3" # α-relative-error quantile sketches (Masson 2019)
hdrhistogram = "7" # JVM-interop opt-in (Gil Tene)
cardinality-estimator = "1" # HLL++ with sparse representation
probabilistic-collections = "0.7" # Count-Min Sketch reference
xorf = "0.12" # BinaryFuse{8,16,32} static membership
syn = { version = "2", features = ["full", "visit"] } # AST walk for cognitive complexity
regex = "1"
chrono = { version = "0.4", default-features = false, features = ["clock", "serde", "std", "wasmbind"] }
uuid = { version = "1", features = ["v4", "v5", "v7", "serde", "js"] }
# Optional HTTP (feature-gated in jouleclaw-tools)
reqwest = { version = "0.13", default-features = false, features = ["rustls", "json"] }
# Numerics + tensors
half = "2"
bytemuck = { version = "1", features = ["derive"] }
# Async runtime
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "fs"] }
async-trait = "0.1"
# Telemetry
tracing = "0.1"
# Hardware energy telemetry — pinned where production-ready (from wave-1 research)
nvml-wrapper = "0.10" # NVIDIA discrete GPU, production-ready
# Testing
proptest = "1"
insta = "1"
tempfile = "3"
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
panic = "abort"
strip = "symbols"
[profile.release-with-debug]
inherits = "release"
debug = true
strip = "none"