open-standards/jouleclaw/conformance/v1/breaker-trips-on-budget-exhaust/README.md
Transaction Science 0074239638 jouleclaw v0.1 polish: LawfulTier trait, jouleclaw-edge port,
conformance vectors, ROADMAP

874 tests pass workspace-wide, 0 fail, 52 ignored.

jouleclaw-cascade::lawful (NEW)
  LawfulPrimitive trait + LawfulRegistry + LawfulHit. The L1 trait
  surface every consumer can plug their lexicon into. Tiny by design
  — three methods (id, try_resolve, declared_cost_uj). Pattern-lang's
  pattern-core + cortex-ir synthesizer is the largest known consumer
  (688+ primitives); smaller consumers ship a handful of arithmetic
  helpers. Runtimes that ship no lawful library construct an empty
  registry and the cascade walks past L1 to L2. 5 unit tests
  passing.

jouleclaw-edge (NEW — replaces deferred joule-edge port)
  End-to-end edge demo + LawfulRegistryTier shim. Registers every
  portable JouleClaw tier (EbmTier, MrlTier, LiquidTier, PrismTier,
  LmmTier) plus an L1 wrapper that delegates to a consumer-supplied
  LawfulRegistry. `cargo run --bin jouleclaw-edge` prints the
  cascade trace for 6 representative queries. The OpenIE-IP-bound
  tier types (joule_l1::LawfulTier/PlannerTier/WorldModelTier,
  lean_bridge::LeanProofTier, synth::SynthesisTier) were dropped
  during the port — they re-enter at the consumer site through the
  registry shim and any consumer-side tiers the consumer cares to
  register. 3 lib tests passing.

conformance/v1 (3 wire vectors)
  cache-hit/                          — L0 repeat-query receipt
                                        with empty tools_touched
  breaker-trips-on-budget-exhaust/   — thermodynamic kill-switch
                                        proof (budget_uj=100 vs L3
                                        inference estimate)
  joule-mcp-cbor-negotiation/        — 4-row capability handshake
                                        matrix (the canonical tag
                                        is x-jouleclaw/joule-mcp@1)

  Each vector ships input.txt + receipt.json + README.md. Receipt
  bodies use the standard Receipt schema from jouleclaw-prov.

ROADMAP.md
  Plans the deferred work explicitly:
    near-term (v0.2): gemma4 port, edge-server, conformance vector
                      population, SHA256SUMS + release signature
    medium-term (v0.3): split jouleclaw-omni into separate per-
                        subsystem crates (hal/tensor/diffusion/
                        musicgen/whisper/gaussian3d/video/fusion/
                        modality-*); extract jouleclaw-backend-{cuda,
                        rocm,vulkan} from the omni HAL
    long-term (v1.0): multi-machine cascade; hardware-attested
                      receipt schema v2; second-language reference
                      impl (Go or Zig)
  Explicitly NOT on the roadmap: training framework, a specific
  signing key topology, a blessed retrieval API.

Public sites (separate commits below)
  transaction.science main site → 5-card open-standards grid live
                                  (commit 93638bb earlier)
  jouleclaw.transaction.science → custom landing page live with
                                  cascade tiers, provenance honesty,
                                  reference-impl crates surface,
                                  stewardship pattern
  Caddyfile @jouleclaw route deployed to 10.10.10.3, reload OK
  deploy/manifest.toml + site-ops Caddyfile entries committed

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-26 22:24:13 -04:00

1.6 KiB

Conformance vector — breaker-trips-on-budget-exhaust

Exercises the thermodynamic circuit breaker. A runtime that escalates through tiers MUST trip the breaker the instant measured J_consumed > J_allocated and MUST NOT continue dispatch.

What the runtime does

  1. Receives input.txt — a query designed not to hit L0/L1/L2 and to require an L3 model.
  2. The caller sets budget_uj = 100 (intentionally too low for L3 model inference). L3's estimate exceeds the remaining budget.
  3. Per the spec, the runtime MUST NOT dispatch L3. It MUST trip the breaker and emit a receipt with tier == "L4"-style escape only if L4 is configured AND fits the budget; otherwise the receipt records the final state as Refused (output.refused.reason "BudgetExhausted").

Acceptance bounds

The receipt MUST satisfy one of:

  • output.refused.reason == "BudgetExhausted" AND no L3 tier appears in tools_touched, OR
  • tier == "L0" or "L1" or "L2" AND joules_uj <= 100

A runtime that lets an L3 model invocation run past the budget — even if it eventually returns an answer — is non-conformant. The breaker is the load-bearing safety primitive of this standard.

Files

  • input.txt — the query
  • budget.json — { "budget_uj": 100 }
  • receipt.json — canonical refusal receipt the implementation must reproduce (modulo id and closed_at)

Why this vector matters

Without an enforceable circuit breaker, the "energy-first cascade" is a suggestion, not a guarantee. This vector is the proof that JouleClaw's honesty contract is observable from the outside.