Fleet upgrade bundle: receipt + receipt-vault beacons to audited 0.1.30 - #325
Fleet upgrade bundle: receipt + receipt-vault beacons to audited 0.1.30#325hardyjosh wants to merge 2 commits into
Conversation
20260825-upgrade-fleet-to-0-1-30 (run-script registry): authors one atomic per-chain Safe MultiSend repointing the chain's IN-USE receipt and receipt-vault beacons (Base's V1 addresses, the bootstrap chains' 0.1.1 set) from the audited 0.1.1 impls to the audited 0.1.30 impls - the H01 remediation going live, and the state the orchestrator cutover hard-gates on. The wrapped-token-vault beacon is deliberately not repointed (optimizer-only delta; separate decision). Pre-flight: 0.1.30 receipt/vault/facet live at their pins by codehash, beacons Safe-owned and exactly in the 0.1.1 state (unknown drift refuses; already-upgraded self-scopes/refuses). The simulation proves, for EVERY production token on the chain, that totalSupply/symbol/ decimals read identically across the upgrade - the H01 fix must be invisible in reads. n+1 proves the Safe can downgrade back. Artifact + MultiSend SafeTxHash + signer-side verify(jsonPath). The four fork surfaces pinning beacon->impl bindings (both bootstrap beacon-ownership tests, cross-chain parity, StoxProdV4's shared checker - now parameterised for Base's unadopted 0.1.1-set artifacts vs the bootstrap chains' in-use ones) ride a LibMigrationInvariant window: 0.1.1 OR 0.1.30 until 2026-10-01, 0.1.30 only after, so this PR merges before the broadcasts and cron red-lines any chain the upgrade misses. Post-execution pin PR flips LibProdBeacons* impls and retires the fixtures. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KbsbYN4C4YDa8pu9DdudoX
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
`authorBundle` took `address[3]` and read `beacons[0]` / `beacons[1]` as the receipt and receipt-vault beacons, with the prod test, unit test and harness all agreeing about those positions by hand. That coupling is what blocks #333: production has four beacons — the orchestrator beacon, which after #324 holds mint/burn over the whole fleet — and the governance-timelock migration walks a fixed `address[3]` that cannot hold it. Widening the set would have broken this PR, so the two changes were deadlocked. `LibBeaconInvariants` now exposes `receiptBeaconForChainId` and `receiptVaultBeaconForChainId`, so only that library knows the layout. Callers ask for the beacon they mean. New members are appended, leaving indices 0 and 1 where they are. Checked by widening the array to `address[4]` locally: every file in this PR compiles unchanged, and the only breakage is in the timelock migration and its tests, which is the set #333 has to change anyway. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

20260825-upgrade-fleet-to-0-1-30 (run-script registry): authors one
atomic per-chain Safe MultiSend repointing the chain's IN-USE receipt
and receipt-vault beacons (Base's V1 addresses, the bootstrap chains'
0.1.1 set) from the audited 0.1.1 impls to the audited 0.1.30 impls -
the H01 remediation going live, and the state the orchestrator cutover
hard-gates on. The wrapped-token-vault beacon is deliberately not
repointed (optimizer-only delta; separate decision).
Pre-flight: 0.1.30 receipt/vault/facet live at their pins by codehash,
beacons Safe-owned and exactly in the 0.1.1 state (unknown drift
refuses; already-upgraded self-scopes/refuses). The simulation proves,
for EVERY production token on the chain, that totalSupply/symbol/
decimals read identically across the upgrade - the H01 fix must be
invisible in reads. n+1 proves the Safe can downgrade back. Artifact +
MultiSend SafeTxHash + signer-side verify(jsonPath).
The four fork surfaces pinning beacon->impl bindings (both bootstrap
beacon-ownership tests, cross-chain parity, StoxProdV4's shared
checker - now parameterised for Base's unadopted 0.1.1-set artifacts
vs the bootstrap chains' in-use ones) ride a LibMigrationInvariant
window: 0.1.1 OR 0.1.30 until 2026-10-01, 0.1.30 only after, so this
PR merges before the broadcasts and cron red-lines any chain the
upgrade misses. Post-execution pin PR flips LibProdBeacons* impls and
retires the fixtures.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01KbsbYN4C4YDa8pu9DdudoX