Loading...
Loading...
Verify a released archon binary works end-to-end via a specific install path. Use when: cutting a new release, reproducing a user bug report on the released version, or validating that a hotfix binary actually works after a re-tag. Triggers: "test the release", "test 0.3.1 via brew", "verify the curl install", "smoke test the binary", "did the release binary work", "run /test-release", "verify the release". NOT for: testing dev work (use bun link directly), testing unreleased changes (build locally via scripts/build-binaries.sh first), or running the full validate suite (bun run validate is separate).
npx skill4agent add coleam00/archon test-releasebrewcurl-maccurl install.shcurl-vpscurl install.shbun linkarchonbash scripts/build-binaries.shdist/binaries/bun run validatebun packages/cli/src/cli.tsdeploy/cloud-init.ymlscripts/build-binaries.sh# Multi-target mode (builds all 4 local platforms into dist/binaries/)
VERSION=0.3.1 GIT_COMMIT=abc12345 bash scripts/build-binaries.sh
# Single-target mode (matches one CI matrix job)
VERSION=0.3.1 \
GIT_COMMIT=abc12345 \
TARGET=bun-darwin-arm64 \
OUTFILE=dist/test-archon-darwin-arm64 \
bash scripts/build-binaries.sh
# Verify the binary — use the path from the mode you built:
# multi-target → ./dist/binaries/archon-darwin-arm64
# single-target → the OUTFILE you passed above
./dist/test-archon-darwin-arm64 version
# Expected: Archon CLI v0.3.1, Build: binary, Git commit: abc12345brewcurl-maccurl-vps0.3.1gh release list --repo coleam00/Archon --limit 1 --json tagName --jq '.[0].tagName'curl-vpsuser@hosthostAbout to test:
Path: brew (Homebrew tap on macOS)
Version: 0.3.1 (expected)
Cleanup: will uninstall after tests (brew uninstall + untap)
If `archon-stable` symlink is detected in Phase 2, it will be
restored at the end of Phase 5 by reinstalling the tap formula.
Proceed? (y/N)which -a archon
archon version 2>&1 | head -5brew --versioncurl --versionssh <target> 'uname -a'ssh <target> 'command -v curl'gh release view v<version> --repo coleam00/Archon --json tagName,assets --jq '{tag: .tagName, assetCount: (.assets | length)}'archon-stablearchon-stable~/.config/fish/functions/brew-upgrade-archon.fishbrew uninstallARCHON_STABLE_WAS_INSTALLED=""
if [ -L /opt/homebrew/bin/archon-stable ] || [ -L /usr/local/bin/archon-stable ]; then
ARCHON_STABLE_WAS_INSTALLED="yes"
echo "Detected persistent archon-stable — will restore after Phase 5 uninstall."
fiARCHON_STABLE_WAS_INSTALLEDbrewcurl-maccurl-vpsarchon-stablebrew tap coleam00/archon
brew install coleam00/archon/archon
BINARY="$(brew --prefix coleam00/archon/archon)/bin/archon"$BINARYbun linkINSTALL_DIR=/tmp/archon-test-release-$(date +%s)
mkdir -p "$INSTALL_DIR"
INSTALL_DIR="$INSTALL_DIR" curl -fsSL https://raw.githubusercontent.com/coleam00/Archon/main/scripts/install.sh | bash
BINARY="$INSTALL_DIR/archon"$BINARYssh <target> 'curl -fsSL https://raw.githubusercontent.com/coleam00/Archon/main/scripts/install.sh | bash'install.sh/usr/local/bin/archon$HOME/.local/bin/archon/usr/local/binssh <target> 'command -v archon'$REMOTE_BINARYssh <target> '<cmd>'# Local paths (brew / curl-mac)
shasum -a 256 "$BINARY" | awk '{print $1}'
"$BINARY" version 2>&1
# Remote path (curl-vps)
ssh <target> "shasum -a 256 $REMOTE_BINARY || sha256sum $REMOTE_BINARY" | awk '{print $1}'
ssh <target> "$REMOTE_BINARY version" 2>&1$BINARYssh <target> $REMOTE_BINARYarchon"$BINARY" versionArchon CLI v<expected-version>Build: binaryBuild: source (bun)unknownGit commit: <sha>bundled-build.tsBuild: source (bun)BUNDLED_IS_BINARYtrueGit commit: unknownTESTREPO=/tmp/archon-test-repo-$(date +%s)
mkdir -p "$TESTREPO"
cd "$TESTREPO"
git init -q
git commit -q --allow-empty -m init
"$BINARY" workflow listisBinaryBuildNot in a git repository# Option A — env var (easy for ad-hoc testing)
# After the native installer (Anthropic's default):
export CLAUDE_BIN_PATH="$HOME/.local/bin/claude"
# Or after npm global install:
export CLAUDE_BIN_PATH="$(npm root -g)/@anthropic-ai/claude-code/cli.js"
# Option B — config file (persistent)
# Add to ~/.archon/config.yaml:
# assistants:
# claude:
# claudeBinaryPath: /absolute/path/to/claude$TESTREPO"$BINARY" workflow run assist "say hello and nothing else" 2>&1 | tee /tmp/archon-test-assist.logspawn EACCESENOENTprocess exited with code 1Claude Code CLI not foundClaude Code not foundCLAUDE_BIN_PATHclaudeBinaryPathModule not found "/Users/runner/..."import.meta.urlpackages/providers/src/claude/provider.tsCredit balance is too lowCLAUDE_USE_GLOBAL_AUTH~/.archon/.envunable to determine transport target for "pino-pretty"package.json not found (bad installation?)isBinaryBuildCLAUDE_BIN_PATH(unset CLAUDE_BIN_PATH; "$BINARY" workflow run assist "hello" 2>&1 | tee /tmp/archon-test-no-path.log)~/.archon/config.yamlclaudeBinaryPathClaude Code not foundCLAUDE_BIN_PATHclaudeBinaryPathModule not foundclaudeBinaryPath~/.archon/config.yamlLEAKREPO=/tmp/archon-test-leak-$(date +%s)
mkdir -p "$LEAKREPO"
cd "$LEAKREPO"
git init -q
git commit -q --allow-empty -m init
printf 'ANTHROPIC_API_KEY=sk-ant-test-fake\n' > .env
"$BINARY" workflow run assist "hello" 2>&1 | tee /tmp/archon-test-leak.logCannot add codebaseCannot run workflowANTHROPIC_API_KEYformatLeakErrorrm -rf "$LEAKREPO"$TESTREPO"$BINARY" isolation listrm -rf "$TESTREPO"curl-vpsbrew uninstall coleam00/archon/archon
brew untap coleam00/archonwhich -a archon
# should show only the ~/.bun/bin/archon path, not a brew path
archon version | head -1
# should match the dev version captured in Phase 2archon-stableif [ -n "$ARCHON_STABLE_WAS_INSTALLED" ]; then
echo "Restoring archon-stable (detected before test)..."
brew tap coleam00/archon
brew install coleam00/archon/archon
BREW_BIN="$(brew --prefix)/bin"
if [ -e "$BREW_BIN/archon" ]; then
mv "$BREW_BIN/archon" "$BREW_BIN/archon-stable"
echo "archon-stable restored: $(archon-stable version 2>/dev/null | head -1)"
else
echo "WARNING: brew install succeeded but $BREW_BIN/archon missing — check formula"
fi
fiNote on the restored version: this reinstalls from whatever the tap currently ships, which is typically the release you just tested (soends up at the newly-tested version). That's usually what the operator wants — you just verified the new release works, and you wantarchon-stablepointed at it. If you were testing an older version for back-version QA, the restoredarchon-stablewill be the current tap formula, not the pre-test version. For that rare case, the operator should re-runarchon-stablemanually after the test.brew-upgrade-archon
rm -rf "$INSTALL_DIR"ssh <target> "sudo rm -f /usr/local/bin/archon || rm -f \$HOME/.local/bin/archon"Test Release Report — archon v0.3.1 via brew
────────────────────────────────────────────
Tested at: 2026-04-08 15:42 UTC
Binary SHA: e62eb73547b3740d56f242859b434a91d3830360a0d18f14de383da0fd7a0be6
Binary path: /opt/homebrew/Cellar/archon/0.3.1/bin/archon
Dev binary: /Users/rasmus/.bun/bin/archon → ../install/.../cli.ts (unchanged)
[PASS] Test 1 version reports 0.3.1, Build: binary, commit abc1234
[PASS] Test 2 workflow list returned 21 bundled workflows
[PASS] Test 3 workflow run assist produced output
[PASS] Test 4 env-leak gate refused leaky .env with context-aware error
[PASS] Test 5 isolation list executed without errors
[PASS] Cleanup brew uninstall + untap clean, dev binary unchanged
Overall: PASS
This release is safe to announce. Next steps:
- Update release notes on GitHub if not done already
- Announce on whatever channels you useTest Release Report — archon v0.3.1 via curl-vps
────────────────────────────────────────────────
Tested at: 2026-04-08 15:42 UTC
Binary SHA: 0cf83e15e6af228e3c3473467ca30fa7525b6d7069818d85f97a115ea703d708
Binary path: user@vps:/usr/local/bin/archon
Dev binary: /Users/rasmus/.bun/bin/archon (unchanged)
[PASS] Test 1 version reports 0.3.1, Build: binary
[FAIL] Test 2 workflow list returned 0 workflows
Command: archon workflow list
Exit: 0
Output:
Discovering workflows in: /tmp/archon-test-repo-1712590923
Found 0 workflow(s):
[SKIP] Test 3 SDK test skipped because Test 2 failed
[SKIP] Test 4 env-leak gate test skipped because Test 2 failed
[PASS] Test 5 isolation list executed without errors
[PASS] Cleanup VPS binary removed
Overall: FAIL
Likely cause: bundled workflows were not embedded in the binary.
Check the build workflow for missing asset embedding, or verify that
BUNDLED_WORKFLOWS in packages/workflows/src/defaults/bundled-defaults.ts
was populated at build time.
Next steps:
1. File a P0 hotfix issue with the captured output
2. Do NOT announce v0.3.1 until the hotfix ships as v0.3.2
3. Consider adding a CI guard that blocks releases if BUNDLED_WORKFLOWS is emptybun linkscripts/build-binaries.sh.github/workflows/release.ymlhomebrew/archon.rbscripts/install.shscripts/install-local.shinstall-local.ps1/release