diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9eec3ba85..ea48c12d3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,10 +18,10 @@
- Specialist prompts cap findings at 400 words. `docs/unattended.md` adds report-length limits (READY at most 150 words plus required lines, reports at most 300).
### Gate integrity
-- Ship's union growth is a +1,621-byte entry in GSTA-132's size ledger (test/size-ledger/ship/garrytan-gsta131-token-efficiency.json; measured 330,645 bytes, SIZE_LEDGER: ok), and the ship skeleton cap in test/helpers/carve-guards.ts moves 60,913 → 60,960 bytes, pinned at the measured size. The five /review size pins in test/fixtures/skill-md-size-allowlist.json go down by 2 bytes each.
+- Ship's union growth is a +1,757-byte entry in GSTA-132's size ledger (test/size-ledger/ship/garrytan-gsta131-token-efficiency.json; measured 330,781 bytes, SIZE_LEDGER: ok), and the ship skeleton cap in test/helpers/carve-guards.ts moves 60,913 → 60,960 bytes, pinned at the measured size. The five /review size pins in test/fixtures/skill-md-size-allowlist.json go down by 2 bytes each.
- `test/autoplan-token-efficiency.test.ts` gives its subprocess-driven cases a 30-second timeout; its resumed-run case persists `max_rounds: 1` instead of 3, a value inside the new cap of 2.
- `test/ship-receipt-carry-pregate.test.ts` joins `KNOWN_WINDOWS_INCOMPATIBLE` in `scripts/lib/windows-curation.ts`, like the four other tests that pass `--pregate` to the receipt CLI. On a Windows host the fixture's Linux lane is a requires-remote obligation, so `write` refuses the pregate (windows-free-shard run 40611810409). It still runs on Linux and macOS.
-- Ship's Step 11 now runs the adversarial passes the review plan dispatches, so three prose pins move with it: `test/skill-validation.test.ts` and `test/outside-voice-preflight.test.ts` expect the ship heading without "always-on" and the native pass "on `DISPATCH: adversarial-native`" (/review keeps "always runs"), and `test/ship-control-flow.test.ts` pins the one plan call that picks decisions 2–4.
+- Ship's Step 11 now runs the adversarial passes the review plan dispatches, so three prose pins move with it: `test/skill-validation.test.ts` and `test/outside-voice-preflight.test.ts` expect the ship heading without "always-on" and the native pass "on `DISPATCH: adversarial-native`" (/review keeps "always runs"), `test/ship-control-flow.test.ts` pins the one plan call that picks decisions 2–4, and `test/fixtures/workflow-required-steps.json` pins the renamed Step 11 heading.
## [1.91.286.0] - 2026-10-28
diff --git a/ship/sections/adversarial.md b/ship/sections/adversarial.md
index a0024fba6..3436b5c24 100644
--- a/ship/sections/adversarial.md
+++ b/ship/sections/adversarial.md
@@ -2,8 +2,8 @@
**Step 9's last full-pass plan governs this step:** run the native pass only on
`DISPATCH: adversarial-native` and the outside voice only on
-`DISPATCH: outside-voice`. With neither, print `ADVERSARIAL: skipped (review plan)`
-and take decision 3 of Finish the adversarial phase.
+`DISPATCH: outside-voice`. Without the native line, print `ADVERSARIAL: skipped (review plan)`;
+with neither line, take decision 3 of Finish the adversarial phase.
## Step 11: Adversarial review
diff --git a/ship/sections/adversarial.md.tmpl b/ship/sections/adversarial.md.tmpl
index a8215d657..abb9615ae 100644
--- a/ship/sections/adversarial.md.tmpl
+++ b/ship/sections/adversarial.md.tmpl
@@ -1,7 +1,7 @@
**Step 9's last full-pass plan governs this step:** run the native pass only on
`DISPATCH: adversarial-native` and the outside voice only on
-`DISPATCH: outside-voice`. With neither, print `ADVERSARIAL: skipped (review plan)`
-and take decision 3 of Finish the adversarial phase.
+`DISPATCH: outside-voice`. Without the native line, print `ADVERSARIAL: skipped (review plan)`;
+with neither line, take decision 3 of Finish the adversarial phase.
{{ADVERSARIAL_STEP}}
diff --git a/ship/sections/review-army.md b/ship/sections/review-army.md
index c8f9d4064..32f18e440 100644
--- a/ship/sections/review-army.md
+++ b/ship/sections/review-army.md
@@ -14,7 +14,7 @@ Every repeat starts before the checklist read and captures a fresh REVIEW_START.
Finish the complete review and QA before applying any fix in Step 9.4.
**Review plan.** Pass 1 runs `~/.claude/skills/gstack/bin/gstack-review-plan
---base `; a repeat uses decision 2's run. Save its `REVIEW_PLAN:` line and
+--base `; a repeat uses the plan run that picked it. Save its `REVIEW_PLAN:` line and
fingerprint. Dispatch exactly its `DISPATCH:` lines (specialists, Red Team, Step
11's voices), each at its `effort=` on the same model family, in place of 9.1's and
9.2's own selection rules; a `SKIP:` reviewer
@@ -812,7 +812,8 @@ Other scopes apply decisions 2–4 in order.
peer or a QA exception cannot replace missing dispatched coverage.
2. **Third fixing cycle reached (`CYCLES >= 3`):** STOP and report recurring findings with
`converged:false`; do not run a fourth fixing cycle. Name each blocking finding (path,
- severity, problem) for the owner, unfixed. The cap is a stop, not an approval.
+ severity, problem) for the owner, unfixed. The cap is a stop, not an approval. A capped
+ pass whose remaining findings are all deferred or noted applied no edits: decision 4.
3. **Fixes applied below the cap:** Insert Step 5, affected Steps 6–8 and all of
Step 9 before the pending Step 10 in the work list. If the fixes grew the diff
past what the request needs (a helper, a guard, a case nothing takes), cut that
diff --git a/ship/sections/review-army.md.tmpl b/ship/sections/review-army.md.tmpl
index e5d0b4c83..6317b79c6 100644
--- a/ship/sections/review-army.md.tmpl
+++ b/ship/sections/review-army.md.tmpl
@@ -12,7 +12,7 @@ Every repeat starts before the checklist read and captures a fresh REVIEW_START.
Finish the complete review and QA before applying any fix in Step 9.4.
**Review plan.** Pass 1 runs `~/.claude/skills/gstack/bin/gstack-review-plan
---base `; a repeat uses decision 2's run. Save its `REVIEW_PLAN:` line and
+--base `; a repeat uses the plan run that picked it. Save its `REVIEW_PLAN:` line and
fingerprint. Dispatch exactly its `DISPATCH:` lines (specialists, Red Team, Step
11's voices), each at its `effort=` on the same model family, in place of 9.1's and
9.2's own selection rules; a `SKIP:` reviewer
@@ -226,7 +226,8 @@ Other scopes apply decisions 2–4 in order.
peer or a QA exception cannot replace missing dispatched coverage.
2. **Third fixing cycle reached (`CYCLES >= 3`):** STOP and report recurring findings with
`converged:false`; do not run a fourth fixing cycle. Name each blocking finding (path,
- severity, problem) for the owner, unfixed. The cap is a stop, not an approval.
+ severity, problem) for the owner, unfixed. The cap is a stop, not an approval. A capped
+ pass whose remaining findings are all deferred or noted applied no edits: decision 4.
3. **Fixes applied below the cap:** Insert Step 5, affected Steps 6–8 and all of
Step 9 before the pending Step 10 in the work list. If the fixes grew the diff
past what the request needs (a helper, a guard, a case nothing takes), cut that
diff --git a/test/fixtures/workflow-required-steps.json b/test/fixtures/workflow-required-steps.json
index 5c65ce590..300f5ad22 100644
--- a/test/fixtures/workflow-required-steps.json
+++ b/test/fixtures/workflow-required-steps.json
@@ -123,7 +123,7 @@
"## Step 22: Terminal line (every run)"
],
"sections/adversarial.md": [
- "## Step 11: Adversarial review (always-on)"
+ "## Step 11: Adversarial review"
],
"sections/changelog.md": [
"## Step 13: CHANGELOG (auto-generate)"
diff --git a/test/size-ledger/ship/garrytan-gsta131-token-efficiency.json b/test/size-ledger/ship/garrytan-gsta131-token-efficiency.json
index 7610f4c75..d50ebe107 100644
--- a/test/size-ledger/ship/garrytan-gsta131-token-efficiency.json
+++ b/test/size-ledger/ship/garrytan-gsta131-token-efficiency.json
@@ -1,4 +1,4 @@
{
- "bytes": 1621,
+ "bytes": 1757,
"why": "GSTA-131 token efficiency: review plan dispatch, fix-check 3.5, plan-governed adversarial step, Step 1 delta carry, Step 11.5 fix-check and planned-skip binding, 400-word findings cap, light Step 7/8 audits; screen repair: one decision each for the loop exits, adversarial dispatch and Step 16 receipts"
}