Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 13 additions & 17 deletions .github/workflows/release-smoke-linux.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,24 +42,20 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
# Pinned to the release's own commit: the test SCRIPT has to match the
# vintage of the binaries it's testing, same reason install_cortex pins
# the installer URL to TRIGGER_SHA for a main-latest run below. Running
# main's current copy against an older release risks exactly the
# mismatch this workflow hit live once already — a since-fixed PR
# changed agentop's health-check wording, and a run of this script
# from AFTER that change against a release from BEFORE it would assert
# on output that release never produces.
# Pinned to the release's own commit, so the script asserts on output
# the binaries under test actually produce. The concrete risk this
# avoids: main's script asserts the no-op leg's "cortex <version> is
# installed and healthy.", which agentop setup prints — a run of
# main's current copy against an old enough release (one that
# predates agentop setup, e.g. v0.8.1) would assert on output that
# release never produces.
#
# This does mean a release older than this script itself can't be
# smoke-tested by re-running its workflow — e.g. v0.8.0/v0.8.1 predate
# it entirely (confirmed via the GitHub API: 404 for
# scripts/release_smoke_test_linux.sh at both commits). That's accepted:
# those releases already shipped, re-running checks out the commit
# that was main's tip when the ORIGINAL run fired (not today's main
# either way), and the alternative — always running main's bleeding
# edge — breaks the common case (every release going forward) to
# partially help the uncommon one (re-testing something ancient).
# The cost: a release older than this script itself can't be
# smoke-tested by re-running its workflow — v0.8.0/v0.8.1 predate it
# entirely. That's accepted: those releases already shipped, and the
# alternative — always running main's bleeding edge — breaks the
# common case (every release going forward) to partially help the
# uncommon one (re-testing something ancient).
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.workflow_run.head_sha }}
Expand Down
19 changes: 9 additions & 10 deletions docs/superpowers/plans/2026-09-29-linux-release-smoke-test.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,16 +239,15 @@ as a literal shell pipe does.
triggering commit, reversing the round-2 fix. The round-2 reasoning
didn't hold up: unpinning doesn't make either motivating re-run case
pass (an old release re-run still fails, just later and less clearly —
at the no-op leg's string match instead of at checkout), a GitHub
Actions re-run reuses the original event payload rather than
re-resolving `main`'s current tip, and running main's bleeding-edge
script against an older release's binary is an active hazard, not just
a missed opportunity — it already happened once, live, between this
PR's own reviews (see the `assert_healthy` conflict below). Pinning
means a release old enough to predate this script can't be
smoke-tested by re-running its workflow; accepted, since those
releases already shipped and the alternative breaks the common case
(every release going forward) to partially help the rare one.
at the no-op leg's string match instead of at checkout), and running
main's bleeding-edge script against an older release's binary is an
active hazard, not just a missed opportunity: main's script asserts
the no-op leg's `cortex <version> is installed and healthy.`, which
`agentop setup` prints and which a release old enough (e.g. `v0.8.1`)
predates. Pinning means a release old enough to predate this script
can't be smoke-tested by re-running its workflow; accepted, since
those releases already shipped and the alternative breaks the common
case (every release going forward) to partially help the rare one.
- [x] Fix (review, round 4): a separate, already-merged PR (#1292) changed
`agentop service status`'s healthy-wording from `healthy: <url>` to
`Cortex is healthy according to <url>` and landed directly on main
Expand Down
10 changes: 5 additions & 5 deletions scripts/release_smoke_test_linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -291,11 +291,11 @@ log "Testing ${TAG} (upgrading from: ${OLDER_TAG:-none found; first release})"
# alias" and "No compatibility code for on-disk state either" (see
# docs/superpowers/specs/2026-09-30-abctl-to-agentop-rename-design.md). Not
# actually reachable in practice: the workflow's checkout is pinned to TAG's
# own commit, and TAG=v0.8.0 is itself old enough to predate this script
# (confirmed via the GitHub API: 404 for this file at that commit) — a run
# testing v0.8.0 fails at "sh: can't open scripts/release_smoke_test_linux.sh"
# before any of this executes. Kept rather than deleted: a future release old
# enough to have this script but still pre-rename would reach here for real.
# own commit, and TAG=v0.8.0 predates this script — a run testing v0.8.0
# fails at "sh: 0: cannot open scripts/release_smoke_test_linux.sh: No such
# file" (dash's exact wording, checked under ubuntu:24.04) before any of
# this executes. Kept rather than deleted: a future release old enough to
# have this script but still pre-rename would reach here for real.
INSTALL_TAG="${OLDER_TAG:-${TAG}}"
log "Fresh install: ${INSTALL_TAG}"
install_cortex "${INSTALL_TAG}"
Expand Down
Loading