mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-07 17:28:23 +01:00
/ship review fixes (GSTA-98, PR #3429): - The weekly release read the Main backstop gate run's conclusion, but scripts/train-backstop.ts exits 0 when main moved past the push before it was gated (superseded), so a never-gated tree read as green. The backstop workflow now publishes its verdict on the commit as the `main-backstop` check run from a code-free checks:write job (success for covered|gated, neutral for inert|superseded|deferred, failure for frozen|failed), fed by the new `--outputs` flag; release-cut.ts requires that check run and free-tests to succeed and holds a commit whose check runs are still going. - A cut that pushed the tag and stable but failed to create the release can be finished: stable itself stays a candidate until its release exists, the notes compare against the release tag behind it, and a dry run with nothing green exits 0 with the skips named (the real cut still fails). - weekly-release.yml: the cut job runs only from refs/heads/main, `ref` must be a full 40-hex SHA, and actions:read is dropped (no workflow-runs call). - /gstack-upgrade: the destructive fallback requires the carried UPSTREAM_REF instead of defaulting to origin/main in a fresh shell; a team install past the release stops with AHEAD_OF_STABLE instead of FF_REFUSED and a reset backwards. gstack-update-channel.sh --fetch-ref keeps origin/stable on any fetch failure other than a missing release; dead gstack_update_channel_ref removed. gstack-update-check follows main before the first release instead of caching CHECK_FAILED; gstack-upgrade treats a failed ls-remote as a fetch failure, not an empty answer. - Tests: release-cut (check-run fixture, partial cut, neutral/pending), weekly-release-workflow (new), evals-train-workflow and train-backstop (backstop-check job, --outputs), update-channel (no-release fallback, offline --fetch-ref), template pins. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>