chore(deployments): record Arbitrum + Base timelocks + docs generator#52
Conversation
… docs generator - Add the deployed Timelock (0x8b8D9f03027004dB4b607E909246e9270D8fEdee) to deployments/8453.json and deployments/42161.json. - Add Arbitrum (42161) to the deployment-docs generator chain list (it was missing, so Arbitrum never appeared in the docs). - Regenerate DEPLOYMENT_ADDRESSES.md: adds the Base Timelock and a new Arbitrum section, and syncs the Optimism LockedTokenStaker entries to their live proxy addresses. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Claude finished @rplusq's task in 1m 51s —— View job Code Review
Found 2 issue(s)Issue 1: Arbitrum WCT ProxyAdmin silently dropped from generated docsID: 42161-json-proxy-schema-mismatch-a3f1 Context:
Recommendation: Align {
"Timelock": { "address": "0x8b8D9f03027004dB4b607E909246e9270D8fEdee" },
"WCT": {
"address": "0xeF4461891DfB3AC8572cCf7C794664A8DD927945",
"proxy": {
"admin": "0x3eD030AAF23b5C52c224Cb72100C22f581D10Df4",
"implementation": "0x4D1070C6e37de5870e11b99e2A006739e77ec5cb",
"type": "transparent"
}
},
"chainId": 42161
}Issue 2:
|
| @@ -1 +1 @@ | |||
| {"WCT":{"address":"0xeF4461891DfB3AC8572cCf7C794664A8DD927945","admin":"0x3eD030AAF23b5C52c224Cb72100C22f581D10Df4","implementation":"0x4D1070C6e37de5870e11b99e2A006739e77ec5cb"},"chainId":42161} No newline at end of file | |||
| {"Timelock":{"address":"0x8b8D9f03027004dB4b607E909246e9270D8fEdee"},"WCT":{"address":"0xeF4461891DfB3AC8572cCf7C794664A8DD927945","admin":"0x3eD030AAF23b5C52c224Cb72100C22f581D10Df4","implementation":"0x4D1070C6e37de5870e11b99e2A006739e77ec5cb"},"chainId":42161} No newline at end of file | |||
There was a problem hiding this comment.
🤖 Auto Review Issue: Arbitrum WCT ProxyAdmin silently dropped from generated docs
Severity: MEDIUM
Category: correctness
Tool: Claude Auto Review
Context:
- Pattern:
42161.jsonstores WCT proxy metadata at the top level ("admin": "0x3eD...","implementation": "0x4D1..."), while the docs generator (generate-deployment-docs.ts:152-159) only reads fromdeployment.proxy?.admin.8453.json(and theDeploymentEntryinterface) use the nestedproxysub-object. - Risk: The generator silently emits
"-"for the ProxyAdmin column of Arbitrum's WCT Token even though0x3eD030AAF23b5C22c224Cb72100C22f581D10Df4is the admin in the JSON. - Impact: The generated
DEPLOYMENT_ADDRESSES.mdline| WCT Token | ... | - |is factually wrong — it hides who controls the WCT proxy upgrade on Arbitrum, reducing auditability and increasing the chance of a reviewer trusting the stale docs. - Trigger: Every
pnpm run sync:deploymentsrun will reproduce the incorrect-value.
Recommendation: Align 42161.json with the schema used by every other deployment file:
{
"Timelock": { "address": "0x8b8D9f03027004dB4b607E909246e9270D8fEdee" },
"WCT": {
"address": "0xeF4461891DfB3AC8572cCf7C794664A8DD927945",
"proxy": {
"admin": "0x3eD030AAF23b5C52c224Cb72100C22f581D10Df4",
"implementation": "0x4D1070C6e37de5870e11b99e2A006739e77ec5cb",
"type": "transparent"
}
},
"chainId": 42161
}| @@ -1 +1 @@ | |||
| {"WCT":{"address":"0xeF4461891DfB3AC8572cCf7C794664A8DD927945","admin":"0x3eD030AAF23b5C52c224Cb72100C22f581D10Df4","implementation":"0x4D1070C6e37de5870e11b99e2A006739e77ec5cb"},"chainId":42161} No newline at end of file | |||
| {"Timelock":{"address":"0x8b8D9f03027004dB4b607E909246e9270D8fEdee"},"WCT":{"address":"0xeF4461891DfB3AC8572cCf7C794664A8DD927945","admin":"0x3eD030AAF23b5C52c224Cb72100C22f581D10Df4","implementation":"0x4D1070C6e37de5870e11b99e2A006739e77ec5cb"},"chainId":42161} No newline at end of file | |||
There was a problem hiding this comment.
🤖 Auto Review Issue: 42161.json is minified; all other deployment files are formatted
Severity: LOW
Category: code_quality
Tool: Claude Auto Review
Context:
- Pattern:
42161.jsonis a single minified line;1.json,8453.json, and10.jsonare all pretty-printed with 2-space indentation. - Risk: Harder to review future diffs, and adding fields manually is error-prone (which may be how the schema mismatch in Issue 1 arose).
- Impact: Reduced reviewability and higher chance of future data entry errors.
- Trigger: Any future manual or scripted edit to
42161.json.
Recommendation: Reformat to match the other files (pretty-print with 2-space indent). This is also a prerequisite for the fix in Issue 1.
No data classification issues found.
Deployed standalone 7-day timelocks on Arbitrum and Base (both at
0x8b8D9f03027004dB4b607E909246e9270D8fEdee), so the token ProxyAdmin owner andDEFAULT_ADMIN_ROLEon those chains can sit behind a timelock rather than the admin multisig directly (the ownership hand-off itself is a separate multisig action, not in this PR).Config mirrors the Optimism AdminTimelock: 1-week delay, 5/7 multisig as proposer + executor + canceller, self-administered. Verified on-chain on both chains: multisig holds proposer/executor/canceller, execution is not open (
address(0)has no executor role), the deployer holds no role, and the timelock self-administers.Changes
Timelockaddress indeployments/8453.jsonanddeployments/42161.json.DEPLOYMENT_ADDRESSES.md.DEPLOYMENT_ADDRESSES.md: adds the BaseTimelock, a new Arbitrum section, and syncs the OptimismLockedTokenStakerentries to their live proxy addresses (the docs were stale relative to10.json).🤖 Generated with Claude Code