@brunosps00/dev-workflow 2.0.0 → 2.1.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 +104 -0
- package/README.md +6 -4
- package/lib/build-plugin.js +4 -1
- package/lib/constants.js +4 -2
- package/lib/validate.js +21 -0
- package/package.json +1 -1
- package/scaffold/en/commands/dw-brainstorm.md +12 -8
- package/scaffold/en/commands/dw-bugfix.md +4 -2
- package/scaffold/en/commands/dw-plan.md +2 -2
- package/scaffold/en/commands/dw-refactor.md +1 -0
- package/scaffold/en/commands/dw-review.md +33 -2
- package/scaffold/en/commands/dw-run.md +1 -0
- package/scaffold/en/commands/dw-triage.md +220 -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/commands/dw-autopilot.md +81 -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 +19 -19
- package/scaffold/pt-br/commands/dw-codex-run.md +19 -19
- package/scaffold/pt-br/commands/dw-context-budget.md +10 -10
- package/scaffold/pt-br/commands/dw-copilot-run.md +20 -20
- 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 +11 -11
- 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 +39 -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-resume.md +22 -22
- package/scaffold/pt-br/commands/dw-review.md +33 -2
- package/scaffold/pt-br/commands/dw-run.md +1 -0
- 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/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 +41 -24
- 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
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
You are the intake triage boundary for the current workspace. Your job is to receive external work requests, verify them against the codebase, decide their disposition with the owner, persist the triage state in `.dw/`, and only then route into the existing dev-workflow pipeline.
|
|
3
|
+
|
|
4
|
+
<critical>`/dw-triage` sits BEFORE `/dw-bugfix`, `/dw-brainstorm`, `/dw-plan`, and `/dw-run`. It does not replace any of them.</critical>
|
|
5
|
+
<critical>Local-first: `.dw/triage/**` is the durable source of truth. GitHub access via `gh` is optional enrichment only.</critical>
|
|
6
|
+
<critical>Never write a downstream brief from an unverified allegation. Verification is the point of this command.</critical>
|
|
7
|
+
|
|
8
|
+
## When to Use
|
|
9
|
+
- Use when an external bug report, feature request, support escalation, issue, or PR arrives and needs an intake decision before normal planning or execution
|
|
10
|
+
- Use when the request might be redundant, previously rejected, underspecified, or needs a human decision before it enters the pipeline
|
|
11
|
+
- Do NOT use to fix an already accepted bug directly; use `/dw-bugfix`
|
|
12
|
+
- Do NOT use to plan an already accepted enhancement directly; use `/dw-plan prd`
|
|
13
|
+
- Do NOT use for vague ideation with no intake item; use `/dw-brainstorm`
|
|
14
|
+
|
|
15
|
+
## Pipeline Position
|
|
16
|
+
**Predecessor:** external request (paste, file, issue, PR) | **Successor:** `/dw-brainstorm --mode=grill`, `/dw-bugfix`, `/dw-plan prd`, `/dw-run`, or no downstream action
|
|
17
|
+
|
|
18
|
+
## Inputs
|
|
19
|
+
|
|
20
|
+
| Variable | Description | Example |
|
|
21
|
+
|----------|-------------|---------|
|
|
22
|
+
| `{{SOURCE}}` | Request source: pasted text, local file path, issue/PR URL, issue/PR number, or branch/ref | `.dw/inbox/report.md`, `#123`, `https://github.com/org/repo/pull/42` |
|
|
23
|
+
| `{{MODE}}` | Optional owner intent | `--bug`, `--enhancement`, `--pr`, `--offline`, `--no-github-write` |
|
|
24
|
+
|
|
25
|
+
## File Locations
|
|
26
|
+
|
|
27
|
+
**Triage record — always created after owner-approved disposition:**
|
|
28
|
+
|
|
29
|
+
- `.dw/triage/NNN-<slug>.md`
|
|
30
|
+
- `NNN` is zero-padded to 3 digits, sequential across every triage record ever created
|
|
31
|
+
- `<slug>` is kebab-case from the domain concept, not merely the request wording
|
|
32
|
+
- Use `.dw/templates/triage-record-template.md`
|
|
33
|
+
|
|
34
|
+
This follows the `.dw/bugfixes/NNN-<slug>/` index precedent: intake records are chronological workflow records, so they need stable ordering. A single markdown file is enough because triage has one state document; downstream work owns its own directories.
|
|
35
|
+
|
|
36
|
+
**Needs-info notes:**
|
|
37
|
+
|
|
38
|
+
- Stored inside the same `.dw/triage/NNN-<slug>.md` record under `## Needs Info`
|
|
39
|
+
- Use `.dw/templates/triage-needs-info-template.md` as the section body when questions are open
|
|
40
|
+
|
|
41
|
+
**Out-of-scope memory — only for rejected concepts:**
|
|
42
|
+
|
|
43
|
+
- `.dw/out-of-scope/<concept>.md`
|
|
44
|
+
- `<concept>` is a stable domain concept slug, not a quote of the request
|
|
45
|
+
- Use `.dw/templates/triage-out-of-scope-template.md`
|
|
46
|
+
- Do NOT write `.dw/out-of-scope/**` for "already implemented"; point to the existing implementation instead
|
|
47
|
+
|
|
48
|
+
**Next-number discovery:** list `.dw/triage/`, parse the leading 3-digit prefix of each `*.md`, take `max + 1` or `1` if empty.
|
|
49
|
+
|
|
50
|
+
## State Model
|
|
51
|
+
|
|
52
|
+
Every triage item carries exactly one category and exactly one state.
|
|
53
|
+
|
|
54
|
+
Categories:
|
|
55
|
+
- `bug`
|
|
56
|
+
- `enhancement`
|
|
57
|
+
|
|
58
|
+
States:
|
|
59
|
+
- `needs-triage`
|
|
60
|
+
- `needs-info`
|
|
61
|
+
- `ready-for-work`
|
|
62
|
+
- `needs-human`
|
|
63
|
+
- `wontfix`
|
|
64
|
+
|
|
65
|
+
Transitions:
|
|
66
|
+
- `needs-triage` -> `needs-info`
|
|
67
|
+
- `needs-triage` -> `ready-for-work`
|
|
68
|
+
- `needs-triage` -> `needs-human`
|
|
69
|
+
- `needs-triage` -> `wontfix`
|
|
70
|
+
- `needs-info` -> `needs-triage` when the author responds
|
|
71
|
+
|
|
72
|
+
If the current record, source labels, or owner input imply conflicting states, STOP and ask the owner which single state is authoritative before writing or routing.
|
|
73
|
+
|
|
74
|
+
Vocabulary note: upstream uses `ready-for-agent` / `ready-for-human`. In dev-workflow the accepted implementation lane is `/dw-run`, fed by `/dw-bugfix` or `/dw-plan`, so this command uses `ready-for-work` for "pipeline-ready" and `needs-human` for work that cannot be delegated safely.
|
|
75
|
+
|
|
76
|
+
## GitHub Integration
|
|
77
|
+
|
|
78
|
+
`gh` is allowed because this repo already uses it in `/dw-generate-pr`, but it is never required.
|
|
79
|
+
|
|
80
|
+
1. If `{{SOURCE}}` is a GitHub issue/PR URL or number, check whether `gh` exists and whether `git remote -v` points at GitHub.
|
|
81
|
+
2. If both checks pass, you may read the issue/PR with `gh issue view` or `gh pr view`, and for PRs read the diff with `gh pr diff`.
|
|
82
|
+
3. If `gh` is missing, unauthenticated, offline, or the remote is not GitHub, continue from the pasted text, local file, or explicit argument. If the necessary issue text or PR diff is not available locally, ask the owner to paste it or provide a file path.
|
|
83
|
+
4. Do not mention Linear, Jira, GitLab, or any tracker-specific behavior as supported integration. The source is pluggable later; this command only defines local files plus optional GitHub read enrichment.
|
|
84
|
+
5. Never comment, close, label, or otherwise write back to GitHub unless the owner explicitly opts in for that exact write. Triage persistence in `.dw/triage/**` is the default and sufficient output.
|
|
85
|
+
|
|
86
|
+
## Workflow
|
|
87
|
+
|
|
88
|
+
### 1. Read the Complete Request
|
|
89
|
+
|
|
90
|
+
- Read the full pasted text or local file.
|
|
91
|
+
- If the source is an issue and `gh` is available, read the title, body, comments, labels, author, and URL.
|
|
92
|
+
- If the source is a PR and `gh` is available, read the title, body, comments, changed files, and diff.
|
|
93
|
+
- Preserve the origin in the triage record: `source_type`, `source_ref`, `author`, `reported_at`, and retrieval method.
|
|
94
|
+
|
|
95
|
+
### 2. Check Redundancy Before Recommending
|
|
96
|
+
|
|
97
|
+
Search by domain concept, not wording:
|
|
98
|
+
|
|
99
|
+
- `.dw/domain/**` when present
|
|
100
|
+
- `.dw/spec/**`
|
|
101
|
+
- `.dw/bugfixes/**`
|
|
102
|
+
- `.dw/rules/**`
|
|
103
|
+
- code paths likely to own the concept
|
|
104
|
+
- docs and tests that name the behavior
|
|
105
|
+
|
|
106
|
+
If equivalent behavior already exists, recommend `wontfix` with reason `already implemented`, report exactly where you searched and where the implementation lives, write the triage record, and do NOT write `.dw/out-of-scope/**`.
|
|
107
|
+
|
|
108
|
+
### 3. Check Prior Rejections
|
|
109
|
+
|
|
110
|
+
Read `.dw/out-of-scope/**` when it exists. Surface any similar domain concept before recommending a state:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
## Prior Rejection Found
|
|
114
|
+
|
|
115
|
+
- Concept: `<concept>`
|
|
116
|
+
- Record: `.dw/out-of-scope/<concept>.md`
|
|
117
|
+
- Why it matters: <one-line comparison>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
If the prior rejection clearly applies, recommend `wontfix` unless the owner explicitly reopens the decision.
|
|
121
|
+
|
|
122
|
+
### 4. Recommend Category And State, Then Wait
|
|
123
|
+
|
|
124
|
+
Present:
|
|
125
|
+
|
|
126
|
+
- concise summary of the request
|
|
127
|
+
- codebase search summary, including where redundancy was checked
|
|
128
|
+
- prior rejection summary
|
|
129
|
+
- recommended category: `bug` or `enhancement`
|
|
130
|
+
- recommended state: `needs-info`, `ready-for-work`, `needs-human`, or `wontfix`
|
|
131
|
+
- reasoning and next route
|
|
132
|
+
|
|
133
|
+
Then ask the owner to approve or correct the category/state. Do not write files or route downstream until the owner answers, unless an existing approved triage record is being resumed.
|
|
134
|
+
|
|
135
|
+
### 5. Verify Before Briefing
|
|
136
|
+
|
|
137
|
+
After owner approval and before any downstream brief:
|
|
138
|
+
|
|
139
|
+
**For bugs:**
|
|
140
|
+
- Reproduce from the author's steps when possible.
|
|
141
|
+
- Record the exact command, environment, fixture, or manual path used.
|
|
142
|
+
- Report one result: `confirmed`, `failed-to-reproduce`, or `insufficient-detail`.
|
|
143
|
+
- Treat `insufficient-detail` as a strong signal for `needs-info`.
|
|
144
|
+
|
|
145
|
+
**For PRs:**
|
|
146
|
+
- Confirm the diff does what the PR claims.
|
|
147
|
+
- Run relevant tests or checks for the touched area.
|
|
148
|
+
- Record the changed files inspected and commands run.
|
|
149
|
+
- If the claim and diff disagree, stop and recommend `needs-human` or `needs-info`.
|
|
150
|
+
|
|
151
|
+
**For enhancements:**
|
|
152
|
+
- Verify the capability does not already exist and that the request has enough product shape for PRD intake.
|
|
153
|
+
- If the product vocabulary or desired outcome is unsettled, route to `/dw-brainstorm --mode=grill` instead of inventing an interview here.
|
|
154
|
+
|
|
155
|
+
### 6. Apply The Outcome
|
|
156
|
+
|
|
157
|
+
Use `.dw/templates/triage-record-template.md` for every written triage item. Record history entries as `YYYY-MM-DD — <from> -> <to> — <actor> — <reason>`.
|
|
158
|
+
|
|
159
|
+
Outcomes:
|
|
160
|
+
|
|
161
|
+
- `ready-for-work` + `bug` -> write `.dw/triage/NNN-<slug>.md`, then route to `/dw-bugfix` with the verified reproduction summary and triage record path
|
|
162
|
+
- `ready-for-work` + `enhancement` -> write `.dw/triage/NNN-<slug>.md`, then route to `/dw-plan prd` with the verified product summary and triage record path
|
|
163
|
+
- `needs-human` -> write `.dw/triage/NNN-<slug>.md` and record why delegation is unsafe: design decision, external access, judgment call, manual test, or unclear ownership
|
|
164
|
+
- `needs-info` -> write `.dw/triage/NNN-<slug>.md` and include the `.dw/templates/triage-needs-info-template.md` section with open questions
|
|
165
|
+
- `wontfix` rejected -> write `.dw/triage/NNN-<slug>.md`, then write or update `.dw/out-of-scope/<concept>.md` with the reason, evidence, and revisit condition
|
|
166
|
+
- `wontfix` already implemented -> write `.dw/triage/NNN-<slug>.md`, point to the implementation, and do NOT write `.dw/out-of-scope/**`
|
|
167
|
+
|
|
168
|
+
### 7. Grill Malformed Requests
|
|
169
|
+
|
|
170
|
+
If the request lacks a stable problem, actor, domain concept, desired outcome, or acceptance boundary, do not reimplement an interview inside `/dw-triage`.
|
|
171
|
+
|
|
172
|
+
Recommend:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
This intake item is not ready to categorize. Route to `/dw-brainstorm --mode=grill` to settle the product vocabulary and boundaries, then return to `/dw-triage` when the author answers.
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
If the owner approves the route, persist the triage record as `needs-info` unless there is a clearer `needs-human` reason.
|
|
179
|
+
|
|
180
|
+
## Preferred Response Format
|
|
181
|
+
|
|
182
|
+
### Intake Summary
|
|
183
|
+
- Source:
|
|
184
|
+
- Request:
|
|
185
|
+
- Author:
|
|
186
|
+
- Retrieval:
|
|
187
|
+
|
|
188
|
+
### Codebase Checks
|
|
189
|
+
- Redundancy search:
|
|
190
|
+
- Prior rejection search:
|
|
191
|
+
- Evidence:
|
|
192
|
+
|
|
193
|
+
### Recommendation
|
|
194
|
+
- Category: `bug` | `enhancement`
|
|
195
|
+
- State: `needs-info` | `ready-for-work` | `needs-human` | `wontfix`
|
|
196
|
+
- Reason:
|
|
197
|
+
- Proposed route:
|
|
198
|
+
|
|
199
|
+
### Owner Checkpoint
|
|
200
|
+
- Ask the owner to approve or correct the category/state before writing and routing.
|
|
201
|
+
|
|
202
|
+
### Verification Result
|
|
203
|
+
- Status: `confirmed` | `failed-to-reproduce` | `insufficient-detail`
|
|
204
|
+
- Commands/files inspected:
|
|
205
|
+
- What this proves:
|
|
206
|
+
|
|
207
|
+
### Persisted Outcome
|
|
208
|
+
- Triage record:
|
|
209
|
+
- Out-of-scope record, if any:
|
|
210
|
+
- Next command:
|
|
211
|
+
|
|
212
|
+
## Anti-patterns
|
|
213
|
+
|
|
214
|
+
- Treating GitHub labels or comments as the source of truth
|
|
215
|
+
- Creating `.dw/out-of-scope/**` for an already implemented request
|
|
216
|
+
- Matching redundancy only by request wording
|
|
217
|
+
- Routing to `/dw-bugfix` or `/dw-plan prd` before owner approval
|
|
218
|
+
- Writing a bugfix or PRD brief from an unverified claim
|
|
219
|
+
- Promising tracker integrations this command cannot actually read or write
|
|
220
|
+
</system_instructions>
|
|
@@ -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>
|