Add origin authenticated, replayable QIR execution receipts
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 4.5k
- Forks
- 603
- Avg merge
- 23h 32m
- Merged PRs (30d)
- 59
Description
Decision
The bounded design candidate is not promotable because Rust compilation and workspace validation could not run in the available environment. This issue records the verified fixture result and the remaining gates. It deliberately avoids duplicating syndrome and decoder ownership already assigned to ruqu by ADR QE 008.
Evidence
Parent SHA: edaffffb3b85768eb1f3ec1f683b7f46f0506af4
Ruqu submodule SHA: d7f572890a766584d9eed188fa8af5d65c96cca4, unchanged
Ruflo task: quantum-weekly-qir-receipt-20260911 with CLI 3.25.6
Controlled 30 trial Node Ed25519 fixture:
- SHA only baseline accepted a foreign issuer in 30 of 30 trials.
- Signed candidate accepted a foreign issuer in 0 of 30 trials.
- Verification p95 was 165.931 microseconds.
Ruflo deep scan reported no findings at any severity. Ruflo secret scan detected no secrets.
The final worktree was returned clean and no unverified candidate code was retained.
Scope
Add an isolated ruvector-qir-receipt crate that canonically binds exact QIR bytes, format, backend, calibration or noise snapshot, configuration, sorted results, shots, seed, queue inclusive latency, total cost, implementation hash, and parent receipt.
Use a domain separated signature statement with an explicit issuer key identity. Label Ed25519 as classical origin authentication, not post quantum security. A receipt proves provenance and integrity, not that a claimed physical or computational result is correct.
Safety limits
- QIR maximum: 128 MiB.
- Configuration and calibration maximum: 1 MiB each.
- Identifier maximum: 256 bytes.
- Shot maximum: one billion.
- Physical QPU receipts require calibration evidence.
- Reject malformed signatures, unknown issuers, field mutation, result mutation, QIR substitution, and replay outside declared policy.
Acceptance criteria
- Run at least 30 seeded foreign issuer trials. SHA only baseline must accept 30 of 30 and the signed candidate must accept 0 of 30.
- Signature p95 must remain below 2 milliseconds and verification p95 below 1 millisecond on CI class hardware.
- Run formatting, focused tests, Clippy with warnings denied, dependency audit, Ruflo scans, and all affected workspace tests.
- Add an ADR, RVF embedding example, rollback instructions, provenance, and a signed evidence receipt.
- Keep syndrome graphs, Stim fixtures, MWPM, fusion blossom, min cut, and QEC simulation in ruqu.
Runnable acceptance test
cargo fmt --all -- --check &&
cargo test -p ruvector-qir-receipt &&
cargo clippy -p ruvector-qir-receipt --all-targets -- -D warnings &&
cargo run --release -p ruvector-qir-receipt --bin qir-receipt-benchmark
Blocking gate
The runtime had no cargo or rustc. Formatting, compilation, focused tests, Clippy, Rust benchmarks, dependency audit, and affected workspace tests remain unverified. Safety score and holdout regression are therefore unproven. No protected branch was modified and no QPU job was submitted.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No implementation files are named. Start by locating the Rust workspace and the proposed isolated ruvector-qir-receipt crate, then run the listed cargo format, test, Clippy, and benchmark commands once the environment is available. Done requires the signed receipt behavior, acceptance trials, performance gates, ADR, RVF example, rollback instructions, provenance, and evidence receipt described here.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cryptography, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100