Skip to content

chore: prepare Voltaire production releases - #393

Draft
roninjin10 wants to merge 8 commits into
mainfrom
prod/voltaire-readiness
Draft

chore: prepare Voltaire production releases#393
roninjin10 wants to merge 8 commits into
mainfrom
prod/voltaire-readiness

Conversation

@roninjin10

@roninjin10 roninjin10 commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

  • pin Zig 0.15.1, Rust 1.89.0, Node 22.22.0, and pnpm 10.26.2 for reproducible contributor and CI builds
  • repair Zig, WASM, Rust, TypeScript, Swift, and four-platform native build/test lanes
  • add npm consumer metadata, package README/LICENSE, repository/homepage/bugs metadata, artifact ignores, and a patch changeset for @tevm/voltaire 0.4.1
  • replace the recursive monorepo publisher with a guarded, idempotent @tevm/voltaire-only publisher using npm provenance
  • make release CI build and test Zig, Rust, WASM, and TypeScript before publishing; the Changesets version PR remains the human release gate
  • add and CI-build a Vocs 2.7.2 documentation site for voltaire.tevm.sh

Publish target and version

The consumer release target is npm package @tevm/voltaire. Registry verification on 2026-07-29 found:

  • voltaire@0.0.1 is an unrelated “smart documentation” package
  • @tevm/voltaire@0.4.0 is the existing Voltaire package
  • @evmts/voltaire returns npm E404
  • cargo search '^voltaire$' returns no exact crate; this repository's Cargo package explicitly exists only to build internal crypto wrappers

Zig consumers continue to use the repository through build.zig.zon; prebuilt native libraries remain CI artifacts rather than platform-specific npm packages. The portable JavaScript/WASM package is the correct first production target.

The changeset chooses 0.4.1, an honest patch over the existing npm 0.4.0 beta rather than resetting to 0.0.0 or declaring an unsupported 1.0.0. The package-qualified GitHub release tag will be @tevm/voltaire@0.4.1, avoiding the repository's existing generic v0.4.1 tag.

Real verification output

  • latest core CI run 30509678886: 17/17 jobs passed on exact pinned toolchains, including Rust and all 12 Zig matrix jobs
  • Zig local build: 13/13 steps succeeded
  • Zig local tests: 19/19 steps succeeded; 91/91 tests passed
  • Rust: 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
  • TypeScript: Test Files 1060 passed | 3 skipped (1063); Tests 22288 passed | 260 skipped (22548); Type Errors no errors
  • TypeScript coverage duration: 705.10s; coverage: 28.29% statements, 45.15% branches, 21.28% functions, 28.47% lines
  • isolated Keystore regression on exact Node 22.22.0: Test Files 1 passed (1); Tests 40 passed | 1 skipped (41); Type Errors no errors
  • latest native run 30509678872: 5/5 jobs passed (darwin-arm64, darwin-x64, linux-x64, win32-x64, packaged artifact)
  • Swift, WASM size, and voltaire-effect build workflows passed on the current head
  • Vocs production build passed both normally and with VERCEL=1
  • packed-package ESM and CommonJS README smoke tests both produced the expected address/hash; packed consumer npm audit --omit=dev reported 0 vulnerabilities
  • actionlint, Zig formatting, Biome, TypeScript typecheck, publint, package build, npm pack, and git diff --check completed successfully

Release gate

After this draft PR is reviewed and merged, Changesets creates a version PR for @tevm/voltaire 0.4.1. Publishing only occurs after a human reviews and merges that version PR. The publisher refuses to run outside GitHub Actions on main, checks the registry to avoid duplicate publication, publishes only @tevm/voltaire, requests public access and provenance, and creates a package-qualified GitHub release only after a real publish. No manual publish was run.

Known external and pre-existing blockers

  • Vercel – voltaire fails because that Vercel project is configured with Root Directory playground; it must be changed to docs
  • Vercel – dist invokes the whole recursive workspace build on a 4-core/8 GB builder and exits 137; the legacy check must be disabled or scoped appropriately
  • voltaire.tevm.sh currently serves the older Mintlify project and must be assigned to the new Vocs Vercel project after deployment is fixed
  • Claude Code Review fails before review because no Anthropic API key, Claude OAuth token, or workload-identity configuration is available
  • publint exits successfully but warns that CommonJS consumers share ESM-interpreted .d.ts declarations; runtime ESM and CommonJS smoke tests pass
  • existing CI intentionally omits the secp256k1/EIP-712/transaction examples (Linux signature-verification failure), C API/native FFI tests (libwally C API issue), benchmarks (keccak_wrapper.h include path), and voltaire-effect typecheck/tests (Effect platform resolution and incomplete lane); these are not represented as passing

@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
dist Error Error Jul 30, 2026 3:35am
voltaire Error Error Jul 30, 2026 3:35am
voltaire-docs Ready Ready Preview Jul 30, 2026 3:35am

Request Review

Scaffold docs/ as a vocs 2.7.2 site (src/pages) with 22 pages: landing,
introduction, installation, getting started, ecosystem, nine guides,
four native/multi-language pages, and four reference pages.

Every code sample was executed against the built @tevm/voltaire package,
the Zig examples, or a compiled C program; pasted outputs are real. Known
API defects (this-bound Abi/Legacy functions, lowercase Siwe address,
KZG unavailable in portable JS) are documented rather than papered over.

Adds docs to the pnpm workspace and a docs/vercel.json for a Vercel
project rooted at docs/ (vocs emits Build Output API v3 when VERCEL is set).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@roninjin10

Copy link
Copy Markdown
Contributor Author

Docs site (vocs 2.7.2) — added in dcbdcbf

Scaffolded docs/ as a vocs 2.7.2 site (docs/src/pages, docs/vocs.config.ts) with 22 pages:

  • Landing, Introduction, Installation, Getting Started, Where Voltaire Fits
  • Guides: Hashing, Addresses, Keys & Signatures, ABI, RLP, Transactions, EIP-712, Units, Effect
  • Native & Multi-language: Building from Source, Backends (native/WASM/portable), Zig, Other Languages
  • Reference: Overview, Primitives, Cryptography, Entry Points

Verification actually run (real output pasted into the pages):

  • zig build → exit 0; zig build test --summary all19/19 steps succeeded; 91/91 tests passed
  • pnpm --filter @tevm/voltaire vitest run src/primitives/Address src/crypto/Keccak25661 passed (61), 1532 passed | 18 skipped, no type errors
  • Every TS sample executed against the built @tevm/voltaire (tx sign/serialize/recover, EIP-712, HD derivation reproducing the canonical devnet account 0, EIP-155 signing hash 0xdaf5a779…)
  • zig build example-address / example-keccak256 → exit 0
  • A C program compiled against packages/voltaire-c/include/voltaire.h + zig-out/native → keccak256 digest identical to the JS one
  • pnpm --filter @voltaire/docs build✓ built in 20.90s, all 22 pages in llms.txt; with VERCEL=1 it emits .vercel/output (Build Output API v3)

Known API defects documented rather than hidden (each needs a code fix, not a docs fix):

  1. Abi.encode / decodeData / parseLogs are exported as this-bound internals — Abi.encode(abi, name, args) throws this.find is not a function. Public wrappers are missing.
  2. Transaction.Legacy.* requires .call(tx) while Transaction.EIP1559.* takes the tx as an argument.
  3. Siwe.format renders the address lowercase; EIP-4361 requires EIP-55 checksummed.
  4. PrivateKey/PublicKey/Denomination/HDWallet/Keystore/KZG are not re-exported from the barrel.
  5. KZG is unusable from the portable JS entry point (WASM module not loaded).

Deploy target is voltaire.tevm.sh; docs/vercel.json is in place but the Vercel project + domain still need a human.

Note: Claude AI assistant, not @roninjin10 or @fucory

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