fix(l2): pin the TDX qpl tool's crate resolution to the repo's lockfile - #7219
Conversation
The `automata-dcap-qpl` target deletes the cloned repo's workspace manifest to build the tool standalone, which orphans the repo's root Cargo.lock — so while every git rev in this Makefile is pinned, the tool's crates.io dependencies resolved fresh at the latest versions on every build. alloy-sol-types 1.7.0 (published 2026-08-25) is what turned that into a failure: it added required trait methods (`abi_decode_returns_with_config` and friends) that the generated bindings in the pinned automata-dcap-attestation rev do not implement, so `deploy-all` dies with 56 E0046 errors while compiling `automata-dcap-evm-bindings`. Every TDX integration run after that release fails identically; runs that appear green merely skipped the job through the paths filter. Copy the repo's root Cargo.lock into the tool's new workspace before building. Cargo prunes the entries for the removed members and keeps the locked versions for everything else, so the build compiles the same dependency set the pinned rev was developed against (alloy-sol-types 1.6.1). Verified both ways: a fresh resolve picks 1.7.1 and fails to compile, while with the carried lock the tool resolves 1.6.1 and `cargo check` passes.
|
🤖 Kimi Code ReviewThis is a correct and necessary fix for build reproducibility. The detailed inline comment accurately explains the issue: removing the workspace manifest orphans the Feedback:
Verdict: LGTM. The fix prevents deterministic build failures and supply chain drift in security-critical TEE verification code. Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt |
🤖 Codex Code ReviewNo findings.
Residual gap: I could not run Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
🤖 Claude Code ReviewSummaryThis is a small, well-scoped Makefile fix: it copies the The root-cause diagnosis (deleting the workspace Findings
Overall: solid, targeted fix that matches the file's existing pinning discipline and is backed by stated before/after verification. Nothing here blocks merging; the notes above are minor confirmations/awareness items. Automated review by Claude (Anthropic) · sonnet · custom prompt |
Motivation
Every
Integration Test - TDXrun after 2026-08-25 15:29 UTC fails during "Start L1 & Deploy contracts", killing 56 E0046 errors deep in a third-party crate — including on the v25.0.0 merge-back (#7215). Runs that look green after that time merely skipped the job through the paths filter. The TDX prover itself is never reached.alloy-sol-types 1.7.0(published at that timestamp) added required trait methods (abi_decode_returns_with_configand friends) that the generated bindings in the pinnedautomata-dcap-attestationrev do not implement, so compilingautomata-dcap-evm-bindingsfails for anyone resolving fresh.Resolution floats because of our own recipe: the
automata-dcap-qpltarget deletes the cloned repo's workspaceCargo.tomlto build the collateral CLI standalone, which orphans the repo's rootCargo.lock— every git rev in the Makefile is pinned (#7102), but the tool's crates.io dependencies re-resolved at latest on every build.Description
Copy the repo's root
Cargo.lockinto the tool's new workspace before building. Cargo prunes the entries for the removed members and keeps the locked versions for everything else, so the build compiles the dependency set the pinned rev was developed against (alloy-sol-types 1.6.1).Verified both directions:
alloy-sol-types 1.7.1→ the bindings fail to compile with the same E0046 errors as CI1.6.1, andcargo checkof the tool (includingautomata-dcap-evm-bindings) passesChecklist
STORE_SCHEMA_VERSION(crates/storage/lib.rs) if the PR includes breaking changes to theStorerequiring a re-sync.