This document freezes the intended Quantum patch surface on top of upstream Foundry commit f1abb2ca347187bb6dea8c3881ca44ce50aab1e7 so later rebases can distinguish expected adapter work from incidental drift.
Use this together with quantum-phase0-implementation-note.md when widening the Quantum integration.
- Upstream Foundry base:
f1abb2ca347187bb6dea8c3881ca44ce50aab1e7 - Quantum harness commit:
8f3612c60f9fa66ea3a09eab99a2e0802f373673 - Phase 0 contract reference:
docs/dev/quantum-phase0-implementation-note.md
These files are already intentionally diverged from upstream as part of the Phase 0 seam spike or the landed Phase 1 adapter work.
.github/workflows/ci-quantum.yml- Quantum-named workflow running
cargo fmt --all --check,cargo clippy --workspace --all-targets -- -D warnings,cargo test --workspace, and a targeted Quantum fixture regression job; carries the frozen Quantum fork base and harness commit in CI metadata
- Quantum-named workflow running
README.md- Quantum-first project intro on top of the preserved upstream Foundry README, listing the
cast send --quantum,cast quantumlifecycle subcommands,cast calllifecycle rejection,forge create --quantum, and scripted broadcast changeset
- Quantum-first project intro on top of the preserved upstream Foundry README, listing the
docs/dev/README.md- indexes the Quantum implementation note and this touchpoint manifest
docs/dev/quantum-phase0-implementation-note.md- freezes the Phase 0 RPC, signer, and operator contract
crates/cli/src/opts/mod.rscrates/cli/src/opts/transaction.rscrates/cli/src/opts/quantum.rs- add explicit Quantum CLI selection and the Phase 0 signer input contract
crates/cast/src/lib.rscrates/cast/src/cmd/send.rscrates/cast/src/quantum.rs- implement the Phase 0 seam spike that normalizes a
cast sendflow intoQuantumWriteContractV1, signs a native0x7Aenvelope, and submits it witheth_sendRawTransaction
- implement the Phase 0 seam spike that normalizes a
crates/common/src/transactions/builder.rs- carries the shared
QuantumWriteRequestV1model, canonical0x7Abody encoding, and v1 fail-closed validation rules
- carries the shared
crates/cli/src/opts/network.rs- adds the first-class
Quantumnetwork enum value while keeping v1 selection explicit instead of chain-ID inferred
- adds the first-class
crates/cast/src/args.rs- wires
--network quantumthroughcastread/decode dispatch and fails closed on raw paths that still need a realQuantumNetworkadapter
- wires
crates/cast/src/cmd/da_estimate.rs- rejects
--network quantumexplicitly instead of silently falling back to Ethereum behavior
- rejects
crates/cast/src/cmd/call.rs- fails closed on KeyVault lifecycle selectors so
cast callkeeps pure read paths on standard RPC simulation while rejecting unsupported lifecycle simulations with the frozen error message
- fails closed on KeyVault lifecycle selectors so
crates/cast/src/cmd/quantum.rscast quantumsubcommand group (bootstrap,add-key,remove-key,update-key-auth) that builds KeyVault lifecycle calldata via the shared core, routes throughCastTxBuilder, signs with the fork's ML-DSA signer, and broadcasts viaeth_sendRawTransaction; distinguishes--auth-key-id(signer lane) from--target-key-id(key entry being mutated) and auto-appliesQUANTUM_LIFECYCLE_GAS_FLOOR
crates/common/src/transactions/quantum_lifecycle.rs- shared KeyVault lifecycle calldata builders (
encode_bootstrap_calldata,encode_add_key_calldata,encode_remove_key_calldata,encode_update_key_auth_calldata) whosesol!-derived selectors are asserted byte-for-byte against the Phase 0 frozen selectors
- shared KeyVault lifecycle calldata builders (
These are the Phase 1 surfaces that should absorb the shared adapter work instead of spreading Quantum fields across unrelated codepaths.
crates/cast/src/cmd/send.rs- replace the Phase 0 local-only seam with the shared Quantum adapter path while keeping Quantum selection explicit
These files already match the plan's Tempo-based seam inventory and should stay the only intended write-path expansion points after the shared adapter exists.
crates/cast/src/tx.rs- request preparation, fill behavior, and raw-send plumbing shared by
cast
- request preparation, fill behavior, and raw-send plumbing shared by
crates/forge/src/cmd/create.rs- CREATE translation, explicit Quantum dispatch, and receipt-derived contract address handling
crates/script/src/broadcast.rs- shared scripted broadcast path and fail-closed rejection for unsupported Quantum script shapes
If a future rebase requires Quantum changes outside the files listed here, treat that as an intentional design decision and update this manifest in the same change.