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

42 lines
1.6 KiB
Markdown

# 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.