Skip to content

feat(tempo): sync configurable accounts with Tempo T14 - #5260

Merged
jxom merged 11 commits into
mainfrom
jxom/peaceful-lovelace-1528gj
Oct 22, 2026
Merged

jxom merged 11 commits into
mainfrom
jxom/peaceful-lovelace-1528gj

Conversation

@jxom

@jxom jxom commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Syncs viem/tempo configurable accounts with tempoxyz/tempo joshie/configurable-t14-devnet-checkpoint, matching wevm/ox#518 and wevm/ox#519, and bumps ox to 0.14.57.

  • Renames the nativeMultisig ABI, address and selector exports to configurableAccount and regenerates the ABIs. This fixes updateConfigSync throwing after a successful update, because the event was renamed. The new ABIs add upgradeAccount, AccountUpgraded, verifyConfigurableAccount and RootKeyRetired.
  • Adds Actions.accounts.upgrade / upgradeSync for in-place migration (TIP-1113), plus the upgrade form of Account.fromConfig. The relay caches the config an upgrade installs after the node accepts the transaction.
  • Adds Actions.accounts.deriveAccount and Actions.accounts.verifyHash, which wrap the precompiles. verifyHash on Tempo chains now verifies configurable account signatures.
  • Account.fromConfig takes a factory option, which defaults to the shared recovery factory.
  • Adds hardforks t7–t14 and fixes Hardfork.lt returning true for lt('t14', 't3').
  • Sends configurableAccountSimulation, maps key type 3 to configurable, and stores relay state under configurableAccount:* keys.
  • Points the accounts e2e and relay account suites at sha-04e67d3, with the renamed genesis key and T14.

Needs attention:

  • Abis.ts was regenerated with the new TEMPO_REF. Tempo main moved the IZonePortal and IZoneVerifier bindings out of precompiles/, and IZoneFactory changed. The Zone exports are kept at their previous generated values, and the generator needs a follow-up to read the new location.
  • No deprecated aliases for the renamed exports, following feat(tempo)!: rename multisig accounts to configurable accounts #5216 for this experimental API.
  • Configurable accounts as access keys (TIP-1111) are left as a TODO in Account.ts.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
Syncs `viem/tempo` configurable accounts with tempoxyz/tempo
`joshie/configurable-t14-devnet-checkpoint`, using the ox 0.x prerelease
(`pkg.pr.new/ox@e9b66c2`) until 0.14.57 is published.

- Rename `nativeMultisig` ABI, address and selector exports to
  `configurableAccount`, and regenerate ABIs (adds `upgradeAccount`,
  `AccountUpgraded`, `verifyConfigurableAccount`, `RootKeyRetired`).
- Add `accounts.upgrade`/`upgradeSync` (TIP-1113) and the `upgrade` form of
  `Account.fromConfig`; the relay caches configs installed by upgrades.
- Add hardforks t7..t14 and fix `Hardfork.lt` for unknown hardforks.
- Send `configurableAccountSimulation` and map key type 3 to `configurable`.
- Point the accounts e2e at `sha-04e67d3` with the renamed genesis key and T14.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
@changeset-bot

changeset-bot Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: ca0c8ea

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
viem Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
viem Ready Ready Preview Oct 22, 2026 2:08am UTC

Request Review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-22T02:10:51.736294Z ca0c8ea New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
@pkg-pr-new

pkg-pr-new Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/viem@5260

commit: 01ce7d1

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 57dc57bf4e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread site/pages/tempo/actions/accounts.upgrade.mdx Outdated
Comment thread src/tempo/actions/accounts.ts
Comment thread .github/workflows/verify.yml
Adds `accounts.deriveAccount` and `accounts.verifyHash` for the configurable
account precompiles, verifies configurable signatures in Tempo `verifyHash`,
and adds a `factory` option to `Account.fromConfig` that defaults to the
shared recovery factory.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a31b66aae1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread site/pages/tempo/actions/accounts.deriveAccount.mdx
Comment thread src/tempo/actions/accounts.ts
Comment thread src/tempo/internal/relay/accounts.ts Outdated
Verified locally against the sha-04e67d3 node binary: all tempo-accounts
suites pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 94c79202e1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/tempo/Account.ts
Comment thread src/tempo/chainConfig.ts
Comment thread src/tempo/Decorator.ts
- Make the relay's upgrade config cache best-effort after the node accepts.
- Return non-success receipts from upgradeSync instead of extracting the event.
- Add parameter examples to the new action pages.
- Add client.scope to the decorator snapshot and raise two size limits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
- Point the relay account and compat suite gates at sha-04e67d3.
- Reject extra calls, call data or authorizations passed to accounts.upgrade.
- Verify byte-array configurable signatures in verifyHash.
- Use Return Value headings and add decorator examples for the new actions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
@socket-security

socket-security Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedox@​0.14.56 ⏵ 0.14.579910099 +197100

View full report

jxom commented Oct 22, 2026

Copy link
Copy Markdown
Member Author

Verify / Test Local (transport: http, multicall: true, 2/3) failed on 01ce7d1 in src/actions/public/watchBlocks.test.ts. This PR doesn't change that code. A different test failed on each attempt (multiple watchers: expected 6 blocks, got 9; then pollingInterval on client > watches for new blocks: expected 2, got 3), so it's a polling-timing flake. The same shard passed on bb0faec, and 01ce7d1 only changes the ox version from the 0.x prerelease to the matching 0.14.57 release, with identical code. There's no fix to port. I'm re-running the failed job once.


Generated by Claude Code

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 01ce7d1f50

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/tempo/actions/accounts.ts Outdated
Comment thread src/tempo/internal/relay/accounts.ts
Comment thread site/pages/tempo/accounts/account.fromConfig.mdx
…sults

- Always send accounts.upgrade as a Tempo envelope so relays cache the
  installed config, and cover the no-Tempo-field path in the relay test.
- Type upgradeSync's pending and reverted results as receipt-only.
- Add examples for the new Account.fromConfig factory and upgrade fields.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
@jxom
jxom merged commit b56592f into main Oct 22, 2026
38 of 39 checks passed
@jxom
jxom deleted the jxom/peaceful-lovelace-1528gj branch October 22, 2026 02:04
@github-actions github-actions Bot mentioned this pull request Oct 22, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ca0c8ea151

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +16 to +20
## Usage

:::code-group

```ts twoslash [example.ts]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Add standalone action examples to the new action pages

The Usage section demonstrates only the decorated client.accounts.* API and omits the required ### Standalone Action subsection. Add focused Actions.accounts.*(client, ...) examples here and on the new accounts.upgrade, accounts.upgradeSync, and accounts.verifyHash pages so users can discover the standalone exports.

AGENTS.md reference: AGENTS.md:L312-L317

Useful? React with 👍 / 👎.

Comment on lines +110 to +112
```

<ReadParameters />

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Document the errors thrown by verifyHash

This page explicitly states that malformed signatures and approvals below quorum throw, but it ends after Parameters without the required Errors section. Add an Error/Description table listing the concrete error classes callers should handle.

AGENTS.md reference: AGENTS.md:L348-L351

Useful? React with 👍 / 👎.

Comment thread src/tempo/chainConfig.ts
Comment on lines +387 to +388
if (envelope.type === 'configurable')
return await (

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve ERC-1271 verification for contract accounts

When address has contract code and its ERC-1271 implementation accepts signature bytes that deserialize as a configurable envelope, this unconditional return sends the signature to the configurable-account precompile and returns false instead of invoking the contract verifier. The P256/WebAuthn branch below avoids the same problem by checking getCode and falling through for contracts; apply an equivalent guard here so configurable-looking bytes remain valid opaque ERC-1271 signatures.

Useful? React with 👍 / 👎.

Comment thread site/vocs.config.ts
Comment on lines +2673 to +2675
badge: { text: 'EXP', variant: 'warning' },
text: 'deriveAccount',
link: '/tempo/actions/accounts.deriveAccount',

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Use task phrases for the new sidebar labels

The four new Accounts entries use the raw identifiers deriveAccount, upgrade, upgradeSync, and verifyHash as their labels. Replace them with short Title Case task phrases such as “Derive Account,” “Upgrade Account,” “Upgrade and Wait,” and “Verify Signature” so the additions follow the sidebar convention rather than merely echoing API names.

AGENTS.md reference: AGENTS.md:L354-L357

Useful? React with 👍 / 👎.

This branch was successfully deployed

1 active deployment
Preview — ca0c8ea1 Deployed Oct 22, 2026 by vercel[bot]
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.

2 participants