diff --git a/review/SKILL.md b/review/SKILL.md index cb0850c69..6e01257f0 100644 --- a/review/SKILL.md +++ b/review/SKILL.md @@ -650,9 +650,9 @@ findings and decides completion. ## Step 5: Fix-First Review -Before edits, confirm every dispatched reader has returned or is confirmed stopped. -For an active or unknown reader/writer, wait or confirm it is stopped; if that -cannot be confirmed, persist incomplete at Step 5.8 and STOP without edits. +Before edits, every dispatched reader/writer must have returned or be confirmed +stopped: wait, and if that cannot be confirmed, persist incomplete at Step 5.8 and +STOP without edits. Terminal failure does not block fixes from independent evidence. Missing required output still makes the pass incomplete, even after the reader is stopped. @@ -836,7 +836,8 @@ Before replying to any comment, run greptile-triage.md's **Escalation Detection* 2. On a repeat, execute Steps 3–5 in order. At Step 4.7, an edited pass supersedes every earlier QA capture (exploratory §4): rerun each probe the verdict relies on. These reruns are revalidation, so they run even after smoke expiry; keep the - PROBE_DIR and run its once-only `materialize` on the final pass. + PROBE_DIR. Earlier provisional sections link checkpoints; only the final pass + runs its once-only `materialize`. A zero-edit pass reuses only this invocation's unchanged-input QA evidence, rerunning any probe whose inputs changed or are uncertain. Reusing never skips a review step. 3. **Verify completed actions.** On the final zero-edit pass, reconcile this diff --git a/review/SKILL.md.tmpl b/review/SKILL.md.tmpl index 4bc518bfb..4bb0587e2 100644 --- a/review/SKILL.md.tmpl +++ b/review/SKILL.md.tmpl @@ -251,9 +251,9 @@ critical finding or another writer during collection. Skip silently if no docs e ## Step 5: Fix-First Review -Before edits, confirm every dispatched reader has returned or is confirmed stopped. -For an active or unknown reader/writer, wait or confirm it is stopped; if that -cannot be confirmed, persist incomplete at Step 5.8 and STOP without edits. +Before edits, every dispatched reader/writer must have returned or be confirmed +stopped: wait, and if that cannot be confirmed, persist incomplete at Step 5.8 and +STOP without edits. Terminal failure does not block fixes from independent evidence. Missing required output still makes the pass incomplete, even after the reader is stopped. @@ -387,7 +387,8 @@ Before replying to any comment, run greptile-triage.md's **Escalation Detection* 2. On a repeat, execute Steps 3–5 in order. At Step 4.7, an edited pass supersedes every earlier QA capture (exploratory §4): rerun each probe the verdict relies on. These reruns are revalidation, so they run even after smoke expiry; keep the - PROBE_DIR and run its once-only `materialize` on the final pass. + PROBE_DIR. Earlier provisional sections link checkpoints; only the final pass + runs its once-only `materialize`. A zero-edit pass reuses only this invocation's unchanged-input QA evidence, rerunning any probe whose inputs changed or are uncertain. Reusing never skips a review step. 3. **Verify completed actions.** On the final zero-edit pass, reconcile this diff --git a/test/fixtures/skill-md-size-allowlist.json b/test/fixtures/skill-md-size-allowlist.json index b801716cf..9adf91988 100644 --- a/test/fixtures/skill-md-size-allowlist.json +++ b/test/fixtures/skill-md-size-allowlist.json @@ -6,29 +6,29 @@ "agy/gstack-plan-design-review": 110044, "agy/gstack-plan-devex-review": 116496, "agy/gstack-plan-eng-review": 144907, - "agy/gstack-review": 103750, + "agy/gstack-review": 103744, "codex/gstack-autoplan": 108553, "codex/gstack-land-and-deploy": 100284, "codex/gstack-plan-design-review": 111116, "codex/gstack-plan-devex-review": 118004, "codex/gstack-plan-eng-review": 146072, - "codex/gstack-review": 103273, + "codex/gstack-review": 103267, "copilot/gstack-autoplan": 109253, "copilot/gstack-plan-design-review": 110355, "copilot/gstack-plan-devex-review": 115958, "copilot/gstack-plan-eng-review": 145072, - "copilot/gstack-review": 103331, + "copilot/gstack-review": 103325, "cursor/gstack-autoplan": 108485, "cursor/gstack-plan-design-review": 108900, "cursor/gstack-plan-devex-review": 115228, "cursor/gstack-plan-eng-review": 143662, - "cursor/gstack-review": 121621, + "cursor/gstack-review": 121615, "factory/gstack-autoplan": 110763, "factory/gstack-land-and-deploy": 100105, "factory/gstack-plan-design-review": 111675, "factory/gstack-plan-devex-review": 118591, "factory/gstack-plan-eng-review": 146770, - "factory/gstack-review": 125394, + "factory/gstack-review": 125388, "gbrain/gstack-autoplan": 108892, "gbrain/gstack-plan-eng-review": 126289, "hermes/gstack-autoplan": 108982, @@ -37,18 +37,18 @@ "kiro/gstack-plan-design-review": 108752, "kiro/gstack-plan-devex-review": 115080, "kiro/gstack-plan-eng-review": 143524, - "kiro/gstack-review": 121445, + "kiro/gstack-review": 121439, "openclaw/gstack-autoplan": 108715, "openclaw/gstack-plan-eng-review": 124804, "opencode/gstack-autoplan": 109234, "opencode/gstack-plan-design-review": 110187, "opencode/gstack-plan-devex-review": 115836, "opencode/gstack-plan-eng-review": 144931, - "opencode/gstack-review": 122243, + "opencode/gstack-review": 122237, "slate/gstack-autoplan": 108372, "slate/gstack-plan-design-review": 108826, "slate/gstack-plan-devex-review": 115154, "slate/gstack-plan-eng-review": 143593, - "slate/gstack-review": 121533 + "slate/gstack-review": 121527 } } diff --git a/test/review-workflow-clarity.test.ts b/test/review-workflow-clarity.test.ts index 9fc9f56c9..5637fbb41 100644 --- a/test/review-workflow-clarity.test.ts +++ b/test/review-workflow-clarity.test.ts @@ -692,7 +692,7 @@ test('judged repeat-pass QA reruns and unresolved record actions each have one r // fails_when=the rerun stops being revalidation, materialize may run per pass, or such a defect has no action. const flat = skill.replace(/\s+/g, ' '); const repeat = flat.slice(flat.indexOf('2. On a repeat, execute Steps 3–5 in order.'), flat.indexOf('3. **Verify completed actions.**')); - expect(repeat).toContain('These reruns are revalidation, so they run even after smoke expiry; keep the PROBE_DIR and run its once-only `materialize` on the final pass.'); + expect(repeat).toContain('These reruns are revalidation, so they run even after smoke expiry; keep the PROBE_DIR. Earlier provisional sections link checkpoints; only the final pass runs its once-only `materialize`.'); expect(repeat.indexOf('rerun each probe the verdict relies on')).toBeLessThan(repeat.indexOf('These reruns are revalidation')); const actions = flat.slice(flat.indexOf('Actions: `auto-fixed` (Step 5b)'), flat.indexOf('Advice is never `auto-fixed`')); expect(actions).toContain('`fixed` (approved **and completed** in Step 5d)');