smart-byte: unbreak the build, and add CI for the three standards workspaces #58
Closed
dcharlot
wants to merge 14 commits from
ci-standards-workspaces into main
pull from: ci-standards-workspaces
merge into: Transaction-Science:main
Transaction-Science:main
Transaction-Science:wai/quantum-release-prep
Transaction-Science:wai/quantum-parse-depth
Transaction-Science:wai/quantum-cli-energy-estimate
Transaction-Science:wai/quantum-planner-contract
Transaction-Science:wai/quantum-landscape-capacity
Transaction-Science:wai/quantum-wasmq
Transaction-Science:wai/quantum-synth-rz-reference
Transaction-Science:wai/quantum-estimate-reaction-clock
Transaction-Science:wai/quantum-landscape-fpga
Transaction-Science:wai/quantum-reader-scaling
Transaction-Science:jouleclaw/north-decode-speed
Transaction-Science:wai/quantum-landscape-gpu
Transaction-Science:wai/quantum-cross-simulator-corpus
Transaction-Science:wai/quantum-writer
Transaction-Science:wai/quantum-check-exercise
Transaction-Science:wai/quantum-landscape-emulator
Transaction-Science:ci/quantum-archive-mtime
Transaction-Science:ci/gate-pool
Transaction-Science:wai/quantum-published-architecture-check
Transaction-Science:wai/quantum-receipt-fields
Transaction-Science:wai/quantum-cloud-tasks
Transaction-Science:ci/quantum-emulator-in-job
Transaction-Science:wai/quantum-service-write
Transaction-Science:fix/fake-stack-reverse-lookup
Transaction-Science:ci/energy-hardware-fetch-by-sha
Transaction-Science:wai/quantum-namespace
Transaction-Science:wai/conform-output
Transaction-Science:wai/neural-corpus-licence
Transaction-Science:wai/compact-return-profile
Transaction-Science:wai/det-module-profile
Transaction-Science:wai/carousel-monotone-inband
Transaction-Science:wai/toolchain-keys
Transaction-Science:fix/fake-stack-no-reverse-lookup
Transaction-Science:fix/origin-503-reset
Transaction-Science:wai/timeliness-ladder-scheduler
Transaction-Science:wai/marks
Transaction-Science:test/relay-loop-port-race
Transaction-Science:sandbox/proof-tee-msr
Transaction-Science:meters/clippy-clean
Transaction-Science:wai/det-module-checkers
Transaction-Science:ci/neural-pin-and-windows-byte-equality
Transaction-Science:mesh-meter/smc
Transaction-Science:wai/ad-consent-supply-chain
Transaction-Science:wai/toolchain-fixes
Transaction-Science:wai/hls-cues-delivery-decision
Transaction-Science:wai/prior-carriage-spec
Transaction-Science:wai/det-source-fixes
Transaction-Science:wai/one-way-delivery
Transaction-Science:chore/shared-append-points-files
Transaction-Science:mesh-meter/min-window
Transaction-Science:jcp-energy/rapl-msr
Transaction-Science:jouleclaw-energy/rapl-msr
Transaction-Science:mesh/ingest-reconcile-2
Transaction-Science:eoc-meter/rapl-msr
Transaction-Science:proof-cascade/rapl-msr
Transaction-Science:sandbox-meter/rapl-msr
Transaction-Science:jouleclaw-energy/smc-consumers
Transaction-Science:wai/quantum-llms-names
Transaction-Science:jouleclaw-energy/smc-system
Transaction-Science:wai/quantum-contract-baselines-0.8.1
Transaction-Science:wai/wave-a
Transaction-Science:wai/co-floor-schedule-change
Transaction-Science:wai/quantum-release-0.8.1
Transaction-Science:mesh/ingest-reconcile
Transaction-Science:wai/quantum-service-tasks
Transaction-Science:wai/quantum-service-rerun
Transaction-Science:mesh/decision-training-provenance
Transaction-Science:test/timing-under-load
Transaction-Science:wai/inspect-carousel-holdings-b
Transaction-Science:wai/quantum-optimize-resume-2
Transaction-Science:chore/rust-latest-stable
Transaction-Science:energy-compare/prereg
Transaction-Science:test/relay-door-race
Transaction-Science:wai/quantum-cli-provider-tasks
Transaction-Science:wai/quantum-service-idempotency-2
Transaction-Science:wai/contribution-link-magic
Transaction-Science:wai/inspect-carousel-holdings
Transaction-Science:wai/carousel-schedule
Transaction-Science:ci/gates-off-arm64-r2
Transaction-Science:ci/proof-shards-to-96
Transaction-Science:ci/drop-msrv-floor
Transaction-Science:ci/proof-gate-sigpipe
Transaction-Science:wai/quantum-studio-service-retry
Transaction-Science:wai/holdings
Transaction-Science:wai/media-inspect
Transaction-Science:ci/gates-off-arm64
Transaction-Science:wai/quantum-optimize-resume
Transaction-Science:wai/quantum-service-idempotency
Transaction-Science:wai/quantum-desktop-0.1.2
Transaction-Science:chore/rust-1.99.1-now
Transaction-Science:wai/tariff-v6-b
Transaction-Science:wai/quantum-provider-jobs-2
Transaction-Science:jcp/replay-class
Transaction-Science:wai/quantum-provider-jobs
Transaction-Science:relay/fanout-shards
Transaction-Science:wai/avs3-probe-panic
Transaction-Science:sense/injected-observation
Transaction-Science:room/draw-on-new-frame
Transaction-Science:sandbox/transcript-continuation
Transaction-Science:relay/fanout-load
Transaction-Science:wai/quantum-desktop-0.1.1-b
Transaction-Science:chore/rust-1.99.1-on-main
Transaction-Science:wai/upscale-tonemap-door
Transaction-Science:wai/tariff-v6
Transaction-Science:wai/quantum-desktop-0.1.1
Transaction-Science:wai/third-party-hop
Transaction-Science:chore/rust-1.99.1-current
Transaction-Science:sec/zip-extract-abort
Transaction-Science:wai/quantum-desktop-read-only-volume
Transaction-Science:joulespec/applied
Transaction-Science:wai/quantum-desktop-update-key
Transaction-Science:wai/quantum-contract-baselines-0.8.0
Transaction-Science:joulespec/e4-bridge
Transaction-Science:wai/route-outputs
Transaction-Science:wai/quantum-release-0.8.0
Transaction-Science:joulespec/self-conformance
Transaction-Science:sec/crypto-bigint-unyanked
Transaction-Science:joulespec/research-pass
Transaction-Science:joulespec/standard-v0.1
Transaction-Science:wai/quantum-registration
Transaction-Science:wai/quantum-gpu-resident
Transaction-Science:wai/quantum-scale-out
Transaction-Science:wai/ledger-physics
Transaction-Science:wai/quantum-variational
Transaction-Science:wai/quantum-interchange
Transaction-Science:wai/route-physics
Transaction-Science:wai/ledger-work-priced
Transaction-Science:ci/arm64-no-debuginfo
Transaction-Science:wai/quantum-pulse
Transaction-Science:wai/quantum-desktop-release
Transaction-Science:test/srt-burst-mid-stream
Transaction-Science:sec/wasmtime-49.0.5
Transaction-Science:wai/routed-jobs-ledger
Transaction-Science:wai/routed-jobs
Transaction-Science:wai/fast-channel-guide
Transaction-Science:ci/quantum-set-path-skip-linux
Transaction-Science:scripts/public-text-checks-cover-oer
Transaction-Science:wai/fast-statement-check
Transaction-Science:proof/ioreport-same-subscription
Transaction-Science:wai/fast-revenue-share
Transaction-Science:wai/relay-ws-close-drain-2
Transaction-Science:wai/quantum-members-on-the-studio
Transaction-Science:ci/macos-x86_64-on-intel
Transaction-Science:wai/relay-ws-close-drain
Transaction-Science:wai/quantum-py-on-index
Transaction-Science:wai/quantum-npm-package
Transaction-Science:wai/flake-fixes-relay-energy
Transaction-Science:wai/installer-version-test
Transaction-Science:wai/quantum-cli-0.2.2
Transaction-Science:hotfix/room-empty-on-91cfa9d0
Transaction-Science:room/viewer-of-an-empty-room
Transaction-Science:wai/quantum-mcp-registry
Transaction-Science:wai/install-0.4.0
Transaction-Science:wai/quantum-baselines-0.7.0
Transaction-Science:wai/release-0.4.0
Transaction-Science:wai/quantum-wave5b
Transaction-Science:wai/ops-catalogue
Transaction-Science:wai/quantum-wave5
Transaction-Science:wai/studio-web
Transaction-Science:wai/breaking-conform
Transaction-Science:wai/quantum-ecosystem
Transaction-Science:wai/quantum-qsynth
Transaction-Science:wai/quantum-qasm3
Transaction-Science:wai/quantum-qlsp
Transaction-Science:wai/quantum-qbyoq
Transaction-Science:wai/fleet
Transaction-Science:wai/quantum-qpy
Transaction-Science:wai/quantum-qdoor
Transaction-Science:wai/relay-ws-ping
Transaction-Science:wai/dvr-windows-positional
Transaction-Science:wai/quantum-study-2
Transaction-Science:fix/srt-tests-first-send-losses
Transaction-Science:wai/quantum-study
Transaction-Science:wai/create-2
Transaction-Science:wai/dx-agent-mcp-2
Transaction-Science:wai/dx-a-examples-2
Transaction-Science:fix/srt-close-after-drain
Transaction-Science:wai/dx-a-examples
Transaction-Science:wai/create
Transaction-Science:train/wai-e
Transaction-Science:wai/dx-agent-mcp
Transaction-Science:wai/quantum-converge
Transaction-Science:wai/quantum-taste-r2
Transaction-Science:wai/sdk-native-apple
Transaction-Science:wai/quantum-taste
Transaction-Science:wai/quantum-novelty
Transaction-Science:wai/quantum-locks-r2
Transaction-Science:wai/messaging-calls
Transaction-Science:sec/zstd-avx2-2026-10-26
Transaction-Science:sec/zstd-2026-10-26
Transaction-Science:wai/remote-input-seal
Transaction-Science:wai/quantum-locks
Transaction-Science:wai/room-remote
Transaction-Science:wai/sdk-native-android
Transaction-Science:sec/allow-reasons-verified
Transaction-Science:wai/quantum-studio-origin-words
Transaction-Science:ci/compile-once
Transaction-Science:wai/ingest-srt-rist
Transaction-Science:wai/encode-avc-hevc
Transaction-Science:wai/world-on-moq
Transaction-Science:wai/remote-desktop
Transaction-Science:train/pack-stack
Transaction-Science:wai/ingest-ertmp-scte104
Transaction-Science:wai/quantum-0.6.15-history
Transaction-Science:wai/quantum-studio-workbench
Transaction-Science:wai/quantum-attributed-history
Transaction-Science:ci/energy-step-retry
Transaction-Science:wai/quantum-0.6.15
Transaction-Science:wai/relay-cascade
Transaction-Science:wai/audit-kit
Transaction-Science:wai/receipt-ledger
Transaction-Science:chore/rust-1.99.1
Transaction-Science:wai/ssai-stitched
Transaction-Science:wai/key-release
Transaction-Science:wai/quantum-discover
Transaction-Science:wai/quantum-qasm-generators
Transaction-Science:wai/int-decode-fast
Transaction-Science:train/wai-c
Transaction-Science:wai/quantum-service-client-identity
Transaction-Science:wai/energy-honesty
Transaction-Science:fix/floor-input-chain-order
Transaction-Science:wai/energy-sink-metering
Transaction-Science:wai/energy-truth
Transaction-Science:train/live-room-d
Transaction-Science:sec/unsound-bumps-2026-10
Transaction-Science:wai/delivery-bindings
Transaction-Science:fix/quick-xml-normalized-value
Transaction-Science:sec/after-443-b
Transaction-Science:wai/energy-waste
Transaction-Science:sec/ci-python-pins
Transaction-Science:wai/determinism-cost
Transaction-Science:wai/gpu-int-tier
Transaction-Science:sec/after-443-2026-10-22
Transaction-Science:sec/advisory-sweep-2026-10
Transaction-Science:sec/rust-advisories-2026-10
Transaction-Science:wai/avatar-telepresence
Transaction-Science:wai/ops-npu
Transaction-Science:wai/registrations-b3r
Transaction-Science:wai/scene-priors
Transaction-Science:sec/rustsec-2026-10
Transaction-Science:fix/x402-refuse-unimplemented-scheme
Transaction-Science:fix/passport-no-espr
Transaction-Science:train/wai-2026-10-22
Transaction-Science:wai/cross-fabric
Transaction-Science:fix/eoc-route-cheapest
Transaction-Science:fix/backend-apple-lints
Transaction-Science:feat/tdx-hardware-check
Transaction-Science:wai/pq-receipts
Transaction-Science:wai/dred-exact
Transaction-Science:train/live-room
Transaction-Science:wai/soft-binding-evidence
Transaction-Science:wai/co-watch
Transaction-Science:wai/gain-maps
Transaction-Science:wai/splat-exact
Transaction-Science:wai/telemetry-aggregate
Transaction-Science:wai/exact-upscale
Transaction-Science:wai/quantum-0.6.14
Transaction-Science:wai/pack-efficiency
Transaction-Science:wai/synthesis-mark
Transaction-Science:wai/exploration
Transaction-Science:wai/ad-presentation
Transaction-Science:wai/mark-sync
Transaction-Science:fix/loader-gguf-lints
Transaction-Science:wai/access-services
Transaction-Science:wai/co-performance-live
Transaction-Science:fix/sandbox-vector-drift
Transaction-Science:fix/e2e-window-wait
Transaction-Science:wai/influence
Transaction-Science:wai/pp-admission
Transaction-Science:wai/takedown
Transaction-Science:fix/routing-plan-carries-its-class
Transaction-Science:wai/quantum-codesign-lens
Transaction-Science:wai/shared-lists
Transaction-Science:feat/tdx-pck-chain
Transaction-Science:wai/settlement
Transaction-Science:joule-moq/multi-draft
Transaction-Science:wai/browser-binding
Transaction-Science:wai/bearers
Transaction-Science:feat/sandbox-hardware-check
Transaction-Science:wai/direction
Transaction-Science:wai/co-performance
Transaction-Science:wai/age-assurance
Transaction-Science:fix/dash-bounds-interleave
Transaction-Science:wai/quantum-codesign
Transaction-Science:wai/contribution
Transaction-Science:feat/sandbox-tdx-run-path
Transaction-Science:fix/track-kind-name
Transaction-Science:wai/ietf-draft
Transaction-Science:feat/sandbox-run-flow
Transaction-Science:wai/ai-usage
Transaction-Science:feat/jcp-wire-evidence
Transaction-Science:wai/synthesis
Transaction-Science:wai/quantum-branching-threads-pinned
Transaction-Science:feat/sandbox-run-binding
Transaction-Science:fix/wt-close-linger
Transaction-Science:fix/routing-joules-is-an-estimator
Transaction-Science:feat/jcp-window-caveat
Transaction-Science:fix/attest-vendor-offsets
Transaction-Science:wai/deriving-edge
Transaction-Science:wai/c2pa-live
Transaction-Science:fix/mesh-energy-span-scope
Transaction-Science:feat/compliance-product-liability
Transaction-Science:feat/mesh-weights-change-record
Transaction-Science:wai/ops-gpu
Transaction-Science:feat/receipts-bind-the-output
Transaction-Science:wai/quantum-cli-formulae-private
Transaction-Science:wai/quantum-cli-release-static
Transaction-Science:fix/gguf-cast-alignment
Transaction-Science:joule-moq/e2e-service-seek
Transaction-Science:wai/quantum-0612-land
Transaction-Science:joule-moq/e2ee-web
Transaction-Science:fix/kv-cache-attn-layer-count
Transaction-Science:feat/metal-ratchet
Transaction-Science:wai/quantum-tn-restarts
Transaction-Science:wai/quantum-studio-svg
Transaction-Science:wai/quantum-cli-release
Transaction-Science:fix/efficiency-keeps-coverage
Transaction-Science:fix/joule-code-conformance-header
Transaction-Science:wai/quantum-four-surfaces
Transaction-Science:joule-moq/wt-session-close
Transaction-Science:wai/quantum-engine-studio
Transaction-Science:wai/live-ads
Transaction-Science:wai/quantum-studio
Transaction-Science:wai/quantum-engine-browser
Transaction-Science:wai/quantum-engine
Transaction-Science:wai/live-watermark
Transaction-Science:feat/c27-flow-conformance
Transaction-Science:wai/quantum-one-front-end
Transaction-Science:joule-moq/dvr
Transaction-Science:fix/claims-grounded-by-their-own-citations
Transaction-Science:fix/nvml-low-counter-not-a-reading
Transaction-Science:wai/quantum-one-parser
Transaction-Science:fix/jouleclaw-energy-doc-links
Transaction-Science:feat/c25-single-writer-conformance
Transaction-Science:wai/quantum-exact-phase
Transaction-Science:fix/jcp-wire-retry-and-single-writer
Transaction-Science:wai/quantum-0.6.8
Transaction-Science:fix/mesh-journal-single-writer
Transaction-Science:fix/journal-single-writer
Transaction-Science:wai/quantum-sv-thread-floor
Transaction-Science:wai/e2ee
Transaction-Science:debug/branching-determinism
Transaction-Science:fix/cited-item-authority
Transaction-Science:wai/quantum-tn-split-0.6.7
Transaction-Science:wai/quantum-service-cutrank-pr
Transaction-Science:fix/gpu-counter-under-reports
Transaction-Science:wai/quantum-tn-split
Transaction-Science:wai/quantum-service-cutrank
Transaction-Science:wai/quantum-cutrank-0.6.6
Transaction-Science:fix/jcp-gateway-flow-checks-whole-request
Transaction-Science:wai/quantum-dynamic-examples
Transaction-Science:wai/quantum-dynamic-circuits
Transaction-Science:fix/jcp-gateway-gates-tasks-and-mrtr
Transaction-Science:wai/moderation
Transaction-Science:joule-moq/room-live
Transaction-Science:wai/quantum-cutrank
Transaction-Science:wai/quantum-service-energy
Transaction-Science:ci/lean-triggers
Transaction-Science:wai/steering
Transaction-Science:fix/rapl-permission-vs-absent
Transaction-Science:feat/pool-energy-accounted-scheduling
Transaction-Science:joule-moq/ingest
Transaction-Science:joule-moq/harden
Transaction-Science:wai/live-metering
Transaction-Science:tidy/safe-lints
Transaction-Science:wai/quantum-0.6.4-pr
Transaction-Science:aac/release
Transaction-Science:joule-moq/web
Transaction-Science:wai/d2c-m7b
Transaction-Science:jouleclaw/jcs-ecmascript-numbers
Transaction-Science:wai/quantum-service
Transaction-Science:fix/efficiency-outcome-anchor-prior-art
Transaction-Science:fix/joulehook-budget-survives-the-process
Transaction-Science:joule-moq/relay
Transaction-Science:fix/jouleclaw-nvml-sampling-floor
Transaction-Science:tidy/clippy-sweep
Transaction-Science:wai/quantum-0.6.4
Transaction-Science:wai/quantum-noisy-clifford
Transaction-Science:fix/sandbox-s7-audit-trail-survives-restart
Transaction-Science:wai/d2c-m8
Transaction-Science:wai/timed-text
Transaction-Science:wai/live-record
Transaction-Science:wai/d2c-m7a
Transaction-Science:fix/joule-code-joulecontract-no-fabricated-discharge
Transaction-Science:fix/jcp-gateway-replays-its-own-receipts
Transaction-Science:wai/tensor-engine-device-compile
Transaction-Science:wai/live-compose
Transaction-Science:fix/openpay-audit-log-survives-restart
Transaction-Science:fix/jcp-efficiency-undefined-ratio-is-not-zero
Transaction-Science:fix/jcp-trace-undefined-ratio-is-not-zero
Transaction-Science:fix/joulehook-unrecognised-payload-fails-closed
Transaction-Science:wai/capture-take
Transaction-Science:fix/jwp-zstd-decompression-cap
Transaction-Science:fix/openpay-sca-exemption-eur-caps
Transaction-Science:fix/openpay-screening-unrun-is-not-clear
Transaction-Science:wai/live-rooms
Transaction-Science:joule-moq/draft-22
Transaction-Science:wai/quantum-wmma
Transaction-Science:wai/live-events
Transaction-Science:wai/quantum-tensor-cores
Transaction-Science:fix/process-gpu-oracle-pid-time
Transaction-Science:wai/d2c-m6
Transaction-Science:wai/d2c-m5
Transaction-Science:wai/bounds-pass-speed
Transaction-Science:wai/quantum-dataflow-vector
Transaction-Science:wai/o23-loaded-set-cache
Transaction-Science:wai/d2c-m4
Transaction-Science:wai/quantum-npu
Transaction-Science:ci/balance-linux-pools
Transaction-Science:wai/d2c-m3
Transaction-Science:wai/quantum-0.5.0
Transaction-Science:fix/meter-freshness-note
Transaction-Science:wai/d2c-m2-m3
Transaction-Science:wai/extension-duration-limits
Transaction-Science:ci/one-job-for-repo-checks
Transaction-Science:wai/coverage-fuzzing
Transaction-Science:wai/decode-output-limits
Transaction-Science:sandbox/bind-egress-credentials
Transaction-Science:wai/quantum-processors-ci
Transaction-Science:wai/quantum-webgpu-windows
Transaction-Science:wai/quantum-sv-gpu
Transaction-Science:wai/quantum-samplers
Transaction-Science:ci/build-what-changes
Transaction-Science:wai/d7-titles-slice
Transaction-Science:ci/gate-on-pr-diff
Transaction-Science:fix/eoc-meter-gpu-freshness
Transaction-Science:ci/checks-on-arm64
Transaction-Science:mesh/bind-weights-and-precision
Transaction-Science:wai/quantum-every-processor
Transaction-Science:wai/d2c-decoders-on-ops
Transaction-Science:fix/clippy-sweep
Transaction-Science:ci/tests-are-run
Transaction-Science:wai/d7-text-and-browser
Transaction-Science:fix/spec-citations-resolve
Transaction-Science:wai/quantum-run-meter
Transaction-Science:wai/quantum-serve-limits
Transaction-Science:fix/tree-energy-reap-under-load
Transaction-Science:wai/security-gaps
Transaction-Science:fix/in-process-self-read-fold
Transaction-Science:fix/rapl-probe-test-in-step
Transaction-Science:ci/lockfiles-current
Transaction-Science:wai/d2b-bounds
Transaction-Science:wai-quantum-fabric-energy
Transaction-Science:fix/grade-labels-and-windows
Transaction-Science:wai-quantum-webgpu-tile
Transaction-Science:fix/model-based-means-calibrated
Transaction-Science:wai/d7-5-stroke-set
Transaction-Science:wai-quantum-webgpu
Transaction-Science:fix/uncalibrated-model-is-estimate
Transaction-Science:wai/d7-4-vector-checker
Transaction-Science:wai/w4-4-staged-packages
Transaction-Science:wai/d1-record-true
Transaction-Science:wai/d7-3-vector-raster
Transaction-Science:wai/d7-2-vector-formats
Transaction-Science:wai/d7-1-graphics-text
Transaction-Science:feat/tree-delegated-energy
Transaction-Science:feat/meter-model-subprocesses
Transaction-Science:feat/meter-solver-subprocesses
Transaction-Science:fix/no-fabricated-readings
Transaction-Science:revive/joule-code-pack-test
Transaction-Science:wai/reach-builds
Transaction-Science:wai/generate-score-cli
Transaction-Science:revive/jcp-receipt-orphan-doc
Transaction-Science:fix/tree-energy-setup-race
Transaction-Science:sandbox/meter-delta-read
Transaction-Science:wai-quantum-circuit2
Transaction-Science:wai/d2a-operators-crate
Transaction-Science:wai/w3-3-http-receipts
Transaction-Science:wai/d2a-operators-text
Transaction-Science:chore/licence-files-match
Transaction-Science:ci/hygiene-comment
Transaction-Science:feat/gateway-upstream-energy
Transaction-Science:feat/mesh-fidelity-provenance
Transaction-Science:energy/gpu-plausibility-magnitude
Transaction-Science:wai-quantum-fabric
Transaction-Science:feat/orchestrate-journal
Transaction-Science:mesh-meter/process-span
Transaction-Science:wai-quantum-nqs-rectangle
Transaction-Science:fix/wai-burst-race-assertion
Transaction-Science:wai-quantum-nqs-pointgroup
Transaction-Science:ci/pr-diff-path-gate
Transaction-Science:feat/revocation-freshness
Transaction-Science:feat/policy-digest
Transaction-Science:feat/checkpoint-energy
Transaction-Science:wai/w5-4-measure-web
Transaction-Science:wai/strict-ed25519
Transaction-Science:fix/gpu-plausibility-magnitude
Transaction-Science:ci/energy-tests-load-independent
Transaction-Science:wai-quantum-nqs-symmetry
Transaction-Science:wai/audio-provenance
Transaction-Science:fix/energy-tick-floor-proof-sandbox
Transaction-Science:wai/w3-4-playlists-abr
Transaction-Science:wai/w1-6-moq-layers
Transaction-Science:wai/w5-3-session-claim
Transaction-Science:wai/w4-3-packages
Transaction-Science:wai/w1-5-stage-receipts
Transaction-Science:wai/w3-http-delivery
Transaction-Science:wai/w5-staged-measurement
Transaction-Science:wai/w4-wai-pack
Transaction-Science:feat/transparency-log
Transaction-Science:energy/load-robust-tests
Transaction-Science:wai/land-18-staged-browser
Transaction-Science:ci/workflow-guard
Transaction-Science:ci/energy-hardware-linux-hw
Transaction-Science:ci/concurrency-groups
Transaction-Science:feat/mcp-extensions
Transaction-Science:jcp-energy/npu-needs-proof
Transaction-Science:jouleclaw-energy/apple-gpu-share
Transaction-Science:fix/ap2-mandate-authority
Transaction-Science:feat/decision-models
Transaction-Science:wai/land-17-staged-delivery
Transaction-Science:efficiency/energy-trace
Transaction-Science:energy/burn-floor-0-1-j
Transaction-Science:wai/land-16-binary-payloads
Transaction-Science:ci/macos-energy-widen
Transaction-Science:wai/land-14-energy-reporting
Transaction-Science:wai/land-15-key-discovery
Transaction-Science:energy/meters-on-real-linux-hardware
Transaction-Science:wai/land-13-parameter-set-identity
Transaction-Science:wai/land-12-registry-and-text
Transaction-Science:eoc-agent/model-span-provenance
Transaction-Science:energy/cost-keys-named-for-what-they-carry
Transaction-Science:energy/liveness-must-specs
Transaction-Science:openpay/token-independence-test
Transaction-Science:sandbox-meter/process-energy
Transaction-Science:sandbox-meter/cpu-rail-liveness
Transaction-Science:eoc-meter/process-energy
Transaction-Science:jcp-energy/process-energy
Transaction-Science:eoc-meter/cpu-rail-liveness
Transaction-Science:jouleclaw-energy/process-energy
Transaction-Science:jouleclaw-energy/cpu-rail-liveness
Transaction-Science:jcp-energy/cpu-rail-liveness
Transaction-Science:proof-cascade/process-energy
Transaction-Science:proof-cascade/cpu-rail-liveness
Transaction-Science:wai/research-taxonomy-wording
Transaction-Science:wai/land-09-int-mlicpp
Transaction-Science:wai/land-10-receipt-classes
Transaction-Science:wai/land-11-research-notes
Transaction-Science:wai/land-08-energy-classes
Transaction-Science:wai/land-07-int-decode-kernels
Transaction-Science:wai/land-06-ci-headline-tests
Transaction-Science:wai/land-05-prior-nnc
Transaction-Science:wai/land-04-codec-registry
Transaction-Science:wai/land-03-jpegai-no-libm
Transaction-Science:wai/land-02-determinism-tiers
Transaction-Science:feat/wai-video-workflow
Transaction-Science:ci/neural-e2e-guard
Transaction-Science:ci/jcp-pack
Transaction-Science:ci/tier2-packs
Transaction-Science:wai-webcodecs-negotiation
Transaction-Science:ci/macos-energy-backend
Transaction-Science:ci/joule-code-pack
Transaction-Science:joulecontract/run-negative-vectors
Transaction-Science:ci/jouleclaw-arm64-debuginfo
Transaction-Science:ci/run-conformance-verifiers
Transaction-Science:mesh/cost-calibration
Transaction-Science:diagnose/grounding-backing
Transaction-Science:wai/energy-operating-point
Transaction-Science:wai/2030-transport-landscape
Transaction-Science:wai/constraints-and-unidirectional
Transaction-Science:wai/determinism-tier-covers-emitted-medium
Transaction-Science:wai/moq-streaming-format
Transaction-Science:wai/mpeg-ai-part6-mapping
Transaction-Science:wai/prior-carriage-and-derivations
Transaction-Science:wai/receipt-classes-and-key-discovery
Transaction-Science:wai/task-fidelity
Transaction-Science:wai/transparency-emission
Transaction-Science:wai/c2pa-emitter
Transaction-Science:compliance/eu-scale-pack
Transaction-Science:compliance/composite-grade-v2
Transaction-Science:jcp/erasure-tombstone-v2
Transaction-Science:jcp/avoided-energy
Transaction-Science:jcp/erasure-tombstone
Transaction-Science:jcp/environment-binding
Transaction-Science:proof/stub-on-the-wire
Transaction-Science:compliance/composite-grade
Transaction-Science:mesh/context-cost-profile
Transaction-Science:ar-1-on-main
Transaction-Science:jcp/mcp-meta-receipt
Transaction-Science:wai/energy-binding
Transaction-Science:jcp/energy-coverage-relanded
Transaction-Science:jcp/energy-coverage
Transaction-Science:wai/video-byte-equality
Transaction-Science:eoc/multi-tenant-allocation
Transaction-Science:compliance/banding-function
Transaction-Science:sandbox/honest-tier
Transaction-Science:proof/joule-ceiling
Transaction-Science:chore/rust-1.98-and-deps
Transaction-Science:wai-jpegai-full-wasm
Transaction-Science:wai-3d-landscape
Transaction-Science:wai-binding-real-decode
Transaction-Science:wai-determinism-tiers
Transaction-Science:wai-jpegai-wasm-demo
Transaction-Science:wai-jpegai-integrate
Transaction-Science:fix-byte-exact-includes
Transaction-Science:ci-windows-shell
Transaction-Science:jpegai-dequant-derive
Transaction-Science:ci-rust-setup
Transaction-Science:fl2-land
Transaction-Science:ci/cross-workspace-check
Transaction-Science:ci-enable
Transaction-Science:jcp-training-receipt
Transaction-Science:joule-code/repair-grant-literals
Transaction-Science:jcp-gateway-flow-relay
Transaction-Science:jcp-receipt-flow-seal
Transaction-Science:jcp-runtime-flow-gate
Transaction-Science:jcp-flow-witness
Transaction-Science:jcp-flow-lattice
Transaction-Science:rust-toolchain-1.97.1
Transaction-Science:score-binary-on-320fa1e
Transaction-Science:sandbox/cred-injection-2
Transaction-Science:sandbox/credential-injection
Transaction-Science:corpus-embedder-s5
Transaction-Science:jcp/cite
Transaction-Science:receipts-corpus-connector
Transaction-Science:jcp/grant-caveats
Transaction-Science:feat/jpegai-derive-inputs
Transaction-Science:feat/jpegai-weight-tools
Transaction-Science:feat/jpegai-icci-validation
Transaction-Science:jcp/x402-example-settlement
Transaction-Science:jcp/x402-bridge
Transaction-Science:jcp/receipt-payload-hash
Transaction-Science:fix/jpegai-pih-flags
Transaction-Science:feat/jpegai-e2e-chain
Transaction-Science:feat/jpegai-e2e-z
Transaction-Science:feat/jpegai-ton
Transaction-Science:jcp/dual-ceilings
Transaction-Science:feat/jpegai-pih
Transaction-Science:feat/jpegai-bitstream
Transaction-Science:feat/jpegai-icci-net2
Transaction-Science:feat/jpegai-icci-net
Transaction-Science:feat/jpegai-dwt
Transaction-Science:feat/jpegai-color
Transaction-Science:score-binary-rerank
Transaction-Science:feat/jpegai-efl
Transaction-Science:feat/jpegai-lef
Transaction-Science:feat/jpegai-efn
Transaction-Science:feat/jpegai-lsbs
Transaction-Science:feat/jpegai-reconstruct
Transaction-Science:jcp/orchestrate-profile-mapping
Transaction-Science:jpegai-sigma-index
Transaction-Science:hyperscale-floorfix
Transaction-Science:feat/jpegai-pipeline-dequant
Transaction-Science:feat/jpegai-e2e-synthesis
Transaction-Science:recovery/jpegai-decoders
Transaction-Science:wai/jpegai-synthesis-executor
Transaction-Science:jouletag-standard
Transaction-Science:wai/jpegai-gate-fixes
Transaction-Science:wai/int-transformer-executors
Transaction-Science:wai/int-transformer-kernels
Transaction-Science:energy/rapl-nvml-hardware-fixes
Transaction-Science:fix/omni-build-and-gguf-tokenizer
Transaction-Science:jouletable-standard
Transaction-Science:jouleclaw/gguf-decoders
Transaction-Science:wai/confidentiality-freshness
Transaction-Science:joulehook-standard
Transaction-Science:honest-counter-provenance
Transaction-Science:amd-kds-adapter
Transaction-Science:evidence-derived-grounding
Transaction-Science:mapping-physically-rooted-clarify
Transaction-Science:attested-efficiency-demo
Transaction-Science:efficiency-energy-attestation
Transaction-Science:mapping-attested-kernel
Transaction-Science:energy-counter-attestation
Transaction-Science:efficiency-surface
Transaction-Science:efficiency-spec
Transaction-Science:harness-econ
Transaction-Science:federation-quic-on-main
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
Transaction-Science/open-standards!58
Loading…
Reference in a new issue
No description provided.
Delete branch "ci-standards-workspaces"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes the precondition that gates every claim in the enforcement-and-evidence work: the identity pillar did not build, and nothing could have told us.
What was found
smart-byte-rs— 47,106 LOC covering BBS+, KERI/ACDC, OID4VCI/VP, mDL, post-quantum signatures — failedcargo checkat dependency resolution, before compiling a line. 9 of 22 crates built; 13 did not, including the entire credentials core.No CI has ever built this workspace, and no local
target/existed. The failure was invisible by construction.Root cause: one line
rand = "0.10"against code written for rand 0.8. The crypto stack here —ed25519-dalek 2,curve25519-dalek 4,bls12_381 0.8,bulletproofs 5— all pinrand_core 0.6, which pairs with 0.8. Reverting the pin recovered eight crates on its own, with the original source unmodified. Two edits I made while chasing the 0.9 API were reverted once the correct pin proved them unnecessary.Nothing was wrong with the cryptography. Seven lines of source changed across three files, all mechanical call-site adjustments; the remainder is manifests.
Result
cargo check --workspace --all-targets— cleancargo test --workspace— 616 passing, 0 failing, 90 test binariesjcp-rs(11.6s) andsandbox-rs(35+21+7+3 tests) were already healthy and are now gated too.Two details worth reviewing
--all-targetsis load-bearing. A plaincargo check --workspacedoes not build test targets, and smart-byte's dev-dependencies had drifted independently of its normal ones (rand_chacha 0.10against rand 0.8). The library compiled while the tests did not. I only caught it by running the tests — that lesson is written into the workflow.The pin direction is deliberate. I aligned the pin down to the code rather than migrating 41 import sites of cryptographic code up to a newer rand. If the intent was to modernise onto rand 0.10, that is a separate, deliberate piece of work — and it should be done with CI already in place, not before it.
🤖 Generated with Claude Code
The identity pillar did not build. Not "was untested" — `cargo check` failed at dependency resolution, before a single line was compiled. That went unnoticed because no CI has ever built this workspace and no target/ tree existed locally. 9 of 22 crates compiled; 13 did not, including the whole credentials core: vc, bbs, pq, mdl, acdc, keri-witness, oidc4vc, didcomm, zk, edv. Every failure was a dependency declaration that had drifted ahead of the code. Nothing was wrong with the cryptography. Root cause, and it is one line: rand = "0.10" against code written for 0.8. The crypto stack here — ed25519-dalek 2, curve25519-dalek 4, bls12_381 0.8, bulletproofs 5 — all pin rand_core 0.6, which pairs with rand 0.8. rand 0.9 removed OsRng's infallible RngCore impl; 0.10 removed RngCore from the root and replaced OsRng with SysRng. Reverting the pin recovered eight crates on its own and let the original source stand unmodified. Two edits made while chasing the 0.9 API were reverted once the correct pin proved them unnecessary. The rest: - rand_core `alloc` (zk) and cbc `std` (nostr): features that do not exist in those crates. These blocked *resolution*, so nothing could build. - rand_chacha 0.10 -> 0.3 (bbs, zk): dev-dependencies drifted independently of normal ones. The library compiled while test targets did not — caught only by --all-targets. - smart-byte-mdl pinned its own rand = "0.10" and had been partly migrated to the 0.9 API. Realigned to the workspace pin, reverted to 0.8 idiom. - hmac 0.13 moved new_from_slice from Mac to KeyInit (edv, nostr). - reqwest query() is behind the "query" feature (atproto). - aes 0.9/cbc 0.2 pull cipher 0.5; code uses the cipher 0.4 API. Aligned to aes 0.8 / cbc 0.1. - secp256k1 0.31 takes from_byte_array by value, bundles its own rand. Seven lines of source changed, all mechanical call-site adjustments. The remainder is manifests. Result: `cargo check --workspace --all-targets` clean, `cargo test --workspace` green — 616 passing across 90 test binaries. BBS+, the only unlinkable credential primitive in the tree, compiles and passes its vectors for the first time in this repository's history. Co-Authored-By: Claude Opus 4.8 <[email protected]>Until now none of jcp-rs, sandbox-rs or smart-byte-rs had CI. The preceding commit shows what that costs: a single wrong version pin silently disabled the entire identity pillar, and nothing could detect it because nothing ever compiled it. `cargo check` would have caught it on day one. One workflow with a matrix rather than three files — the bootstrap step is identical, the builds are fast (~15s / ~60s / ~90s), and a shared dependency change should rebuild all three anyway. Two details that are load-bearing: - The docker runner image ships no Rust, so rustup is bootstrapped in the workflow. dtolnay/rust-toolchain cannot help: it shells out to `rustup`, which the image lacks. - `--all-targets` is not optional. A plain `cargo check --workspace` does not build test targets, and smart-byte's dev-dependencies had drifted independently of its normal ones. The library compiled while the tests did not; only --all-targets surfaced it. An unbuilt standard is not a standard. This is the floor under every claim these specs make. Co-Authored-By: Claude Opus 4.8 <[email protected]>Implements §5 step 1 of the Action Receipt blueprint: the envelope spec plus a signed conformance vector pack. ## The gap this closes Three receipt families ship today, each holding one quarter of what an audit asks for, and none binds to the others: jcp-receipt authority grant chain, verdict, budget drawn sandbox-proof environment attestation, isolation tier, substrate JCR-1 work input hash, measured joules, provenance (nothing) effect what changed, and whether it can be undone So no single artifact answers "under what authority did this agent do that, where did it run, what did it cost, and what did it change?" The encoding is implemented six independent times across the tree — evidence the *encoding* is portable, and that the *composition* was never specified. Two families already gesture at the chain (the proof cell carries a receipt_id, the authority receipt a payload_hash). The intent was there; the binding was not. ## Envelope, not replacement AR-1 binds the three by content-id and supplies the fourth. Each family keeps its own canonical encoding and signer; the envelope reaches into them and never the reverse, so every existing verifier keeps working unchanged. No new cryptography: canonical det-CBOR and the tagged COSE_Sign1 envelope are reused verbatim from jcr1. The only primitive added is a canonical *decoder* — jcr1 ships an encoder and none was needed downstream until now, and a verifier needs to read a signed core back. It is the exact inverse of the encoder's subset (maps, arrays, text, unsigned ints; no floats, bools, nulls, tags), refuses non-canonical length encodings and trailing bytes, and is pinned to the encoder by a round-trip property test. Taking a CBOR dependency instead would have contradicted the crate's own claim. ## Refusal over record-keeping A format that merely records claims is a log. Three shapes are refused at verification, re-derived from the wire projection rather than a caller-supplied struct, so a hand-forged receipt that signs correctly is still rejected: 1. effect `irreversible` REQUIRES a plan receipt — binding the cascade's existing plan/commit split into the evidence. 2. egress `none` REQUIRES zero bytes — the claim is falsified by its own byte count. 3. egress `attested_enclave` REQUIRES a peer attestation. An unattested destination is `third_party` even when the operator believes it trustworthy. Trust is not an egress class. Two further invariants are normative: `grounding` is carried verbatim and never upgraded from software to hardware, and the three energy provenances never collapse into one number. ## Conformance pack 7 positive and 3 negative vectors under jcp/conformance/v1/, signed with a published fixture key so third parties can verify. The negatives are the substance: each carries a *genuine* signature and must still be refused, so an implementation that checks signatures and skips the structural rules passes the positives and fails the pack. That is precisely the failure mode the pack exists to catch. The emitter asserts both properties before writing, so an unverifiable vector cannot be published. tests/conformance.rs consumes the published JSON from disk — the same bytes a third party downloads — and checks that re-derived receipt ids and canonical cores match byte-for-byte. AR-1 does not solve effect revocation; nothing does in general. It makes the distinction machine-readable at the moment of action, which is the precondition for reasoning about it afterwards. 20 tests in the crate; jcp-rs workspace green at 258. Co-Authored-By: Claude Opus 4.8 <[email protected]>Implements §5 step 5 of the blueprint — "the deliverable that creates demand." A format nobody outside this tree can check is a convention. A format with a verifier a third party can run is a standard. Everything ar-verify needs arrives on the command line — an envelope, a public key, a steward — and it touches the network never. Two modes: ar-verify <envelope> --pubkey <hex> --steward <did> one receipt ar-verify --pack <dir> a whole vector pack ## Reports each binding separately "Invalid" is not a useful audit finding. The verifier prints one line per checked property — signature, canonical core, profile, receipt id, then the four bindings (authority / environment / work / effect) and the egress contract, then each of the three structural rules by name. An auditor learns *which* claim failed, and can quote it. On the forged vector the output is the whole thesis in one line: FAIL rule:irreversible-needs-plan REFUSED — irreversible effect with no plan receipt. The signature is valid; the receipt is not. ## Honest about its own limits Every successful run prints, unprompted: note:bound-artifacts content-ids bound but NOT resolved — run each family's own verifier for a complete audit AR-1 proves *which* authority receipt, attestation and work receipt were referenced. It does not prove those artifacts are sound; that is their own verifiers' job. A verifier that let a reader believe otherwise would be worse than none. ## Verified against the published pack 10 passed, 0 failed CONFORMANT — AR-1/basic. Positives verify; negatives are refused despite valid signatures. Exit codes: 0 verified · 1 check failed · 2 bad usage — so it composes into scripts and CI without parsing prose. No argument-parsing dependency; hand-rolled, consistent with the workspace's minimal-dependency posture. Accepts a hex text file or raw envelope bytes, because an auditor should not have to know which form the sender chose. Co-Authored-By: Claude Opus 4.8 <[email protected]>Implements §5 step 6 of the blueprint. One agent action, under a real delegated grant, with joules read off this host's own counters, sealed into an AR-1 receipt that the standalone verifier checks from the envelope alone. Only the workload is a stand-in so the example runs anywhere. Everything around it is the real machinery, and the run proves it rather than asserting it: 1. grant issued, attenuated to read-only — amplification refused: "attenuation would amplify the parent: capability exceeds parent" 2. decide() → allow, 9750000 µJ remaining on the delegated ceiling 3. work metered — 11092178 µJ [HwShunt] over 0.35s via ioreport-energy-model 4. sealed — receipt id 41f14e37953d2908c8fe80607ffc09c0abcf195301cdb5330a91d9 5. verified from the envelope alone — 820 byte canonical core Then, independently, through ar-verify with nothing but the envelope, a public key and a steward: ok binding:authority grant cf97d7e7393a… · verdict allow · chain depth 2 ok binding:environment tier S0 · grounding hardware · attestation 934fe83df573… ok binding:work 11092178 µJ [HwShunt] · receipt c3308896143e… ok binding:effect class none ok binding:egress class none · 0 bytes VERIFIED — every binding and rule checked from the envelope alone. Two honesty properties the example enforces on itself: - The tier is stamped from what is actually running. This is in-process with no isolation boundary crossed, so it is S0. The sandbox proof matrix already demonstrates S5 through S7 on real KVM and CC hardware; claiming S5 here without a microVM would be exactly the overreach the ladder exists to prevent. - The energy provenance is whatever the meter reports, carried verbatim. This host has IOReport, so HwShunt is real. On a host without a counter the example prints "provenance is Estimator, not HwShunt" rather than inventing a measurement. Also asserts the negative case rather than describing it: a second attenuate() asking for read+delete is required to fail, so the refusal is demonstrated in the run instead of claimed in a comment. Co-Authored-By: Claude Opus 4.8 <[email protected]>Closes §5 step 3. The end-to-end example previously bound content-ids it made up — ContentId::of_bytes(b"jcp-receipt/e2e-allow") and friends. That demonstrated the envelope's shape while proving nothing about its bindings. Now every id comes from an artifact that was actually produced: - The authority receipt is sealed from the decision that just happened via jcp_receipt::seal, and **verified on its own terms** before being bound. A receipt that would not survive its own family's verifier has no business in an AR-1 envelope. - The work receipt is built by sandbox_meter::Receipt::build over the devices the meter actually reported — three on this host (CPU, GPU, ANE). `build` enforces the provenance/measured coupling itself, so a mislabelled device is refused there rather than propagating into AR-1. ## The interop wrinkle worth recording The two families disagree about content-id *presentation*: sandbox_schema::ContentId(pub String) "b3:<base64url of 32 bytes>" jcp_schema::ContentId(pub [u8; 32]) raw digest Both are BLAKE3 over the same canonical bytes, so they differ only in how they render. Re-addressing the work receipt's canonical core with jcp's hasher yields the identical digest — an exact binding, not a hash of a hash. A debug assertion pins the sandbox rendering so the assumption fails loudly if it ever changes. This is the kind of seam that only appears when two standards are actually composed rather than described as composable, and it is why step 3 was worth doing separately from step 6. Run on this host: 2. decide() → allow, 9750000 µJ remaining; authority receipt sealed + verified, id 3296ba365377 3. work metered — 8075375 µJ [HwShunt] over 0.29s via ioreport-energy-model work receipt sealed over 3 metered device(s), id 44437820e66e 5. verified from the envelope alone — 820 byte canonical core ar-verify: ok binding:authority grant cf97d7e7393a… · verdict allow · chain depth 2 ok binding:work 8075375 µJ [HwShunt] · receipt 44437820e66e… VERIFIED Co-Authored-By: Claude Opus 4.8 <[email protected]>Closes §5 step 4, the last item in the blueprint's build sequence. This is the gap the frontier survey filed as "nobody has shipped a privacy router": a system that decides between on-device and remote execution and never tells the user which side their request landed on. ## The design turns on the default `Egress::Undeclared` is the default, and everything else follows from it. A tier that has not declared where its work goes is recorded as undeclared — never as "nothing left the device". Not knowing and knowing nothing happened are different facts, and only the second is a privacy claim. Undeclared no declaration; NOT a claim, and not publishable None resolved on-device AttestedEnclave left the device to a peer that attested itself ThirdParty left the device unattested — named, counted, and honestly marked unverifiable `is_publishable()` refuses `Undeclared`, so a receipt cannot be built from a resolution nobody measured. `Undeclared` and `None` both report zero bytes, which is precisely why the class must be read rather than the byte count — a test pins that. ## The runtime stamps it, not the tier `Tier::egress()` is a defaulted trait method, matching the existing `coord()` precedent so legacy tiers keep compiling. But the tier does not write the value into its own `Answer`: the runtime reads the declaration and stamps it onto the trace it returns. A tier therefore cannot forge the claim by construction, and cannot silently omit it either. Both dispatch paths needed the stamp on the *runtime's* trace rather than the tier's, because both return `Answer { trace, ..answer }` — the spread discards the tier's copy. That is exactly the sort of thing a test catches and a design review does not; `a_local_cache_hit_is_recorded_as_local` failed on the first attempt for this reason. L0 is the one tier in the base cascade entitled to claim `None`: a hit is served from this process's own memory. ## Placement The record lives on `ExecutionTrace`, which already derives `Default` and has a single literal construction site — so the change lands in 4 files and 201 lines with no churn. Putting it on `Answer` would have required touching 12 struct literals plus test files; an earlier attempt at that also tripped `cargo fmt`, which reformatted 22 unrelated files because the crate was never rustfmt-clean. Reverted, and the field moved to where it fits. The dependency direction is preserved: the cascade gains its own egress concept and takes no dependency on AR-1. Mapping `Egress` onto an Action Receipt's egress binding is the envelope's job, as it should be. 108 tests green in jouleclaw-cascade. Co-Authored-By: Claude Opus 4.8 <[email protected]>Latest stable (1.98.0, released 2026-08-18). The pin lives in more places than is obvious, and missing one means CI silently builds an older compiler than the dev box: - rust-toolchain.toml at the repo root - eoc/eoc-rs/rust-toolchain.toml, a second toolchain file - five CI workflows that hardcode a version instead of deferring to the file (wai-conformance, wai-neural-e2e, wai-byte-equality, joule-code-conformance, jouleclaw-public-surface-documented) standards-build.yml needed no change, because it reads the toolchain file rather than pinning inline. That is the pattern the other five should adopt. MSRV raised to 1.98 across 26 manifests, following the earlier decision to have the declared floor track the pin rather than drift behind it. Note this is a support-policy change, not a mechanical one: it narrows which compilers can consume these standards as libraries. The pin stays exact, never `stable` — a pin that drifts is not a pin. Co-Authored-By: Claude Opus 4.8 <[email protected]>Updating the toolchain surfaced five workspaces that did not build. Every one was verified against its ORIGINAL pre-update lockfile and manifest before being touched: all of them were already broken. None of this was caused by the dependency update. The same handful of upstream migrations account for nearly all of it: hmac 0.13 moved new_from_slice from Mac to KeyInit openpay: op-webhook, op-bnpl, op-ewallets-asia, op-mobile-wallets — plus the op-bnpl and op-ewallets-asia *test* targets, which a src-only search misses and `--all-targets` does not. reqwest 0.13 gates builder methods behind features eoc-tools needed "query"; openpay/op-tax needed "form". cipher 0.4 -> 0.5 openpay/op-mobile-wallets declared aes 0.9 (cipher 0.5) while ctr 0.9 and aes-gcm 0.10 both sit on cipher 0.4. Aligned aes to 0.8. jcp-schema::Grant gained budget_funds and caveats mesh-core and joule-ui-interaction examples were never updated. A path dependency, so no lockfile change could have caused or fixed this. Not one line of this is a behaviour change. Every fix is an import, a feature flag, a version alignment, or two struct fields. The finding is larger than the diff. smart-byte (47k LOC, fixed earlier today), openpay (six separate breakages across five crates), eoc, mesh and joule-ui were all silently broken, all by the same small set of migrations, all invisible because nothing ever compiled them. The build gate added in this branch currently covers three workspaces; on this evidence it should cover every one. Verified after fixing: openpay 1935 tests pass, eoc/mesh/joule-ui build clean. Co-Authored-By: Claude Opus 4.8 <[email protected]>Two changes, both consequences of the same sweep. ## jouledesk: correct the test, keep the behaviour `the_joule_budget_is_enforced_across_tags` asserted one sealed decision and found two. The code is right and the assertion was wrong. Three doc comments say so: `TagOutcome` — "every variant sealed to the ledger"; its `Denied` variant — "outside the model, sealed all the same"; and `ledger()` — "every sealed decision, in order". The sibling test draws the line exactly where the design does: an *unheld capability* never reaches dispatch and leaves the ledger empty, whereas a *budget refusal* is a decision made against a grant the teammate actually held, stopped by the ceiling. That is evidence, and it seals like any other decision. So: one task ran (`spent_uj` = 100_000, unchanged) and two decisions were made (ledger = 2). The test conflated "dispatched" with "sealed". Corrected, with the distinction written down so it does not get re-broken — a refusal that left no trace would defeat the point of enforcing outside the model. No behaviour changed. 17 tests pass. ## Gate every workspace, not three The matrix went from 3 to 16. It started at three because those were the workspaces the Action Receipt depends on; then bumping the toolchain compiled the rest for the first time and found five more that did not build — smart-byte (47k LOC), openpay (six separate breakages across five crates), eoc, mesh and joule-ui. All of them broken by the same handful of upstream migrations. All invisible because nothing ever compiled them. Partial coverage is precisely how that happens, so the path filter is now `**/*.rs` and `**/Cargo.{toml,lock}` and the matrix covers everything. `fail-fast: false` so one red workspace cannot mask the others. Co-Authored-By: Claude Opus 4.8 <[email protected]>The expanded matrix never fired. Pushes touching `.rs` and `Cargo.toml` files triggered the wai workflows (whose filters matched their own workflow file) but not this one, whose filter was `**/*.rs` and `**/Cargo.{toml,lock}` — globs that evidently do not match here the way they do on GitHub. That is the worst possible failure mode for a build gate: it reports nothing, and everyone reads the absence of red as green. This branch exists because five workspaces were silently broken for want of anything compiling them; a gate that silently declines to compile them is the same bug wearing a workflow file. So: no `paths:` filter. It runs on every push and every PR. The cost is CI minutes on doc-only changes, which is a rounding error against the cost of the thing it prevents. Co-Authored-By: Claude Opus 4.8 <[email protected]>The first full matrix run surfaced a real defect, which this commit does NOT fix — it only lets CI exercise the intended path. `joulecontract-proof`'s `a_real_postcondition_discharges_through_z3` fails on a runner because the image has no z3. The test is written to handle that: its solver-absent branch asserts // no solver present: the SMT rung returns Unproved, never a fake pass assert!(matches!(entry.status, DischargeStatus::Unproved(_))); and that assertion is what fails. Reproduced in the exact runner image (catthehacker/ubuntu:act-22.04, arm64), the ladder returns: status Proved · closed_by Some(BigModel) · provenance Estimator attempts: Automation(false) → Smt(false) → SmallModel(false) → BigModel(TRUE) `real_ladder()` is [Propositional, Z3Smt, SmallModel, FrontierModel]. The first two are real; proof-solvers' own docs call the model rungs "honest stand-ins", and FrontierModel returns `proved(goal)` unconditionally for its goal kind. So with no solver installed, a stand-in closes the goal and reports Proved with 50 J of estimated cost attached. The same module states the contract it breaks: "A solver returns Proved only when a verifier would accept the artifact." The test is right and the ladder does not honour it. This is left unfixed on purpose. The stand-ins are load-bearing in proof-cascade and proof-conformance, and proof-conformance ships a published vector pack — changing whether a stand-in may close a goal would invalidate it. That is a deliberate call for the proof standard's owner, not a side effect of a CI fix. So: install z3 where it is needed, and record the defect where whoever picks it up will find it. Both z3 jobs are pinned to Linux runners because the macOS runner is a host executor with no apt; proof-rs moved from macos to linux for that reason. Co-Authored-By: Claude Opus 4.8 <[email protected]>Pull request closed