@brunosps00/dev-workflow 2.0.0 → 2.2.0
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/.claude-plugin/marketplace.json +1 -0
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +176 -0
- package/README.md +10 -5
- package/lib/build-plugin.js +4 -1
- package/lib/constants.js +8 -2
- package/lib/init.js +26 -0
- package/lib/validate.js +21 -0
- package/package.json +1 -1
- package/scaffold/en/agent-instructions.md +2 -0
- package/scaffold/en/commands/dw-autopilot.md +2 -0
- package/scaffold/en/commands/dw-brainstorm.md +12 -8
- package/scaffold/en/commands/dw-bugfix.md +4 -2
- package/scaffold/en/commands/dw-claude-run.md +1 -1
- package/scaffold/en/commands/dw-codex-run.md +1 -1
- package/scaffold/en/commands/dw-copilot-run.md +1 -1
- package/scaffold/en/commands/dw-harness-audit.md +2 -0
- package/scaffold/en/commands/dw-help.md +6 -2
- package/scaffold/en/commands/dw-pause.md +1 -0
- package/scaffold/en/commands/dw-plan.md +2 -2
- package/scaffold/en/commands/dw-refactor.md +1 -0
- package/scaffold/en/commands/dw-report.md +169 -0
- package/scaffold/en/commands/dw-review.md +33 -2
- package/scaffold/en/commands/dw-run.md +3 -1
- package/scaffold/en/commands/dw-triage.md +220 -0
- package/scaffold/en/commands/dw-worktree.md +100 -0
- package/scaffold/en/templates/idea-onepager.md +28 -0
- package/scaffold/en/templates/task-template.md +1 -0
- package/scaffold/en/templates/tasks-template.md +9 -8
- package/scaffold/en/templates/triage-needs-info-template.md +23 -0
- package/scaffold/en/templates/triage-out-of-scope-template.md +36 -0
- package/scaffold/en/templates/triage-record-template.md +88 -0
- package/scaffold/pt-br/agent-instructions.md +2 -0
- package/scaffold/pt-br/commands/dw-autopilot.md +83 -81
- package/scaffold/pt-br/commands/dw-brainstorm.md +12 -9
- package/scaffold/pt-br/commands/dw-bugfix.md +4 -2
- package/scaffold/pt-br/commands/dw-claude-run.md +20 -20
- package/scaffold/pt-br/commands/dw-codex-run.md +20 -20
- package/scaffold/pt-br/commands/dw-context-budget.md +10 -10
- package/scaffold/pt-br/commands/dw-copilot-run.md +21 -21
- package/scaffold/pt-br/commands/dw-dockerize.md +102 -102
- package/scaffold/pt-br/commands/dw-find-skills.md +52 -52
- package/scaffold/pt-br/commands/dw-goal.md +41 -41
- package/scaffold/pt-br/commands/dw-harness-audit.md +13 -11
- package/scaffold/pt-br/commands/dw-help.md +6 -2
- package/scaffold/pt-br/commands/dw-intel.md +70 -70
- package/scaffold/pt-br/commands/dw-learn.md +24 -24
- package/scaffold/pt-br/commands/dw-new-project.md +88 -88
- package/scaffold/pt-br/commands/dw-open-design.md +53 -53
- package/scaffold/pt-br/commands/dw-opportunities.md +45 -45
- package/scaffold/pt-br/commands/dw-pause.md +40 -39
- package/scaffold/pt-br/commands/dw-plan.md +2 -2
- package/scaffold/pt-br/commands/dw-refactor.md +31 -30
- package/scaffold/pt-br/commands/dw-report.md +169 -0
- package/scaffold/pt-br/commands/dw-resume.md +22 -22
- package/scaffold/pt-br/commands/dw-review.md +33 -2
- package/scaffold/pt-br/commands/dw-run.md +3 -1
- package/scaffold/pt-br/commands/dw-skill-health.md +10 -10
- package/scaffold/pt-br/commands/dw-subtask-complete.md +4 -4
- package/scaffold/pt-br/commands/dw-subtask-start.md +4 -4
- package/scaffold/pt-br/commands/dw-triage.md +220 -0
- package/scaffold/pt-br/commands/dw-worktree.md +100 -0
- package/scaffold/pt-br/templates/bugfix-summary-template.md +20 -20
- package/scaffold/pt-br/templates/concerns-template.md +20 -20
- package/scaffold/pt-br/templates/idea-onepager.md +28 -0
- package/scaffold/pt-br/templates/project-onepager.md +32 -32
- package/scaffold/pt-br/templates/state-template.md +13 -13
- package/scaffold/pt-br/templates/task-template.md +1 -0
- package/scaffold/pt-br/templates/tasks-template.md +9 -8
- package/scaffold/pt-br/templates/triage-needs-info-template.md +23 -0
- package/scaffold/pt-br/templates/triage-out-of-scope-template.md +36 -0
- package/scaffold/pt-br/templates/triage-record-template.md +88 -0
- package/scaffold/scripts/hooks/git-guardrails.mjs +42 -24
- package/scaffold/scripts/lib/worktree-gc.mjs +460 -0
- package/scaffold/skill-registry.json +1 -1
- package/scaffold/skills/dw-cli-run/SKILL.md +10 -1
- package/scaffold/skills/dw-debug-protocol/SKILL.md +2 -0
- package/scaffold/skills/dw-debug-protocol/references/six-step-triage.md +60 -1
- package/scaffold/skills/dw-execute-phase/references/wave-coordination.md +14 -14
- package/scaffold/skills/dw-grilling/SKILL.md +17 -7
- package/scaffold/skills/dw-grilling/references/decision-tree.md +30 -7
- package/scaffold/skills/dw-simplification/references/deep-modules.md +50 -0
- package/scaffold/skills/dw-testing-discipline/SKILL.md +3 -1
- package/scaffold/skills/dw-testing-discipline/references/tdd-loop.md +83 -0
|
@@ -93,6 +93,34 @@ Ideally 2-4 stories. If it's more than 5, it's probably not MVP.]
|
|
|
93
93
|
|
|
94
94
|
_(schema 1.1 — filled by a `/dw-brainstorm` grill session; consumed by `/dw-plan`, which does NOT re-ask resolved decisions. Leave empty for a non-grilled one-pager.)_
|
|
95
95
|
|
|
96
|
+
### Decision Map
|
|
97
|
+
|
|
98
|
+
[Durable Grill tree. This records structure and resume state only; keep the decision outcome, recommendation,
|
|
99
|
+
alternative, and evidence in **Resolved Decisions** below.]
|
|
100
|
+
|
|
101
|
+
**Frontier:** [comma-separated node IDs with `State: open-ready`, or `none`]
|
|
102
|
+
|
|
103
|
+
| ID | Decision node | State | Depends on: | Frontier? | Notes |
|
|
104
|
+
|----|---------------|-------|-------------|-----------|-------|
|
|
105
|
+
| D1 | [upstream decision] | resolved | none | no | [structure note; outcome lives in Resolved Decisions] |
|
|
106
|
+
| D2 | [open decision that can be asked next] | open-ready | D1 | yes | [why this is ready] |
|
|
107
|
+
| D3 | [open decision still blocked] | open-blocked | D2 | no | [what blocks it] |
|
|
108
|
+
|
|
109
|
+
`State` is the source of truth. `Frontier?` and the `**Frontier:**` line are derived from it for
|
|
110
|
+
readability — if they ever disagree with `State`, `State` wins and the derived values are rewritten.
|
|
111
|
+
|
|
112
|
+
Allowed `State` values:
|
|
113
|
+
- `resolved` — the user settled the node; details live in **Resolved Decisions**.
|
|
114
|
+
- `open-ready` — open and decidable now; this node is in the **Frontier**.
|
|
115
|
+
- `open-blocked` — open but waiting on one or more `Depends on:` nodes.
|
|
116
|
+
|
|
117
|
+
#### Decision Fog
|
|
118
|
+
|
|
119
|
+
[Known unresolved areas that are not yet clear enough to phrase as decision nodes. Keep this short; each item
|
|
120
|
+
graduates into **Decision Map** when it becomes a concrete decision.]
|
|
121
|
+
|
|
122
|
+
- [unknown area] — [why it is not yet formulable as a decision]
|
|
123
|
+
|
|
96
124
|
### Resolved Decisions
|
|
97
125
|
|
|
98
126
|
| Decision | Recommended | Chosen | Alternative rejected | Evidence |
|
|
@@ -19,19 +19,20 @@ feat/prd-[feature-name]
|
|
|
19
19
|
|
|
20
20
|
## Tasks
|
|
21
21
|
|
|
22
|
-
| Task | Description | FRs | Status | Commit |
|
|
23
|
-
|
|
24
|
-
| 1.0 | [Title] | FR-1.1, FR-1.2 | Pending | — |
|
|
25
|
-
| 2.0 | [Title] | FR-2.1 | Pending | — |
|
|
26
|
-
| 3.0 | [Title] | FR-3.1, FR-3.2 | Pending | — |
|
|
22
|
+
| Task | Description | Depends on | FRs | Status | Commit |
|
|
23
|
+
|------|-------------|------------|-----|--------|--------|
|
|
24
|
+
| 1.0 | [Title] | none | FR-1.1, FR-1.2 | Pending | — |
|
|
25
|
+
| 2.0 | [Title] | 1.0 | FR-2.1 | Pending | — |
|
|
26
|
+
| 3.0 | [Title] | 1.0, 2.0 | FR-3.1, FR-3.2 | Pending | — |
|
|
27
27
|
|
|
28
28
|
`Commit` holds the short SHA written back by `/dw-run` when the task closes (step 6). It is what makes a task's diff findable later — leave `—` until the task commits.
|
|
29
|
+
`Depends on` is the dependency graph consumed by `/dw-run`; write `none` when a task has no dependency.
|
|
29
30
|
|
|
30
31
|
## Progress
|
|
31
32
|
|
|
32
|
-
- [ ] 1.0 Main Task Title
|
|
33
|
-
- [ ] 2.0 Main Task Title
|
|
34
|
-
- [ ] 3.0 Main Task Title
|
|
33
|
+
- [ ] 1.0 Main Task Title Depends on: none
|
|
34
|
+
- [ ] 2.0 Main Task Title Depends on: 1.0
|
|
35
|
+
- [ ] 3.0 Main Task Title Depends on: 1.0, 2.0
|
|
35
36
|
|
|
36
37
|
## Workflow
|
|
37
38
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Needs Info: <title>
|
|
2
|
+
|
|
3
|
+
## Blocking Questions
|
|
4
|
+
|
|
5
|
+
- [ ] <question 1>
|
|
6
|
+
- [ ] <question 2>
|
|
7
|
+
- [ ] <question 3>
|
|
8
|
+
|
|
9
|
+
## Why This Blocks Triage
|
|
10
|
+
|
|
11
|
+
<Explain why the missing information prevents category/state confidence or verification.>
|
|
12
|
+
|
|
13
|
+
## Author Response
|
|
14
|
+
|
|
15
|
+
<Paste or summarize the author's response. When the author responds, move the triage state from `needs-info` to `needs-triage` and re-run the recommendation step.>
|
|
16
|
+
|
|
17
|
+
## Requested Evidence
|
|
18
|
+
|
|
19
|
+
- Reproduction steps:
|
|
20
|
+
- Expected vs actual behavior:
|
|
21
|
+
- Environment or test data:
|
|
22
|
+
- PR diff or branch/ref:
|
|
23
|
+
- Screenshots/logs/traces:
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: out-of-scope
|
|
3
|
+
schema_version: "1.0"
|
|
4
|
+
concept: "<concept-slug>"
|
|
5
|
+
created_at: "YYYY-MM-DD"
|
|
6
|
+
updated_at: "YYYY-MM-DD"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Out of Scope: <Concept Name>
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Rejected on YYYY-MM-DD.
|
|
14
|
+
|
|
15
|
+
## Reason
|
|
16
|
+
|
|
17
|
+
<Record the durable reason. Do not write only "wontfix"; explain the product, technical, operational, or policy boundary.>
|
|
18
|
+
|
|
19
|
+
## Applies To
|
|
20
|
+
|
|
21
|
+
- <Domain phrasing of requests this decision covers>
|
|
22
|
+
- <Known alternate wording that maps to the same concept>
|
|
23
|
+
|
|
24
|
+
## Evidence
|
|
25
|
+
|
|
26
|
+
- Triage record: `.dw/triage/NNN-<slug>.md`
|
|
27
|
+
- Codebase search:
|
|
28
|
+
- Prior decisions:
|
|
29
|
+
|
|
30
|
+
## Revisit Conditions
|
|
31
|
+
|
|
32
|
+
<What would need to change for this concept to be reconsidered?>
|
|
33
|
+
|
|
34
|
+
## History
|
|
35
|
+
|
|
36
|
+
- YYYY-MM-DD — rejected — <actor> — <reason>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: triage-record
|
|
3
|
+
schema_version: "1.0"
|
|
4
|
+
id: "NNN-<slug>"
|
|
5
|
+
category: "bug | enhancement"
|
|
6
|
+
state: "needs-triage | needs-info | ready-for-work | needs-human | wontfix"
|
|
7
|
+
created_at: "YYYY-MM-DD"
|
|
8
|
+
updated_at: "YYYY-MM-DD"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Triage: <title>
|
|
12
|
+
|
|
13
|
+
## Source
|
|
14
|
+
|
|
15
|
+
| Field | Value |
|
|
16
|
+
|-------|-------|
|
|
17
|
+
| Source Type | paste / file / github-issue / github-pr / other |
|
|
18
|
+
| Source Ref | <path, URL, issue number, PR number, or pasted-session marker> |
|
|
19
|
+
| Author | <name or unknown> |
|
|
20
|
+
| Reported At | <date or unknown> |
|
|
21
|
+
| Retrieved By | local / gh / pasted / owner-provided |
|
|
22
|
+
|
|
23
|
+
## Intake Summary
|
|
24
|
+
|
|
25
|
+
<Short summary of the request in domain language.>
|
|
26
|
+
|
|
27
|
+
## Classification
|
|
28
|
+
|
|
29
|
+
| Field | Value |
|
|
30
|
+
|-------|-------|
|
|
31
|
+
| Category | bug / enhancement |
|
|
32
|
+
| State | needs-triage / needs-info / ready-for-work / needs-human / wontfix |
|
|
33
|
+
| Domain Concept | <concept slug and human name> |
|
|
34
|
+
| Disposition Reason | <why this state was chosen> |
|
|
35
|
+
|
|
36
|
+
## Codebase Checks
|
|
37
|
+
|
|
38
|
+
### Redundancy Search
|
|
39
|
+
|
|
40
|
+
| Area Searched | Query / Concept | Result |
|
|
41
|
+
|---------------|-----------------|--------|
|
|
42
|
+
| `.dw/domain/**` | <concept> | <match / no match / missing> |
|
|
43
|
+
| `.dw/spec/**` | <concept> | <match / no match / missing> |
|
|
44
|
+
| `.dw/bugfixes/**` | <concept> | <match / no match / missing> |
|
|
45
|
+
| `.dw/rules/**` | <concept> | <match / no match / missing> |
|
|
46
|
+
| Code / tests / docs | <concept> | <match / no match> |
|
|
47
|
+
|
|
48
|
+
### Prior Rejection Search
|
|
49
|
+
|
|
50
|
+
| Record | Similarity | Decision |
|
|
51
|
+
|--------|------------|----------|
|
|
52
|
+
| `.dw/out-of-scope/<concept>.md` | <why similar> | applies / does not apply / reopened |
|
|
53
|
+
|
|
54
|
+
## Verification
|
|
55
|
+
|
|
56
|
+
| Field | Value |
|
|
57
|
+
|-------|-------|
|
|
58
|
+
| Verification Status | confirmed / failed-to-reproduce / insufficient-detail |
|
|
59
|
+
| Verification Method | reproduce steps / PR diff review / relevant tests / product inventory check |
|
|
60
|
+
| Commands Run | <commands or n/a> |
|
|
61
|
+
| Files Inspected | <paths> |
|
|
62
|
+
| Evidence | <what was observed> |
|
|
63
|
+
|
|
64
|
+
## Needs Info
|
|
65
|
+
|
|
66
|
+
<!-- If state is needs-info, paste the body from triage-needs-info-template.md here. Otherwise write "n/a". -->
|
|
67
|
+
|
|
68
|
+
n/a
|
|
69
|
+
|
|
70
|
+
## Routing
|
|
71
|
+
|
|
72
|
+
| Condition | Route |
|
|
73
|
+
|-----------|-------|
|
|
74
|
+
| ready-for-work + bug | `/dw-bugfix` |
|
|
75
|
+
| ready-for-work + enhancement | `/dw-plan prd` |
|
|
76
|
+
| malformed request | `/dw-brainstorm --mode=grill` |
|
|
77
|
+
| needs-human | owner action |
|
|
78
|
+
| wontfix | no downstream work |
|
|
79
|
+
|
|
80
|
+
Selected route: <route or n/a>
|
|
81
|
+
|
|
82
|
+
## Out-of-Scope Link
|
|
83
|
+
|
|
84
|
+
<If rejected, link `.dw/out-of-scope/<concept>.md`. If already implemented, link the implementation and state that no out-of-scope record was written.>
|
|
85
|
+
|
|
86
|
+
## History
|
|
87
|
+
|
|
88
|
+
- YYYY-MM-DD — needs-triage -> <state> — <actor> — <reason>
|
|
@@ -37,6 +37,8 @@ Antes de escolher um comando da Trigger Map, dimensione o escopo real da mudanç
|
|
|
37
37
|
| "Roda isso como goal" / "objetivo durável" / "long-running objective" | `/dw-goal "<objetivo>"` |
|
|
38
38
|
| "Continue de onde parei" | `/dw-run --resume` |
|
|
39
39
|
| "Pausa o trabalho" / "Encerra a sessão" / "Salva onde paramos" | `/dw-pause` |
|
|
40
|
+
| "Report de N em N minutos" / "Me mantém informado enquanto isso roda" / "Quero status periódico" | `/dw-report [--every <N>m]` |
|
|
41
|
+
| "Cria uma worktree pra X" / "Limpa as worktrees" / "Mergeia a worktree X" / "Quantas worktrees sobraram?" | `/dw-worktree create <slug>` / `/dw-worktree clean --apply` / `/dw-worktree merge <slug>` / `/dw-worktree list` |
|
|
40
42
|
| "Retoma" / "Onde paramos?" / "Volta de onde parei" | `/dw-resume` |
|
|
41
43
|
| "QA dessa feature" / "Roda o test plan" | `/dw-qa` |
|
|
42
44
|
| "Corrige os bugs do QA" | `/dw-qa --fix` |
|
|
@@ -1,130 +1,130 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
|
|
2
|
+
Você é o orquestrador de pipeline completo. Este comando recebe um desejo do usuário e conduz o workflow PRD-ao-PR em duas invocações:
|
|
3
3
|
|
|
4
|
-
1. **
|
|
5
|
-
2. **
|
|
4
|
+
1. **Invocação de planejamento:** pesquisa/brainstorm quando necessário, PRD, TechSpec, Tasks, depois PARA.
|
|
5
|
+
2. **Invocação de execução:** retoma de `autopilot-state.json`, roda `/dw-goal --from-autopilot <prd-slug>`, depois commit e gate de PR.
|
|
6
6
|
|
|
7
|
-
<critical>A primeira
|
|
8
|
-
<critical>A segunda
|
|
9
|
-
<critical>Cada etapa que invoca um comando `/dw-*` DEVE seguir as
|
|
7
|
+
<critical>A primeira invocação DEVE parar depois que os artefatos de planejamento estiverem completos. Não rode implementação, QA, review, commit ou PR na primeira invocação.</critical>
|
|
8
|
+
<critical>A segunda invocação DEVE retomar do estado salvo e delegar Run → Review → QA/Fix → Review para `/dw-goal --from-autopilot <prd-slug>`.</critical>
|
|
9
|
+
<critical>Cada etapa que invoca um comando `/dw-*` DEVE seguir as instruções completas de `.dw/commands/`. Leia e execute o comando inteiro, não uma versão resumida.</critical>
|
|
10
10
|
|
|
11
11
|
## Quando Usar
|
|
12
|
-
- Use quando quiser ir de uma ideia
|
|
13
|
-
- Use para features completas que exigem planejamento,
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
12
|
+
- Use quando quiser ir de uma ideia até um PR com mínima intervenção manual, mas com parada obrigatória após o planejamento.
|
|
13
|
+
- Use para features completas que exigem planejamento, execução, qualidade e prontidão de PR.
|
|
14
|
+
- NÃO use para tasks pequenas e bem-escopadas; use `/dw-run` com um plano existente.
|
|
15
|
+
- NÃO use para bugfix cirúrgico; use `/dw-bugfix`.
|
|
16
|
+
- NÃO use quando o usuário quer controle manual entre cada fase; use comandos individuais.
|
|
17
17
|
|
|
18
|
-
##
|
|
19
|
-
**Antecessor:** desejo do
|
|
18
|
+
## Posição no Pipeline
|
|
19
|
+
**Antecessor:** desejo do usuário | **Sucessor:** `/dw-goal`, `/dw-commit`, `/dw-generate-pr`
|
|
20
20
|
|
|
21
21
|
## Skills / Comandos Complementares
|
|
22
22
|
|
|
23
23
|
| Skill ou comando | Gatilho |
|
|
24
24
|
|------------------|---------|
|
|
25
|
-
| `dw-memory` | SEMPRE — preserva
|
|
26
|
-
| `dw-verify` | SEMPRE — invocado por gates e comandos downstream antes de claims de
|
|
27
|
-
| `/dw-goal` | SEMPRE na segunda
|
|
25
|
+
| `dw-memory` | SEMPRE — preserva decisões entre planejamento, goal de execução, QA, review e PR. |
|
|
26
|
+
| `dw-verify` | SEMPRE — invocado por gates e comandos downstream antes de claims de aprovação/commit/PR. |
|
|
27
|
+
| `/dw-goal` | SEMPRE na segunda invocação — objetivo durável de execução/qualidade. |
|
|
28
28
|
|
|
29
|
-
##
|
|
29
|
+
## Variáveis de Entrada
|
|
30
30
|
|
|
31
|
-
|
|
|
31
|
+
| Variável | Descrição | Exemplo |
|
|
32
32
|
|----------|-----------|---------|
|
|
33
|
-
| `{{WISH}}` |
|
|
34
|
-
| `{{PRD_SLUG}}` | Slug de PRD existente quando `--from-prd`
|
|
35
|
-
| `{{MODE}}` | Flag opcional de
|
|
33
|
+
| `{{WISH}}` | Descrição do que o usuário quer construir no modo padrão. | `"preferencias de notificacao push"` |
|
|
34
|
+
| `{{PRD_SLUG}}` | Slug de PRD existente quando `--from-prd` é usado. | `prd-bugfix-stripe-webhook-retry` |
|
|
35
|
+
| `{{MODE}}` | Flag opcional de invocação. | `--from-prd <slug>` |
|
|
36
36
|
|
|
37
|
-
## Modos de
|
|
37
|
+
## Modos de Invocação
|
|
38
38
|
|
|
39
|
-
|
|
|
39
|
+
| Invocação | Comportamento |
|
|
40
40
|
|-----------|---------------|
|
|
41
|
-
| `/dw-autopilot "<wish>"` |
|
|
42
|
-
| `/dw-autopilot --from-prd <slug>` |
|
|
43
|
-
| `/dw-autopilot` em PRD com `autopilot-state.json status=plan_complete` |
|
|
41
|
+
| `/dw-autopilot "<wish>"` | Invocação de planejamento do zero. Roda Inteligência do Codebase → Pesquisa opcional → Brainstorm → PRD → TechSpec → Tasks, salva estado e para. |
|
|
42
|
+
| `/dw-autopilot --from-prd <slug>` | Invocação de planejamento a partir de PRD existente. Começa em aprovação do PRD, depois TechSpec → Tasks, salva estado e para. |
|
|
43
|
+
| `/dw-autopilot` em PRD com `autopilot-state.json status=plan_complete` | Invocação de execução. Roda `/dw-goal --from-autopilot <slug>`, depois commit e gate de PR. |
|
|
44
44
|
|
|
45
|
-
## Pontos de Pausa
|
|
45
|
+
## Pontos de Pausa Obrigatórios
|
|
46
46
|
|
|
47
47
|
Autopilot pausa em:
|
|
48
48
|
|
|
49
|
-
1. **
|
|
50
|
-
2. **
|
|
51
|
-
3. **Parada
|
|
52
|
-
4. **Gate de PR** depois que o goal de
|
|
49
|
+
1. **Aprovação do PRD** antes do TechSpec.
|
|
50
|
+
2. **Aprovação das Tasks** antes de marcar planejamento completo.
|
|
51
|
+
3. **Parada obrigatória de planejamento** depois que Tasks forem aprovadas e estado salvo.
|
|
52
|
+
4. **Gate de PR** depois que o goal de execução e commit completarem.
|
|
53
53
|
|
|
54
54
|
Entre estes pontos, execute automaticamente respeitando perguntas bloqueantes exigidas pelo comando chamado.
|
|
55
55
|
|
|
56
|
-
## Retomada de
|
|
56
|
+
## Retomada de Sessão
|
|
57
57
|
|
|
58
58
|
Se este comando for re-invocado no mesmo PRD:
|
|
59
59
|
|
|
60
|
-
<critical>Leia `.dw/spec/<prd-slug>/autopilot-state.json` primeiro. Se `status` for `plan_complete`,
|
|
60
|
+
<critical>Leia `.dw/spec/<prd-slug>/autopilot-state.json` primeiro. Se `status` for `plan_complete`, não repita planejamento. Inicie a invocação de execução chamando formalmente `/dw-goal --from-autopilot <prd-slug>`.</critical>
|
|
61
61
|
|
|
62
62
|
Significados de estado:
|
|
63
63
|
|
|
64
|
-
| Status |
|
|
64
|
+
| Status | Ação |
|
|
65
65
|
|--------|------|
|
|
66
|
-
| estado ausente | Iniciar
|
|
66
|
+
| estado ausente | Iniciar invocação de planejamento normal. |
|
|
67
67
|
| `planning` | Retomar de `current_step`, respeitando etapas completas/puladas. |
|
|
68
|
-
| `plan_complete` | Iniciar
|
|
68
|
+
| `plan_complete` | Iniciar invocação de execução via `/dw-goal --from-autopilot <prd-slug>`. |
|
|
69
69
|
| `goal_active` | Continuar `/dw-goal resume` ou `/dw-goal --from-autopilot <prd-slug>` conforme `.dw/goals/autopilot-<prd-slug>/status.json`. |
|
|
70
70
|
| `goal_complete` | Continuar para commit e gate de PR. |
|
|
71
|
-
| `completed` | Reportar que
|
|
71
|
+
| `completed` | Reportar que já foi concluído e mostrar resumo de PR/commit se disponível. |
|
|
72
72
|
|
|
73
|
-
##
|
|
73
|
+
## Invocação de Planejamento
|
|
74
74
|
|
|
75
|
-
### Etapa 0: Resolver modo de
|
|
75
|
+
### Etapa 0: Resolver modo de invocação
|
|
76
76
|
|
|
77
77
|
1. Se `--from-prd <slug>` aparece:
|
|
78
78
|
- Resolva para `.dw/spec/<slug>/`.
|
|
79
|
-
- Verifique que `prd.md` existe;
|
|
79
|
+
- Verifique que `prd.md` existe; senão PARE com: `Alvo de --from-prd .dw/spec/<slug>/prd.md nao encontrado. Rode /dw-plan prd ou corrija o slug.`
|
|
80
80
|
- Crie ou atualize `autopilot-state.json` com `mode: "from-prd"`, `status: "planning"`, `skipped_steps: [1,2,3,4]`, e `skip_reasons["1-4"] = "from-prd-mode"`.
|
|
81
|
-
- Pule para
|
|
82
|
-
2. Caso
|
|
81
|
+
- Pule para aprovação do PRD usando o PRD existente.
|
|
82
|
+
2. Caso contrário:
|
|
83
83
|
- Crie ou atualize `autopilot-state.json` com `mode: "autopilot"`, `status: "planning"`, wish original e `current_step: 1`.
|
|
84
84
|
|
|
85
|
-
### Etapa 1:
|
|
85
|
+
### Etapa 1: Inteligência do Codebase
|
|
86
86
|
|
|
87
87
|
<critical>Se `.dw/intel/` existir, consulte via `/dw-intel` antes de planejar. Caia para `.dw/rules/` e grep direto se ausente.</critical>
|
|
88
88
|
|
|
89
|
-
- Identifique stack,
|
|
90
|
-
- Se `.dw/intel/` estiver ausente, sugira `/dw-intel --build` para contexto futuro mais rico, mas continue com `.dw/rules/` e
|
|
89
|
+
- Identifique stack, padrões existentes, features relacionadas e restrições do projeto.
|
|
90
|
+
- Se `.dw/intel/` estiver ausente, sugira `/dw-intel --build` para contexto futuro mais rico, mas continue com `.dw/rules/` e inspeção direta.
|
|
91
91
|
|
|
92
92
|
### Etapa 2: Pesquisa (Condicional)
|
|
93
93
|
|
|
94
|
-
Rode `/dw-brainstorm --research` quando a feature envolver tecnologia nova,
|
|
94
|
+
Rode `/dw-brainstorm --research` quando a feature envolver tecnologia nova, domínio desconhecido, APIs externas, regulação ou arquitetura de alto impacto. Caso contrário, pule e registre o motivo em `skip_reasons`.
|
|
95
95
|
|
|
96
96
|
### Etapa 3: Brainstorm (Interativo)
|
|
97
97
|
|
|
98
|
-
Rode `/dw-brainstorm` com o contexto acumulado. Apresente
|
|
98
|
+
Rode `/dw-brainstorm` com o contexto acumulado. Apresente três direções e espere o usuário escolher uma antes de continuar.
|
|
99
99
|
|
|
100
100
|
### Etapa 4: PRD
|
|
101
101
|
|
|
102
102
|
Rode `/dw-plan prd` usando findings de brainstorm/research.
|
|
103
103
|
|
|
104
|
-
<critical>O
|
|
104
|
+
<critical>O estágio PRD deve usar a ferramenta de entrevista estruturada quando disponível. Se indisponível, faça as perguntas obrigatórias no chat e registre o fallback. O usuário deve responder; não infira respostas.</critical>
|
|
105
105
|
|
|
106
|
-
Depois que `prd.md` existir, apresente resumo do PRD e aguarde
|
|
106
|
+
Depois que `prd.md` existir, apresente resumo do PRD e aguarde aprovação explícita. Se o usuário pedir edits, atualize e reapresente.
|
|
107
107
|
|
|
108
108
|
### Etapa 5: TechSpec
|
|
109
109
|
|
|
110
110
|
Rode `/dw-plan techspec` a partir do PRD aprovado.
|
|
111
111
|
|
|
112
|
-
<critical>O
|
|
112
|
+
<critical>O estágio TechSpec deve usar a ferramenta de entrevista estruturada quando disponível. Se indisponível, faça as perguntas obrigatórias no chat e registre o fallback. O usuário deve responder; não infira respostas.</critical>
|
|
113
113
|
|
|
114
|
-
Depois que `techspec.md` existir, apresente resumo do TechSpec e aguarde
|
|
114
|
+
Depois que `techspec.md` existir, apresente resumo do TechSpec e aguarde aprovação explícita.
|
|
115
115
|
|
|
116
116
|
### Etapa 6: Tasks
|
|
117
117
|
|
|
118
118
|
Rode `/dw-plan tasks` a partir de PRD + TechSpec. Verifique:
|
|
119
119
|
- `tasks.md` existe.
|
|
120
120
|
- arquivos per-task existem.
|
|
121
|
-
- `tasks-validation.md` existe e passou ou tem override
|
|
121
|
+
- `tasks-validation.md` existe e passou ou tem override explícito do usuário.
|
|
122
122
|
|
|
123
|
-
### Etapa 7:
|
|
123
|
+
### Etapa 7: Aprovação das Tasks e Parada Obrigatória
|
|
124
124
|
|
|
125
|
-
Apresente resumo das tasks,
|
|
125
|
+
Apresente resumo das tasks, dependências e esforço total. Aguarde aprovação explícita.
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
Após aprovação:
|
|
128
128
|
|
|
129
129
|
1. Salve `.dw/spec/<prd-slug>/autopilot-state.json` com:
|
|
130
130
|
|
|
@@ -137,11 +137,13 @@ Apos aprovacao:
|
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
2. Inclua `completed_steps` para todas as etapas de planejamento completas e `step_artifacts` para `prd.md`, `techspec.md`, `tasks.md`, arquivos per-task e `tasks-validation.md`.
|
|
140
|
-
3. PARE e diga ao
|
|
140
|
+
3. PARE e diga ao usuário que a fase de planejamento está completa. Não rode implementação nesta invocação.
|
|
141
141
|
|
|
142
|
-
##
|
|
142
|
+
## Invocação de Execução
|
|
143
143
|
|
|
144
|
-
### Etapa 8: Goal
|
|
144
|
+
### Etapa 8: Goal Durável de Execução
|
|
145
|
+
|
|
146
|
+
Primeiro arme o loop de progresso: invoque `/dw-report` (contrato de auto-arme — idempotente, pulado quando `DW_REPORT_AUTO=off`). Ele reporta feito / fazendo / falta a cada 10 minutos ao longo do goal, do Security Gate, do commit e do PR, e se desarma sozinho com um report final no gate de PR.
|
|
145
147
|
|
|
146
148
|
Quando `autopilot-state.json status=plan_complete`, invoque formalmente:
|
|
147
149
|
|
|
@@ -149,50 +151,50 @@ Quando `autopilot-state.json status=plan_complete`, invoque formalmente:
|
|
|
149
151
|
/dw-goal --from-autopilot <prd-slug>
|
|
150
152
|
```
|
|
151
153
|
|
|
152
|
-
O goal
|
|
154
|
+
O goal é dono desta sequência:
|
|
153
155
|
|
|
154
156
|
1. `/dw-run <prd-path>`
|
|
155
|
-
2. `/dw-review <prd-path>` (review completo: cobertura, qualidade,
|
|
157
|
+
2. `/dw-review <prd-path>` (review completo: cobertura, qualidade, convenções, constitution, verify)
|
|
156
158
|
3. `/dw-qa <prd-path>`
|
|
157
159
|
4. `/dw-qa --fix <prd-path>` se QA encontrou bugs Open
|
|
158
|
-
5. `/dw-review <prd-path>` novamente
|
|
160
|
+
5. `/dw-review <prd-path>` novamente após QA/fixes
|
|
159
161
|
6. **Security Gate** — o `/dw-review` pós-QA (passo 5) aciona o `/dw-secure-audit`, produzindo um `.dw/secure-audit/audit-summary.md` fresco. Este passo **garante** que o verdict é APROVADO: se ausente/desatualizado/REPROVADO, rode `/dw-secure-audit <prd-path>` standalone, depois volte pro `/dw-bugfix` por finding e re-cheque. Findings SECRET sempre bloqueiam (sem escape de ADR). Não force um segundo scan completo quando já existe um summary APROVADO fresco.
|
|
160
162
|
|
|
161
|
-
<critical>
|
|
163
|
+
<critical>Não substitua os reviews do goal por `/dw-review --coverage-only`. O goal de qualidade do autopilot exige `/dw-review` completo antes do QA e depois dos fixes de QA.</critical>
|
|
162
164
|
|
|
163
|
-
Depois que `/dw-goal` completar, verifique que `.dw/goals/autopilot-<prd-slug>/status.json` tem `status: "complete"`,
|
|
165
|
+
Depois que `/dw-goal` completar, verifique que `.dw/goals/autopilot-<prd-slug>/status.json` tem `status: "complete"`, então defina `autopilot-state.json status: "goal_complete"`.
|
|
164
166
|
|
|
165
167
|
### Etapa 9: Fechar Loop de Bugfix (Condicional)
|
|
166
168
|
|
|
167
|
-
Se `mode == "from-prd"` e o slug do PRD casar com `prd-bugfix-*`, feche o
|
|
168
|
-
- Encontre `.dw/bugfixes/*/escalated.md` que
|
|
169
|
-
- Se `SUMMARY.md` estiver ausente, escreva usando
|
|
170
|
-
- Nunca fabrique
|
|
169
|
+
Se `mode == "from-prd"` e o slug do PRD casar com `prd-bugfix-*`, feche o índice de bugfix antes do commit:
|
|
170
|
+
- Encontre `.dw/bugfixes/*/escalated.md` que referência o slug do PRD.
|
|
171
|
+
- Se `SUMMARY.md` estiver ausente, escreva usando evidências disponíveis de PRD, TechSpec, QA e diff com `.dw/templates/bugfix-summary-template.md`.
|
|
172
|
+
- Nunca fabrique evidência de verificação.
|
|
171
173
|
- Registre artefatos em `autopilot-state.json`.
|
|
172
174
|
|
|
173
175
|
### Etapa 10: Auditoria Pre-Commit
|
|
174
176
|
|
|
175
177
|
Antes de `/dw-commit`, verifique:
|
|
176
|
-
- `.dw/goals/autopilot-<prd-slug>/status.json`
|
|
177
|
-
- `<prd-path>/QA/review-consolidated.md` existe a partir do review final
|
|
178
|
+
- `.dw/goals/autopilot-<prd-slug>/status.json` está completo.
|
|
179
|
+
- `<prd-path>/QA/review-consolidated.md` existe a partir do review final pós-QA.
|
|
178
180
|
- `<prd-path>/QA/qa-report.md` e `<prd-path>/QA/bugs.md` existem.
|
|
179
|
-
- **Security Gate passou:** `.dw/secure-audit/audit-summary.md` existe,
|
|
181
|
+
- **Security Gate passou:** `.dw/secure-audit/audit-summary.md` existe, está fresco (pós-última-edição) e status APROVADO. Se ausente/desatualizado/REPROVADO → PARE (não commite).
|
|
180
182
|
- `autopilot-state.json` registra artefatos de planejamento e o goal completo.
|
|
181
183
|
|
|
182
|
-
Se algo estiver faltando, PARE e re-execute o comando formal ausente.
|
|
184
|
+
Se algo estiver faltando, PARE e re-execute o comando formal ausente. Não faça commit parcial.
|
|
183
185
|
|
|
184
186
|
### Etapa 11: Commit
|
|
185
187
|
|
|
186
|
-
Rode `/dw-commit` automaticamente.
|
|
188
|
+
Rode `/dw-commit` automaticamente. Não aguarde aprovação depois que o goal estiver completo.
|
|
187
189
|
|
|
188
190
|
### Etapa 12: Gate de Pull Request
|
|
189
191
|
|
|
190
192
|
Pergunte: **"Commits realizados. Deseja gerar o Pull Request?"**
|
|
191
193
|
|
|
192
194
|
- SIM: rode `/dw-generate-pr`.
|
|
193
|
-
-
|
|
195
|
+
- NÃO: informe que os commits estão prontos e o PR pode ser gerado depois.
|
|
194
196
|
|
|
195
|
-
Marque `autopilot-state.json status: "completed"`
|
|
197
|
+
Marque `autopilot-state.json status: "completed"` após commit, e inclua link do PR se gerado.
|
|
196
198
|
|
|
197
199
|
## Persistencia de Estado
|
|
198
200
|
|
|
@@ -218,7 +220,7 @@ Marque `autopilot-state.json status: "completed"` apos commit, e inclua link do
|
|
|
218
220
|
}
|
|
219
221
|
```
|
|
220
222
|
|
|
221
|
-
Atualize estado depois de cada etapa completa ou pulada. Uma etapa
|
|
223
|
+
Atualize estado depois de cada etapa completa ou pulada. Uma etapa só está completa depois que artefatos obrigatórios existem.
|
|
222
224
|
|
|
223
225
|
## Formato de Progresso
|
|
224
226
|
|
|
@@ -236,7 +238,7 @@ Reporte progresso depois de cada etapa:
|
|
|
236
238
|
===================================================
|
|
237
239
|
```
|
|
238
240
|
|
|
239
|
-
Durante a
|
|
241
|
+
Durante a invocação de execução:
|
|
240
242
|
|
|
241
243
|
```text
|
|
242
244
|
=== AUTOPILOT =====================================
|
|
@@ -248,10 +250,10 @@ Durante a invocacao de execucao:
|
|
|
248
250
|
|
|
249
251
|
## Anti-patterns
|
|
250
252
|
|
|
251
|
-
-
|
|
252
|
-
-
|
|
253
|
-
-
|
|
254
|
-
-
|
|
255
|
-
-
|
|
253
|
+
- Não continue para implementação durante a primeira invocação.
|
|
254
|
+
- Não pule `/dw-goal` durante a segunda invocação.
|
|
255
|
+
- Não substitua `/dw-review` completo por review mais estreito no goal de execução.
|
|
256
|
+
- Não marque estado completo a partir de validação manual.
|
|
257
|
+
- Não reexecute planejamento quando `status=plan_complete`; retome o goal.
|
|
256
258
|
|
|
257
259
|
</system_instructions>
|
|
@@ -181,7 +181,7 @@ Ao final, sempre deixe o usuario em uma destas situacoes:
|
|
|
181
181
|
- com perguntas melhores para decidir
|
|
182
182
|
- com um proximo comando do workspace para seguir
|
|
183
183
|
- com o one-pager em `.dw/spec/ideas/<slug>.md` (se modo **onepager** disparou)
|
|
184
|
-
- com o relatório de research em
|
|
184
|
+
- com o relatório de research em `.dw/spec/<prd-slug>/research/<topic-slug>-<YYYYMMDD>/research.md` quando houver PRD ativa, `.dw/spec/ideas/<idea-slug>-research-<YYYYMMDD>/research.md` quando houver one-pager de ideia ativo, ou `.dw/spec/research/<topic-slug>-<YYYYMMDD>/research.md` para research avulso (se modo **research** disparou)
|
|
185
185
|
- com o plano de refactor em `<target>/refactor-plan.md` (se modo **refactor-audit** disparou)
|
|
186
186
|
- com entradas de glossário canônico em `.dw/domain/**` e um one-pager de ideia alinhado (se **grill** rodou com autorização)
|
|
187
187
|
- com um protótipo throwaway rodável + template de verdict (se modo **prototype** disparou)
|
|
@@ -237,7 +237,7 @@ Skill complementar **`dw-source-grounding`**: **SEMPRE** — aplica protocolo De
|
|
|
237
237
|
|
|
238
238
|
### Output
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
Salve `research.md` dentro do repo: `.dw/spec/<prd-slug>/research/<topic-slug>-<YYYYMMDD>/research.md` quando houver PRD ativa, `.dw/spec/ideas/<idea-slug>-research-<YYYYMMDD>/research.md` quando houver one-pager de ideia ativo, ou `.dw/spec/research/<topic-slug>-<YYYYMMDD>/research.md` para research avulso. Seções obrigatórias:
|
|
241
241
|
1. Sumário Executivo (200-400 palavras)
|
|
242
242
|
2. Introdução (escopo, metodologia, premissas)
|
|
243
243
|
3. Análise Principal (4-8 achados, 600-2000 palavras cada, todos citados)
|
|
@@ -365,10 +365,12 @@ Quando esses sinais aparecem no auto-dispatch, **recomende** Grill em uma linha
|
|
|
365
365
|
|
|
366
366
|
### A sessão (após autorização)
|
|
367
367
|
|
|
368
|
-
1. **
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
368
|
+
1. **Retome ou construa a árvore de decisão primeiro.** Antes da primeira pergunta, leia o one-pager ativo em
|
|
369
|
+
busca de um **Decision Map** existente. Se houver, retome pelo grafo `Depends on:`, valores de `State`,
|
|
370
|
+
**Frontier** explícita e `Decision Fog`; não re-pergunte nós já `resolved`. Se não houver mapa, inspecione os
|
|
371
|
+
fatos do projeto — PRDs/TechSpecs atuais, `.dw/rules/`, `.dw/intel/` (via `/dw-intel`), `.dw/constitution.md`,
|
|
372
|
+
`.dw/domain/**` e git recente — e monte uma árvore de decisão **ordenada por dependências** (nunca pergunte
|
|
373
|
+
uma decisão downstream antes do seu bloqueador).
|
|
372
374
|
2. **Pergunte exatamente uma decisão não-resolvida por interação e espere.** Cada pergunta inclui: evidência
|
|
373
375
|
quando disponível (com fonte), a resposta recomendada, uma rationale curta, e uma alternativa/trade-off
|
|
374
376
|
significativa. Siga `dw-grilling` (`references/interview-loop.md`, `references/decision-tree.md`).
|
|
@@ -405,9 +407,10 @@ lê e linka `.dw/domain/**` e deve preservá-lo, nunca regenerá-lo.
|
|
|
405
407
|
|
|
406
408
|
### Handoff alinhado — o one-pager de ideia (schema `1.1`)
|
|
407
409
|
|
|
408
|
-
Grill estende `.dw/spec/ideas/<slug>.md` para o schema `1.1`, adicionando: **
|
|
409
|
-
|
|
410
|
-
|
|
410
|
+
Grill estende `.dw/spec/ideas/<slug>.md` para o schema `1.1`, adicionando: **Decision Map** (nós, `Depends on:`,
|
|
411
|
+
`State`, **Frontier** explícita e `Decision Fog` para futuros nós ainda nebulosos), **Resolved Decisions** (cada
|
|
412
|
+
uma com a resposta recomendada, a escolha do usuário e a alternativa rejeitada), **Evidence** (fatos descobertos
|
|
413
|
+
com fontes), **Canonical Vocabulary** (links para `.dw/domain/**`), **Remaining Decisions** e **Alignment State**.
|
|
411
414
|
|
|
412
415
|
Defina `status: aligned` **só quando todas** valem: cada branch de dependência resolvida, contradições
|
|
413
416
|
glossário/código fechadas, nenhuma decisão bloqueante aberta, E o usuário **confirma explicitamente** o shared
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
|
|
39
39
|
Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como suporte contextual sem substituir este comando:
|
|
40
40
|
|
|
41
|
-
- `dw-debug-protocol`: **SEMPRE** — conduz o bug pelo six-step triage (Reproduzir → Localizar → Reduzir → Fix Root Cause → Guardar → Verificar End-to-End). Stop-the-line discipline; root-cause sobre symptom; regression test commitado no mesmo commit atômico. Bugs não-reprodutíveis seguem o sub-protocolo instrument-first — sem fix por palpite a não ser com acknowledgement explícito.
|
|
41
|
+
- `dw-debug-protocol`: **SEMPRE** — conduz o bug pelo six-step triage (Reproduzir → Localizar → Reduzir → Fix Root Cause → Guardar → Verificar End-to-End). Stop-the-line discipline; root-cause sobre symptom; regression test commitado no mesmo commit atômico. Para bugs não triviais, ou depois que a primeira tentativa de fix falhar, o Passo 1 precisa estabelecer um loop de feedback red-capable antes de teorizar. Bugs não-reprodutíveis seguem o sub-protocolo instrument-first — sem fix por palpite a não ser com acknowledgement explícito.
|
|
42
42
|
- `dw-verify`: **SEMPRE** — em modo Direto, invocada antes do commit da correção. O VERIFICATION REPORT deve mostrar que o sintoma original do bug não se reproduz mais (não apenas que os testes passam).
|
|
43
43
|
- `vercel-react-best-practices`: use quando o bug afeta React/Next.js e há suspeita de problemas de render, hidratação, fetching, waterfall, bundle ou re-render
|
|
44
44
|
- `dw-testing-discipline`: use quando a correção requer fluxo E2E/reteste reproduzível em web app — `references/playwright-recipes.md` pra recipes, core rules + 6 agent guardrails pra qualquer teste que o fix adicione, flaky-discipline se o bug aparece de forma intermitente.
|
|
@@ -208,6 +208,7 @@
|
|
|
208
208
|
- Stack traces
|
|
209
209
|
- Arquivos modificados recentemente
|
|
210
210
|
- Se o bug for relacionado a UI ou depender de fluxo no navegador, complemente a coleta com `dw-testing-discipline` (playwright-recipes + three-workflow-patterns pra escolher o modo certo de verificação)
|
|
211
|
+
- Para bugs não triviais, ou quando a primeira tentativa de fix falhou, construa o loop de feedback red-capable do `dw-debug-protocol` antes de propor uma causa: um comando/artefato de loop, suficientemente determinístico, rápido, executável pelo agente e com vermelho observado. Se nenhum loop executável pelo agente for possível, registre as tentativas e peça ao usuário o artefato/acesso ausente com o template HITL de `references/six-step-triage.md`.
|
|
211
212
|
|
|
212
213
|
### 3. Perguntas de Clarificação (OBRIGATÓRIO - EXATAMENTE 3)
|
|
213
214
|
|
|
@@ -322,7 +323,7 @@
|
|
|
322
323
|
1. Descubra o próximo `NNN` (ver seção Localização dos Arquivos).
|
|
323
324
|
2. Crie `.dw/bugfixes/NNN-<slug>/` se ainda não foi criado no passo 5.0.
|
|
324
325
|
3. Escreva `TASK.md` com a triagem, clarificações, causa raiz e plano aprovado como executado (use `.dw/templates/bugfix-template.md` como base).
|
|
325
|
-
4. Escreva `fix-report.md` com o VERIFICATION REPORT verbatim do `dw-verify` mais o trace antes/depois da reprodução.
|
|
326
|
+
4. Escreva `fix-report.md` com o VERIFICATION REPORT verbatim do `dw-verify` mais o trace antes/depois da reprodução. O relatório DEVE incluir `Loop command before fix` e `Loop command after fix` (ou o bloqueio HITL exato, tentativas feitas e artefato/acesso solicitado quando nenhum loop foi possível).
|
|
326
327
|
5. Escreva `SUMMARY.md` usando `.dw/templates/bugfix-summary-template.md`. Preencha slug, data, status `Fixed`, severidade, related_concerns (do passo 1.5), Sintoma (verbatim), Causa Raiz (uma frase), Resolução (2-4 bullets), Arquivos Tocados, Verificação, Relacionado, Followups.
|
|
327
328
|
6. Se o fix tocou uma concern listada em `.dw/rules/concerns.md`, anexe uma linha à coluna `Last incident` da row daquela concern (ou adicione uma row nova sob Histórico de Bugs Conhecidos) — preserve entradas escritas a mão entre `<!-- preserved:start -->`.
|
|
328
329
|
7. Reporte os paths dos três arquivos no chat antes do passo de commit.
|
|
@@ -431,6 +432,7 @@
|
|
|
431
432
|
- [ ] **Máximo 5 arquivos afetados**
|
|
432
433
|
- [ ] **Sem migrations**
|
|
433
434
|
- [ ] **Tarefa de teste incluída (framework correto do projeto)**
|
|
435
|
+
- [ ] **Loop de bug não trivial registrado: comando antes do fix + comando depois do fix, ou bloqueio HITL com tentativas + artefato/acesso solicitado**
|
|
434
436
|
- [ ] Aguardando aprovação antes de executar
|
|
435
437
|
- [ ] **`.dw/bugfixes/NNN-<slug>/{TASK,fix-report,SUMMARY}.md` escritos após verify PASS**
|
|
436
438
|
|