Karst gas-limit reset — OP Mainnet (055), rotations shift to 056-059#1480
Karst gas-limit reset — OP Mainnet (055), rotations shift to 056-059#1480sbvegan wants to merge 6 commits into
Conversation
Uses SystemConfigGasLimit template (setGasLimit only) to re-emit the gas ConfigUpdate on OP Mainnet after Karst (U19) activation. Rooted at the Foundation Upgrade Safe (SystemConfigOwner), nonce 61 stacked after 053–054 (U19) and 055–056 (FUS rotation). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Insert the Karst gas-limit reset for OP Mainnet as 055-gas-limit-op so it executes first among the post-U19 FUS tasks (FUS nonce 59), ahead of the signer rotations. The previously-merged rotation tasks move: 055-fus-rotation-1 -> 056-fus-rotation-1 (FUS nonce 59 -> 60) 056-fus-rotation-2 -> 057-fus-rotation-2 (FUS nonce 60 -> 61) 057-fos-rotation-1 -> 058-fos-rotation-1 (FOS nonce 118, unchanged) 058-fos-rotation-2 -> 059-fos-rotation-2 (FOS nonce 119, unchanged) Nonce overrides, cross-task references, and per-task READMEs/VALIDATIONs updated accordingly. Message hashes for the three FUS tasks (055/056/057) are regenerated separately since their nonces changed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
| - **Before:** `59` | ||
| - **After:** `60` | ||
| - **Summary:** Safe nonce increment. | ||
| - **Detail:** The Safe nonce is incremented from 59 to 60 after executing the transaction. | ||
| - **Detail:** The Safe nonce is incremented from 60 to 61 after executing the transaction. |
There was a problem hiding this comment.
There is an inconsistency in the nonce before/after values in the State Changes section. The table header rows (lines 87-88, unchanged) say 'Before: 59' and 'After: 60', but the modified detail line (line 90) now says 'incremented from 60 to 61'. This mismatch means the summary rows and the detail row describe different nonce transitions, which will confuse validators trying to verify the state diff. The 'Before' and 'After' summary values should also be updated to 60 and 61 respectively to be consistent with the new nonce ordering.
| - **Before:** `59` | |
| - **After:** `60` | |
| - **Summary:** Safe nonce increment. | |
| - **Detail:** The Safe nonce is incremented from 59 to 60 after executing the transaction. | |
| - **Detail:** The Safe nonce is incremented from 60 to 61 after executing the transaction. | |
| - **Before:** `60` | |
| - **After:** `61` | |
| - **Summary:** Safe nonce increment. | |
| - **Detail:** The Safe nonce is incremented from 60 to 61 after executing the transaction. | |
Spotted by Graphite (based on custom rule: Superchain Ops task/template review)
Is this helpful? React 👍 or 👎 to let us know.
| - **Before:** `60` | ||
| - **After:** `61` | ||
| - **Summary:** Safe nonce increment. | ||
| - **Detail:** The Safe nonce is incremented from 60 to 61 after executing the transaction. | ||
| - **Detail:** The Safe nonce is incremented from 61 to 62 after executing the transaction. |
There was a problem hiding this comment.
Similar to the issue in 056-fus-rotation-1/VALIDATION.md, the unchanged summary rows (lines 91-92) still show 'Before: 60' and 'After: 61', but the modified detail line (line 94) now says 'incremented from 61 to 62'. This inconsistency between the summary and detail rows will mislead validators checking the state diff. The 'Before' and 'After' values in the summary should be updated to 61 and 62 to match the new nonce ordering introduced by inserting task 055.
| - **Before:** `60` | |
| - **After:** `61` | |
| - **Summary:** Safe nonce increment. | |
| - **Detail:** The Safe nonce is incremented from 60 to 61 after executing the transaction. | |
| - **Detail:** The Safe nonce is incremented from 61 to 62 after executing the transaction. | |
| - **Before:** `61` | |
| - **After:** `62` | |
| - **Summary:** Safe nonce increment. | |
| - **Detail:** The Safe nonce is incremented from 61 to 62 after executing the transaction. | |
Spotted by Graphite (based on custom rule: Superchain Ops task/template review)
Is this helpful? React 👍 or 👎 to let us know.
Address Graphite review: the State Changes nonce Before/After rows were left at the old values while only the Detail line was updated. Sync them to the new ordering (056: 60->61, 057: 61->62). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Context
Karst (U19) has an op-node/kona-node bug that leaves the effective L2 block gas limit ~55 MGas above the value stored in the SystemConfig after the activation block (see Notion "P/PS: Karst Gas Limit Bug"). The approved mitigation is a per-chain SystemConfig transaction that re-emits the gas
ConfigUpdate, resetting the effective gas limit back to the on-chain value.Mainnet Karst activates 2026-07-08. This task runs after activation.
What this PR does
Inserts the OP Mainnet gas-limit reset as the new
055-gas-limit-opso it executes first among the post-U19 Foundation Upgrade Safe (FUS) tasks — ahead of the signer rotations — and renumbers the previously-merged rotation tasks (#1479) to run after it.OP Mainnet's SystemConfig is owned by the FUS, so the gas-limit task is rooted there. Running it before the rotations means it is signed by the current owner set, with no dependency on the rotation onboarding.
Task / nonce ordering (FUS =
0x847B…9D92, FOS =0x9BA6…6b3A)053-U19-op-ink-mmz-soneium054-U19-unichain055-gas-limit-op(this PR)056-fus-rotation-1055, nonce 59→60057-fus-rotation-2056, nonce 60→61058-fos-rotation-1057, nonce unchanged059-fos-rotation-2058, nonce unchangedThe FOS nonces are unchanged because the gas-limit task only touches the FUS.
Validation
just simulate-stack eth 059-fos-rotation-2(full stack) passes end-to-end with no hash mismatches. The regenerated message hashes for the three FUS tasks whose nonce shifted (055,056,057) are recorded in theirVALIDATION.mdfiles; the FOS task hashes are unchanged. Verify the live FUS/FOS nonces before signing.Notes
setGasLimitis called (nosetEIP1559Params) — theSystemConfigGasLimittemplate is used since the EIP-1559 params do not need resetting.gasLimit = 40000000on chain; the call is a no-op for storage but re-emits theConfigUpdateevent.🤖 Generated with Claude Code