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" }