fix(ship): one answer per ship-workflow question the judge flagged (GST-1346) (#3996)

* fix(ship): one answer per ship-workflow question the judge flagged (GST-1346)

The ship/SKILL.md workflow judge failed twice on main b244e6d (run 41817566885,
actionability 4/3/3 in both panels) on prose no landed PR changed. Every sample
cited the same conflicts; resolve them without growing the skill:
- Step 11: Codex-mode branches keep only the Claude pass the plan dispatched;
  both Codex passes run on DISPATCH: outside-voice.
- Steps 12/16: item and stage commands serve only a STOP:.
- CI carry: names the draft-PR command; Step 6.5's question covers only Greptile;
  accept runs after Step 17's push.
- Step 19 exit 3 ends Step 22 with status=refused run=-.
Ship union -8 bytes (size ledger), skeleton within its cap.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix(ship): drop the Step 11 wording; keep the three no-loss-free repairs (GST-1346)

ship/sections/adversarial.md is pinned to a no-loss replay (GSTA-258-C) and its
headings anchor lib/ship-parts.ts, so its rewording needs a replay first; it moves
to a follow-up. A local single-case judge panel without it passed 3/4/4 on all
three samples. Trims the CI_CARRY reason list (the tool prints the reason) to keep
the ship union under its ledger (-11 bytes).

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix(ship): stage 1 builds go to finish as --build, stage 5 commits only regenerated outputs, full draft-PR command (GST-1346)

Step 11 review findings: the bare 'gstack-post pr-create --draft' exits 64
without --base/--title-file/--body-file (outside voice), and '1-4's commands are
only STOP recoveries' read as skipping stage 1's build discovery (native).
Folds #3951's stage 5 commit-owner wording. Ship union -39 bytes.

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix(ship): keep pr-body byte-neutral after the exit-3 status=refused line (GST-1346)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* chore: changelog and TODOS

Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

---------

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
authored and GitHub committed 2026-11-04 17:09:00 +00:00
1 parent 4debdba226
commit 622e8b1f76
12 files changed
+65 -62

No files matched your search

@@ -0,0 +1 @@
- **/ship's workflow now gives one answer where it used to give two, so main's backstop gate can pass again.** The `ship/SKILL.md workflow` judge failed twice on main at b244e6d (run 41817566885) because its readers kept finding the same conflicts. Steps 12 and 16 now say their item and stage commands serve only a `STOP:`, apart from stage 1's builds, which go to the one `gstack-ship-release finish` call as `--build`. Stage 5 says `finish` already made the release commit and only regenerated outputs are left to commit. The CI-carry early push names its full draft-PR command, says Step 6.5's question covers only Greptile, and runs `accept` after Step 17's push. A PR that `gh` failed to create (Step 19 exit 3) now ends Step 22 with `status=refused` instead of a result line that needs a PR number. The ship skill is 70 bytes smaller. (GST-1346)
+6 -6
View File
@@ -517,7 +517,7 @@ Item 3 needs `BUMP_LEVEL`: reuse this invocation's saved level. Else FRESH
chooses it in item 2 and ALREADY_BUMPED derives it in item 1.
**One call:** `~/.claude/skills/gstack/bin/gstack-ship-release version --base <base> [--bump <BUMP_LEVEL>] --why '<WHY>'`
runs items 1 and 3–5; each decision left to you is a `STOP:` naming its rerun flag
runs items 1 and 3–5; item commands serve only a `STOP:`, which names its rerun flag
(`--bump`, `--accept-incomplete`, `--version <v>`, `--keep-current`, `--answer`).
`VERSION: skipped` or `VERSION: <v> kept (…; no write)` ends Step 12 with
@@ -653,12 +653,12 @@ Make bisectable commits; if already committed, continue to Step 16. Never create
**IRON LAW: NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.**
Run stages 1–5 in order; recovery notes below name where to resume. Content
Stages run in order; 1–4's other commands are `STOP:` recoveries. Content
changes during or after verification restart at stage 1 and complete all five
stages before Step 17. Content-preserving commits keep evidence valid.
**One call for stages 1–4:** `~/.claude/skills/gstack/bin/gstack-ship-release finish --base <base> --reviewed-tree <tree> --reviewed-base <mb> --docs-post <audit-id>-post.json --lane <label>=<Step 5 command>... [--build <cmd>]... --trailer '<trailer>'`
makes Step 15's item-3 commit and runs stages 1–4 and the pregate; each `STOP:` is a recovery
makes Step 15's item-3 commit, runs stages 1–4 and the pregate; each `STOP:` is a recovery
below (`--docs-rechecked`, `--no-lanes-approved` record stage 2.2 and Step 5's approval).
### 1. Finish writers and prepare outputs
@@ -668,7 +668,7 @@ termination before another writer runs; timeout or cancellation acknowledgment
alone means STOP until confirmed.
Find declared generation/build commands in project instructions, manifests, build
files and CI. Run them and save results. If none exists, record not applicable and
files and CI. Pass each to `finish` as `--build`. If none exists, record not applicable and
the inspected sources. A missing prerequisite or failed build stops shipping:
report **Build failed or prerequisite missing**, with the command, error and needed
repair. Never invent a substitute command.
@@ -764,8 +764,8 @@ does not authorize a third attempt.
### 5. Report, then push
Commit only approved, verified release changes left uncommitted after Step 15,
including generated outputs; use its grouping rules; never create an empty commit.
`finish` made the release commit. Commit only verified outputs stage 1's
builds regenerated, grouped as in Step 15; never create an empty commit.
Preserve unrelated user files.
Paste build/docs/test results. Reuse waivers only for the same verified
+6 -6
View File
@@ -240,7 +240,7 @@ Item 3 needs `BUMP_LEVEL`: reuse this invocation's saved level. Else FRESH
chooses it in item 2 and ALREADY_BUMPED derives it in item 1.
**One call:** `~/.claude/skills/gstack/bin/gstack-ship-release version --base <base> [--bump <BUMP_LEVEL>] --why '<WHY>'`
runs items 1 and 3–5; each decision left to you is a `STOP:` naming its rerun flag
runs items 1 and 3–5; item commands serve only a `STOP:`, which names its rerun flag
(`--bump`, `--accept-incomplete`, `--version <v>`, `--keep-current`, `--answer`).
`VERSION: skipped` or `VERSION: <v> kept (…; no write)` ends Step 12 with
@@ -374,12 +374,12 @@ Make bisectable commits; if already committed, continue to Step 16. Never create
**IRON LAW: NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.**
Run stages 1–5 in order; recovery notes below name where to resume. Content
Stages run in order; 1–4's other commands are `STOP:` recoveries. Content
changes during or after verification restart at stage 1 and complete all five
stages before Step 17. Content-preserving commits keep evidence valid.
**One call for stages 1–4:** `~/.claude/skills/gstack/bin/gstack-ship-release finish --base <base> --reviewed-tree <tree> --reviewed-base <mb> --docs-post <audit-id>-post.json --lane <label>=<Step 5 command>... [--build <cmd>]... --trailer '<trailer>'`
makes Step 15's item-3 commit and runs stages 1–4 and the pregate; each `STOP:` is a recovery
makes Step 15's item-3 commit, runs stages 1–4 and the pregate; each `STOP:` is a recovery
below (`--docs-rechecked`, `--no-lanes-approved` record stage 2.2 and Step 5's approval).
### 1. Finish writers and prepare outputs
@@ -389,7 +389,7 @@ termination before another writer runs; timeout or cancellation acknowledgment
alone means STOP until confirmed.
Find declared generation/build commands in project instructions, manifests, build
files and CI. Run them and save results. If none exists, record not applicable and
files and CI. Pass each to `finish` as `--build`. If none exists, record not applicable and
the inspected sources. A missing prerequisite or failed build stops shipping:
report **Build failed or prerequisite missing**, with the command, error and needed
repair. Never invent a substitute command.
@@ -485,8 +485,8 @@ does not authorize a third attempt.
### 5. Report, then push
Commit only approved, verified release changes left uncommitted after Step 15,
including generated outputs; use its grouping rules; never create an empty commit.
`finish` made the release commit. Commit only verified outputs stage 1's
builds regenerated, grouped as in Step 15; never create an empty commit.
Preserve unrelated user files.
Paste build/docs/test results. Reuse waivers only for the same verified
+6 -6
View File
@@ -277,7 +277,7 @@ reads the title back. Then resolve the draft state from Step 9's gate findings:
under Step 17's recorded human authorisation (option B there); the body already
carries the `Gate edits: N open` banner. Without that record, STOP here and report.
Print the existing URL and continue to Step 20; do not run the create command below.
Print the existing URL and continue to Step 20; skip the create command below.
**No open PR/MR:** add `--draft` when any gate finding is `open` (a later agent never
infers approval from the PR existing; the human marks it ready after dispositioning
@@ -298,17 +298,17 @@ Branch on the exit code of either block:
finding (sterner on public repos, no batch acknowledge). PII offers auto-redact:
write `~/.claude/skills/gstack/bin/gstack-redact --from-file "$PR_BODY_FILE" --auto-redact <ids>`
output back into the body file and rerun the block, which scans again. Only when the
user accepts the findings as they are, rerun the same block with
user accepts the findings unchanged, rerun the same block with
`--confirm <confirm-token>` added to the command that printed it; any edit needs a new token.
- **64** with stderr saying the current body holds a title `more than once`: nothing was
posted. STOP and report the duplicated titles; never rerun with `--replace` yourself,
since a human picks which copy stays (docs/troubleshooting.md#gstack-post-pr-body-merge).
- **3** `gh`/`glab` failed, or any other **64** (no usable remote or CLI): print the error, the
branch name, the remote URL and the block for posting by hand. Do not stop — the code
is pushed — but never report a PR that was not created. With open gate findings,
- **3** `gh`/`glab` failed, or any other **64** (no usable remote or CLI): print the error, branch,
remote URL and the block to post by hand. Do not stop — the code is pushed — but never
report a PR that was not created; Step 22 ends `status=refused`. With open gate findings,
also say the gate edits were not disclosed and leave the Step 16 open-items report
in the invocation record; never report the disclosure as done.
- Any other exit is an error that blocks publication until its cause is fixed.
- Any other exit errors: it blocks publication until its cause is fixed.
**Output the PR/MR URL** — then proceed to Step 20.
+6 -6
View File
@@ -260,7 +260,7 @@ reads the title back. Then resolve the draft state from Step 9's gate findings:
under Step 17's recorded human authorisation (option B there); the body already
carries the `Gate edits: N open` banner. Without that record, STOP here and report.
Print the existing URL and continue to Step 20; do not run the create command below.
Print the existing URL and continue to Step 20; skip the create command below.
**No open PR/MR:** add `--draft` when any gate finding is `open` (a later agent never
infers approval from the PR existing; the human marks it ready after dispositioning
@@ -281,17 +281,17 @@ Branch on the exit code of either block:
finding (sterner on public repos, no batch acknowledge). PII offers auto-redact:
write `~/.claude/skills/gstack/bin/gstack-redact --from-file "$PR_BODY_FILE" --auto-redact <ids>`
output back into the body file and rerun the block, which scans again. Only when the
user accepts the findings as they are, rerun the same block with
user accepts the findings unchanged, rerun the same block with
`--confirm <confirm-token>` added to the command that printed it; any edit needs a new token.
- **64** with stderr saying the current body holds a title `more than once`: nothing was
posted. STOP and report the duplicated titles; never rerun with `--replace` yourself,
since a human picks which copy stays (docs/troubleshooting.md#gstack-post-pr-body-merge).
- **3** `gh`/`glab` failed, or any other **64** (no usable remote or CLI): print the error, the
branch name, the remote URL and the block for posting by hand. Do not stop — the code
is pushed — but never report a PR that was not created. With open gate findings,
- **3** `gh`/`glab` failed, or any other **64** (no usable remote or CLI): print the error, branch,
remote URL and the block to post by hand. Do not stop — the code is pushed — but never
report a PR that was not created; Step 22 ends `status=refused`. With open gate findings,
also say the gate edits were not disclosed and leave the Step 16 open-items report
in the invocation record; never report the disclosure as done.
- Any other exit is an error that blocks publication until its cause is fixed.
- Any other exit errors: it blocks publication until its cause is fixed.
**Output the PR/MR URL** — then proceed to Step 20.
+6 -7
View File
@@ -213,8 +213,7 @@ Only commit if there are changes. Stage the bootstrap's own files by name (confi
**Run it:** `~/.claude/skills/gstack/bin/gstack-ship-preflight --tests-only --base <base> --lane <label>=<command>...`
(or the Step 1 call with lanes). It runs the free pre-gate first, before any lane, eval or
remote gate (`gstack-pregate --allow-repo-commands`: stage 1 regen, secrets, strays, literals;
stage 2 the selected lanes under pipefail), then the lanes inside the evidence ledger (one at
a time on 4 or fewer cores unless `--lanes serial|parallel`), and prints `PREGATE:`, `LANES:` and
stage 2 the selected lanes under pipefail), then the lanes inside the evidence ledger, and prints `PREGATE:`, `LANES:` and
one `LANE: <label> <state> exit= tests_ran= log=` line each.
`fail` or `incomplete` blocks: fix, rerun. **No-stop** (docs/review-policy.md#no-stop): a pregate flake rerun (one per branch), a
timeout-only fix and three other routine stops go through `gstack-no-stop record` (`--help`); `recorded` goes on,
@@ -228,16 +227,16 @@ Use the project's test commands discovered in Step 4 or documented in CLAUDE.md/
**CI is the one full test run.** When `origin/<base>`'s `.gstack/pregate.json` maps a lane's exact
command in `ship_lanes_from` (gstack maps `bun run test`), that lane is carried from a verified CI run
at this exact, clean tree instead of running here: `LANE: <label> carried run=<id>/<attempt> tests_ran=<n>`.
Before the first push run only targeted tests and the repro (the full suite too when the diff touches
Before the first push that lane runs only targeted tests and the repro (the full suite too when the diff touches
merge-check code: `lib/ship-*`, `lib/pregate/*`, the ship and pregate bins,
`scripts/lib/shard-engine.ts`). Push early so CI runs beside the review: commit, `gstack-ship-release push
--branch <branch> --early` (sealed, secrets and guards first), open a draft PR, then `gstack-ci-carry wait` in
--branch <branch> --early` (sealed, secrets and guards first; Step 6.5 asks only for Greptile), open a draft PR
(`gstack-post pr-create --base <base> --draft --title-file <f> --body-file <f>`), then `gstack-ci-carry wait` in
the background; once it prints `CI_WAIT: green`, rerun `--tests-only` and the mapped lane is carried. A red
run is a failed lane: triage it below. Batch review fixes into one commit and one push. `CI_CARRY: none
label=<l> (<reason>)` names why a mapped lane ran here (a dirty tree, no green run at HEAD yet, a fork or stale
run, a newer red run, a tree.json that misses an inventory file). Any other lane that already passed at this
label=<l> (<reason>)` names why a mapped lane ran here. Any other lane that already passed at this
tree, command and runtime is reused (`reused=<time>`), never run twice. In Step 16, `finish` defers a mapped
lane it cannot carry (`EVIDENCE: DEFERRED`); after the push, `gstack-ship-release accept --base <base>
lane it cannot carry (`EVIDENCE: DEFERRED`); after Step 17's push, `gstack-ship-release accept --base <base>
--lane …` carries it from the green run at the final head and reruns the pregate there.
**If no applicable test suite exists:** Name the untested scope. AskUserQuestion:
+6 -7
View File
@@ -9,8 +9,7 @@
**Run it:** `~/.claude/skills/gstack/bin/gstack-ship-preflight --tests-only --base <base> --lane <label>=<command>...`
(or the Step 1 call with lanes). It runs the free pre-gate first, before any lane, eval or
remote gate (`gstack-pregate --allow-repo-commands`: stage 1 regen, secrets, strays, literals;
stage 2 the selected lanes under pipefail), then the lanes inside the evidence ledger (one at
a time on 4 or fewer cores unless `--lanes serial|parallel`), and prints `PREGATE:`, `LANES:` and
stage 2 the selected lanes under pipefail), then the lanes inside the evidence ledger, and prints `PREGATE:`, `LANES:` and
one `LANE: <label> <state> exit= tests_ran= log=` line each.
`fail` or `incomplete` blocks: fix, rerun. **No-stop** (docs/review-policy.md#no-stop): a pregate flake rerun (one per branch), a
timeout-only fix and three other routine stops go through `gstack-no-stop record` (`--help`); `recorded` goes on,
@@ -24,16 +23,16 @@ Use the project's test commands discovered in Step 4 or documented in CLAUDE.md/
**CI is the one full test run.** When `origin/<base>`'s `.gstack/pregate.json` maps a lane's exact
command in `ship_lanes_from` (gstack maps `bun run test`), that lane is carried from a verified CI run
at this exact, clean tree instead of running here: `LANE: <label> carried run=<id>/<attempt> tests_ran=<n>`.
Before the first push run only targeted tests and the repro (the full suite too when the diff touches
Before the first push that lane runs only targeted tests and the repro (the full suite too when the diff touches
merge-check code: `lib/ship-*`, `lib/pregate/*`, the ship and pregate bins,
`scripts/lib/shard-engine.ts`). Push early so CI runs beside the review: commit, `gstack-ship-release push
--branch <branch> --early` (sealed, secrets and guards first), open a draft PR, then `gstack-ci-carry wait` in
--branch <branch> --early` (sealed, secrets and guards first; Step 6.5 asks only for Greptile), open a draft PR
(`gstack-post pr-create --base <base> --draft --title-file <f> --body-file <f>`), then `gstack-ci-carry wait` in
the background; once it prints `CI_WAIT: green`, rerun `--tests-only` and the mapped lane is carried. A red
run is a failed lane: triage it below. Batch review fixes into one commit and one push. `CI_CARRY: none
label=<l> (<reason>)` names why a mapped lane ran here (a dirty tree, no green run at HEAD yet, a fork or stale
run, a newer red run, a tree.json that misses an inventory file). Any other lane that already passed at this
label=<l> (<reason>)` names why a mapped lane ran here. Any other lane that already passed at this
tree, command and runtime is reused (`reused=<time>`), never run twice. In Step 16, `finish` defers a mapped
lane it cannot carry (`EVIDENCE: DEFERRED`); after the push, `gstack-ship-release accept --base <base>
lane it cannot carry (`EVIDENCE: DEFERRED`); after Step 17's push, `gstack-ship-release accept --base <base>
--lane …` carries it from the green run at the final head and reruns the pregate there.
**If no applicable test suite exists:** Name the untested scope. AskUserQuestion:
+6 -6
View File
@@ -518,7 +518,7 @@ Item 3 needs `BUMP_LEVEL`: reuse this invocation's saved level. Else FRESH
chooses it in item 2 and ALREADY_BUMPED derives it in item 1.
**One call:** `~/.gemini/antigravity-cli/skills/gstack/bin/gstack-ship-release version --base <base> [--bump <BUMP_LEVEL>] --why '<WHY>'`
runs items 1 and 3–5; each decision left to you is a `STOP:` naming its rerun flag
runs items 1 and 3–5; item commands serve only a `STOP:`, which names its rerun flag
(`--bump`, `--accept-incomplete`, `--version <v>`, `--keep-current`, `--answer`).
`VERSION: skipped` or `VERSION: <v> kept (…; no write)` ends Step 12 with
@@ -654,12 +654,12 @@ Make bisectable commits; if already committed, continue to Step 16. Never create
**IRON LAW: NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.**
Run stages 1–5 in order; recovery notes below name where to resume. Content
Stages run in order; 1–4's other commands are `STOP:` recoveries. Content
changes during or after verification restart at stage 1 and complete all five
stages before Step 17. Content-preserving commits keep evidence valid.
**One call for stages 1–4:** `~/.gemini/antigravity-cli/skills/gstack/bin/gstack-ship-release finish --base <base> --reviewed-tree <tree> --reviewed-base <mb> --docs-post <audit-id>-post.json --lane <label>=<Step 5 command>... [--build <cmd>]... --trailer '<trailer>'`
makes Step 15's item-3 commit and runs stages 1–4 and the pregate; each `STOP:` is a recovery
makes Step 15's item-3 commit, runs stages 1–4 and the pregate; each `STOP:` is a recovery
below (`--docs-rechecked`, `--no-lanes-approved` record stage 2.2 and Step 5's approval).
### 1. Finish writers and prepare outputs
@@ -669,7 +669,7 @@ termination before another writer runs; timeout or cancellation acknowledgment
alone means STOP until confirmed.
Find declared generation/build commands in project instructions, manifests, build
files and CI. Run them and save results. If none exists, record not applicable and
files and CI. Pass each to `finish` as `--build`. If none exists, record not applicable and
the inspected sources. A missing prerequisite or failed build stops shipping:
report **Build failed or prerequisite missing**, with the command, error and needed
repair. Never invent a substitute command.
@@ -765,8 +765,8 @@ does not authorize a third attempt.
### 5. Report, then push
Commit only approved, verified release changes left uncommitted after Step 15,
including generated outputs; use its grouping rules; never create an empty commit.
`finish` made the release commit. Commit only verified outputs stage 1's
builds regenerated, grouped as in Step 15; never create an empty commit.
Preserve unrelated user files.
Paste build/docs/test results. Reuse waivers only for the same verified
+6 -6
View File
@@ -517,7 +517,7 @@ Item 3 needs `BUMP_LEVEL`: reuse this invocation's saved level. Else FRESH
chooses it in item 2 and ALREADY_BUMPED derives it in item 1.
**One call:** `~/.claude/skills/gstack/bin/gstack-ship-release version --base <base> [--bump <BUMP_LEVEL>] --why '<WHY>'`
runs items 1 and 3–5; each decision left to you is a `STOP:` naming its rerun flag
runs items 1 and 3–5; item commands serve only a `STOP:`, which names its rerun flag
(`--bump`, `--accept-incomplete`, `--version <v>`, `--keep-current`, `--answer`).
`VERSION: skipped` or `VERSION: <v> kept (…; no write)` ends Step 12 with
@@ -653,12 +653,12 @@ Make bisectable commits; if already committed, continue to Step 16. Never create
**IRON LAW: NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.**
Run stages 1–5 in order; recovery notes below name where to resume. Content
Stages run in order; 1–4's other commands are `STOP:` recoveries. Content
changes during or after verification restart at stage 1 and complete all five
stages before Step 17. Content-preserving commits keep evidence valid.
**One call for stages 1–4:** `~/.claude/skills/gstack/bin/gstack-ship-release finish --base <base> --reviewed-tree <tree> --reviewed-base <mb> --docs-post <audit-id>-post.json --lane <label>=<Step 5 command>... [--build <cmd>]... --trailer '<trailer>'`
makes Step 15's item-3 commit and runs stages 1–4 and the pregate; each `STOP:` is a recovery
makes Step 15's item-3 commit, runs stages 1–4 and the pregate; each `STOP:` is a recovery
below (`--docs-rechecked`, `--no-lanes-approved` record stage 2.2 and Step 5's approval).
### 1. Finish writers and prepare outputs
@@ -668,7 +668,7 @@ termination before another writer runs; timeout or cancellation acknowledgment
alone means STOP until confirmed.
Find declared generation/build commands in project instructions, manifests, build
files and CI. Run them and save results. If none exists, record not applicable and
files and CI. Pass each to `finish` as `--build`. If none exists, record not applicable and
the inspected sources. A missing prerequisite or failed build stops shipping:
report **Build failed or prerequisite missing**, with the command, error and needed
repair. Never invent a substitute command.
@@ -764,8 +764,8 @@ does not authorize a third attempt.
### 5. Report, then push
Commit only approved, verified release changes left uncommitted after Step 15,
including generated outputs; use its grouping rules; never create an empty commit.
`finish` made the release commit. Commit only verified outputs stage 1's
builds regenerated, grouped as in Step 15; never create an empty commit.
Preserve unrelated user files.
Paste build/docs/test results. Reuse waivers only for the same verified
+6 -6
View File
@@ -517,7 +517,7 @@ Item 3 needs `BUMP_LEVEL`: reuse this invocation's saved level. Else FRESH
chooses it in item 2 and ALREADY_BUMPED derives it in item 1.
**One call:** `$GSTACK_ROOT/bin/gstack-ship-release version --base <base> [--bump <BUMP_LEVEL>] --why '<WHY>'`
runs items 1 and 3–5; each decision left to you is a `STOP:` naming its rerun flag
runs items 1 and 3–5; item commands serve only a `STOP:`, which names its rerun flag
(`--bump`, `--accept-incomplete`, `--version <v>`, `--keep-current`, `--answer`).
`VERSION: skipped` or `VERSION: <v> kept (…; no write)` ends Step 12 with
@@ -656,12 +656,12 @@ Make bisectable commits; if already committed, continue to Step 16. Never create
**IRON LAW: NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.**
Run stages 1–5 in order; recovery notes below name where to resume. Content
Stages run in order; 1–4's other commands are `STOP:` recoveries. Content
changes during or after verification restart at stage 1 and complete all five
stages before Step 17. Content-preserving commits keep evidence valid.
**One call for stages 1–4:** `$GSTACK_ROOT/bin/gstack-ship-release finish --base <base> --reviewed-tree <tree> --reviewed-base <mb> --docs-post <audit-id>-post.json --lane <label>=<Step 5 command>... [--build <cmd>]... --trailer '<trailer>'`
makes Step 15's item-3 commit and runs stages 1–4 and the pregate; each `STOP:` is a recovery
makes Step 15's item-3 commit, runs stages 1–4 and the pregate; each `STOP:` is a recovery
below (`--docs-rechecked`, `--no-lanes-approved` record stage 2.2 and Step 5's approval).
### 1. Finish writers and prepare outputs
@@ -671,7 +671,7 @@ termination before another writer runs; timeout or cancellation acknowledgment
alone means STOP until confirmed.
Find declared generation/build commands in project instructions, manifests, build
files and CI. Run them and save results. If none exists, record not applicable and
files and CI. Pass each to `finish` as `--build`. If none exists, record not applicable and
the inspected sources. A missing prerequisite or failed build stops shipping:
report **Build failed or prerequisite missing**, with the command, error and needed
repair. Never invent a substitute command.
@@ -768,8 +768,8 @@ does not authorize a third attempt.
### 5. Report, then push
Commit only approved, verified release changes left uncommitted after Step 15,
including generated outputs; use its grouping rules; never create an empty commit.
`finish` made the release commit. Commit only verified outputs stage 1's
builds regenerated, grouped as in Step 15; never create an empty commit.
Preserve unrelated user files.
Paste build/docs/test results. Reuse waivers only for the same verified
+6 -6
View File
@@ -519,7 +519,7 @@ Item 3 needs `BUMP_LEVEL`: reuse this invocation's saved level. Else FRESH
chooses it in item 2 and ALREADY_BUMPED derives it in item 1.
**One call:** `$GSTACK_ROOT/bin/gstack-ship-release version --base <base> [--bump <BUMP_LEVEL>] --why '<WHY>'`
runs items 1 and 3–5; each decision left to you is a `STOP:` naming its rerun flag
runs items 1 and 3–5; item commands serve only a `STOP:`, which names its rerun flag
(`--bump`, `--accept-incomplete`, `--version <v>`, `--keep-current`, `--answer`).
`VERSION: skipped` or `VERSION: <v> kept (…; no write)` ends Step 12 with
@@ -658,12 +658,12 @@ Make bisectable commits; if already committed, continue to Step 16. Never create
**IRON LAW: NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE.**
Run stages 1–5 in order; recovery notes below name where to resume. Content
Stages run in order; 1–4's other commands are `STOP:` recoveries. Content
changes during or after verification restart at stage 1 and complete all five
stages before Step 17. Content-preserving commits keep evidence valid.
**One call for stages 1–4:** `$GSTACK_ROOT/bin/gstack-ship-release finish --base <base> --reviewed-tree <tree> --reviewed-base <mb> --docs-post <audit-id>-post.json --lane <label>=<Step 5 command>... [--build <cmd>]... --trailer '<trailer>'`
makes Step 15's item-3 commit and runs stages 1–4 and the pregate; each `STOP:` is a recovery
makes Step 15's item-3 commit, runs stages 1–4 and the pregate; each `STOP:` is a recovery
below (`--docs-rechecked`, `--no-lanes-approved` record stage 2.2 and Step 5's approval).
### 1. Finish writers and prepare outputs
@@ -673,7 +673,7 @@ termination before another writer runs; timeout or cancellation acknowledgment
alone means STOP until confirmed.
Find declared generation/build commands in project instructions, manifests, build
files and CI. Run them and save results. If none exists, record not applicable and
files and CI. Pass each to `finish` as `--build`. If none exists, record not applicable and
the inspected sources. A missing prerequisite or failed build stops shipping:
report **Build failed or prerequisite missing**, with the command, error and needed
repair. Never invent a substitute command.
@@ -770,8 +770,8 @@ does not authorize a third attempt.
### 5. Report, then push
Commit only approved, verified release changes left uncommitted after Step 15,
including generated outputs; use its grouping rules; never create an empty commit.
`finish` made the release commit. Commit only verified outputs stage 1's
builds regenerated, grouped as in Step 15; never create an empty commit.
Preserve unrelated user files.
Paste build/docs/test results. Reuse waivers only for the same verified
@@ -0,0 +1,4 @@
{
"bytes": -70,
"why": "GST-1346: ship workflow judge repair (one-call Steps 12/16 with --build; stage 5 commit owner from #3951; CI-carry draft PR and Greptile-only consent; exit 3 terminal), net -70 bytes"
}