From 622e8b1f76d293b647eca7b33d9dd060ab618b21 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Wed, 4 Nov 2026 09:09:00 -0800 Subject: [PATCH] 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 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 --- changelog.d/capy-gst-1346-ship-judge-repair.md | 1 + ship/SKILL.md | 12 ++++++------ ship/SKILL.md.tmpl | 12 ++++++------ ship/sections/pr-body.md | 12 ++++++------ ship/sections/pr-body.md.tmpl | 12 ++++++------ ship/sections/tests.md | 13 ++++++------- ship/sections/tests.md.tmpl | 13 ++++++------- test/fixtures/golden/agy-ship-SKILL.md | 12 ++++++------ test/fixtures/golden/claude-ship-SKILL.md | 12 ++++++------ test/fixtures/golden/codex-ship-SKILL.md | 12 ++++++------ test/fixtures/golden/factory-ship-SKILL.md | 12 ++++++------ .../ship/capy-gst-1346-ship-judge-repair.json | 4 ++++ 12 files changed, 65 insertions(+), 62 deletions(-) create mode 100644 changelog.d/capy-gst-1346-ship-judge-repair.md create mode 100644 test/size-ledger/ship/capy-gst-1346-ship-judge-repair.json diff --git a/changelog.d/capy-gst-1346-ship-judge-repair.md b/changelog.d/capy-gst-1346-ship-judge-repair.md new file mode 100644 index 000000000..63297c691 --- /dev/null +++ b/changelog.d/capy-gst-1346-ship-judge-repair.md @@ -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) diff --git a/ship/SKILL.md b/ship/SKILL.md index 811b00bb7..d0e3cdcee 100644 --- a/ship/SKILL.md +++ b/ship/SKILL.md @@ -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 [--bump ] --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 `, `--keep-current`, `--answer`). `VERSION: skipped` or `VERSION: 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 --reviewed-tree --reviewed-base --docs-post -post.json --lane