The declared MSRV had drifted into three tiers — 1.85, 1.96, and one 1.96.0 — none of them the compiler the code is actually built and pinned against (now 1.97.1, rust-toolchain.toml). Raising the floor to 1.97 makes the support commitment honest: it states the oldest compiler these standards are actually verified on, rather than a floor no CI ever exercises. This is the deliberate MSRV bump that the 1.97.1 toolchain PR explicitly left out, because raising a library's floor is a support-policy decision, not an automatic consequence of moving a build box. Done here as its own change, on request. 26 workspace manifests, minor-version precision to match the repo's dominant style. sandbox-rs (was 1.85) and eoc-rs (was 1.96) build + test clean under the pin. Co-Authored-By: Claude Opus 4.8 <[email protected]>
1224 lines
59 KiB
TOML
1224 lines
59 KiB
TOML
[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.36" # 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"
|