Skip to content

feat(tempo): sync configurable accounts with Tempo main - #518

Merged
jxom merged 9 commits into
mainfrom
jxom/peaceful-lovelace-1528gj
Oct 21, 2026
Merged

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

Conversation

@jxom

@jxom jxom commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Brings ox/tempo configurable accounts in line with tempoxyz/tempo joshie/configurable-t14-devnet-checkpoint (the #7577–#7581 stack on main, after tempoxyz/tempo#8502) and the TIP cluster in tempoxyz/tempo#7510.

  • Hash domains: tempo:multisig:* → tempo:configurable-account:*. Every AccountConfig.getAddress, getCommitment and getSignPayload result changes. A new test pins Tempo's Rust vectors (crates/primitives/tests/configurable_account.rs), and ox matches them byte for byte.
  • Wire names: the RPC key type multisig → configurableAccount, and TransactionRequest.multisigSimulation → configurableAccountSimulation. AccountSimulation gains the optional grant signer.
  • TIP-1113 migration: adds AccountConfig.fromUpgrade(account, { owners, threshold }), the version-1 config upgradeAccount installs (salt = keccak256("tempo:configurable-account:upgrade" || account)).
  • Account binding: configurable key grants no longer require account. The node only requires it on admin-signed grants (TIP-1049). MissingAccountError is kept but deprecated.
  • Simulation: empty and 3-byte keyData are shimmed to a 2-byte length hint, because the node only accepts 1-, 2- or 4-byte hints.
  • E2E: runs against ghcr.io/tempoxyz/tempo:sha-04e67d3 (the devnet checkpoint plus a recovery-factory genesis option) with T14 and the configurableAccountRecoveryFactory genesis key.
  • CI: the browser job is pinned to ubuntu-24.04, because Playwright 1.58.2 doesn't support the Ubuntu 26.04 that ubuntu-latest now resolves to.

Notes:

  • Configurable accounts may be, and may authorize, admin keys. The checkpoint node allows both at T14 and has no TIP-1137 code, so ox doesn't restrict them.
  • Vercel's docs deploy fails on unrelated PRs too, while pnpm docs:build passes locally.
  • The remaining work is tracked in .agents/plans/configurable-accounts-tempo-sync.md.

🤖 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
Rename the configurable account hash domains to tempo:configurable-account:*
(tempoxyz/tempo#8502) and pin Tempo's Rust vectors in tests. Add
AccountConfig.fromUpgrade for TIP-1113 in-place migration, reject admin
key authorizations signed by configurable accounts (TIP-1137), and stop
passing empty or 3-byte simulation keyData the node rejects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
Point the e2e at the image built from tempoxyz/tempo#8486, rename the
genesis key to configurableAccountRecoveryFactory, and activate T14.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
The node binds a root-signed grant to its signer and only requires
`account` on admin-signed grants (TIP-1049), so ox rejected valid grants.

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

vercel Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
ox Error Error Oct 21, 2026 10:09pm UTC

Request Review

@pkg-pr-new

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

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/ox@518

commit: e7be197

jxom commented Oct 20, 2026

Copy link
Copy Markdown
Member Author

Two red checks, neither from this diff:

  • Test Runtime (tempo multisig): 6 of 7 e2e tests pass against pr-8486. The failing one sends a 0x05 configurable signature and the node answers failed to decode signed transaction. feat(precompiles): add the configurable account precompile, unregistered tempoxyz/tempo#8486 doesn't accept configurable signatures in transactions yet, so this stays red until an integration build with the new domains exists.
  • Test Runtime (browser): fails before any test runs. playwright install reports Playwright does not support chromium on ubuntu26.04-x64 (Playwright 1.58.2 on the runner image), so it's a CI environment issue, with no fix to port yet.

Generated by Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
@jxom
jxom marked this pull request as ready for review October 20, 2026 23:05
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 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-21T22:06:37.858609Z e7be197 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.

@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: 8051c5f29d

ℹ️ 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 test/tempo/configurableAccounts.ts Outdated
Comment thread .changeset/tempo-account-config-from-upgrade.md
Comment thread src/tempo/KeyAuthorization.ts Outdated
Comment thread src/zod/tempo/KeyAuthorization.ts

jxom commented Oct 20, 2026 •

Copy link
Copy Markdown
Member Author

Vercel (docs deploy) is red on this PR and on #519, and it failed the same way on #516 on Oct 13, so it isn't specific to this diff.

A clean local pnpm docs:build on this branch succeeds end to end (build, docgen, vocs build, static generation). The only noise is docgen parse warnings on Abi* signature types, which this PR doesn't touch. So the failure is in Vercel's environment or project config, and I can't see its logs from here. (An earlier version of this comment blamed @noble/curves types; that came from a stale local checkout and was wrong.)


Generated by Claude Code

The core KeyAuthorization conversions already reject them (TIP-1137); the
Rpc, Domain and DomainToRpc schemas now enforce the same invariant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
Configurable key types only exist from T14, where TIP-1137 rejects every
admin grant, so an isAdmin grant of a configurable key is always invalid,
whoever signs it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
Match tempoxyz/tempo joshie/configurable-t14-devnet-checkpoint: the RPC key
type is configurableAccount and the request field is
configurableAccountSimulation, the simulation spec carries an optional grant
signer, and configurable accounts may be or authorize admin keys, so the
TIP-1137 guard is removed. The e2e runs against image sha-04e67d3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUGrLTHJy3Rheqc2GoFoTB
@jxom
jxom merged commit 010d6b5 into main Oct 21, 2026
15 of 16 checks passed
@jxom
jxom deleted the jxom/peaceful-lovelace-1528gj branch October 21, 2026 23:46
@github-actions github-actions Bot mentioned this pull request Oct 21, 2026

This branch had an error being deployed

1 failed deployment
Preview — e7be1978 Deployed Oct 21, 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