Skip to content

ci(smoke): per-platform install + Base precompile smoke test (BOP-385)#44

Merged
amiecorso merged 8 commits into
base-anvil-forkfrom
corso/bop-385-platform-smoke-tests
Jun 23, 2026
Merged

ci(smoke): per-platform install + Base precompile smoke test (BOP-385)#44
amiecorso merged 8 commits into
base-anvil-forkfrom
corso/bop-385-platform-smoke-tests

Conversation

@amiecorso

@amiecorso amiecorso commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

What this PR adds

A smoke GitHub Actions workflow (.github/workflows/smoke.yml) plus a tiny, dependency-free Foundry proof test (smoke/). Together they validate that already-published base-anvil binaries actually install and run on each target OS, by doing exactly what an external developer does.

Each matrix leg, on a clean GitHub-hosted runner:

  1. Runs the public install one-liner (curl …/foundryup/install | bash)
  2. base-foundryup installs base-forge / base-cast / base-anvil / base-chisel
  3. base-forge test runs a test that calls the Base ActivationRegistry precompile

The proof test passes only when the binary actually registered and seeded the Base precompiles. Without Base, the call hits an empty address and the test fails, so a green run is real proof, not a false pass.

Why we care

BOP-385. Our release pipeline proves binaries build; it does not prove they run on the platforms developers use. Platform-specific runtime failures (wrong glibc floor, a runner that never provisions, a broken install path) stay invisible until a developer hits them. A single Apple-Silicon laptop cannot cover Linux amd64, arm64, or Windows via emulation, so the only reliable coverage is real per-platform runners. This workflow is the durable, recurring form of that check, and it directly guards the launch promise: "install with one line and base-forge test works."

It already earned its keep: the arm64 + old-glibc leg caught a live GLIBC_2.38/2.39 failure in the rc.19 default, which #46 (default → v1.1.0) then fixed. This PR now confirms green across the board.

Coverage (all green)

Platform Runner
linux amd64, new glibc ubuntu-24.04
linux amd64, old glibc ubuntu-22.04
linux arm64, new glibc ubuntu-24.04-arm
linux arm64, old glibc ubuntu-22.04-arm
macOS arm64 macos-latest

Triggers: workflow_dispatch (optional version input) and pull_request scoped to smoke files.

Deferred to follow-ups

  • Windows and Alpine/musl legs (need extra shell/dependency handling)
  • Intel macOS (the macos-13 runner does not provision in this org; will come via Rosetta-on-arm64 or a self-hosted runner)
  • A daily schedule trigger to continuously validate the live default release

@linear

linear Bot commented Jun 15, 2026

Copy link
Copy Markdown

BOP-385

amiecorso and others added 6 commits June 23, 2026 14:40
…-385)

Validate published base-anvil binaries the way an external developer does:
run the public install one-liner, then a dependency-free Base precompile
test that passes only when the binary registered + seeded the Base
ActivationRegistry (no false pass).

v0 covers the POSIX legs (Linux gnu amd64 new/old glibc, arm64; macOS
arm64 + Intel). Windows and Alpine/musl deferred to a follow-up.

Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
workflow_dispatch is not triggerable until the file lands on the default
branch, so add a path-scoped pull_request trigger to exercise the matrix on
this PR (and whenever the smoke harness changes).

Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
- Pin FOUNDRY_DIR=$HOME/.foundry and use absolute bin paths + $GITHUB_PATH:
  XDG_CONFIG_HOME is set on the Linux runners (not macOS), so the installer
  put base-foundryup under $XDG_CONFIG_HOME/.foundry and the hardcoded
  $HOME/.foundry/bin missed it (exit 127).
- Comment out the macos-13 (Intel) leg: that runner does not provision in
  this org and hangs until the 24h timeout (same as BOP-367).

Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
The ticket's headline finding was an arm64-specific glibc floor (gnu arm64
binaries needing GLIBC_2.39). The matrix only tested arm64 on new glibc
(24.04); add ubuntu-22.04-arm so the smoke job actually exercises the
arm64 old-glibc path that bug lived on.

Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
The leg reproduces a real, currently-live failure: the rc.19 arm64 gnu
binary the default base-foundryup installs needs GLIBC_2.38/2.39 and fails
on old-glibc arm64. Mark it experimental (continue-on-error) so it keeps
reporting but does not block the run; it auto-flips green once the #42
glibc-floor fix ships to the default release.

Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
#46 made v1.1.0 the default base-foundryup release, and its arm64 gnu
binary carries the #42 glibc-floor fix, so old-glibc arm64 now installs
and passes. Drop the experimental/continue-on-error quarantine: all five
legs are required again.

Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
@amiecorso amiecorso force-pushed the corso/bop-385-platform-smoke-tests branch from 2d20db2 to 1c38845 Compare June 23, 2026 21:40
amiecorso and others added 2 commits June 23, 2026 14:48
Cosmetic: the workflow_dispatch input description example still named the
old rc; the default install path was never pinned to it.

Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
…5-intel)

macos-13 was retired by GitHub on 2025-12-04, so the old comment's 'does
not provision in this org' was inaccurate. Point the follow-up at the
current macos-15-intel label and frame the test-or-drop decision.

Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
@amiecorso amiecorso marked this pull request as ready for review June 23, 2026 22:15
@amiecorso amiecorso merged commit 3274e3f into base-anvil-fork Jun 23, 2026
22 of 23 checks passed
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