Skip to content

feat(tempo-extension): build tempo-sign from tempo instead of wallet-rs - #337

Draft
deodad wants to merge 1 commit into
mainfrom
dad/tempo-sign-from-tempo
Draft

deodad wants to merge 1 commit into
mainfrom
dad/tempo-sign-from-tempo

Conversation

@deodad

@deodad deodad commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Build the release signer in tempo-extension.yml from tempoxyz/tempo (tempo-ext, sign feature) instead of the archived tempoxyz/wallet-rs.

Motivation

wallet-rs was archived on 2026-09-06; tempo-sign was its last live code. tempoxyz/tempo#8236 moves it into crates/ext, next to the installer that verifies its manifests, with a test covering both sides.

Draft until tempo#8236 merges. The pin currently points at that PR's head (a54f3730). Before marking ready, repin to the merge commit on tempo main.

Changes

  • tempo-extension.yml: check out tempoxyz/tempo at a pinned commit and build with cargo build --locked --release -p tempo-ext --features sign --bin tempo-sign. Same CLI and flags, so the sign step only changes the binary path.
  • Cache ~/.cargo/git/db (keyed on Cargo.lock). Resolving the tempo workspace clones reth even though the signer never builds it. Only git sources are cached: Cargo.lock pins them by commit hash, so a tampered entry can't change what builds in a job that holds RELEASE_SIGNING_KEY. Registry crates download fresh.
  • test.yml: new tempo-sign job. It reads the pinned ref from tempo-extension.yml (single source), builds the signer, and signs the existing tempo-extension fixture with a throwaway key. It also checks that generate-key creates a 0600 key and won't overwrite one, then checks the manifest URLs and the file:/version:/skill: trusted comments the installer requires. Until now the signer only ran in real publishes.
  • README: point the tempo-extension docs at tempo.

Testing

Ran the new job's pin lookup and signing script locally against the signer built from tempo at a54f3730:

a54f3730ddc6109bde3bb0aa149924cab938f649
  signed tempo-fixture-linux-amd64
ok: signed manifest with 1 binary

Changing the expected skill comment makes the script exit 1.

zizmor --persona regular on both workflows: no findings. Auditor persona adds one undocumented-permissions help, matching the other test jobs.

Build time (macOS, 14 cores), clean everything vs cached git deps:

clone fetch + build
wallet-rs (today) 4s 53s
tempo, cold 6s 483s
tempo, warm local Cargo cache — 33s

Real releases are infrequent, so the cold path mostly hits the first publish per caller repo and after a tempo repin.

🤖 Generated with Claude Code

wallet-rs is archived. tempo-sign now lives in tempo's tempo-ext, next to
the installer that verifies its manifests (tempoxyz/tempo#8236).

Resolving the tempo workspace clones reth, so cache ~/.cargo/git/db,
which Cargo.lock pins by commit hash. test.yml builds the signer from
the same pinned ref and signs a fixture, since the publish job is the
only other place it runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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