ops(script): RKLB catch-up — gap-fill Ethereum deploy + single-tx swap authoring - #271
Conversation
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (7)
📝 WalkthroughWalkthroughAdds two Forge scripts: one deploys missing Ethereum token vaults, and the other authors a Safe transaction to swap the RKLB vault authoriser. Both scripts gain workflow entries and focused fork-based or harness tests for preflight failures. ChangesEthereum token deployment
RKLB authoriser swap
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
Suggested labels: Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 Checkov (3.3.8).github/workflows/manual-broadcast.yamlTraceback (most recent call last): .github/workflows/run-script.yamlTraceback (most recent call last): Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…p authoring Operational scripts split out of the token-table pin (#259), which stays pins-only: - `20260722-deploy-missing-tokens-ethereum` (manual-broadcast): self-scoping gap-fill of the Ethereum token set — deploys exactly the canonical config rows whose Ethereum table entry is all-zero; refuses on a fully-hydrated table (NoMissingTokens). EXECUTED 2026-07-22 (run 29924926246, RKLB); status + post-execution test shape included. - `20260722-swap-rklb-authoriser` (run-script): single-tx Safe authoring for RKLB's Base authoriser swap, kept separate from the six-vault bundle that was already 2-of-3 signed when RKLB entered the table (a regenerated 7-tx bundle would void those signatures). PENDING. Both registered in their append-only workflow dropdowns; fork suites green against live chains. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VPs1hCTxusmaSeFKvoc4Kr
73a2683 to
8dbb87c
Compare
0aae222 to
2e2ae2c
Compare
The Safe executed the swap on 2026-07-23: 0xf6744Fd94e27c2f58F6110aa9fDC77A87e41766B now reports authorizer() 0x315b16faa6eE413faBCa877d3851B3818369f0cD, read from three independent Base RPCs. The script header still said PENDING. The happy-path test drove run() against live Base, so it began failing the moment the swap landed -- its own comment called for retiring it at exactly this point. Left in place it would have held the PR red on a test that is supposed to stop existing. What remains is the inverted coverage: already-swapped and unknown-authoriser. That is the coverage that still means something now, because it is what refuses a re-dispatch. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
rainix-sol-single-contract was failing: the .t.sol declared both the test and an inline DeployMissingTokensEthereumHarness. That gate exists precisely to stop inline helper contracts accumulating in test files, so it was doing its job rather than getting in the way. Split out to mirror test/src/lib/LibBeaconInvariantsHarness.sol, which sits beside its own .t.sol for the same reason. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Reviewed 467c048: approve Run 29987588312 leaves one test failure — Both scripts are well built, and better guarded than their predecessors in this stack. The gap-fill carries Keeping RKLB as its own single-tx bundle was right: the six-vault bundle was already 2-of-3 signed, and regenerating it as 7 txs would have changed the SafeTxHash and voided those signatures. Two things I changed:
Worth recording what this PR now is: both scripts have executed, and both refuse to run again. It is a record of what happened plus the guards that stop it happening twice — which is the shape rain.deploy#15 argues should be an on-chain migration registry rather than a status marker a human flips. |
Per review: the wallet is first-class state, not a drive-by grant. - LibAuthoriserInvariants.GRANTEE_SERVICE_MINTER_3D0C pinned + expectedGrants grows to 13 (DEPOSIT + WITHDRAW for the minter EOA; the address is chain-shared, the grants per-chain). Every existing consumer of the map now ENFORCES the provisioning: the per-chain clone-grant assertions (StoxProdV4PostSwap on Base, the Ethereum pin test) and the cross-chain parity authoriser leg (assertExpectedGrants per chain) go RED on each chain until its 20260723 bundle executes — the forcing function, exactly like every other migration in this repo. - 20260619 clone-deploy MIRROR_COUNT 6 -> 8 (slice guard + suite updated): future chain bootstraps (HyperEVM) auto-provision the minter wallet at authoriser-deploy time, no Safe signing needed there. - The 20260723 authoring script now references the canonical pin and its drift guard skips the wallet's own (deliberately not-yet-true) rows. - Stale hardcoded grant counts in docs made count-agnostic. Sequencing note: the pending authoriser-swap authorings (#269/#271) carry full-map drift guards, so re-dispatching them AFTER this merges and BEFORE the minter bundles execute reverts on the minter rows — dispatch order: execute the already-signed swap bundles and the minter bundles in any order on-chain, but author from the matching refs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VPs1hCTxusmaSeFKvoc4Kr

Operational scripts split out of the token-table pin (#259), which stays
pins-only:
20260722-deploy-missing-tokens-ethereum(manual-broadcast): self-scopinggap-fill of the Ethereum token set — deploys exactly the canonical config
rows whose Ethereum table entry is all-zero; refuses on a fully-hydrated
table (NoMissingTokens). EXECUTED 2026-07-22 (run 29924926246, RKLB);
status + post-execution test shape included.
20260722-swap-rklb-authoriser(run-script): single-tx Safe authoring forRKLB's Base authoriser swap, kept separate from the six-vault bundle that
was already 2-of-3 signed when RKLB entered the table (a regenerated 7-tx
bundle would void those signatures). PENDING.
Both registered in their append-only workflow dropdowns; fork suites green
against live chains.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01VPs1hCTxusmaSeFKvoc4Kr
Summary by CodeRabbit
New Features
Tests