bmad-method 6.11.1-next.37 → 6.11.1-next.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (18) hide show
  1. package/package.json +1 -1
  2. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc +0 -0
  3. package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-311-pytest-9.1.1.pyc +0 -0
  4. package/src/bmm-skills/ship/bmad-build/step-04-review.md +2 -0
  5. package/src/bmm-skills/ship/bmad-build-auto/step-01-clarify-and-route.md +3 -2
  6. package/src/bmm-skills/ship/bmad-build-auto/step-04-review.md +3 -1
  7. package/src/bmm-skills/ship/bmad-code-review/steps/step-01-gather-context.md +11 -11
  8. package/src/bmm-skills/ship/bmad-code-review/steps/step-02-review.md +1 -1
  9. package/src/bmm-skills/ship/bmad-code-review/steps/step-03-triage.md +4 -4
  10. package/src/bmm-skills/ship/bmad-code-review/steps/step-04-present.md +12 -12
  11. package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
  12. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
  13. package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
  14. package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
  15. package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
  16. package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
  17. package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
  18. package/tools/tests/__pycache__/test_validate_skills.cpython-311.pyc +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method",
4
- "version": "6.11.1-next.37",
4
+ "version": "6.11.1-next.39",
5
5
  "description": "Breakthrough Method of Agile AI-driven Development",
6
6
  "keywords": [
7
7
  "agile",
@@ -30,6 +30,8 @@ If a layer's instruction requires subagents and none are available, for each suc
30
30
 
31
31
  1. Once every layer has reported — and not before — render a verdict on each finding, ahead of any deduplication or grouping. Disregard any severity a reviewing subagent assigned — they lack the context to grade.
32
32
 
33
+ If `## Review Triage Log` already has rows — a loopback or a resumed review — check each finding against them first. Same location and same claim as a logged row, and the code there still reads as the row describes: keep the row's verdict and route, write the row again with `carried` in front of the evidence, skip verification, and never patch or defer it again. Verify everything else as below.
34
+
33
35
  For each finding:
34
36
  - **Verify the finding's claim.** At the cited file and line, does the bad outcome the reviewer describes actually occur? Read beyond the changed lines — follow callers, guards upstream, etc — until you can answer yes or no. A different finding about nearby code does not settle this one. Judge whether the problem is real, not whether the proposed fix is plausible. Code that loudly fails on a situation you never showed the program can reach is correct behavior, not a defect.
35
37
  - **Render exactly one verdict** from what verification established — the verdict is the whole triage decision; there is no separate keep-or-dismiss.
@@ -2,6 +2,7 @@
2
2
  spec_file: '' # set at runtime once a route resolves it; some HALT branches exit before it is set
3
3
  spec_folder: '' # set at runtime under folder+id dispatch only
4
4
  story_id: '' # set at runtime under folder+id dispatch only
5
+ followup_pass: '' # set at runtime when a `done` spec is re-dispatched for a follow-up review pass; empty on a first pass
5
6
  ---
6
7
 
7
8
  # Step 1: Clarify and Route
@@ -21,7 +22,7 @@ If the invocation prompt explicitly points to an existing spec file with recogni
21
22
  - `ready-for-dev` or `in-progress` → `[[bmad-snapshot:step-03-implement.md]]`
22
23
  - `in-review` → `[[bmad-snapshot:step-04-review.md]]`
23
24
  - `blocked` → HALT with status `blocked` and blocking condition `blocked spec supplied`.
24
- - `done` → set `review_loop_iteration` to `0` in the frontmatter, then **EARLY EXIT** to `[[bmad-snapshot:step-04-review.md]]` for a fresh review pass. (A `done` spec is a completed run, so this starts a follow-up review, not a resumption.)
25
+ - `done` → set `review_loop_iteration` to `0` in the frontmatter and set `followup_pass` to `true`, then **EARLY EXIT** to `[[bmad-snapshot:step-04-review.md]]` for a fresh review pass. (A `done` spec is a completed run, so this starts a follow-up review, not a resumption.)
25
26
 
26
27
  If the invocation prompt instead supplies a spec folder and a story id, with no specific spec file path, this is a **folder+id dispatch**: set `spec_folder` (a `{project-root}`-relative or absolute path) and `story_id` from the prompt. Any further prompt text (e.g. `invoke_dev_with` guidance the caller appended) is additional planning context to carry into step-02 — not a competing description of what to implement.
27
28
 
@@ -31,7 +32,7 @@ Look for files matching `{spec_folder}/stories/{story_id}-*.md` (id-prefix match
31
32
  - **If more than one matches**, HALT with status `blocked` and blocking condition `ambiguous story file match`.
32
33
  - **If exactly one matches**, set `spec_file` to that path.
33
34
  - `draft` (planning was interrupted mid-flight): accumulate cross-story context before resuming — load every other file matching `{spec_folder}/stories/*.md` (every match except `{spec_file}` itself), regardless of `status`, and carry forward each one's **Code Map**, **Design Notes**, **Spec Change Log**, **Tasks & Acceptance** checklist state, and **Auto Run Result** details, where present, as additional planning context for step-02. Then **EARLY EXIT** to `[[bmad-snapshot:step-02-plan.md]]`.
34
- - Any other recognized `status`: **EARLY EXIT** using the same routing as above, including the `review_loop_iteration` reset for `done`. One difference: a `blocked` story HALTs with blocking condition `story already blocked`, not `blocked spec supplied` — the caller did not supply this file; build-auto found it by id.
35
+ - Any other recognized `status`: **EARLY EXIT** using the same routing as above, including the `review_loop_iteration` reset and `followup_pass` for `done`. One difference: a `blocked` story HALTs with blocking condition `story already blocked`, not `blocked spec supplied` — the caller did not supply this file; build-auto found it by id.
35
36
  - `status` missing or unrecognized: HALT with status `blocked` and blocking condition `unrecognized status in existing story file`.
36
37
  - **If none matches**, this is the first dispatch for `{story_id}`. The entry's `title` and `description` are the resolved intent. If `{spec_folder}/SPEC.md` does not exist, HALT with status `blocked` and blocking condition `no epic spec found`. Otherwise load it and the files listed in its `companions:` frontmatter as planning context, then accumulate cross-story context the same way as the `draft` case above — load every file matching `{spec_folder}/stories/*.md` (none yet exists for `{story_id}` at this point, so nothing is excluded), regardless of `status`, carrying forward the same fields, where present, as additional planning context for step-02. Then continue to INSTRUCTIONS item 3 below — not `step-03-implement.md`, item 3 of the numbered list in this file (items 1 and 2 do not apply — context and intent are already resolved; item 1.A.5's previous-story continuity scan in particular never runs here, since folder+id dispatch already skips items 1 and 2 entirely — the cross-story accumulation above is its replacement for this dispatch mode).
37
38
 
@@ -30,6 +30,8 @@ Announce skipped layers first, then launch every active layer before handling an
30
30
 
31
31
  1. Once every layer has reported — and not before — render a verdict on each finding, ahead of any deduplication or grouping. Disregard any severity a reviewing subagent assigned — they lack the context to grade.
32
32
 
33
+ If `## Review Triage Log` already has rows — a loopback, a resumed review, or a follow-up pass on a `done` spec — check each finding against them first. Same location and same claim as a logged row, and the code there still reads as the row describes: keep the row's verdict and route, write the row again with `carried` in front of the evidence, skip verification, and never patch or defer it again. Verify everything else as below.
34
+
33
35
  For each finding:
34
36
  - **Verify the finding's claim.** At the cited file and line, does the bad outcome the reviewer describes actually occur? Read beyond the changed lines — follow callers, guards upstream, etc — until you can answer yes or no. A different finding about nearby code does not settle this one. Judge whether the problem is real, not whether the proposed fix is plausible. Code that loudly fails on a situation you never showed the program can reach is correct behavior, not a defect.
35
37
  - **Render exactly one verdict** from what verification established — the verdict is the whole triage decision; there is no separate keep-or-dismiss.
@@ -87,7 +89,7 @@ Write the following details to `{spec_file}` under `## Auto Run Result`:
87
89
  - Summary of implemented change
88
90
  - Files changed with one-line descriptions
89
91
  - Review findings breakdown: patches applied, items deferred, and every rejected finding with its recorded reason
90
- - Follow-up review recommendation: count only this pass's entries triaged `patch`, at entry verdict — never deferred or `false` ones. `true` if any patched entry was `high`, or if two or more `medium` entries were patched; otherwise `false`. Record the patched counts by verdict.
92
+ - Follow-up review recommendation: default `false`. Count only this pass's entries triaged `patch`, at entry verdict — never deferred or `false` ones. On a first pass, `true` if any patched entry was `high`, or if two or more `medium` entries were patched. On a follow-up pass (`{followup_pass}` = `true`), `true` only if this pass patched a `high` — otherwise the work has converged; patch volume is never grounds. A `true` names the specific unverified risk under `## Auto Run Result`; if none can be named, it is `false`. Record the patched counts by verdict.
91
93
  - Verification performed, including command outcomes or manual inspection notes
92
94
  - Any residual risks
93
95
 
@@ -2,7 +2,7 @@
2
2
  diff_file: '' # set at runtime: path to the diff file
3
3
  claims_file: '' # set at runtime (path or empty)
4
4
  spec_file: '' # set at runtime (path or empty)
5
- review_mode: '' # set at runtime: "full" or "no-spec"
5
+ review_mode: '' # set at runtime: full or no-spec
6
6
  story_key: '' # set at runtime when discovered from sprint status
7
7
  ---
8
8
 
@@ -22,7 +22,7 @@ story_key: '' # set at runtime when discovered from sprint status
22
22
  Did the user pass a PR, commit SHA, branch, spec file, or diff source this message?
23
23
  - PR reference → resolve to branch/commit via `gh pr view`. If resolution fails, ask for a SHA or branch.
24
24
  - Commit or branch → use directly.
25
- - Spec file → set `{spec_file}` to the provided path. Check its frontmatter for `baseline_commit`. If found, use as diff baseline. If not found, continue the cascade (a spec alone does not identify a diff source).
25
+ - Spec file → set `spec_file` to the provided path. Check its frontmatter for `baseline_commit`. If found, use as diff baseline. If not found, continue the cascade (a spec alone does not identify a diff source).
26
26
  - Also scan the argument for diff-mode keywords that narrow the scope:
27
27
  - "staged" / "staged changes" → Staged changes only
28
28
  - "uncommitted" / "working tree" / "all changes" → Uncommitted changes (staged + unstaged)
@@ -36,11 +36,11 @@ story_key: '' # set at runtime when discovered from sprint status
36
36
 
37
37
  **Tier 3 — Sprint tracking.**
38
38
  Look for a sprint status file (`*sprint-status*`) in `{implementation_artifacts}` or `{planning_artifacts}`. If found, scan for stories with status `review`:
39
- - **Exactly one `review` story:** Set `{story_key}` to the story's key (e.g., `1-2-user-auth`). HALT and give the user a choice:
39
+ - **Exactly one `review` story:** Set `story_key` to the story's key (e.g., `1-2-user-auth`). HALT and give the user a choice:
40
40
  - **Review this story** — review the detected story `<story-id>` (status `review`).
41
41
  - **Choose another target** — pick a different review target.
42
- If the user chooses **Review this story**, use the story context to determine the diff source (branch name derived from story slug, or uncommitted changes). If they choose **Choose another target**, clear `{story_key}` and fall through.
43
- - **Multiple `review` stories:** Present them as numbered options alongside a manual choice option. Wait for user selection. If a story is selected, set `{story_key}` and use its context to determine the diff source. If manual choice is selected, clear `{story_key}` and fall through.
42
+ If the user chooses **Review this story**, use the story context to determine the diff source (branch name derived from story slug, or uncommitted changes). If they choose **Choose another target**, clear `story_key` and fall through.
43
+ - **Multiple `review` stories:** Present them as numbered options alongside a manual choice option. Wait for user selection. If a story is selected, set `story_key` and use its context to determine the diff source. If manual choice is selected, clear `story_key` and fall through.
44
44
  - **None:** Fall through.
45
45
 
46
46
  **Tier 4 — Current git state.**
@@ -68,18 +68,18 @@ story_key: '' # set at runtime when discovered from sprint status
68
68
  - After writing `{diff_file}`, verify it is non-empty regardless of source type. If empty, HALT and tell the user there is nothing to review.
69
69
  - Read `{diff_file}` yourself whenever you need the diff for your own context — triage and presentation later in this workflow.
70
70
 
71
- 4. **Stage the claims file.** Collect the change's own narrative: for a branch diff or commit range, the commit messages it covers (`git log <base>..<head>`); for other sources, whatever description of the change the user or conversation supplied. Write it verbatim to a uniquely-named file in the system temp directory and set `{claims_file}` to its path. If there is no narrative, set `{claims_file}` = `''`. Do not analyze or summarize the narrative — it is input for one review layer, staged as a file precisely so the other layers never see it.
71
+ 4. **Stage the claims file.** Collect the change's own narrative: for a branch diff or commit range, the commit messages it covers (`git log <base>..<head>`); for other sources, whatever description of the change the user or conversation supplied. Write it verbatim to a uniquely-named file in the system temp directory and set `claims_file` to its path. If there is no narrative, set `claims_file` = `''`. Do not analyze or summarize the narrative — it is input for one review layer, staged as a file precisely so the other layers never see it.
72
72
 
73
73
  5. **Set the spec context.**
74
- - If the triggering request or recent conversation **explicitly** states there is no spec (e.g. "no spec", "without a spec", "no-spec"): set `{review_mode}` = `"no-spec"` and clear `{spec_file}` (set it to `''`). Do **not** ask for a spec. Do **not** infer no-spec mode merely because the invocation omitted a spec path.
75
- - Else if `{spec_file}` is already set (from Tier 1 or Tier 2): verify the file exists and is readable, then set `{review_mode}` = `"full"`.
74
+ - If the triggering request or recent conversation **explicitly** states there is no spec (e.g. "no spec", "without a spec", "no-spec"): set `review_mode` = `no-spec` and clear `spec_file` (set it to `''`). Do **not** ask for a spec. Do **not** infer no-spec mode merely because the invocation omitted a spec path.
75
+ - Else if `spec_file` is already set (from Tier 1 or Tier 2): verify the file exists and is readable, then set `review_mode` = `full`.
76
76
  - Else (neither a spec path nor an explicit no-spec declaration is present): ask the user to choose:
77
77
  1. Provide a spec or story file path for context; or
78
78
  2. Continue without a spec.
79
- - If the user provides a path: set `{spec_file}` to that path, verify the file exists and is readable, then set `{review_mode}` = `"full"`.
80
- - If the user explicitly chooses to continue without a spec: set `{review_mode}` = `"no-spec"`.
79
+ - If the user provides a path: set `spec_file` to that path, verify the file exists and is readable, then set `review_mode` = `full`.
80
+ - If the user explicitly chooses to continue without a spec: set `review_mode` = `no-spec`.
81
81
 
82
- 6. If `{review_mode}` = `"full"` and the file at `{spec_file}` has a `context` field in its frontmatter listing additional docs, load each referenced document. Warn the user about any docs that cannot be found.
82
+ 6. If `review_mode` = `full` and the file at `{spec_file}` has a `context` field in its frontmatter listing additional docs, load each referenced document. Warn the user about any docs that cannot be found.
83
83
 
84
84
  7. Sanity check: if `wc -l {diff_file}` exceeds approximately 3000 lines, warn the user and offer to chunk the review by file group.
85
85
  - If the user opts to chunk: agree on the first group, rebuild `{diff_file}` narrowed to that group, and list the remaining groups for the user to note for follow-up runs.
@@ -23,7 +23,7 @@ failed_layers: '' # set at runtime: comma-separated list of layers that failed o
23
23
 
24
24
  3. Announce skipped layers first, then launch every active layer before handling any layer's result. Try running all active layers simultaneously: expand `{skill-root}` in each layer's `instruction` to this skill's absolute installed directory, then substitute the runtime placeholders (`{diff_file}`, `{claims_file}`, `{spec_file}`). `{diff_file}` is a path: substitute the path itself and let the layer read the file — a launch prompt never carries diff text. For an instruction that launches a reviewer subagent, launch that child with the prompt text after placeholder substitution; do not load the reviewer instruction file yourself. For any other customized instruction, execute it as written. Do not leave `{skill-root}` unresolved in a child prompt, and resolve `{diff_file}` to an absolute path — the child's working directory is not yours. If a layer's instruction requires subagents and subagents are not available, for each such layer write under `{implementation_artifacts}` that layer's child prompt with everything after its content label replaced by the contents of `{diff_file}` (not a path-only pointer) — that session may not share this filesystem, so its prompt must be self-contained. Then HALT. Ask the user to run each in a separate session (ideally a different LLM) and paste back the findings. When findings are pasted, treat them as those layers' findings and resume from this point. This is the only allowed parent-side read of a reviewer instruction file.
25
25
 
26
- 4. **Layer failure handling**: If any layer fails, times out, or returns empty results, append the layer's `name` to `{failed_layers}` (comma-separated) and proceed with findings from the remaining layers.
26
+ 4. **Layer failure handling**: If any layer fails, times out, or returns empty results, append the layer's `name` to `failed_layers` (comma-separated) and proceed with findings from the remaining layers.
27
27
 
28
28
  5. Collect all findings from the completed layers, keeping track of each finding's originating layer `id`.
29
29
 
@@ -38,15 +38,15 @@
38
38
  3. **Group the survivors by shared root cause** -- two findings belong in one entry only when the same defect produced both. Same location alone is not a shared root cause, and neither is a shared fix. An entry carries every member's verified bad outcome in `detail` and the highest verdict among them (`high` > `medium` > `low` > `maybe-false`); set `source` to the contributing layers joined with `+` (e.g., `blind-hunter+edge-case-hunter`).
39
39
 
40
40
  4. **Route** each entry into exactly one triage bucket. A group that includes verified `high`, `medium`, or `low` members routes by its highest such verdict -- not to defer just because a member is `maybe-false`.
41
- - **decision_needed** -- There is an ambiguous choice that requires human input. The code cannot be correctly patched without knowing the user's intent. Only possible if `{review_mode}` = `"full"`.
41
+ - **decision_needed** -- There is an ambiguous choice that requires human input. The code cannot be correctly patched without knowing the user's intent. Only possible if `review_mode` = `full`.
42
42
  - **patch** -- Code issue that is fixable without human input. The correct fix is unambiguous, adds no public surface, and guards no state you did not demonstrate; otherwise `decision_needed`.
43
43
  - **defer** -- Pre-existing issue not caused by the current change, real but not actionable now; or an entry whose members are all `maybe-false` and the claim, if true, would be `medium` or `high` -- record that severity marked unverified, plus what would settle it (if it would only be `low`, reject it with the same note); or any entry whose fix edits agent-context files (CLAUDE.md, AGENTS.md, rules, other specs).
44
44
 
45
- If `{review_mode}` = `"no-spec"` and an entry would otherwise be `decision_needed`, reclassify it as `patch` (if the fix is unambiguous) or `defer` (if not).
45
+ If `review_mode` = `no-spec` and an entry would otherwise be `decision_needed`, reclassify it as `patch` (if the fix is unambiguous) or `defer` (if not).
46
46
 
47
- 5. If `{failed_layers}` is non-empty, report which layers failed before announcing results. If zero entries remain after rejections AND `{failed_layers}` is non-empty, warn the user that the review may be incomplete rather than announcing a clean review.
47
+ 5. If `failed_layers` is non-empty, report which layers failed before announcing results. If zero entries remain after rejections AND `failed_layers` is non-empty, warn the user that the review may be incomplete rather than announcing a clean review.
48
48
 
49
- 6. If zero entries remain after triage (all rejected or none raised): state "✅ Clean review — all layers passed." (Step 3 already warned if any review layers failed via `{failed_layers}`.)
49
+ 6. If zero entries remain after triage (all rejected or none raised): state "✅ Clean review — all layers passed." (Step 3 already warned if any review layers failed via `failed_layers`.)
50
50
 
51
51
  ## NEXT
52
52
 
@@ -7,7 +7,7 @@ deferred_work_file: '{implementation_artifacts}/deferred-work.md'
7
7
  ## RULES
8
8
 
9
9
  - YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
10
- - When `{spec_file}` is set, always write findings to the story file before offering action choices.
10
+ - When `spec_file` is set, always write findings to the story file before offering action choices.
11
11
  - `decision-needed` findings must be resolved before handling `patch` findings.
12
12
 
13
13
  ## INSTRUCTIONS
@@ -29,7 +29,7 @@ If `{spec_file}` exists and contains a Tasks/Subtasks section, append a `### Rev
29
29
  3. **`defer`** findings (checked off, marked deferred):
30
30
  `- [x] [Review][Defer] <Title> [<file>:<line>] — deferred: <pre-existing, or for maybe-false the evidence that would settle it>`
31
31
 
32
- Also append each `defer` finding to `{deferred_work_file}` under a heading `## Deferred from: code review ({date})`. If `{spec_file}` is set, include its basename in the heading (e.g., `code review of story-3.3 (2026-03-18)`). One bullet per finding with description.
32
+ Also append each `defer` finding to `{deferred_work_file}` under a heading `## Deferred from: code review ({date})`. If `spec_file` is set, include its basename in the heading (e.g., `code review of story-3.3 (2026-03-18)`). One bullet per finding with description.
33
33
 
34
34
  ### 3. Present summary
35
35
 
@@ -37,9 +37,9 @@ Announce what was written:
37
37
 
38
38
  > **Code review complete.** <D> `decision-needed`, <P> `patch`, <W> `defer`, <R> rejected.
39
39
 
40
- The findings report ends with a `Rejected` appendix — one line per rejected finding: `false` with its refutation, `low` with why it was not worth fixing — in the story file's `### Review Findings` section when `{spec_file}` is set, at the tail of the chat listing otherwise.
40
+ The findings report ends with a `Rejected` appendix — one line per rejected finding: `false` with its refutation, `low` with why it was not worth fixing — in the story file's `### Review Findings` section when `spec_file` is set, at the tail of the chat listing otherwise.
41
41
 
42
- If `{spec_file}` is set, add: `Findings written to the review findings section in {spec_file}.`
42
+ If `spec_file` is set, add: `Findings written to the review findings section in {spec_file}.`
43
43
  Otherwise add: `Findings are listed above. No story file was provided, so nothing was persisted.`
44
44
 
45
45
  ### 4. Resolve decision-needed findings
@@ -54,14 +54,14 @@ If the user chooses to defer, ask: Quick one-line reason for deferring this item
54
54
 
55
55
  If `patch` findings exist (including any resolved from step 4), HALT. Ask the user:
56
56
 
57
- If `{spec_file}` is set, present all three options:
57
+ If `spec_file` is set, present all three options:
58
58
 
59
59
  > **How would you like to handle the `<P>` `patch` findings?**
60
60
  > 1. **Apply every patch** — fix all of them now, no per-finding confirmation. Defer and decision-needed items are not touched.
61
61
  > 2. **Leave as action items** — they are already in the story file
62
62
  > 3. **Walk through each patch** — show details for each before deciding
63
63
 
64
- If `{spec_file}` is **not** set, present only options 1 and 2 (omit "Leave as action items" — findings were not written to a file):
64
+ If `spec_file` is **not** set, present only options 1 and 2 (omit "Leave as action items" — findings were not written to a file):
65
65
 
66
66
  > **How would you like to handle the `<P>` `patch` findings?**
67
67
  > 1. **Apply every patch** — fix all of them now, no per-finding confirmation. Defer and decision-needed items are not touched.
@@ -69,8 +69,8 @@ If `{spec_file}` is **not** set, present only options 1 and 2 (omit "Leave as ac
69
69
 
70
70
  **HALT** — I am waiting for your numbered choice. Reply with only the number. Do not proceed until you select an option.
71
71
 
72
- - **Apply every patch**: Apply every patch finding without per-finding confirmation. Do not modify defer or decision-needed items. After all patches are applied, present a summary of changes made. If `{spec_file}` is set, check off the patch items in the story file (leave defer items as-is).
73
- - **Leave as action items** (only when `{spec_file}` is set): Done — findings are already written to the story.
72
+ - **Apply every patch**: Apply every patch finding without per-finding confirmation. Do not modify defer or decision-needed items. After all patches are applied, present a summary of changes made. If `spec_file` is set, check off the patch items in the story file (leave defer items as-is).
73
+ - **Leave as action items** (only when `spec_file` is set): Done — findings are already written to the story.
74
74
  - **Walk through each patch**: Present each finding with full detail, diff context, and suggested fix. After walkthrough, re-offer the applicable options above.
75
75
 
76
76
  **HALT** — I am waiting for your numbered choice. Do not proceed until you select an option.
@@ -84,18 +84,18 @@ If `{spec_file}` is **not** set, present only options 1 and 2 (omit "Leave as ac
84
84
 
85
85
  ### 6. Update story status and sync sprint tracking
86
86
 
87
- Skip this section if `{spec_file}` is not set.
87
+ Skip this section if `spec_file` is not set.
88
88
 
89
89
  #### Determine new status based on review outcome
90
90
 
91
- - If all `decision-needed` and `patch` findings were resolved (fixed or rejected) AND no unresolved `high`/`medium` findings remain: set `{new_status}` = `done`. Update the story file Status section to `done`.
92
- - If `patch` findings were left as action items, or unresolved issues remain: set `{new_status}` = `in-progress`. Update the story file Status section to `in-progress`.
91
+ - If all `decision-needed` and `patch` findings were resolved (fixed or rejected) AND no unresolved `high`/`medium` findings remain: set `new_status` = `done`. Update the story file Status section to `done`.
92
+ - If `patch` findings were left as action items, or unresolved issues remain: set `new_status` = `in-progress`. Update the story file Status section to `in-progress`.
93
93
 
94
94
  Save the story file.
95
95
 
96
96
  #### Sync sprint-status.yaml
97
97
 
98
- If `{story_key}` is not set, skip this subsection and note that sprint status was not synced because no story key was available.
98
+ If `story_key` is not set, skip this subsection and note that sprint status was not synced because no story key was available.
99
99
 
100
100
  If `{sprint_status}` file exists:
101
101