wai-quantum-service: POST /v1/write and write_circuit, a program written for a task on the service's own model (stacked on #646) #648
Closed
dcharlot
wants to merge 15 commits from
wai/quantum-service-write into main
pull from: wai/quantum-service-write
merge into: Transaction-Science:main
Transaction-Science:main
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: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!648
Loading…
Reference in a new issue
No description provided.
Delete branch "wai/quantum-service-write"
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
655b366aa(squash of a local merge with main ate694cb096; the pushed tree is byte-identical to the tested one). Main's contracts had taken J070-J074, so the write's refusals are now J080/J081/J082; admission follows #676's order (window, reading turn, capped reading child). Also fixes a race in main's reading pool (offload.rs) with a new test that fails 3/3 on main. Tested on Linux and macOS build hosts: service 140 + clippy, wai-quantum lib 1,517, engine builds, writer leg, course/docs, smoke with and without a scripted writer, the shipped image.Stacked on #646 (
wai/quantum-writer), which is stacked on #645. Merge those first.Step 3 of the series: the WAI Quantum job service gains
POST /v1/writeand the MCP toolwrite_circuit. A caller sends a task (an exercise in the course's form), the service's own code model writes an OpenQASM program for it with the writer's loop, the engine checks each attempt exactly as it checks a lesson's answer, and the answer is the transcript, signed.What it does
Work::Write): admitted, kept, reloaded and run again as a job is, its request kept in canonical form (RFC 8785) so a rerun hands the model the same text. Its result is the transcript (wai.quantum.write/1) with the writer's energy inside, sealed with the service's receipt, soPOST /v1/verifychecks it. The job'stiming(each reply's and check's seconds) is beside it, outside the signed body.wai-quantum-service writer [--model DIR | --script FILE]) starts with the service and serves every write, so the model loads once. It talks JSON lines: one request a line on stdin; areadyline once loaded, then anattemptline for each attempt as it lands, and a last line with the transcript or an error. One that ends is started again for the next write; the write it was running fails, saying so.WAI_QSVC_WRITER_GB(96), each write toWAI_QSVC_WRITE_SECS(3600). The engine's checks inside it plan within the per-job cap (job_bytes), socheck_exerciserefuses a program too large for a job.WAI_QSVC_MAX_QUEUEalone. A client holds one queued or running write (429,J030), checked and taken under one lock. A write holds none of the jobs' memory budget.attemptevent onGET /v1/jobs/{id}/eventsas it lands; a running write's job givesprogress.J070(no model on this service,503),J071(a task without an intent, or a case without one and no task intent to take, or one not in the course's form or past its sizes),J072(options out of range, or a member a write does not take). Added to the engine's table, its page and the service's docs.Idempotency-Keyworks as for a job.GET /v1andquantum_service_infogivewrite: the model's name, licence and digest once it is loaded, or plainly that there is none. OpenAPI has/v1/writeandWriteRequest.write_circuitruns as an MCP task;get_quantum_jobreads a write with the verdict of the last program it wrote.WAI_QSVC_WRITER_SCRIPT=<file>runswai_quantum_writer::scripted::Scripted(now public) in the model's place.wai/changes/2026-11-05-job-service-writes-program-for-task.md, beside #645's and #646's, withwai/CHANGELOG.mdmain's).smoke.shwrites a Bell pair's program only withSMOKE_WRITE=1; otherwise it checks a model-less service refuses a write. The version is unchanged (versions move at release commits).Also changed
scriptedmodule (from the tests; a script plays from its start in each conversation, and one that runs out says so),write_with(each attempt handed on as it lands), andcheck_task(a case with no intent of its own or the task's was checked with no intent, so no program could pass it; now refused up front).J070–J072;course-check.v1.json'slessonmay be null, ascheck_exercisegives it.jouleclaw-coreandjouleclaw-loader-ggufwith their workspace manifest), since the service now links the writer's model runtime.check-image.shand the self-host page follow.write_circuit.wai-quantum-docs.ymlpins the course's tests by count and by name, and this branch carries #645's and #646's. This branch's own commits add none. It says 15, the same lines as #646's.Review fixes (2026-11-06)
A review of the write loop found these in the service. Each is fixed here, and each new test failed on
72544526ffor the reason it states.A task was bounded only by the 1 MiB body. It is now read before it is queued:
check_taskholds its canonical form toengine::course::exercise_form(#645): whole-number bounds, named constraints, a job ofshots,seedandnoise, at most 16 cases and 8 intents;J031).Before, a non-object
jobpanicked the writer, a malformed intent burned every round, andjob.compileandjob.repairwent through.GET /v1states the new limits underwrite.limits. Test:writer::tests::a_write_reads_its_task_and_options_or_says_which_does_not; it failed because{"t_count": 0}was admitted.One write a client was checked and taken in separate steps. Four POSTs at once admitted four. A lock now holds from the check to the job's insertion. Test:
jobs::tests::one_client_s_writes_sent_at_once_admit_one, with a store that syncs slowly; it failed with 4 of 4 admitted.A write cancelled while the writer started was sent anyway and ran to its end. Now it is never sent. A write cancelled while it runs stops the writer within a poll, whether or not the kill reached it. Test:
tests/write.rsa_write_cancelled_while_the_writer_starts_is_never_written, with a FIFO script that fails the first start; it failed because the cancelled write's job recorded the writer's peak memory.Writes and circuit jobs shared one
max_queue, so a backlog of writes refused every circuit job while workers sat idle. Each kind now fills the queue alone, in the dry run (would_refuse) and at admission. Test:jobs::tests::writes_and_circuit_jobs_each_fill_the_queue_alone; it failed because a circuit job was refused behind two writes.The verdict of a write (
get_quantum_job,tasks/result) is the last program's against the task's constraints as well as its intents. A broken constraint givesholds: falseand is named. A write with no attempt yet has no verdict; it was "refused". Test:writer::tests::a_write_s_verdict_is_its_last_program_s; it failed because a queued write was "refused".The model's digest is tied to its bytes. The writer reads every byte of the model against its manifest as it starts, and loads exactly the files the manifest lists (#646), so a hosted transcript's model says
"checked": "blake3".The replay claim is scoped in the README, the tool's description, the OpenAPI summary and the schema to the same arithmetic, which the transcript names. The schema gains the transcript's new fields:
check_memory_bytes;decoding.think_max;checked,arch,osandmatmul;thinking_closed, withthinking_tokensdescribed.The command line's tool snapshot and
llms-full.txtare regenerated.A test that could not fail:
a_task_needs_something_the_program_must_doscripted no reply, so it passed withcheck_taskremoved. Its model now has a passing reply. Withcheck_taskremoved it fails ("the model was asked"); that was checked by mutation.Second review (2026-11-06)
Each new test failed on
90b4d4073for the reason it states.Admission order. A write's programs were read three times each, before its sizes, its counts and its client's window. Four 885-byte POSTs held every runtime worker for 26 s. Admission now goes cheapest first:
writer::read_shaperefuses what costs nothing to read: the shape, the options, exact numbers, the canonical size, and the number of cases and intents.writer::read_programsreads the programs, each once and all within one budget of 1 000 000 statements. That budget iswai_quantum::qasm::within_steps, a per-thread budget and memo that the reader's elaborator spends from. The reading runs as blocking work, off the runtime's workers.supervise_writenow reads only the options, not the whole task again. Testa_write_s_programs_are_read_last_within_one_budget_and_hold_up_nothing: four writes of eight 10M-statement programs. On the old head, the health check took 88 s. Now each write is refused in moments, three counted withJ071and the fourth refused by the window (J030).Partial inputs. A task whose cases give different inputs could pass no program;
check_tasknow refuses it (the inputs lines ofa_task_reads_only_with_something_to_check).OpenAPI.
/v1/write's 422 namesJ031, and GET /v1'slimits.queuesays it is per kind.A cancelled write held its place in the queue until a scheduler passed it.
queued()now counts live entries (a_cancelled_write_holds_no_place_in_the_queue).The admission lock was a std Mutex held across the store's fsyncs on runtime threads. Now a client's write is reserved in memory under the lock, and released once its job is in
jobs. A job's record is kept before the queue lock is taken; a full queue takes the record back. Testa_write_waiting_on_the_store_holds_up_no_other_admission: before, another client's write timed out waiting.The maths library the model names (#646) is in the schema and in each statement of the replay claim.
The parser's recursion limit, and the job path's intents being read before its caps, are on main too, and are being fixed there on
wai/quantum-parse-depth. This stack takes main once that merges.Tests
Run at
f6e6e6605on the M4 Max MacBook Pro (macOS aarch64; the M3 Ultra is running the thinking-cap measurement) and the Framework box (Linux x86_64).wai-quantum-servicecargo test --locked --release, all targets-D warnings, service and writer, with and without default featureswai-quantum-writer, with and withoutcoderengine::course::andengine::schema::tests/write.rs:GET /v1states;J030), with another client's write waiting and running after;J034);J071andJ072;write_circuitas an MCP task with its verdict;J070);jobs::tests: the rerun after a restart, the schema in each status, the race, and the queues.writer::tests: the request and its bounds, both energy figures, the verdict, and on macOS the sandbox profile.guide::: 9 passed;check-lockfiles.shat the head: 61 lockfiles, all current;check-public-names.shwith the denylist: clean over every file the stack changes, and every commit message prints 0.The real model
This run was made before the review fixes. Its transcripts lack the fields added since: the thinking cap, the check's memory, and the model's arithmetic and check level.
One service on the build host, started with the real checkpoint, sandboxed, under memguard at 100 GB. The model loaded in 4 s, and
GET /v1named it (name, licence, digest05ce13f9…).SMOKE_WRITE=1 smoke.sh)proofproofstatus, attempt, attempt, jobThe transcripts of A and B are the same, compared with
energyandreceiptremoved. Write A held 61.5 GB at its peak, against the writer's cap of 96 GiB, and read 3,893 J over 2,950 s of CPU. The first attempt wroteHandCXin capitals, the reader refused it (Q103), and the repair passed. Host load differed between the two (load average 120 during part of A). Everything else insmoke.shheld against that service too.What CI exercises first
CI repeats the macOS and Linux runs above, so nothing in it is a first run of the code on those systems. What it adds:
linuxrunner: the first build of the writer and its model runtime from an empty cache, andtests/write.rsthere (it needsmkfifo).linux-hwenergy leg runssmoke.shwith no model, so it checks the J070 refusal and not a write's figure.SMOKE_WRITE=1 bash smoke.shagainst a service started withWAI_QSVC_MODELis the check for that, and takes minutes.check-image.shis in no workflow.🤖 Generated with Claude Code
The loop the job service will write programs with, as a crate of its own. The task is an exercise in the course's form (wai.quantum.exercise/1). A model writes a program, and the engine checks it against the task exactly as it checks a lesson's answer (engine::course::check_exercise). What went wrong goes back to the model in the engine's own words, until a program passes or the rounds run out. - The code model (src/coder.rs): North Mini Code 1.0 (Apache-2.0) on the pure-Rust runtime (jouleclaw-loader-gguf). - Decoding is greedy, so the same model files, task and engine give the same programs. - The conversation stays in the model's cache: a repair round feeds only the new turn, where the measurement harness re-read the whole conversation each round. - The loop takes the answer after the model's thinking, so thinking text is never checked as a program, and a reply that never leaves its thinking is asked again. - The model's identity: the digest of a manifest of its files (wai.quantum.model/1, wai-model.json). open() checks each file's size against it, and verify reads every byte. - The transcript (wai.quantum.write/1): the task, model and prompt (version, system and first-turn digests), the decoding, the engine's version, and each attempt (program, digest, the engine's check, tokens). Timing is returned beside it, since a replay does not reproduce time. - The engine: - course::task_of shows any exercise as a lesson shows its own, its title and task given as one string or one per locale; - course::exercise gives a lesson's exercise document; - lesson() now builds its fields through the same helpers, and a test holds every lesson's fields in both locales equal to task_of's. - The command line: wai-quantum-writer write | course | manifest | verify. - CI: wai-quantum-cli.yml tests the writer with a scripted model, with and without the model compiled in, plus clippy. The workflow now also runs for changes to the writer and to the loader crate it depends on. Tests (all run on the build machines): - wai-quantum-writer: 7 pass, default features and without them; clippy -D warnings is clean. - engine::course: 11 pass. - scripts/check-lockfiles.sh: 61 lockfiles, all current. Stacked on #645 (check_exercise). Co-Authored-By: Claude Opus 5.5 <[email protected]>A service started with a model (WAI_QSVC_MODEL) writes an OpenQASM program for a task, an exercise in the course's form, with wai-quantum-writer's loop: the model writes, the engine checks each attempt as it checks a lesson's answer, and what went wrong goes back for another attempt. - A write is a job (Work::Write), admitted, kept, reloaded and run again as one, and sealed with the service's receipt. Its result is the transcript (wai.quantum.write/1) with the writer's energy inside it, so POST /v1/verify checks it; its timing is the job's `timing`, outside the signed body. The request is kept in canonical form, so a rerun hands the model the same text. - The writer process (`wai-quantum-service writer`) starts with the service and serves every write over JSON lines on stdin and stdout, so the model loads once. One that ends is started again for the next write, and the write it was running fails, saying so. On macOS it runs in the worker's sandbox, its model read. Its resident memory is held to WAI_QSVC_WRITER_GB (96), a write to WAI_QSVC_WRITE_SECS (3600), and the engine's checks inside it plan within one job's memory. - Writes have a scheduler of their own: one at a time, in the queue's order, beside the circuit jobs, neither holding the other up. The circuit scheduler passes over writes and takes a job out of the queue by its id (it used to pop the front, which also dropped a job queued but not yet listed). A client holds one queued or running write (J030), and a write holds none of the jobs' memory budget. - Each attempt is an `attempt` event on GET /v1/jobs/{id}/events as it lands, and a running write's job gives its `progress`. - Refusals: J070 (no model, 503), J071 (a task that does not read), J072 (options out of range). Idempotency-Key works as for a job. - GET /v1 and quantum_service_info give `write`: the model's name, licence and digest once it is loaded, or that there is none. The OpenAPI document has the route and its request. The MCP server has write_circuit, which runs as a task, and get_quantum_job reads a write with the verdict of the last program it wrote (its outputSchema, job_or_write; the run tools keep job). - WAI_QSVC_WRITER_SCRIPT runs a script in the model's place. tests/write.rs writes a Bell pair's program with one, through a FIFO that holds the writer at its start: a pass after one repair, the transcript's fields, the receipt verifying, the two attempt events, one write a client, the order, an idempotent resend and the refusals; and a service with no model answering 503. jobs.rs holds a write run again after a restart to the same transcript, and a write's job in each status to its schema. - smoke.sh writes a Bell pair's program with SMOKE_WRITE=1, and otherwise checks that a service with no model refuses a write. - The image builds from the repository's root, since the service now links the writer and its model runtime; the workflow runs on their paths. The command line's agent docs and tool snapshot list write_circuit. Co-Authored-By: Claude Opus 5.5 <[email protected]>So that whoever runs SMOKE_WRITE=1 can read the write afterwards, its energy and its timing among it, from GET /v1/jobs/{id}. Co-Authored-By: Claude Opus 5.5 <[email protected]>The workflow pins how many course tests pass and names each one, since a module filter is satisfied by any one test. This branch adds any_exercise_is_shown_as_a_lesson_shows_its_own to engine::course, and the pin it now inherits from the branch below counts ten. So the step failed here with all eleven passing ("test result: ok. 11 passed" in the job's log, then "the course's tests did not all pass"). The count is eleven and the new name is the last in the list, the same lines the branch stacked above this one already holds, so the two merge as one change. Co-Authored-By: Claude Fable 5.1 <[email protected]>The loop, as reviewed: - A task is read in its canonical form (RFC 8785, what task_digest is taken over) and held to engine::course::exercise_form before the model is asked anything. The same task with its keys in another order, or a bound written 0.0, was two prompts and two checks under one digest; a job asking for a repair, a vacuous bound or an unknown constraint went to the model. - The transcript records check_memory_bytes, the memory each check's run is planned in, which decides what a check runs: the command line and the service used different caps and their transcripts did not say so. - The replay claim is scoped: the model's identity names the arithmetic it ran in (arch, os, and the BF16 matmul kernel: NEON fused multiply-add on aarch64, a scalar loop elsewhere), and a test holds the named kernel to the one that runs. The same files, task, options and engine give the same bytes in that arithmetic. The model wrapper: - CodeModel::open loads exactly the files wai-model.json lists, in its order, and refuses a manifest that lists none and a directory holding a model file it does not list or lacking one it lists (a stray shard sorting first was bound in place of the listed one). It checks sizes, and says so in the identity ("checked": "sizes"); open_verified (and --verify) reads every byte first and says "blake3". - answer_of drops <|START_TEXT|> and cuts at <|END_TEXT|>, which landed in the program. And the measured "no answer" (run 2: 23 of 43 attempts spent the whole budget thinking): a reply still thinking at its cap (Options::thinking_cap, two thirds of max_new unless --think-max says) has <|END_THINKING|><|START_TEXT|> fed for it and decodes its answer in the tokens left. The transcript records the cap and, per attempt, thinking_closed; `course` prints how many replies gave no program and how many were closed. The decode loop is a function over a small trait, so a test drives it with a model that thinks for ever. Each loop test failed on63fb4a39cfor the reason it states (a malformed task was written for; one task, two prompts), and the coder tests for theirs (the markers were in the answer; an unlisted shard was taken). The course's case names given as one string are shown by it. Co-Authored-By: Claude Opus 5.5 <[email protected]>The course words these bounds as "at most n" (constraint.t_count, two_qubit, estimate), and the check read a min too: {"t_count": {"min": 2}} showed the model "at most ? T and T† gates" while it failed every program with fewer than two. The reader now takes {"max": n} alone for them (engine::course::at_most), and exercise.v1.json says so ($defs/at_most), with the T count's description saying how T gates are counted. No lesson uses a min there. Found sweeping the review's family of claims the check makes that the code does not keep. Co-Authored-By: Claude Opus 5.5 <[email protected]>The second review found finding 1 closed only for undeclared inputs. A program that declared `input uint err;` and never used it passed the bit-flip lesson at proof, and one that branched on the classical err passed the syndrome lesson. A new constraint, `inject`, names the input whose value is the qubit an error flips. The cases' programs may then differ in that one gate alone, an x on the qubit the case names, every other gate, measurement and step the same (course::injected). So the error is in the quantum state, the program cannot read it classically, and what finds and corrects it is the program's quantum operations, the same in every case. A program that never applies the error, reads it elsewhere, or flips another qubit fails, saying which. A second, `qubits` ({"max": n}), closes the last way round: an answer kept on a qubit no error reaches. bit-flip-code and syndrome set both; their solutions and wrong answers keep their results. The exercise schema names both, and a case set an injection cannot be made from is refused. Test an_injected_error_is_corrected_from_the_qubits_and_never_read, failing onba59c776efor the reason it states (the declared, unused input passed bit-flip-code). Course tests 13 -> 14 in wai-quantum-docs.yml. Co-Authored-By: Claude Opus 5.5 <[email protected]>Pull request closed