wai-quantum: no anonymous request ends the job service or holds it without limit #676
Closed
dcharlot
wants to merge 27 commits from
wai/quantum-parse-depth into main
pull from: wai/quantum-parse-depth
merge into: Transaction-Science:main
Transaction-Science:main
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:ci-standards-workspaces
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!676
Loading…
Reference in a new issue
No description provided.
Delete branch "wai/quantum-parse-depth"
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?
Re-landed on main as one commit,
ce1c91131(2026-11-09), under the land-it model. Round 6's 16 findings are fixed, each with a fail-first test (b35ae093e). mainf6e302665was merged at 0cf954bfc (local), with wasmQ's verify surfaces brought under the same admission, turns and reading child, and wasmQ's profile stating this reader's nesting bound (Q006). Passed on the merged tree, linux and macOS: the service suite under ulimit -Sn 256, the library's 1,458 tests, the CLI, wai-wasmq and its vectors, clippy, wai breaking, and the repository checks. Main's CI runs on the push. Closed.What was wrong
((about thirteen frames a level), once per statement in a block, once per prefix operator, with no limit, and the elaborator recursed over whatever tree the parser built (a chain such as0 + 0 + …, read in a loop, built a tree as deep as it was long). The job service parsed on a tokio worker (2 MiB stack) before any rate limit, so a POST of about 1.3 KB with some 600 nested parentheses inqasm, or in an intent's reference, aborted the whole process.intent_bounds,equivalence_work,catalog::plan,with_intent) before the count, size and rate checks, and refused requests were never counted, so a few small requests with heavy references held every worker for minutes.What is bounded, and where
qasm::parseif/for/while/switch/box, gate anddefbodies, parentheses, prefix operators,**, binary chains, index chains,++, calls, casts, sets, types (complex[,array[),durationof,measureMAX_NESTING= 64 levels in the text: recursion depth and each expression tree's height togetherQ006(new)qasm::elabMAX_NEST), beside the existing 32 for calls and gate definitions (Q209)Q006qasm::instantiate(unroll)(, prefix,**), nestedfor/ifwritten out, brace-less statement scanselse ifchain are loops, at any lengthQ006Q006REPEAT/repeatblocks; their lowering and model walkMAX_BLOCK_DEPTH)J009in the service)REPEAT 0cloned the circuit at each levelCHAIN_DEPTH)a + b - c,&&, `),else if` chains, a switch's case values on measured bitsMAX_ARRAY_DIMS)Q006MAX_QUBITS,MAX_DETECTORS), offsets countedJ009in the service)MAX_LEAVESas beforeModifier chains (
inv @ inv @ …) andincludelists are iterative and read at any length; a test holds that.Frame sizes were measured on the Framework (Linux x86_64, release and debug, threads of 1 and 2 MiB) with a temporary probe, the limits lifted for it.
execandevthe same way.ifper body, about 1 800 levels of the elaborator.atomwas split the same way after that measurement, so these figures are from just before it and were not taken again. The tests below ran on the final code.Main's own nesting bound
Main took a nesting bound of its own for this reader in
15ae7d457(Q130at 128 levels, a chain of at most 127 operators, at most 1024else ifarms), after this branch last merged it. The merge of main at1929b8436keeps this branch's reader (its sources, its diagnostics table and its docs), which bounds nesting and memory already, and holds main's tests of that bound to it:lang_tests::nesting_is_bounded_as_the_text_counts_itreads each shape inside the bound and refuses it past (Q006), a run of 10,000 of one operator and ladders of 1024 and 5000 arms read, and a chain through calls past 256 is refused;tests/reader_stack.rsreads every program at the bounds on 1 MiB and 2 MiB threads in release (16 MiB in debug) and refuses the same shapes nested 5000 deep on them; the service'stests/verify.rsreads the 2000-term sum and refuses 1000 brackets and 1000 blocks on seven routes. Main's changelog entry says what holds (no release carried itsQ130).The budget primitive and #648
This adopts #648's
qasm::within_stepsas it is (signature, per-thread memo of readings with no inputs, inner budgets run within the outer one,Q312past it), so main has one primitive. On top of it: gates written and a generator's loop passes spend from the budget too (statements alone letpow(k) @or a sweep's unrolling run outside it), andqasm::steps_left()tells a budget refusal from a program's own (Some(0)). When #648 merges main, take main'sqasm.rsandelab.rshunks;within_steps(1_000_000, …)in its writer works unchanged, andsteps_left() == Some(0)after a refused read is the test for "over the budget".The service
No anonymous request ends the process, holds a thread without limit, or makes the service keep memory without limit, on any route. This is what each request now goes through. The defaults are in the README's settings table.
WAI_QSVC_ANSWER_SECS(55) of its arrival, under a proxy's 60 s. A body is parsed only once its client's window has room. A resend under its key is parsed first, as it is answered before any limit. A large MCP message from a client past its window is refused unread.http::admit_to):cheap_bounds, then every program read, each once, within 22,000,000 steps.Retry-Afteron a429is the window's pace.offload.rs): admission, dry runs, every check's bounds and answer, the engine calls, a set's receipt and the MCP verdicts run inwai-quantum-service read, sandboxed as a worker is. Each child is capped:WAI_QSVC_READ_GB(4), polled every 50 ms from a thread of its own;WAI_QSVC_READ_SECS(45), and the answer's deadline;WAI_QSVC_READ_ANSWER_MIB(128) as parsed, about 80 bytes a value.It is killed by a signal to its process group, sent again until it ends. An abort, a stack overflow or a panic there is that request's
500, and a hang-up ends the child.offload::Gate): four reading turns and four check turns. A client's share is 2 reading turns and 1 check turn (WAI_QSVC_CLIENT_READS,WAI_QSVC_CLIENT_CHECKS). Past it, one more turn is lent to the client while two stay free for others (in the checks; the reading pool lends none at a share of two), and none while one of the client's own turns is free or held by a request still waiting for the pool's. A lent turn goes back after 5 s once another client's request waits, or once one of its own client's has waited 7 s, so a client's quick calls pass its own slow ones, however many. Up to eight of a client's requests wait behind its turns (its eleventh at once is refused), 32 wait in all, each for 10 s. Past these the request gets503 J032, saying whether its own requests or the pool held it up.WAI_QSVC_QEC_SECS(25) and stopped a fifth past it.WAI_QSVC_CLIENT_KEPT_MIB(128) per client, oldest first, andWAI_QSVC_KEPT_MIB(4096) in all, the largest holder's first; unread ones are dropped by neither, and hold their client's next job pastWAI_QSVC_CLIENT_UNREAD_MIB(256) and everyone's pastWAI_QSVC_UNREAD_MIB(8192), every job queued or running counted at its result's bound. A result is held toWAI_QSVC_RESULT_MIB(64) before its job runs, by a bound read from the request (below).WAI_QSVC_CLIENT_STREAMS(4) long polls and event streams; a long poll past them is answered429(503past everyone's 512),J032, withRetry-After: 2and the job's status.http::serveholds a header section toWAI_QSVC_HEADER_SECS(150, above a proxy's 2-minute idle pool) and a body toWAI_QSVC_BODY_SECS(30, then408). A restart reads no program. Readers and workers start from the service's own binary as it was started, so the file can be replaced before the restart.Findings
All 33 of the #676 review, with the test that holds each. "Before" is the code before this round (
26a001db6) with the test grafted on, on the iMac, unless the row says otherwise.MAX_DETECTORS,MAX_QUBITSat parse time, offsets countedan_index_past_what_a_text_holds_is_refused_on_its_line,an_index_past_what_a_model_holds_…J034before the count reads nothinga_refused_mcp_task_reads_nothing_and_holds_no_workerQ130), in the earlier commit of this PRprograms_that_would_hold_without_limit_…,what_a_program_would_hold_…MAX_ARRAY_DIMS= 7 in the parseran_array_past_its_dimensions_…a_check_and_a_set_s_receipt_count_before_they_read,a_seal_that_does_not_hold_is_not_written_outwithin_budgetrefuses on a spent budget whateverreadreturneda_budget_spent_is_a_refusal_whatever_the_check_made_of_itQEC_MAX_FIRED= 1,024, and the child's deadlinea_decode_is_held_to_the_detectors_it_is_givena_reading_past_its_time_is_stopped_and_a_hang_up_ends_it,reading_leaves_the_runtime_free_and_a_client_has_its_share,a_client_is_held_to_its_share_of_the_turns26a001db6, which already had the child; the share test fails: three requests all waiteda_source_job_sent_again_under_its_key_reads_nothing_and_counts_nothingReadingsays what a verdict may read; a tool with no verdict takes no turn; polls read nothinga_call_that_was_not_counted_reads_nothing_and_still_states_a_verdict,the_tools_are_answered_with_no_turn_to_be_had,a_poll_reads_nothinga_wait_for_a_turn_is_bounded_in_time_and_in_numbera_check_s_answer_is_held_to_its_budgetRetry-Afteris the window's pacea_client_told_to_retry_spends_nothing_…sourcetooa_source_job_sent_again_…(all turns held, window spent)Q112, and any panic is the child'sa_bit_string_wider_than_an_integer_…,programs_that_would_hold_…http::servewith header and body limits; a restart reads no programa_stuck_connection_is_let_go,a_restart_reads_no_programMAX_COND_DEPTH30, what the reader takesa_condition_that_fits_reads_backE::ChainandS::If { arms }hold them flat, any length, on 1 MiB, same resultsa_run_of_operators_and_an_else_if_chain_read_at_any_lengthCt::All,Ct::Any, flata_switch_on_measured_bits_lists_any_number_of_valueselse ifchain in a loopboth_readers_of_a_generator_take_a_flat_sumthe_chain_limit_refuses_the_same_statements_in_any_orderREAD_STEPS=MAX_STEPS+MAX_OPS, 22,000,000; texts correctedthe_budget_is_as_large_as_one_program_may_be,a_job_within_the_reader_s_bounds_reads_herea_generator_s_passes_and_what_they_write_spend_the_budgetreading_leaves_the_runtime_free_…,a_check_and_a_set_s_receipt_count_…,a_request_with_no_turn_is_refused_in_time_and_spends_nothing/v1/verify's refusalsthe_openapi_document_names_every_routeends_within: a thread and a deadline, by nameSecond review: the machinery (7 findings) and the correlated-error carrier
"Before" is
264cec659(this branch with main merged, before these fixes), the new tests grafted on, run on the Framework (Linux x86_64).WAI_QSVC_CLIENT_READS(2 of 4) andWAI_QSVC_CLIENT_CHECKS(1 of 4, up from a pool of 2). A client's requests past its share wait behind it, 4 at most, rather than being refused. QEC decode and threshold measure their shots as they run and are refused once the rest would take more thanWAI_QSVC_QEC_SECS(25). Rounds are held to 21one_client_cannot_hold_every_check_turn,a_qec_call_at_its_bounds_ends_well_inside_the_reading_s_time,a_time_holds_the_shots_sampled_and_decoded,a_memory_experiment_is_held_to_its_rounds,a_client_holds_no_more_of_a_pool_than_its_shareWAI_QSVC_READ_ANSWER_MIB(128 MiB, down from 256 MiB of text) once read, value by value, before writing it; the service parses off its runtime and takes values rather than copying them; a dry run gets back plans and points onlya_reading_s_answer_is_held_to_what_it_takes_once_read(the service's own peak memory checked on Linux)WAI_QSVC_HEADER_SECSdefaults to 150; self-host.md pairs it with the proxy's idle limit, and its example setskeepalive 60sthe_defaults_fit_inside_the_proxy_sreading_leaves_the_runtime_free_and_a_client_has_its_share(five parallel calls from one client all answered)/proc/<pid>/exeon Linux, and on macOS from a copy kept beside the signing key, named by its digest; self-host.md gives the update procedurethe_binary_can_be_replaced_before_the_restart(rename on Linux, in-place copy on macOS; a critique and a run both answered)Watch) and reads the physical footprint on macOS (compressed pages included) and resident plus swap on Linux. On Linux a reader also caps its own address space at twice its cap plus 1 GiB (a failed allocation is answered 422), and readers and workers setoom_score_adj1000. The README states exactly what a poll is and is not; macOS gives an unprivileged process neither kernel limitWAI_QSVC_READ_SECSdefaults to 45, so the cap plus the 10 s wait for a turn fits inside 60 s; documented with how to lower it behind a shorter proxythe_defaults_fit_inside_the_proxy_sMAX_QUBITS, and refuses at the first correlated error's linea_correlated_error_with_no_index_left_for_its_carrier_is_refusedThe QEC timing was measured on Thor (Linux arm64, load 12 to 17 on 14 cores) against a local release build with the defaults:
Not done: the macOS memory poll was not tested under memory pressure. Copies of earlier binaries beside the key are not removed automatically.
Third review (14 findings)
"Before" is
4f44194bf(the previous head) with the new tests grafted on, run on the Framework (Linux x86_64). Memory figures are the verifier's harness (skp_mem.py), on Thor (Linux arm64) and the M4 (macOS arm64).WAI_QSVC_CLIENT_KEPT_MIB, 128) and in all (WAI_QSVC_KEPT_MIB, 2048), oldest first; bodies are parsed after the window check; job reports are spliced from the text; memory is given back after large requests; on macOS the service starts withMallocLargeCache=0;weightcounts 80 B a valueended_jobs_keep_little_and_a_restart_keeps_it_little,ended_jobs_keep_their_request_as_text_within_their_capsWAI_QSVC_ANSWER_SECS(55): turns, readings and run waits end by it; an MCP verdict is read only if time is left; self-host.md gives each route's arithmetica_run_s_answer_comes_within_the_answer_s_time,the_defaults_fit_inside_the_proxy_sa_client_s_quick_calls_pass_its_own_slow_one_and_its_burst_is_answered,a_client_holds_no_more_of_a_pool_than_its_share_and_a_quick_call_passes;one_client_cannot_hold_every_check_turnstill holdsa_time_is_measured_apart_from_setup_and_holds_every_threshold,a_time_holds_the_shots_sampled_and_decodedwai breaking --against e54f28102 --text --allexits 0 (and did against5df2ccbdebefore main was merged)jobs::killspawnedkill -9libc::killon the child's process group (children get their own), again every 100 ms until it ends; job workers stopped the same way; a small answer is parsed inline, so no thread is neededa_reading_is_stopped_when_no_process_can_be_started(Linux,prlimit --nproc=1)Memory, one client, 30 jobs of a 999 KB body (the harness's
retain), then a restart from the same store:[0,0,…][{"a":0},…][0,0,…]Requests refused at the window, 120 at once (
transient): Thor 11 MiB peak; the M4 4 MiB peak, where the verifier saw 2,333 MiB.Fourth review (11 findings)
"Before" is
53676a3e5(the previous head) with the new depth tests grafted on, run on the Framework (Linux x86_64).kern.maxfilesperprocand 10240 at most) and logs it; it holds at mostWAI_QSVC_CONNECTIONS(4096) connections, fewer under that limit (a quarter, at least 64, left for pipes and files); past them the connection idle longest, or the one whose body has been arriving longest past a second, is closed for the new one, and with none to close the new one gets503at once; a client may haveWAI_QSVC_CLIENT_REQUESTS(32) requests open, refused503before its body is read (a health check exempt)held_connections_leave_room_and_health_answers(hard and soft limit 256: 400 header sections from one client, 400 bodies from 400 clients, 400 bodies from one, health 15 of 15 each time, noToo many open files)/v1/run202 then 404; MCPisError: falsewith no resultWAI_QSVC_KEPT_MIN_SECS(600) whatever it weighs; while a client's unread results hold its cap its next job is refused429, and while everyone's hold the service's,503; an MCP run whose job is gone is an errora_result_larger_than_its_client_keeps_is_kept_until_it_is_read(16 qubits, 20,000 shots a point, cap 1 MiB: poll,/v1/runandrun_quantum_set)a_documented_qec_call_beside_another_check_from_its_client_is_answered(a critique and a decode at once; two decodes 30 ms apart)ended_jobs_keep_their_request_as_text_within_their_capsa_job_reads_the_same_on_every_route_and_after_a_restarta_large_mcp_message_past_the_window_is_answered_under_its_own_id/v1/verifyparsed with no limitWAI_QSVC_CLIENT_VERIFIES(120), asked before the body is reada_body_is_read_only_once_its_window_or_its_key_allowstasks/resultheld 50 s whatever the deadlinea_task_s_result_is_held_within_the_answer_s_time(WAI_QSVC_ANSWER_SECS10)the_openapi_document_names_every_routeFifth review (8 findings)
"Before" is
a0804db72with this head'stests/depth.rscopied in (a worktree ofa0804db72), run throughrbon the Framework (Linux x86_64) and the M3 Ultra Studio (macOS arm64), each test alone, underulimit -Sn 256and underulimit -n 256. Findings 1 and 2 are now tested by the round-5 verifier's own probes and timing. The earlier versions of these two tests passed ona0804db72because they were not those probes. The first held its polls onlong_job(), not the verifier's pump, mixed a third of them with event streams, sent them from 8 addresses with no pacing, and checked health after 1 s; it never checked that the job still ran or that any poll was held, so which of these let it pass was not isolated. The second raisedWAI_QSVC_QEC_SECS,WAI_QSVC_READ_SECSandWAI_QSVC_ANSWER_SECSand sent the README's threshold as it is, which takes about 6 s alone on these hosts, inside the 10 s a waiting call is given; the critiques waited for it and were answered, and the test asked only for 200s, not when.WAI_QSVC_CLIENT_STREAMS(4) a client andWAI_QSVC_STREAMS(512, a quarter of the connections at most) in all; past them a long poll is answered at once with the job as it is (round 6:429withRetry-After), and an event stream is refused 503long_polls_and_streams_leave_a_health_check_answered, the verifier's probe (_sk/probe.py): its pump (a T layer and a CX ladder, 30 times, one shot; 24 qubits where it had 22, so a faster host still runs it past every wait), then 210?wait=25polls with the probe's ownX-Forwarded-Forvalues (10.0.k.m), 3 ms apart, under a hard limit of 256 (192 connections), then 25 health checks; then the same with event streams. It checks that the job still runs and that polls were held, then asks for 25 of 25. Underulimit -n 256the test process itself holds 64, and lowers the service's cap to 58health answered 0 of 25 beside 210 long polls, 192 of them held: open files: 256, the hard limit; underulimit -n 256,0 of 25 beside 64 long polls, 58 of them held. Head: 25 of 25, polls and streams, on both hosts and both limitsthe_readme_s_burst_from_one_client_is_answered, the verifier's burst (_skp/lm.py) at the service's own limits, nothing raised: the README's decode at 0 ms, a threshold at 30 ms, six Bell critiques from 60 ms, 30 ms apart, from one client, over HTTP and then over MCP. The threshold is made long as the verifier made it (it raised the shots to 30,000): shots raised half again at a time to 33,333, then its rounds, until it takes 11 s alone, past a waiting call's 10 s. Every call must be answered, and each critique at least 1 s before the threshold503 … your own 1 turn of this pool is still taken by your other requests after 10 s [J032]at 10.07 to 10.21 s; M3 Ultra, alone 18.8 s and 11.1 s, refused at 10.07 to 10.22 s. Head: every critique answered, at 0.2 to 3.8 s, each at least 1 s before the threshold, HTTP and MCPWAI_QSVC_RESULT_MIB(64), would passWAI_QSVC_CLIENT_UNREAD_MIB(256); every next job waits while all unread holdWAI_QSVC_UNREAD_MIB(8192, 32 clients' whole allowances);WAI_QSVC_KEPT_MIBis 4096; a result's size is held toWAI_QSVC_RESULT_MIBbefore it runs (below); the README states the bounds that remainread_results_go_before_unread_ones_and_unread_ones_hold_their_client_s_next_job,a_result_s_bound_is_held_to_the_cap_and_running_jobs_count_their_own,a_result_past_what_a_job_may_give_is_refused_before_it_runsan_mcp_id_is_echoed_exactlySixth review (16 findings)
"Before" is
d5564748ewith this head's new tests copied in (a worktree ofd5564748e:engine::bound_tests, the new tests oftests/depth.rsand the changeda_reading_s_answer_is_held_to_what_it_takes_once_read, and the two offload unit tests), run throughrbon the Framework (Linux x86_64), each service test alone underulimit -Sn 256. Every one fails there and passes here.impossible, itsnoteand twice in itswhy; the bound counted 64stats::goodness_of_fitnames at most 64 of them and gives how many (impossible_outcomes, new, in the verdict schema); the reason says the note once; the bound counts each intent's four lists at 64 outcomes each, and the statement's two reasonsengine::bound_tests::a_failing_intent_trajectories_and_notes_stay_within_their_bounds, and the property testno_random_job_s_result_passes_its_bounda sampled intent ruling out 4,095 outcomes: its result is 2713555 bytes, past its bound of 149528; the property test's first:job 24 (seed 676), sampled intents that fail: its result is 245762 bytes, past its bound of 145949trajectoriesrun listsoptions.trajectoriessamples; the bound took the shotscatalog::samples_listed: the trajectories (or the shots, the larger) for a trajectories run, on a device target tooone shot, 30,000 trajectoriesone shot, 30,000 trajectories: its result is 71578 bytes, past its bound of 17751mcp::as_run: the run tools and both dry-run paths plan the same job;dry_run_quantum_job's description says soan_mcp_dry_run_says_what_the_run_tools_take(cap 1 MiB): the most points the MCP dry run takes are run byrun_quantum_settodone, and one more is refused16 points, accepted by the MCP dry run, refused by the run: its result could take up to 1.5 MiB as servedthe_readme_s_largest_sweep_is_taken_and_ends_done, at the defaultsthe job used 656 MiB, over the 258 MiB it was admitted with; it was stoppedoffload::OWN_PATIENCE): the quick call takes it 1.5 s or more before its wait ends, and a call of its own that ends sooner (the README burst's decode) frees a turn firsta_client_s_quick_calls_pass_two_of_its_own_long_checks: two thresholds of 11 s or more, then four critiques at 4 s, from one client503 your own 1 turn of this pool is still taken by your other requests after 10 s [J032]at 14.00 to 14.09 s1.0,1e3, or an integer past 64 bits came back as another numberhttp::raw_idandhttp::mcp_text: every MCP answer writes the id as the text it was sent as (serde_json'sraw_value), on every path (an answer,tasks/result's event, a message past the window)an_mcp_id_is_echoed_as_it_was_sent:1.0,1e3,1E3,-0.0,1.50, 2^64,123456789012345678901234567890,"1.0", onpingandtools/listping: sent the id 1.0, answered {"jsonrpc":"2.0","id":1,"result":{}}a_failing_intent_trajectories_and_notes_stay_within_their_bounds,3,000 notes and a verdict3,000 notes and a verdict: its result is 704773 bytes, past its bound of 4099451e20in 21 charactersreceipt::canonical_len(new): a value's length as RFC 8785 writes it, each number in its own form and whole numbers as read, whichever is longer; every request part of a bound uses it, and the provenance'sshotsandseedas sent are counteda_set_s_bound_counts_its_items_requests_as_served(3 points sharing 20,0001e20s)served 1327064 bytes, past the bound of 454321accepted: false, 422)a_dry_run_that_says_taken_is_taken_by_its_submission(100 points sharing 12,000 and 20,0001e20s);a_reading_s_answer_is_held_to_what_it_takes_once_read, which held the old behaviour, now holds thispad 20000: the dry run said true (null), the submission 422 ... gave more than 128 MiB once readcatalog::outcomes_bound: at most2^boutcomes for thebbits its measurements write, and on the noiselessstabilizermethod2^d,dits measured qubits and its gates that branch (h,sx,sxdg; the rest permute or phase the basis), each at most doubling the outcomes a tableau givesan_honest_clifford_set_is_taken_by_the_outcomes_it_can_give(100 GHZ24 at 30,000 shots, run todone);a_ghz_state_and_a_long_loop_are_bounded_by_what_they_can_listits result could take up to 85.1 MiB as served;GHZ24, 30,000 shots, stabilizer: bounded at 887668 bytes, where its result is 940critique::smells_bound(new): the walk the critique makes (one walk now serves both), each smell it finds at 256 bytes and its qubits, and the idle and unmeasured lists; counted from the program as read, before any compile; a program holding a gate whole keeps the per-gate charge. A refusal names the bound's largest part and what makes it smaller (catalog::Bound, new: counts, verdict, notes, requests, rest)a_long_loop_s_verdict_is_taken_and_a_refusal_names_its_part: the loop over MCP and/v1/runwithverdict: true(the Studio's request), and three refusals, each naming its part;a_ghz_state_and_a_long_loop_are_bounded_by_what_they_can_listthe MCP run: its result could take up to 64.7 MiB as served (its counts listing ...);a loop of 124,700 gates, with its verdict: bounded at 67880108 bytes, where its result is 1719429(its client's) or503(everyone's),J032, withRetry-After: 2and the job'sstatus; the README, the OpenAPIwaitparameter and its responses say so; the command line'sfollowwaits and polls againa_long_poll_past_its_client_s_holds_says_when_to_poll_again; another client's poll is helda fifth hold: HTTP/1.1 200 OKended_jobs_unread_stay_under_the_unread_cap(30 clients, 2 MiB cap, bound 621,764 each)30 of 30 takenoffload::tests::a_client_s_eleventh_request_at_once_is_refused_and_eight_wait; anda_client_at_its_share_of_the_readings_is_never_lent_one(50 bursts), a guard only: in-process it passes ond5564748etoo (3 of 3 there), so the race is closed by construction and not shown failing hereReading: your own 2 turns of this pool are still taken by your other requests after 10 s(the eleventh waited)1929b8436(rusqlite 0.41,fc67077fc, and the corpus-licence self-test fix,a4766c993); main's own vanity-metric fix for two of its lines (4c5b54a27) is cherry-picked, as1929b8436had themRUSTSEC-2026-0459 libsqlite3-sys 0.30.1atd5564748eThe result cap, at admission
A job's or a set's result is bounded before it runs. A request whose bound passes
WAI_QSVC_RESULT_MIB(64 MiB) is refused at once,422andJ031, with the bound, its largest part and what makes that part smaller in the reason, onPOST /v1/jobs,POST /v1/runand the MCP run tools. Before, such a job ran and failed as it ended.catalog::plan_bounded(andcatalog::plan_bound, by part:catalog::Bound, counts, verdict, notes, requests and rest) andsets::plan_bounded, and for a pulse run bypulse::plan_boundedthroughMethod::plan_bounded. All are new and additive in the engine, and run in the reading child (http::plan_job). Each item's counts list at most the samples it draws (its shots; atrajectoriesrun's trajectories), the outcomes its measured bits can give (2^bfor thebbits written; on the noiselessstabilizermethod2^d,dits measured qubits and its branching gatesh,sx,sxdg), 65,536 outcomes, or what 16 MiB of bit strings holds. Each outcome is its bit string, quotes, a colon and a comma, andkcounts summing to the shots have at mostk·(log10(shots/k) + 1)digits. A verdict counts its fields, the reader's notes and the repair again, its critique by the smells the program's gates can draw (critique::smells_bound, the critique's own walk, from the program before any compile; a program holding a gate whole at 512 bytes a standard gate), each intent as given with its four lists of 64 outcomes, and two intents' reasons again in its statement. A sampled intent names at most 64 of the outcomes it rules out (impossible_outcomessays how many). Expectation values, amplitudes, diagnostics, outputs, a repair, a compile, a mitigation and a device target are counted by what each may hold, or at their length as RFC 8785 writes them (receipt::canonical_len: each number in its own form, a whole number as read where that is longer), as are the provenance'sshotsandseedas sent. 16 KiB covers the rest, plus a sixteenth for the numbers the engine writes. A set adds each item's request (at its served length), its frame and the head. A pulse run is bounded from its schedule as read: its populations by the qubits it simulates, its distribution by the captures it reads (each keyed as wide as the program's bits), its counts by its shots, and each capture with its frame's and bit's names.GET /v1giveslimits.result_bytesbesideset_items. So do the dry run'sbounds.result_bytes, the MCP description'ssets.result_bytesand the OpenAPI document (the set's description,DryRun.result_bytes, every422). A dry run states the request's own bound asresult_bytes, named inschemas/service-tools.v1.json.engine::bound_tests::no_random_job_s_result_passes_its_bounddraws 96 jobs of every kind (failing sampled intents ruling out many wide outcomes, trajectories with their own count, verdicts over thousands of notes and smells with and without a compile, random Clifford circuits of 1 to 30 qubits measured into repeated bits on the stabilizer method or as planned, with and without noise, observables, amplitudes, a mitigation, a repair, a measurement in the middle, a seed sent as a long string or a list of long numbers, device targets, pulse runs, intents carrying numbers RFC 8785 writes long) and holds each result, as either RFC 8785 writer gives it, to its bound; it passed under 40 seeds besides its own.a_failing_intent_trajectories_and_notes_stay_within_their_boundsholds the review's three cases, anda_ghz_state_and_a_long_loop_are_bounded_by_what_they_can_listthat a GHZ24 at 30,000 shots is bounded under 32 KiB and the 124,700-gate loop with its verdict under 256 KiB.engine::run::tests::no_result_passes_the_bound_its_plan_gaveruns the worked examples, plus a job for each part a result grows with: 65,536 outcomes, 300-bit outcomes, mid-circuit measurement, 256 observables, 64 amplitudes, a remark on every gate, repair, compile, noise, mitigation and a device target. Every result is within its bound. Where counts make the result, it is within 3% (1,438,608 bytes against 1,471,488).engine::pulse::tests::no_pulse_result_passes_the_bound_its_plan_gavedoes the same for pulse runs: one capture, one bit of 3,000 captured, nothing captured, and two qubits captured.a_result_past_what_a_job_may_give_is_refused_before_it_runs(service, cap 1 MiB) finds the largest sweep under the cap from dry runs. That sweep must be taken and enddonewithin its bound (16 points: bound 1,037,576 bytes, served about 700,100). One more point must be refused at once on all three routes, and its dry run must say so. A pulse run of 100,000 bits must be refused at once; before, it was taken and failed as it ended. The two cases below are checked at the defaults.So the cap stays, and the README says plainly that such sets are refused and what is taken. At 64 MiB, 100 points of 65,536 outcomes are refused, and 100 points of 16 bits are taken up to about 30,000 shots a point: 30,878 without a verdict (bound 65,262,975 bytes at 30,000) and 30,003 over MCP, whose runs ask for one (67,100,475 at 30,000), measured by dry runs on a local build on both hosts. Both routes run 100 × 30,000 to
done(6.6 and 6.8 s on the M3, 29.1 and 28.1 s on the Framework);the_readme_s_largest_sweep_is_taken_and_ends_doneruns it at the defaults, and the test above asserts the refusal and the dry run. A client's running jobs count against its unread allowance at their own bounds, not at 64 MiB each.Known new refusals
Programs main read and this refuses, or answers it gave and this does not. Each is a clean refusal with a code.
ifs, a**or^power run, an index chain, a++chain, prefix operators (Q006). Flat runs andelse ifchains are no longer in this list.Q006).Q006).Q130).Q705), from 32.REPEAT n { H 0 }from about 25,000,000 passes, not 50,000,000 operations.WAI_QSVC_QEC_SECS), or that has more than 21 rounds; a reading that takes more than 45 s (down from 120); a set whose items would take more than 128 MiB once read; a check whose answer runs the budget out (a repair of many fixes to a slow program, an improve of a program near the budget, as each candidate is a new text); a set of readings past the child's caps; asourcejob resent in a form other than the one it was sent in is read and counted.verdictorintent, gives a verdict with empty diagnostics and critique, and a view on a poll has no drawing; an answer whose verdict found no time left says so.WAI_QSVC_RETAIN_SECSonce its client's read results keep more than 128 MiB, its oldest first, or all keep more than 4 GiB, the largest holder's first. A client's next job is refused (429) while its unread results, with its running jobs at their bounds and the new one at 64 MiB, would pass 256 MiB; while all unread results, with every job queued or running at its bound and the new one, would pass 8 GiB, new jobs are refused (503).WAI_QSVC_RESULT_MIB(64 MiB) is refused at once,422andJ031: for example 100 points of 65,536 outcomes (about 150 MB), or 100 points of 16 bits past about 30,000 shots a point (30,878 without a verdict, 30,003 over MCP). A verdict's critique counts about 270 bytes for each smell the program's gates draw (a gate that does nothing, a pair that cancels or merges), so a job asking for a verdict is refused only where its smells reach the cap (about 250,000 of them); a long loop with nothing to remark on is not. A refusal names its largest part and what makes it smaller.429(503past everyone's) withRetry-After: 2and the job's status, where it was answered200at once. A dry run whose reading, kept as its submission's would be, passes what the service takes back is refused (accepted: false,422), as its submission is.503before its body is read; past the connection cap a new connection is answered503where none can be closed for it. A client's 121st receipt check in its window is refused429. A body under an idempotency key the client holds no job under waits for the window like any other.Tests
tests/depth.rsdrives the binary over HTTP alone, so it runs unchanged against older code. The answer, dynamic and editor index tests compile on main unchanged; pulse, QEC and frame need only a literal for a constant.4e17e96ef)tests/depth.rs: deep programs through/v1/jobs,/v1/run, a dry run, an intent's reference, a set, a sweep, the MCP run tool and a task, five checks and a QEC decode,/v1/healthafter eachqasm::depth_teststhe_branches_sum_to_the_exact_mixturea_program_nested_past_the_reader_s_limit_is_refused_not_trappedRuntimeError: memory access out of bounds, Node exit 1lint,run,plan,critique,equivalent,instance,qec decodelintended by a signal (front_door.rs:152)test_a_program_nested_past_the_readers_limit_raises_and_the_engine_goes_onci/check.shpasses on the M4, 86 tests, its notebooks against a service started from this branchThe desktop app, on the iMac (macOS x86_64): built in debug, 22 tests pass. Its release build is left to CI:
wai-quantum-studio.ymlfires on this PR.Runs at this head (main merged at
1929b8436), every one throughrb, each request sent only to a local build on loopback. The service's whole suite (unit tests,depth,restart,tasks,verify) ran underulimit -Sn 256, on the committed tree:depth41,restart,tasks,verify2); clippy clean;--features full --lib: 1,436 passed, 0 failed, 18 ignored;tests/reader_stack.rs1 of 1;depth42); clippy clean;engine::qec::tests::a_time_is_measured_apart_from_setup_and_holds_every_threshold, a QEC call refused for its projected time under that load (its shots would take about 30 s … after 3.1 s, where it took 4.5 s with no time set); this round touches no QEC code, and alone it passed 2 of 2.tests/reader_stack.rs1 of 1;doneon both routes (6.6 and 6.8 s on the M3, 29.1 and 28.1 s on the Framework).pr-touches-paths, wai-quantum names, the changelog's form and this change's entry, vanity metrics, the public-text self-test, comparative prose, public names (--maintainer-products-only), corpus licences, orphan sources, spec and section references, the conformance lists: each passes, with its self-test. Vanity metrics was red at1929b8436on two lines of main's own, fixed on main in4c5b54a27and cherry-picked here. The public-name check with the private list is clean on the 188 files this PR changes.wai breaking --against 1929b8436 --text --all(on the M3; the Framework lacksdav1dfor the API check's documentation build) exits 0: five breaking changes, each acknowledged in the entries:E::Chain,S::If,Request::smells_bytes, and main'sqasm::MAX_NESTINGandqasm::MAX_ELSE_IF, which this reader replaces.Earlier rounds' runs (at
e02f5b79a,d5564748eand before) are in the history of this description; each round's fail-first evidence is in its table above.CI
d5564748eon RUSTSEC-2026-0459 in jouleclaw's lock; main merged at1929b8436carries rusqlite 0.41 (fc67077fc), and it passes here. Main's reader nesting bound met this branch's reader in that merge (above). The service workflow's engine step names the three new bound tests, which run in its library filter.Two reds at
4f44194bf, fixed here:e54f28102(wai-quantum 0.9.0), so the contract's API check passes on the raised 0.y and main's fixes for the shared reds (the conformance corpora, the DVR tests, the native count) come with it. Two things met: main made aforloop's values lazily, as this branch did, and its type is kept;tests/reader_memory.rsnested 100 loops, past this branch's 64 levels (Q006), so it nests as deep as the reader nests loops (parse::MAX_NESTING - 8, 56), asqasm::depth_testsdoes, under the same memory bound.7586335a7ona_time_is_measured_apart_from_setup_and_holds_every_threshold, in a debug build beside the library's other tests. A code-capacity point's pilot was one in a hundred of its trials run whole (2,000 trials of colour:15, 11 to 14 s there before the 3 s call was refused); it now runs in doubling batches held to half a second, as a circuit's pilot is, and the test's bound is 5 s, or twice its own decode's time where the host makes that longer (this round: it was refused after 8.2 s on the Framework at load 77, on its pilot). The setup-heavy decode in the same test is timed first and then given twice that and a second, where a fixed 15 s was a release build's figure. On the Studio, the whole library in debug failed this test in two runs of two before, and passed twice after (1,411 passed).E::ChainandS::Ifas unacknowledged; the changelog fragment now carries their Breaking lines, andwai breaking --against <merge base> --text --allexits 0. The wai-quantum contract's major bump comes from main (0.9.0).208ffd374), #659 and here within 25 minutes, on three runners. Each log stopped at about 256 KiB, in the middle of the scan's 800 KB report, and the job was failed twelve minutes later; the scan's own summary in each readpublic surface only: 0, and the same scan exits 0 on the Framework. The step now writes the report to a file and logs its summary, and on a failure the report's list of what is missing: 393 bytes of log on a pass, and an undocumentedpub fnplanted in a copy still fails it, naming the function.Pins: wai-web's engine wasm tests are 23, this PR's one and main's one; the pulse tests are 28, native and wasip2 (
no_pulse_result_passes_the_bound_its_plan_gaveis new); the service workflow's engine step names the two bound tests, and the QEC workflowa_circuit_s_pilot_runs_for_its_floor_within_its_shots. The new tests are in the named lists of the QEC and verdict workflows, and the reader's module filter takesqasm::depth_tests. No workflow names the dynamic walk's two tests:wai-energy-receipts.ymlruns them, in debug, in the whole library. The repository checks pass: tests in CI, lockfiles, vanity metrics, comparative prose, orphan sources, workflow concurrency, the changelog's form and public names. The service'sCargo.lockgainshyperandhyper-utilas direct dependencies, both already in its tree.🤖 Generated with Claude Code
wai-quantum: the reader holds its nesting (Q006), and the job service reads each request once, within one budget, off its request threadsto wai-quantum: no anonymous request ends the job service or holds it without limite54f28102, wai-quantum 0.9.0) into wai/quantum-parse-depthd773bd9d7) into wai/quantum-parse-depth 4499b1338efb58b7fea) into wai/quantum-parse-depth d124f7b0fc63e856b22) into wai/quantum-parse-depth 15a1bc9ed1A pulse run reads its own program, so its result was not bounded before it ran: it was counted at WAI_QSVC_RESULT_MIB and held to it only as it ended. It is bounded now from its schedule as read (pulse::plan_bounded, through Method::plan_bounded, a default method on the registry's trait that gives no bound): the populations by the qubits it simulates, the distribution by the captures it reads, each keyed as wide as the program's bits, the counts by its shots (run::counts_bound_among), and each capture with its frame's and bit's names. A pulse run of 100,000 bits declared and one captured, about 1.4 MB as served, is refused at once under a 1 MiB cap, where it had been taken and failed as it ended; 100 bits are taken. No built-in method is now unbounded, so the check as a result ends is only a backstop, for a job kept across a restart that lowered the cap. engine::pulse::tests::no_pulse_result_passes_the_bound_its_plan_gave runs one capture, one bit of 3,000 captured, nothing captured and two qubits captured, each within its bound and within a few times it. The dry run's result_bytes, an integer or {"bytes": null, "why"}, is named in schemas/service-tools.v1.json and the CLI's snapshot of the service's tools; every_tool_s_answer_follows_its_output_schema failed on it on both hosts at15a1bc9ed. A circuit's QEC pilot goes on past its one in a hundred until 200 ms, its shots allowing (PILOT_FLOOR). Its shots are the call's own, decoded once and counted in its result, so it costs nothing; 20 ms of a light decode, read through one pause of a loaded host's scheduler, projected a decode that took 2.7 s alone at 7 s against a 6 s limit and refused it (a_time_is_measured_apart_from_setup_and_holds_every_threshold, the M3 Ultra at load 40). The workflows name the new tests, and the pulse tests are 28, native and wasip2. Co-Authored-By: Claude Opus 5.5 <[email protected]>cb453c3d5) into wai/quantum-parse-depth 449a2dcbef1929b8436) into wai/quantum-parse-depth c9761ce252Pull request closed