Skip to content

chore(deployments): record Arbitrum + Base timelocks + docs generator#52

Merged
rplusq merged 1 commit into
mainfrom
chore/record-arb-base-timelocks
Jul 14, 2026
Merged

chore(deployments): record Arbitrum + Base timelocks + docs generator#52
rplusq merged 1 commit into
mainfrom
chore/record-arb-base-timelocks

Conversation

@rplusq

@rplusq rplusq commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator

Deployed standalone 7-day timelocks on Arbitrum and Base (both at 0x8b8D9f03027004dB4b607E909246e9270D8fEdee), so the token ProxyAdmin owner and DEFAULT_ADMIN_ROLE on 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

  • Record the deployed Timelock address in 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 DEPLOYMENT_ADDRESSES.md.
  • Regenerate DEPLOYMENT_ADDRESSES.md: adds the Base Timelock, a new Arbitrum section, and syncs the Optimism LockedTokenStaker entries to their live proxy addresses (the docs were stale relative to 10.json).

🤖 Generated with Claude Code

… 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

claude Bot commented Jul 14, 2026

Copy link
Copy Markdown

Claude finished @rplusq's task in 1m 51s —— View job


Code Review

  • Gather context
  • Read changed files
  • Run data classification check
  • Post review findings

Found 2 issue(s)

Issue 1: Arbitrum WCT ProxyAdmin silently dropped from generated docs

ID: 42161-json-proxy-schema-mismatch-a3f1
File: evm/deployments/42161.json:1
Severity: MEDIUM
Category: correctness

Context:

  • Pattern: 42161.json stores WCT proxy metadata at the top level ("admin": "0x3eD...", "implementation": "0x4D1..."), while the docs generator (generate-deployment-docs.ts:152-159) only reads from deployment.proxy?.admin. 8453.json (and the DeploymentEntry interface) use the nested proxy sub-object.
  • Risk: The generator silently emits "-" for the ProxyAdmin column of Arbitrum's WCT Token even though 0x3eD030AAF23b5C22c224Cb72100C22f581D10Df4 is the admin in the JSON.
  • Impact: The generated DEPLOYMENT_ADDRESSES.md line | 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:deployments run 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
}

Fix this →


Issue 2: 42161.json is minified; all other deployment files are formatted

ID: 42161-json-format-inconsistency-b7c2
File: evm/deployments/42161.json:1
Severity: LOW
Category: code_quality

Context:

  • Pattern: 42161.json is a single minified line; 1.json, 8453.json, and 10.json are 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.

@rplusq rplusq merged commit 2f24be6 into main Jul 14, 2026
8 of 9 checks passed
@rplusq rplusq deleted the chore/record-arb-base-timelocks branch July 14, 2026 23:17
@@ -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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Auto Review Issue: Arbitrum WCT ProxyAdmin silently dropped from generated docs

Severity: MEDIUM
Category: correctness
Tool: Claude Auto Review

Context:

  • Pattern: 42161.json stores WCT proxy metadata at the top level ("admin": "0x3eD...", "implementation": "0x4D1..."), while the docs generator (generate-deployment-docs.ts:152-159) only reads from deployment.proxy?.admin. 8453.json (and the DeploymentEntry interface) use the nested proxy sub-object.
  • Risk: The generator silently emits "-" for the ProxyAdmin column of Arbitrum's WCT Token even though 0x3eD030AAF23b5C22c224Cb72100C22f581D10Df4 is the admin in the JSON.
  • Impact: The generated DEPLOYMENT_ADDRESSES.md line | 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:deployments run 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
}

Fix this →

@@ -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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 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.json is a single minified line; 1.json, 8453.json, and 10.json are 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant