From 58777b5f2737cd28db50336e9ffe964c64fe6697 Mon Sep 17 00:00:00 2001 From: garrytan Date: Sun, 25 Oct 2026 23:39:17 +0000 Subject: [PATCH] chore: leave setup untouched (its channel note moves to README and docs/releases.md); the release workflow and script are free-only PR files Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 2 +- scripts/test-pr-profile.ts | 2 ++ setup | 4 ---- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 571b62493..a146b6369 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ - **`bin/gstack-update-check`**: reads `/VERSION`, resolves the SHA with `ls-remote refs/heads/` and compares against it; the cache identity carries `#stable` so a channel switch never replays the other channel's outcome. - **`bin/gstack-upgrade`**: fetches and fast-forwards to `stable` on that channel (`gstack-upgrade: channel stable ...` on stderr), follows the default branch with a note when origin has no `stable` yet, and treats a release whose VERSION is not higher than the installed one as current instead of diverged in a shallow clone. `--check` output lines are unchanged. - **`gstack-upgrade/SKILL.md.tmpl`**: Step 4 resolves `UPSTREAM_REF` through the helper and uses it for the Bun-floor check, the fast-forward, the unpushed-commit gate and the reset fallback instead of a literal `origin/main`. -- **`setup --team`** prints the channel it enabled and the one-line opt-out; README's team-mode step says team mode follows `stable`. +- **README** Step 2 (team mode) says team mode follows `stable` and how to follow every merge instead. ### Tests - `test/release-cut.test.ts`: on a real bare origin with a fake `gh`, the newest green first-parent commit wins and every skip is named (pending backstop, red check run, missing or running `free-tests`, no backstop run); an active freeze refuses and a cleared one does not; a cut creates the annotated tag, `stable` and the release with `--verify-tag` and the headline in the notes; re-running is `NOTHING_NEW`; a hotfix `--ref` promotes a later main commit with a compare link; stable never moves backwards; a side-branch ref and a clashing tag are refused; a thousand-version span stays under the notes cap. diff --git a/scripts/test-pr-profile.ts b/scripts/test-pr-profile.ts index d334195b0..a80de69f1 100644 --- a/scripts/test-pr-profile.ts +++ b/scripts/test-pr-profile.ts @@ -275,6 +275,8 @@ export const FREE_ONLY_PR_FILES = [ '.github/workflows/test-health.yml', '.github/workflows/eval-sweep.yml', // The weekly off-ship sweep on main; no PR-gate case reads it, and it never gates a PR. '.github/workflows/evals-main-backstop.yml', // The merge-train backstop on main: it dispatches evals.yml after a push to main; no PR-gate case reads it, and it never gates a PR. + '.github/workflows/weekly-release.yml', // The Monday release cut (tag, stable, GitHub Release): reads check runs on main; no paid case reads it, and it never gates a PR. + 'scripts/release-cut.ts', // The release cut's logic, run only by weekly-release.yml; covered by the free test/release-cut.test.ts. '.github/actionlint.yaml', // Runner labels for actionlint only. 'scripts/ship-measure-sweep.ts', // The weekly sweep CLI; it launches paid cases, never runs inside one. '.github/workflows/version-gate.yml', diff --git a/setup b/setup index 7d3eb9767..10c0ae56c 100755 --- a/setup +++ b/setup @@ -4098,10 +4098,6 @@ if [ "$TEAM_MODE" -eq 1 ]; then else log "Team mode enabled (auto-update hook pending a stable install — re-run ./setup after installing globally)." fi - case "$("$GSTACK_CONFIG" get update_channel 2>/dev/null || echo auto)" in - main) log " Channel: main (every merge; gstack-config set update_channel stable follows the weekly release instead)" ;; - *) log " Channel: stable, the weekly tagged release (gstack-config set update_channel main follows every merge; docs/releases.md)" ;; - esac log " To disable: ./setup --no-team" log "" log "Bootstrap your repo:"