bmad-method 6.11.1-next.30 → 6.11.1-next.32
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.
- package/README_KR.md +90 -0
- package/package.json +1 -1
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc +0 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/ship/bmad-build/spec-template.md +3 -2
- package/src/bmm-skills/ship/bmad-build/step-02-plan.md +1 -1
- package/src/bmm-skills/ship/bmad-build/step-04-review.md +29 -15
- package/src/bmm-skills/ship/bmad-build/step-05-present.md +1 -1
- package/src/bmm-skills/ship/bmad-build/step-oneshot.md +20 -10
- package/src/bmm-skills/ship/bmad-build-auto/spec-template.md +3 -3
- package/src/bmm-skills/ship/bmad-build-auto/step-04-review.md +37 -34
- package/src/bmm-skills/ship/bmad-code-review/steps/step-03-triage.md +26 -16
- package/src/bmm-skills/ship/bmad-code-review/steps/step-04-present.md +8 -8
- package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
package/README_KR.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/bmad-method)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](https://discord.gg/gk8jAdXWmj)
|
|
6
|
+
|
|
7
|
+
[English](README.md) | [简体中文](README_CN.md) | [Tiếng Việt](README_VN.md) | 한국어
|
|
8
|
+
|
|
9
|
+
**애자일 AI 주도 개발 — 사고 과정을 포기하지 않고 아이디어나 변경 요청을 실제 작동하는 소프트웨어로 바꿉니다.**
|
|
10
|
+
|
|
11
|
+
AI 주도 개발(AiDD)은 코드 작성에 그치지 않습니다. 무엇을 만들지, 각 요소가 어떻게 맞물리는지, 새롭게 알게 된 내용에 따라 어떻게 바꿀지까지 개발 전반을 아우릅니다. BMad Method는 이를 애자일 방식으로 실천합니다. 결정은 명확히 남고 컨텍스트는 다음 작업으로 이어지며 작업 규모에 맞춰 절차도 달라집니다. 작은 변경은 바로 Build로 진행하고 복잡한 작업은 필요한 만큼 깊이 계획합니다. 주말에 만드는 프로토타입부터 오랜 역사를 지닌 시스템까지 같은 방법으로 다룹니다.
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
_어디서든 시작하세요. BMad를 처음부터 끝까지 사용해도 되고 개요·사양·아키텍처만 기존 개발 흐름에 가져와도 됩니다._
|
|
16
|
+
|
|
17
|
+
## 바로 시작하기
|
|
18
|
+
|
|
19
|
+
**필수 조건:** [Node.js](https://nodejs.org) 20.12+, [Python](https://www.python.org) 3.10+, [uv](https://docs.astral.sh/uv/)
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx bmad-method install
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
프로젝트를 AI 코딩 도구에서 열고 `bmad-build`에 원하는 변경을 말하세요. 중요한 결정은 직접 내리면서 작업을 이어 가면 됩니다. 다음 단계나 선택 사항을 안내받고 싶을 때는 언제든 `bmad-help`를 실행하세요.
|
|
26
|
+
|
|
27
|
+
**[BMad로 첫 변경 사항 구현하기 →](https://docs.bmad-method.org/ko-kr/start/build-your-first-change/)**
|
|
28
|
+
|
|
29
|
+
**[기존 코드베이스에 BMad 적용하기 →](https://docs.bmad-method.org/ko-kr/how-to/established-projects/)**
|
|
30
|
+
|
|
31
|
+
BMad는 무료 오픈 소스이며 유료 전용 워크플로나 가입이 제한된 커뮤니티가 없습니다. 설치 필수 조건, 업데이트, 사전 릴리스 빌드, 설치 프로그램의 최신 자동화 도움말은 [설치 가이드](https://docs.bmad-method.org/ko-kr/start/install-bmad/)를 참고하세요.
|
|
32
|
+
|
|
33
|
+
## 왜 BMad인가요?
|
|
34
|
+
|
|
35
|
+
코딩 도우미는 구현에는 능숙하지만 명시하지 않은 가정을 그대로 코드로 옮기기도 합니다. BMad는 중요한 결정을 명확히 드러내고 다음 작업에 필요한 컨텍스트로 남기는 에이전트와 워크플로를 제공합니다. 판단은 사용자가 직접 내립니다.
|
|
36
|
+
|
|
37
|
+
- **작업에 맞는 절차** — 명확한 변경은 바로 구현하고 큰 과제는 더 깊이 계획합니다.
|
|
38
|
+
- **신규·기존 코드 모두 지원** — 빈 프로젝트에서 시작하거나, 물려받은 코드베이스의 컨텍스트를 검증해 현재 상태에 맞춰 작업합니다.
|
|
39
|
+
- **지속되는 컨텍스트** — 대화할 때마다 다시 설명하지 않아도 제품과 기술 결정을 다음 작업으로 이어 갑니다.
|
|
40
|
+
- **분야별 관점** — 필요할 때 제품, 아키텍처, UX, 개발, 테스트 전문가의 관점을 활용합니다.
|
|
41
|
+
- **안내형 협업** — 판단을 맡기지 않고도 구조화된 워크플로와 여러 에이전트의 토론을 활용합니다.
|
|
42
|
+
- **하나로 이어지는 개발 흐름** — 초기 구상부터 검토를 거친 구현, 방향 수정, 학습까지 한 흐름으로 진행합니다.
|
|
43
|
+
|
|
44
|
+
[워크플로가 어떻게 연결되는지 보기 →](https://docs.bmad-method.org/ko-kr/reference/workflow-map/)
|
|
45
|
+
|
|
46
|
+
## BMad 생태계
|
|
47
|
+
|
|
48
|
+
핵심 프레임워크만 설치하거나 전문 작업을 위한 공식 모듈을 추가합니다.
|
|
49
|
+
|
|
50
|
+
| 모듈 | 용도 |
|
|
51
|
+
| --- | --- |
|
|
52
|
+
| **[BMad Method](https://github.com/bmad-code-org/BMAD-METHOD)** | 새 프로토타입부터 기존 코드베이스까지 소프트웨어를 계획하고 완성합니다. |
|
|
53
|
+
| **[BMad Builder](https://github.com/bmad-code-org/bmad-builder)** | 스킬, 워크플로, 에이전트를 만듭니다. |
|
|
54
|
+
| **[BMad Creative Intelligence Suite](https://github.com/bmad-code-org/bmad-module-creative-intelligence-suite)** | 혁신, 디자인 사고, 스토리텔링을 위한 창의적 사고 파트너를 제공합니다. |
|
|
55
|
+
| **[BMad Test Architect](https://github.com/bmad-code-org/bmad-method-test-architecture-enterprise)** | BMad Method에 엔터프라이즈 테스트 기능을 더합니다. |
|
|
56
|
+
| **[BMad Loop](https://github.com/bmad-code-org/bmad-loop)** | 에픽 전체를 사람의 개입 없이 구현하고 검증한 뒤 회고합니다. |
|
|
57
|
+
| **[BMad Game Dev Studio](https://github.com/bmad-code-org/bmad-module-game-dev-studio)** | Unity, Unreal, Godot, Phaser를 비롯한 모든 프레임워크에서 게임을 구상하고 설계해 구현합니다. |
|
|
58
|
+
|
|
59
|
+
## 웹에서 계획하기
|
|
60
|
+
|
|
61
|
+
[Web bundle](https://bmadcode.com/web-bundles/)은 일부 BMad 워크플로를 Google Gemini Gem과 ChatGPT Custom GPT로 패키징한 것입니다. 기존 웹 구독 환경에서 계획을 세운 뒤, 그 결과물을 AI 코딩 도구로 가져와 구현에 사용하세요.
|
|
62
|
+
|
|
63
|
+
## 문서
|
|
64
|
+
|
|
65
|
+
- **[첫 변경 사항 구현하기](https://docs.bmad-method.org/ko-kr/start/build-your-first-change/)** — BMad를 설치하고 작은 프로젝트를 만듭니다.
|
|
66
|
+
- **[워크플로 맵](https://docs.bmad-method.org/ko-kr/reference/workflow-map/)** — 사용할 수 있는 경로와 산출물을 살펴봅니다.
|
|
67
|
+
- **[기존 프로젝트](https://docs.bmad-method.org/ko-kr/how-to/established-projects/)** — 기존 코드베이스에 BMad를 적용합니다.
|
|
68
|
+
- **[v6로 업그레이드](https://docs.bmad-method.org/ko-kr/how-to/upgrade-to-v6/)** — 이전 버전에서 마이그레이션합니다.
|
|
69
|
+
|
|
70
|
+
## 커뮤니티
|
|
71
|
+
|
|
72
|
+
- [Discord](https://discord.gg/gk8jAdXWmj) — 도움을 받고 아이디어를 나누며 협업합니다.
|
|
73
|
+
- [YouTube](https://youtube.com/@BMadCode) — 튜토리얼과 마스터 클래스를 시청합니다.
|
|
74
|
+
- [GitHub Issues](https://github.com/bmad-code-org/BMAD-METHOD/issues) — 버그를 제보하고 기능을 요청합니다.
|
|
75
|
+
- [GitHub Discussions](https://github.com/bmad-code-org/BMAD-METHOD/discussions) — 커뮤니티의 긴 대화에 참여합니다.
|
|
76
|
+
- [BMad Code](https://bmadcode.com) — 더 넓은 BMad 생태계를 둘러봅니다.
|
|
77
|
+
|
|
78
|
+
## 후원과 기여
|
|
79
|
+
|
|
80
|
+
BMad는 누구에게나 무료이며 앞으로도 계속 무료로 제공됩니다. 저장소에 스타를 누르거나 [커피 한 잔을 후원](https://buymeacoffee.com/bmad)해 주세요. 기업 후원은 <contact@bmadcode.com>으로 문의해 주세요.
|
|
81
|
+
|
|
82
|
+
기여를 환영합니다. Pull Request를 열기 전에 [CONTRIBUTING.md](CONTRIBUTING.md)를 읽어 주세요.
|
|
83
|
+
|
|
84
|
+
## 라이선스
|
|
85
|
+
|
|
86
|
+
MIT 라이선스를 따릅니다. 자세한 내용은 [LICENSE](LICENSE)를 참고하세요.
|
|
87
|
+
|
|
88
|
+
**BMad**와 **BMAD-METHOD**는 BMad Code, LLC의 상표입니다. 자세한 내용은 [TRADEMARK.md](TRADEMARK.md)를 참고하세요.
|
|
89
|
+
|
|
90
|
+
기여하려면 Discord에 참여하고 먼저 [CONTRIBUTORS.md](CONTRIBUTORS.md)를 읽어 주세요.
|
package/package.json
CHANGED
package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -88,8 +88,9 @@ context: [] # optional: `{project-root}/`-prefixed paths to project-wide standar
|
|
|
88
88
|
|
|
89
89
|
## Review Triage Log
|
|
90
90
|
|
|
91
|
-
<!-- Append-only. Populated by step-04 on every review pass:
|
|
92
|
-
|
|
91
|
+
<!-- Append-only. Populated by step-04 on every review pass: one row per reviewer finding —
|
|
92
|
+
verdict (high/medium/low/false/maybe-false) with its evidence: the refutation for
|
|
93
|
+
false, what would settle it for maybe-false. Empty until the first review pass. -->
|
|
93
94
|
|
|
94
95
|
## Design Notes
|
|
95
96
|
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
|
|
38
38
|
Only when Open Questions is empty.
|
|
39
39
|
|
|
40
|
-
Present summary. Display the spec file path in whatever form is clickable where you are presenting it (e.g. code citation in chat, CWD-relative path with no leading `/` in terminal). If unsure, use CWD-relative path.
|
|
40
|
+
Present summary. Display the spec file path in whatever form is clickable where you are presenting it (e.g. code citation in chat, CWD-relative path with no leading `/` in terminal). If unsure, use CWD-relative path.
|
|
41
41
|
|
|
42
42
|
If token count exceeded 1600 and the user chose to keep the full spec, include the token count and explain why it may be a problem.
|
|
43
43
|
|
|
@@ -28,29 +28,43 @@ If a layer's instruction requires subagents and none are available, for each suc
|
|
|
28
28
|
|
|
29
29
|
### Classify
|
|
30
30
|
|
|
31
|
-
1. Once every layer has reported — and not before — render a verdict on each finding
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
- `high
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
+
|
|
33
|
+
For each finding:
|
|
34
|
+
- **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
|
+
- **Render exactly one verdict** from what verification established — the verdict is the whole triage decision; there is no separate keep-or-dismiss.
|
|
36
|
+
- `high` (intolerable), `medium` (tolerable), `low` (cosmetic or negligible) — the bad outcome is real. Assign severity by how much it hurts end users or developers. For developer-only problems (inconsistent design, eroded invariants, duplicated sources of truth), name where it will cause trouble — which caller will diverge, which rule will break. A vague "this is messy" with no named harm is not a severity grade; use `false` or `maybe-false` instead. When the harm is real but you cannot tell how bad, pick the higher grade.
|
|
37
|
+
- `false` — you checked, and the bad outcome does not happen at the cited location. Write what disproves this specific claim. A true fact about nearby code that does not disprove the claim does not count.
|
|
38
|
+
- `maybe-false` — you could not tell whether the bad outcome happens. Write what you would need to check to find out. Use this only when the diff and surrounding code leave the question open; when they are enough to decide, pick `high`, `medium`, `low`, or `false`.
|
|
39
|
+
|
|
40
|
+
- Every finding gets one row in the `## Review Triage Log` section of `{spec_file}` — verdict plus its evidence in a sentence or two; never drop, merge, or silently skip one.
|
|
41
|
+
|
|
42
|
+
Reject `false` findings on their refutation.
|
|
43
|
+
|
|
44
|
+
Reject `low` findings when it is unlikely that users or developers would meet the defect in everyday use (judged plainly — no proof needed) and the fix is more than a direct correction or deletion — adding guards, branches, parameters, or other complexity.
|
|
45
|
+
|
|
46
|
+
Out of scope: reject or defer a finding as out of scope only when the intent itself excludes it — not because the spec's scope section, the plan, or the shape of the diff says so. If only those would exclude it, keep the finding: the spec or plan drew the line somewhere the intent did not, so it routes to intent_gap or bad_spec, never to patch or defer.
|
|
47
|
+
|
|
48
|
+
Reject any finding whose fix is to edit this build's spec.
|
|
49
|
+
|
|
50
|
+
All remaining findings continue to grouping.
|
|
51
|
+
|
|
52
|
+
2. 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 and the highest verdict among them (`high` > `medium` > `low` > `maybe-false`).
|
|
53
|
+
3. Route each entry into exactly one triage category. 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`. The first three are **this story's problem** — caused or exposed by the current change. The last is **not this story's problem**.
|
|
41
54
|
- **intent_gap** — caused by the change; cannot be resolved from the spec because the captured intent is incomplete. Do not infer intent unless there is exactly one possible reading.
|
|
42
55
|
- **bad_spec** — caused by the change, including direct deviations from spec. The spec should have been clear enough to prevent it. When in doubt between bad_spec and patch, prefer bad_spec — a spec-level fix is more likely to produce coherent code.
|
|
43
|
-
- **patch** — caused by the change;
|
|
44
|
-
- **defer** — pre-existing issue not caused by this story
|
|
45
|
-
|
|
56
|
+
- **patch** — caused by the change; its smallest fix is trivial, adds no public surface, and guards no state you did not demonstrate. Just part of the diff. A finding whose smallest fix fails any of those conditions routes to intent_gap when the spec does not settle that fix, otherwise to bad_spec.
|
|
57
|
+
- **defer** — pre-existing issue not caused by this story; or an entry whose members are all `maybe-false`; or any entry whose fix edits agent-context files (CLAUDE.md, AGENTS.md, rules, etc). For maybe-false members, record what would settle them.
|
|
58
|
+
|
|
59
|
+
4. Process entries in cascading order. If intent_gap or bad_spec entries exist, they trigger a loopback — lower entries are moot since code will be re-derived. If neither exists, process patch and defer normally. Before each loopback, read `{spec_file}` frontmatter `review_loop_iteration` (missing means `0`), increment it by 1, and write it back. If it exceeds 5, HALT and escalate to the human.
|
|
46
60
|
- **intent_gap** — Root cause is inside `<frozen-after-approval>`. Revert code changes. Loop back to the human to resolve. Once resolved, read fully and follow `[[bmad-snapshot:step-02-plan.md]]` to re-run steps 2–4.
|
|
47
61
|
- **bad_spec** — Root cause is outside `<frozen-after-approval>`. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the non-frozen sections that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Read fully and follow `[[bmad-snapshot:step-03-implement.md]]` to re-derive the code, then this step will run again.
|
|
48
|
-
- **patch** — Auto-fix. These are the only findings that survive loopbacks. If the step-03 implementation subagent can be re-engaged with its context intact, send it all patch findings in one synchronous message — for each: the file, what is wrong, and what the fix must do. If it cannot be re-engaged, apply the patches yourself. Then re-run the checks in `{spec_file}`'s `## Verification` section, if present; if verification fails and the failure cannot be fixed, HALT and escalate to the human.
|
|
62
|
+
- **patch** — Auto-fix. These are the only findings that survive loopbacks. If the step-03 implementation subagent can be re-engaged with its context intact, send it all patch findings in one synchronous message — for each: the file, what is wrong, and what the smallest fix must do. If it cannot be re-engaged, apply the patches yourself. Then re-run the checks in `{spec_file}`'s `## Verification` section, if present; if verification fails and the failure cannot be fixed, HALT and escalate to the human.
|
|
49
63
|
- **defer** — Append one new entry to `{{.implementation_artifacts}}/deferred-work.md` using this format. Do not modify existing entries or look for duplicates.
|
|
50
64
|
```markdown
|
|
51
65
|
- source_spec: `{spec_file}`
|
|
52
66
|
summary: <one sentence>
|
|
53
|
-
evidence: <why this is real>
|
|
67
|
+
evidence: <why this is real; for a maybe-false finding, what evidence would settle it>
|
|
54
68
|
```
|
|
55
69
|
|
|
56
70
|
## NEXT
|
|
@@ -65,7 +65,7 @@ If version control is available and the tree is dirty, create a local commit wit
|
|
|
65
65
|
Display summary of your work to the user, including:
|
|
66
66
|
|
|
67
67
|
- The commit hash, if one was created.
|
|
68
|
-
- Review findings breakdown: patches applied, items deferred, and the
|
|
68
|
+
- Review findings breakdown: patches applied, items deferred, and the rejected count — reasons are recorded in the spec's `## Review Triage Log`.
|
|
69
69
|
|
|
70
70
|
Display file paths and `file:line` references in whatever form is clickable where you are presenting them (e.g. code citation in chat, CWD-relative path with no leading `/` in terminal). If unsure, use CWD-relative path.
|
|
71
71
|
|
|
@@ -30,22 +30,32 @@ If a layer's instruction requires subagents and none are available, for each suc
|
|
|
30
30
|
|
|
31
31
|
### Classify
|
|
32
32
|
|
|
33
|
-
Once every layer has reported — and not before — render a verdict on each finding
|
|
33
|
+
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.
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
- **Assign severity** from the verified consequence for the software's user: `low` (none or cosmetic), `medium` (tolerable), `high` (intolerable).
|
|
37
|
-
- **Keep or dismiss.** Keep a finding only where verification confirmed its consequence. Dismiss noise, claims the verification refuted, and claims it could not substantiate — no path to the claimed consequence at the named site is a valid disposal. Whatever the reason, it must dispose of the finding's own claim: a true fact about neighboring code that leaves the claim standing is not a dismissal, and the finding stays kept. Record each dismissal with its reason; never drop a finding silently.
|
|
38
|
-
- A finding whose fix edits an agent-context document (e.g. CLAUDE.md, AGENTS.md, rules files, specs): defer, never patch.
|
|
35
|
+
For each finding:
|
|
39
36
|
|
|
40
|
-
|
|
37
|
+
- **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.
|
|
38
|
+
- **Render exactly one verdict** from what verification established — the verdict is the whole triage decision; there is no separate keep-or-dismiss.
|
|
39
|
+
- `high` (intolerable), `medium` (tolerable), `low` (cosmetic or negligible) — the bad outcome is real. Assign severity by how much it hurts end users or developers. For developer-only problems, name where it will cause trouble; a vague "this is messy" with no named harm is not a severity grade — use `false` or `maybe-false` instead. When the harm is real but you cannot tell how bad, pick the higher grade.
|
|
40
|
+
- `false` — you checked, and the bad outcome does not happen at the cited location. Write what disproves this specific claim. A true fact about nearby code that does not disprove the claim does not count.
|
|
41
|
+
- `maybe-false` — you could not tell whether the bad outcome happens. Write what you would need to check to find out. Use this only when the diff and surrounding code leave the question open; when they are enough to decide, pick `high`, `medium`, `low`, or `false`.
|
|
42
|
+
- Record every finding with its verdict and evidence; never drop one silently.
|
|
43
|
+
|
|
44
|
+
Reject `false` findings on their refutation.
|
|
45
|
+
|
|
46
|
+
Reject `low` findings when it is unlikely that users or developers would meet the defect in everyday use (judged plainly — no proof needed) and the fix is more than a direct correction or deletion — adding guards, branches, parameters, or other complexity.
|
|
47
|
+
|
|
48
|
+
All remaining findings continue to grouping.
|
|
49
|
+
|
|
50
|
+
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 and the highest verdict among them (`high` > `medium` > `low` > `maybe-false`). 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`. Route each entry in this order:
|
|
41
51
|
|
|
42
52
|
- **patch** — Patch every entry caused or exposed by this change that shows a defect that actually occurs, missing coverage for a specific case, or a broken gate or convention — not a state nothing reaches — and whose smallest fix is trivial, adds no public surface, and guards no state the finding did not demonstrate. Apply that smallest fix immediately.
|
|
43
53
|
- **HALT** — HALT on every entry caused or exposed by this change that shows the same evidence but whose smallest fix fails any of those conditions. Present it to the human for decision before proceeding.
|
|
44
|
-
- **defer** — Defer every other entry
|
|
54
|
+
- **defer** — Defer every other entry: pre-existing issues, improvement ideas, entries whose members are all `maybe-false` (record what would settle them), and any entry whose fix edits agent-context files (CLAUDE.md, AGENTS.md, rules, specs). Append one new entry to `{{.implementation_artifacts}}/deferred-work.md` using this format. Do not modify existing entries or look for duplicates.
|
|
45
55
|
```markdown
|
|
46
56
|
- source_spec: `{spec_file}`
|
|
47
57
|
summary: <one sentence>
|
|
48
|
-
evidence: <why this is real>
|
|
58
|
+
evidence: <why this is real; for a maybe-false finding, what evidence would settle it>
|
|
49
59
|
```
|
|
50
60
|
|
|
51
61
|
### Finalize Spec
|
|
@@ -54,7 +64,7 @@ Update `{spec_file}`:
|
|
|
54
64
|
|
|
55
65
|
1. **Frontmatter** — set `status: 'done'`.
|
|
56
66
|
2. **Suggested Review Order** — append after Intent. Build using the same convention as `[[bmad-snapshot:step-05-present.md]]` § "Generate Suggested Review Order" (spec-file-relative links, concern-based ordering, ultra-concise framing).
|
|
57
|
-
3. **Review Triage Log** — only when
|
|
67
|
+
3. **Review Triage Log** — only when the review produced findings: add the section with one line per finding with its verdict and evidence — the refutation for `false`, what would settle it for `maybe-false`, why a rejected `low` was not worth fixing.
|
|
58
68
|
|
|
59
69
|
Follow `[[bmad-snapshot:sync-sprint-status.md]]` with `target_status` = `review`.
|
|
60
70
|
|
|
@@ -70,7 +80,7 @@ Display a summary in conversation output, including:
|
|
|
70
80
|
|
|
71
81
|
- The commit hash (if one was created).
|
|
72
82
|
- List of files changed with one-line descriptions. Display file paths and `file:line` references in whatever form is clickable where you are presenting them (e.g. code citation in chat, CWD-relative path with no leading `/` in terminal). If unsure, use CWD-relative path. This differs from spec-file links which use spec-file-relative paths.
|
|
73
|
-
- Review findings breakdown: patches applied, items deferred, and the
|
|
83
|
+
- Review findings breakdown: patches applied, items deferred, and the rejected count — reasons are recorded in the spec. If every finding was rejected, say so.
|
|
74
84
|
|
|
75
85
|
Offer to push and/or create a pull request.
|
|
76
86
|
|
|
@@ -73,9 +73,9 @@ deferred: [] # append-only machine-readable deferred review findings; each item
|
|
|
73
73
|
## Review Triage Log
|
|
74
74
|
|
|
75
75
|
<!-- Append-only. Populated by step-04 on EVERY review pass, including loopbacks and blocked exits.
|
|
76
|
-
Each entry records
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
Each entry records verdict counts (high/medium/low/false/maybe-false) and one row per
|
|
77
|
+
reviewer finding: verdict, route, and evidence — the refutation for false, what would settle
|
|
78
|
+
it for maybe-false, the action taken for patches. Empty until the first review pass. -->
|
|
79
79
|
|
|
80
80
|
## Design Notes
|
|
81
81
|
|
|
@@ -28,50 +28,53 @@ Announce skipped layers first, then launch every active layer before handling an
|
|
|
28
28
|
|
|
29
29
|
### Classify
|
|
30
30
|
|
|
31
|
-
1. Once every layer has reported — and not before — render a verdict on each finding
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
- `high
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
+
|
|
33
|
+
For each finding:
|
|
34
|
+
- **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
|
+
- **Render exactly one verdict** from what verification established — the verdict is the whole triage decision; there is no separate keep-or-dismiss.
|
|
36
|
+
- `high` (intolerable), `medium` (tolerable), `low` (cosmetic or negligible) — the bad outcome is real. Assign severity by how much it hurts end users or developers. For developer-only problems (inconsistent design, eroded invariants, duplicated sources of truth), name where it will cause trouble — which caller will diverge, which rule will break. A vague "this is messy" with no named harm is not a severity grade; use `false` or `maybe-false` instead. When the harm is real but you cannot tell how bad, pick the higher grade.
|
|
37
|
+
- `false` — you checked, and the bad outcome does not happen at the cited location. Write what disproves this specific claim. A true fact about nearby code that does not disprove the claim does not count.
|
|
38
|
+
- `maybe-false` — you could not tell whether the bad outcome happens. Write what you would need to check to find out. Use this only when the diff and surrounding code leave the question open; when they are enough to decide, pick `high`, `medium`, `low`, or `false`.
|
|
39
|
+
|
|
40
|
+
- Every finding gets one row in the triage log below — verdict plus its evidence in a sentence or two; never drop, merge, or silently skip one.
|
|
41
|
+
|
|
42
|
+
Reject `false` findings on their refutation.
|
|
43
|
+
|
|
44
|
+
Reject `low` findings when it is unlikely that users or developers would meet the defect in everyday use (judged plainly — no proof needed) and the fix is more than a direct correction or deletion — adding guards, branches, parameters, or other complexity.
|
|
45
|
+
|
|
46
|
+
Out of scope: reject or defer a finding as out of scope only when the intent itself excludes it — not because the spec's scope section, the plan, or the shape of the diff says so. If only those would exclude it, keep the finding: the spec or plan drew the line somewhere the intent did not, so it routes to intent_gap or bad_spec, never to patch or defer.
|
|
47
|
+
|
|
48
|
+
Reject any finding whose fix is to edit this build's spec.
|
|
49
|
+
|
|
50
|
+
All remaining findings continue to grouping.
|
|
51
|
+
|
|
52
|
+
2. 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 and the highest verdict among them (`high` > `medium` > `low` > `maybe-false`).
|
|
53
|
+
3. Route each entry into exactly one triage category. 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`. The first three are **this story's problem** — caused or exposed by the current change. The last is **not this story's problem**.
|
|
42
54
|
- **intent_gap** — caused by the change; cannot be resolved from the spec because the captured intent is incomplete. Do not infer intent unless there is exactly one possible reading.
|
|
43
55
|
- **bad_spec** — caused by the change, including direct deviations from spec. The spec should have been clear enough to prevent it. When in doubt between bad_spec and patch, prefer bad_spec — a spec-level fix is more likely to produce coherent code.
|
|
44
|
-
- **patch** — caused by the change;
|
|
45
|
-
- **defer** — pre-existing issue not caused by this story
|
|
56
|
+
- **patch** — caused by the change; its smallest fix is trivial, adds no public surface, and guards no state you did not demonstrate. Just part of the diff. A finding whose smallest fix fails any of those conditions routes to intent_gap when the spec does not settle that fix, otherwise to bad_spec.
|
|
57
|
+
- **defer** — pre-existing issue not caused by this story; or an entry whose members are all `maybe-false`; or any entry whose fix edits agent-context files (CLAUDE.md, AGENTS.md, rules, etc). For maybe-false members, record what would settle them.
|
|
58
|
+
|
|
46
59
|
4. Append a new entry to the `## Review Triage Log` section in `{spec_file}`, in this format:
|
|
47
60
|
```markdown
|
|
48
61
|
### {date} — Review pass
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
- defer: count
|
|
53
|
-
- dismissed:
|
|
54
|
-
- <finding summary> — <the reason, which must dispose of that finding's own claim>
|
|
55
|
-
- addressed_findings:
|
|
56
|
-
- `[high|medium|low]` `[patch|bad_spec]` <finding summary and action taken in this pass>
|
|
57
|
-
```
|
|
58
|
-
Where `{date}` is the current system date and `count` is either just `0`, or total with breakdown by severity `N: (high Nhigh, medium Nmedium, low Nlow)`. Give `dismissed` one line per dismissal, or the single line `- none` when nothing was dismissed.
|
|
59
|
-
If no patch was fixed and no bad_spec repair loopback was triggered in this pass, write:
|
|
60
|
-
```markdown
|
|
61
|
-
- addressed_findings:
|
|
62
|
-
- none
|
|
62
|
+
- verdicts: <total> findings — high <N>, medium <N>, low <N>, false <N>, maybe-false <N>
|
|
63
|
+
- findings:
|
|
64
|
+
- `[verdict]` `[intent_gap|bad_spec|patch|defer|reject]` <finding summary> — <evidence: the refutation for false, what would settle it for maybe-false, the action taken for patches, why a rejected low was not worth fixing>
|
|
63
65
|
```
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- **
|
|
67
|
-
- **
|
|
66
|
+
Where `{date}` is the current system date. One row per finding from every layer, in the order the layers reported them; `<total>` must equal the number of findings the layers reported — a finding missing from the log is a triage failure. Members of a grouped entry keep their own rows and share the route.
|
|
67
|
+
5. Process entries in cascading order. If intent_gap exists, lower entries are moot; follow the intent_gap branch below. If bad_spec exists, lower entries are moot since code will be re-derived. If neither exists, process patch and defer normally. Before each bad_spec loopback, read `{spec_file}` frontmatter `review_loop_iteration` (missing means `0`), increment it by 1, and write it back. If it exceeds 5, append the triage-log entry for this pass, then HALT with status `blocked` and blocking condition `review repair loop exceeded 5 iterations (non-convergence)`.
|
|
68
|
+
- **intent_gap** — Root cause is inside `<intent-contract>`. Save the attempted change as a patch file in `{{.implementation_artifacts}}` and reference it from the triage-log entry, then revert code changes. Append the triage-log entry for this pass, then HALT with status `blocked`, blocking condition `intent gap`, and include the unresolved questions and the saved patch path.
|
|
69
|
+
- **bad_spec** — Root cause is outside `<intent-contract>`. Do not modify content inside `<intent-contract>`. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the sections outside `<intent-contract>` that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Append the triage-log entry for this pass, recording in each bad_spec row the amendment it triggered. Read fully and follow `[[bmad-snapshot:step-03-implement.md]]` to re-derive the code, then this step will run again.
|
|
70
|
+
- **patch** — Auto-fix. These are the only findings that survive loopbacks. If the step-03 implementation subagent can be re-engaged with its context intact, send it all patch findings in one synchronous message — for each: the file, what is wrong, and what the smallest fix must do. If it cannot be re-engaged, apply the patches yourself. Then re-run the commands in `{spec_file}`'s `## Verification` section (or perform its manual checks); if verification fails and the failure cannot be fixed, HALT with status `blocked` and blocking condition `patch verification failed`. Append the triage-log entry for this pass, recording in each patched row the fix applied.
|
|
68
71
|
- **defer** — Update the single `deferred` list in `{spec_file}` frontmatter. If the field is absent (including on specs created before this field existed), add it once as an empty list. If it is `deferred: []`, replace that empty value when adding the first item; otherwise append to the existing list. Preserve every existing item, do not look for duplicates, and never add a second `deferred:` key. Serialize free-form values as YAML block scalars so characters such as `:`, `#`, quotes, and line breaks remain data. Each item uses this shape:
|
|
69
72
|
```yaml
|
|
70
73
|
deferred:
|
|
71
74
|
- summary: >-
|
|
72
75
|
<one sentence>
|
|
73
76
|
evidence: |-
|
|
74
|
-
<why this is real>
|
|
77
|
+
<why this is real; for a maybe-false finding, what evidence would settle it>
|
|
75
78
|
location: >- # optional — file:line or component
|
|
76
79
|
src/foo.py:42
|
|
77
80
|
severity: medium # optional — high | medium | low
|
|
@@ -83,8 +86,8 @@ Announce skipped layers first, then launch every active layer before handling an
|
|
|
83
86
|
Write the following details to `{spec_file}` under `## Auto Run Result`:
|
|
84
87
|
- Summary of implemented change
|
|
85
88
|
- Files changed with one-line descriptions
|
|
86
|
-
- Review findings breakdown: patches applied, items deferred, and every
|
|
87
|
-
- Follow-up review recommendation: count only this pass's entries triaged `patch`, at entry
|
|
89
|
+
- 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.
|
|
88
91
|
- Verification performed, including command outcomes or manual inspection notes
|
|
89
92
|
- Any residual risks
|
|
90
93
|
|
|
@@ -16,27 +16,37 @@
|
|
|
16
16
|
- `detail` -- full description
|
|
17
17
|
- `location` -- file and line reference (if available)
|
|
18
18
|
|
|
19
|
-
2. Once every layer has reported -- and not before -- render a verdict on each finding
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- `high` --
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
2. 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.
|
|
20
|
+
|
|
21
|
+
For each finding:
|
|
22
|
+
- **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.
|
|
23
|
+
- **Render exactly one verdict** from what verification established -- the verdict is the whole triage decision; there is no separate keep-or-dismiss.
|
|
24
|
+
- `high` (intolerable), `medium` (tolerable), `low` (cosmetic or negligible) -- the bad outcome is real. Assign severity by how much it hurts end users or developers. For developer-only problems (inconsistent design, eroded invariants, duplicated sources of truth), name where it will cause trouble -- which caller will diverge, which rule will break. A vague "this is messy" with no named harm is not a severity grade; use `false` or `maybe-false` instead. When the harm is real but you cannot tell how bad, pick the higher grade.
|
|
25
|
+
- `false` -- you checked, and the bad outcome does not happen at the cited location. Write what disproves this specific claim. A true fact about nearby code that does not disprove the claim does not count.
|
|
26
|
+
- `maybe-false` -- you could not tell whether the bad outcome happens. Write what you would need to check to find out. Use this only when the diff and surrounding code leave the question open; when they are enough to decide, pick `high`, `medium`, `low`, or `false`.
|
|
27
|
+
|
|
28
|
+
- Every finding keeps its verdict and evidence (a sentence or two) for the summary; never drop, merge, or silently skip one.
|
|
29
|
+
|
|
30
|
+
Reject `false` findings on their refutation.
|
|
31
|
+
|
|
32
|
+
Reject `low` findings when it is unlikely that users or developers would meet the defect in everyday use (judged plainly -- no proof needed) and the fix is more than a direct correction or deletion -- adding guards, branches, parameters, or other complexity.
|
|
33
|
+
|
|
34
|
+
Reject any finding whose fix is to edit the spec under review.
|
|
35
|
+
|
|
36
|
+
All remaining findings continue to grouping.
|
|
37
|
+
|
|
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
|
+
|
|
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`.
|
|
31
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"`.
|
|
32
|
-
- **patch** -- Code issue that is fixable without human input. The correct fix is unambiguous
|
|
33
|
-
- **defer** -- Pre-existing issue not caused by the current change
|
|
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
|
+
- **defer** -- Pre-existing issue not caused by the current change, real but not actionable now; or an entry whose members are all `maybe-false`; or any entry whose fix edits agent-context files (CLAUDE.md, AGENTS.md, rules, other specs). For maybe-false members, record what would settle them.
|
|
34
44
|
|
|
35
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).
|
|
36
46
|
|
|
37
|
-
5. If `{failed_layers}` is non-empty, report which layers failed before announcing results. If zero entries remain after
|
|
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.
|
|
38
48
|
|
|
39
|
-
6. If zero entries remain after triage (all
|
|
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}`.)
|
|
40
50
|
|
|
41
51
|
## NEXT
|
|
42
52
|
|
|
@@ -14,7 +14,7 @@ deferred_work_file: '{implementation_artifacts}/deferred-work.md'
|
|
|
14
14
|
|
|
15
15
|
### 1. Clean review shortcut
|
|
16
16
|
|
|
17
|
-
If zero findings remain after triage (all
|
|
17
|
+
If zero findings remain after triage (all rejected or none raised): state that and proceed to section 6 (Sprint Status Update).
|
|
18
18
|
|
|
19
19
|
### 2. Write findings to the story file
|
|
20
20
|
|
|
@@ -27,7 +27,7 @@ If `{spec_file}` exists and contains a Tasks/Subtasks section, append a `### Rev
|
|
|
27
27
|
`- [ ] [Review][Patch] <Title> [<file>:<line>]`
|
|
28
28
|
|
|
29
29
|
3. **`defer`** findings (checked off, marked deferred):
|
|
30
|
-
`- [x] [Review][Defer] <Title> [<file>:<line>] — deferred
|
|
30
|
+
`- [x] [Review][Defer] <Title> [<file>:<line>] — deferred: <pre-existing, or for maybe-false the evidence that would settle it>`
|
|
31
31
|
|
|
32
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
|
|
|
@@ -35,16 +35,16 @@ Also append each `defer` finding to `{deferred_work_file}` under a heading `## D
|
|
|
35
35
|
|
|
36
36
|
Announce what was written:
|
|
37
37
|
|
|
38
|
-
> **Code review complete.** <D> `decision-needed`, <P> `patch`, <W> `defer`, <R>
|
|
38
|
+
> **Code review complete.** <D> `decision-needed`, <P> `patch`, <W> `defer`, <R> rejected.
|
|
39
39
|
|
|
40
|
-
The findings report ends with a `
|
|
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
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
|
|
46
46
|
|
|
47
|
-
If `decision_needed` findings exist, present each one with its detail and the options available. The user must decide — the correct fix is ambiguous without their input. Walk through each finding (or batch related ones) and get the user's call. Once resolved, each becomes a `patch`, `defer`, or is
|
|
47
|
+
If `decision_needed` findings exist, present each one with its detail and the options available. The user must decide — the correct fix is ambiguous without their input. Walk through each finding (or batch related ones) and get the user's call. Once resolved, each becomes a `patch`, `defer`, or is rejected.
|
|
48
48
|
|
|
49
49
|
If the user chooses to defer, ask: Quick one-line reason for deferring this item? (helps future reviews): — then append that reason to both the story file bullet and the `{deferred_work_file}` entry.
|
|
50
50
|
|
|
@@ -80,7 +80,7 @@ If `{spec_file}` is **not** set, present only options 1 and 2 (omit "Leave as ac
|
|
|
80
80
|
- Decision-needed resolved: <D>
|
|
81
81
|
- Patches handled: <P>
|
|
82
82
|
- Deferred: <W>
|
|
83
|
-
-
|
|
83
|
+
- Rejected: <R>
|
|
84
84
|
|
|
85
85
|
### 6. Update story status and sync sprint tracking
|
|
86
86
|
|
|
@@ -88,7 +88,7 @@ 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
|
|
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
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.
|
|
@@ -114,7 +114,7 @@ If `{sprint_status}` file does not exist, note that story status was updated in
|
|
|
114
114
|
> **Issues Fixed:** <fixed_count>
|
|
115
115
|
> **Action Items Created:** <action_count>
|
|
116
116
|
> **Deferred:** <W>
|
|
117
|
-
> **
|
|
117
|
+
> **Rejected:** <R>
|
|
118
118
|
|
|
119
119
|
### 7. Next steps
|
|
120
120
|
|
package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|