@gobing-ai/spur 0.2.9 → 0.2.10
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/package.json +1 -1
- package/spur-cli/config/rules/structure/protected-files.yaml +1 -0
- package/spur-cli/config/tasks/section-matrix.yaml +43 -53
- package/spur-cli/config/templates/task/brainstorm.md +30 -0
- package/spur-cli/config/templates/task/feature-impl.md +20 -9
- package/spur-cli/config/templates/task/issue.md +30 -0
- package/spur-cli/config/templates/task/meta.md +29 -1
- package/spur-cli/config/templates/task/review.md +27 -1
- package/spur-cli/config/templates/task/standard.md +20 -9
- package/spur-cli/config/workflows/feature-dev.yaml +0 -1
- package/spur-cli/config/workflows/feature-lifecycle.yaml +0 -1
- package/spur-cli/config/workflows/planning-pipeline.yaml +0 -1
- package/spur-cli/config/workflows/task-lifecycle.yaml +0 -1
- package/spur-cli/config/workflows/task-pipeline.yaml +0 -1
- package/spur.js +19 -19
- package/spur-cli/config/tasks/templates/brainstorm.md +0 -29
- package/spur-cli/config/tasks/templates/feature-impl.md +0 -50
- package/spur-cli/config/tasks/templates/issue.md +0 -33
- package/spur-cli/config/tasks/templates/meta.md +0 -31
- package/spur-cli/config/tasks/templates/review.md +0 -53
- package/spur-cli/config/tasks/templates/standard.md +0 -48
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gobing-ai/spur",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"description": "Spur CLI — local-first harness for mainstream coding agents: constraint checking, workflow orchestration, agent health, and history analytics. Bun-native; exposes the `spur` command.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"spur",
|
|
@@ -14,22 +14,19 @@ variants:
|
|
|
14
14
|
standard:
|
|
15
15
|
backlog:
|
|
16
16
|
required: [Background]
|
|
17
|
-
|
|
17
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
18
18
|
# todo = "ready to execute" (§2.3): fully specified and HITL-reviewable.
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
# the implementation change-map (file:line), authored at wip/testing.
|
|
19
|
+
# Templates intentionally carry the full lifecycle scaffold; required lists
|
|
20
|
+
# express readiness, while optional lists tolerate empty future-stage placeholders.
|
|
22
21
|
todo:
|
|
23
22
|
required: [Background, Acceptance Criteria, Design, Plan]
|
|
24
|
-
optional: [Q&A, Requirements]
|
|
25
|
-
forbidden: [Solution, Review, Testing]
|
|
23
|
+
optional: [Q&A, Requirements, Solution, Testing, Review]
|
|
26
24
|
wip:
|
|
27
25
|
required: [Background, Acceptance Criteria, Design, Plan]
|
|
28
|
-
optional: [Q&A, Requirements, Solution]
|
|
29
|
-
forbidden: [Review]
|
|
26
|
+
optional: [Q&A, Requirements, Solution, Testing, Review]
|
|
30
27
|
testing:
|
|
31
28
|
required: [Solution, Testing]
|
|
32
|
-
optional: [Background, Review]
|
|
29
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Review]
|
|
33
30
|
# done REQUIRES the evidence trio (Solution/Testing/Review). The spec sections
|
|
34
31
|
# a task was built from (Design/Plan/AC/…) are OPTIONAL, not forbidden, so a
|
|
35
32
|
# finished task keeps its design history rather than being stripped to pass the
|
|
@@ -40,27 +37,25 @@ variants:
|
|
|
40
37
|
gate: true
|
|
41
38
|
blocked:
|
|
42
39
|
required: [Background]
|
|
43
|
-
optional: [Plan, Solution]
|
|
40
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
44
41
|
cancelled:
|
|
45
42
|
required: []
|
|
46
|
-
optional: [Background]
|
|
43
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
47
44
|
|
|
48
45
|
# Feature implementation — AC pre-seeded from the linked feature's scenarios.
|
|
49
46
|
feature-impl:
|
|
50
47
|
backlog:
|
|
51
48
|
required: [Background]
|
|
52
|
-
|
|
49
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
53
50
|
todo:
|
|
54
51
|
required: [Background, Acceptance Criteria, Design, Plan]
|
|
55
|
-
optional: [Q&A, Requirements]
|
|
56
|
-
forbidden: [Solution, Review, Testing]
|
|
52
|
+
optional: [Q&A, Requirements, Solution, Testing, Review]
|
|
57
53
|
wip:
|
|
58
54
|
required: [Background, Acceptance Criteria, Design, Plan]
|
|
59
|
-
optional: [Q&A, Requirements, Solution]
|
|
60
|
-
forbidden: [Review]
|
|
55
|
+
optional: [Q&A, Requirements, Solution, Testing, Review]
|
|
61
56
|
testing:
|
|
62
57
|
required: [Solution, Testing]
|
|
63
|
-
optional: [Background, Requirements, Acceptance Criteria, Design, Plan, Review]
|
|
58
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Review]
|
|
64
59
|
# done keeps the spec sections optional (see `standard` rationale above) so a
|
|
65
60
|
# finished feature-impl task retains its Design/Plan/AC history.
|
|
66
61
|
done:
|
|
@@ -69,37 +64,35 @@ variants:
|
|
|
69
64
|
gate: true
|
|
70
65
|
blocked:
|
|
71
66
|
required: [Background]
|
|
72
|
-
optional: [Plan, Solution]
|
|
67
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
73
68
|
cancelled:
|
|
74
69
|
required: []
|
|
75
|
-
optional: [Background]
|
|
70
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
76
71
|
|
|
77
72
|
# Bug / issue report — repro in Background, verified Root Cause, then fix.
|
|
78
73
|
issue:
|
|
79
74
|
backlog:
|
|
80
75
|
required: [Background]
|
|
81
|
-
|
|
76
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Root Cause, Solution, Testing, Review]
|
|
82
77
|
todo:
|
|
83
78
|
required: [Background, Root Cause, Plan]
|
|
84
|
-
optional: [Acceptance Criteria, Design, Q&A]
|
|
85
|
-
forbidden: [Solution, Review]
|
|
79
|
+
optional: [Requirements, Acceptance Criteria, Design, Q&A, Solution, Testing, Review]
|
|
86
80
|
wip:
|
|
87
81
|
required: [Background, Root Cause, Plan]
|
|
88
|
-
optional: [Design, Solution, Q&A]
|
|
89
|
-
forbidden: [Review]
|
|
82
|
+
optional: [Requirements, Acceptance Criteria, Design, Solution, Testing, Review, Q&A]
|
|
90
83
|
testing:
|
|
91
84
|
required: [Root Cause, Solution, Testing]
|
|
92
|
-
optional: [Background, Review]
|
|
85
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Review]
|
|
93
86
|
done:
|
|
94
87
|
required: [Root Cause, Solution, Testing, Review]
|
|
95
|
-
optional: [Background, Acceptance Criteria, Design, Plan
|
|
88
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan]
|
|
96
89
|
gate: true
|
|
97
90
|
blocked:
|
|
98
91
|
required: [Background]
|
|
99
|
-
optional: [Root Cause,
|
|
92
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Root Cause, Solution, Testing, Review]
|
|
100
93
|
cancelled:
|
|
101
94
|
required: []
|
|
102
|
-
optional: [Background]
|
|
95
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Root Cause, Solution, Testing, Review]
|
|
103
96
|
|
|
104
97
|
# Code-review result task — the deliverable is the P1–P4 findings table.
|
|
105
98
|
#
|
|
@@ -117,74 +110,71 @@ variants:
|
|
|
117
110
|
review:
|
|
118
111
|
backlog:
|
|
119
112
|
required: [Background]
|
|
120
|
-
optional: [Plan, Review]
|
|
121
|
-
forbidden: [Testing]
|
|
113
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
122
114
|
todo:
|
|
123
115
|
required: [Background, Plan]
|
|
124
|
-
optional: [Q&A, Requirements, Review]
|
|
125
|
-
forbidden: [Testing]
|
|
116
|
+
optional: [Q&A, Requirements, Acceptance Criteria, Design, Solution, Testing, Review]
|
|
126
117
|
wip:
|
|
127
118
|
required: [Background, Review]
|
|
128
|
-
optional: [
|
|
119
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing]
|
|
129
120
|
testing:
|
|
130
121
|
required: [Background, Review]
|
|
131
|
-
optional: [
|
|
122
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing]
|
|
132
123
|
done:
|
|
133
124
|
required: [Background, Review]
|
|
134
|
-
optional: [
|
|
125
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing]
|
|
135
126
|
gate: true
|
|
136
127
|
blocked:
|
|
137
128
|
required: [Background]
|
|
138
|
-
optional: [Plan,
|
|
129
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
139
130
|
cancelled:
|
|
140
131
|
required: []
|
|
141
|
-
optional: [Background]
|
|
132
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
142
133
|
|
|
143
|
-
# Process / docs / chore —
|
|
134
|
+
# Process / docs / chore — same scaffold, lighter required gates.
|
|
144
135
|
meta:
|
|
145
136
|
backlog:
|
|
146
137
|
required: [Background]
|
|
147
|
-
|
|
138
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
148
139
|
todo:
|
|
149
140
|
required: [Background, Plan]
|
|
150
|
-
optional: [Q&A, Design]
|
|
151
|
-
forbidden: [Review]
|
|
141
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Solution, Testing, Review]
|
|
152
142
|
wip:
|
|
153
143
|
required: [Background, Plan]
|
|
154
|
-
optional: [Q&A, Design, Solution]
|
|
155
|
-
forbidden: [Review]
|
|
144
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Solution, Testing, Review]
|
|
156
145
|
testing:
|
|
157
146
|
required: [Background, Plan]
|
|
158
|
-
optional: [Solution, Testing]
|
|
147
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Solution, Testing, Review]
|
|
159
148
|
done:
|
|
160
149
|
required: [Background, Plan]
|
|
161
|
-
optional: [Solution, Testing, Review]
|
|
150
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Solution, Testing, Review]
|
|
162
151
|
blocked:
|
|
163
152
|
required: [Background]
|
|
164
|
-
optional: [Plan]
|
|
153
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
165
154
|
cancelled:
|
|
166
155
|
required: []
|
|
167
|
-
optional: [Background]
|
|
156
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
168
157
|
|
|
169
158
|
# Brainstorm template (minimal idea capture).
|
|
170
159
|
brainstorm:
|
|
171
160
|
backlog:
|
|
172
161
|
required: [Background]
|
|
173
|
-
|
|
162
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
174
163
|
todo:
|
|
175
164
|
required: [Background]
|
|
176
|
-
optional: [Q&A]
|
|
165
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
177
166
|
wip:
|
|
178
167
|
required: [Background, Plan]
|
|
179
|
-
optional: [Q&A, Design]
|
|
180
|
-
forbidden: [Review]
|
|
168
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Solution, Testing, Review]
|
|
181
169
|
testing:
|
|
182
170
|
required: [Background, Solution]
|
|
183
|
-
optional: [Testing]
|
|
184
|
-
forbidden: [Review]
|
|
171
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Testing, Review]
|
|
185
172
|
done:
|
|
186
173
|
required: [Background, Solution]
|
|
174
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Testing, Review]
|
|
187
175
|
blocked:
|
|
188
176
|
required: [Background]
|
|
177
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
189
178
|
cancelled:
|
|
190
179
|
required: []
|
|
180
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
@@ -20,10 +20,40 @@ updated_at: "{{ CREATED_AT }}"
|
|
|
20
20
|
|
|
21
21
|
{{ BACKGROUND }}
|
|
22
22
|
|
|
23
|
+
### Requirements
|
|
24
|
+
|
|
25
|
+
<!-- Constraints the eventual direction must satisfy, if known. -->
|
|
26
|
+
|
|
27
|
+
### Acceptance Criteria
|
|
28
|
+
|
|
29
|
+
<!-- Decision criteria or success checks for the brainstorm output. Keep empty if not applicable. -->
|
|
30
|
+
|
|
23
31
|
### Q&A
|
|
24
32
|
|
|
33
|
+
<!-- Questions, answers, assumptions, and decision notes from the brainstorm. -->
|
|
34
|
+
|
|
35
|
+
### Design
|
|
36
|
+
|
|
37
|
+
<!-- Candidate approaches, tradeoffs, and selected direction. -->
|
|
38
|
+
|
|
25
39
|
### Plan
|
|
26
40
|
|
|
41
|
+
<!-- Follow-up steps or task/feature creation plan once the idea is ready to execute. -->
|
|
42
|
+
|
|
43
|
+
### Solution
|
|
44
|
+
|
|
45
|
+
<!-- Final synthesized recommendation or output from the brainstorm. -->
|
|
46
|
+
|
|
47
|
+
### Testing
|
|
48
|
+
|
|
49
|
+
<!-- Validation performed for claims, links, or feasibility. Use N/A when not applicable. -->
|
|
50
|
+
|
|
51
|
+
### Review
|
|
52
|
+
|
|
53
|
+
<!-- Risks, open concerns, and follow-up review notes. -->
|
|
54
|
+
|
|
27
55
|
### References
|
|
28
56
|
|
|
57
|
+
<!-- Links to docs, examples, related tasks/features, or external references. -->
|
|
58
|
+
|
|
29
59
|
### History
|
|
@@ -20,31 +20,42 @@ updated_at: "{{ CREATED_AT }}"
|
|
|
20
20
|
|
|
21
21
|
{{ BACKGROUND }}
|
|
22
22
|
|
|
23
|
+
### Requirements
|
|
24
|
+
|
|
25
|
+
<!-- R-numbered list derived from the linked feature or refined task scope. -->
|
|
26
|
+
|
|
23
27
|
### Acceptance Criteria
|
|
24
28
|
|
|
25
|
-
|
|
26
|
-
Feature: {{ NAME }}
|
|
29
|
+
<!-- Copy or derive real scenarios from the linked feature. Do not leave placeholder AC here. -->
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
Given a precondition
|
|
30
|
-
When an action is taken
|
|
31
|
-
Then an expected result occurs
|
|
32
|
-
```
|
|
31
|
+
### Q&A
|
|
33
32
|
|
|
34
|
-
|
|
33
|
+
<!-- Clarifications and decisions made during refinement. Keep empty if none. -->
|
|
35
34
|
|
|
36
35
|
### Design
|
|
37
36
|
|
|
37
|
+
<!-- Chosen implementation approach, key tradeoffs, invariants, and impacted surfaces. -->
|
|
38
|
+
|
|
38
39
|
### Plan
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
<!-- Ordered implementation checklist. Fill before moving to todo/wip. -->
|
|
41
42
|
|
|
42
43
|
### Solution
|
|
43
44
|
|
|
45
|
+
<!-- Filled during implementation: file:line change map and concise rationale. -->
|
|
46
|
+
|
|
44
47
|
### Testing
|
|
45
48
|
|
|
49
|
+
<!-- Filled during verification: commands run, outcomes, coverage claim or N/A. -->
|
|
50
|
+
|
|
46
51
|
### Review
|
|
47
52
|
|
|
53
|
+
<!-- Filled during review: P1-P4 findings, residual risk, and final disposition. -->
|
|
54
|
+
|
|
48
55
|
### References
|
|
49
56
|
|
|
57
|
+
{{ FEATURE_ID }}
|
|
58
|
+
|
|
59
|
+
<!-- Links to the parent feature, design docs, related tasks, or external references. -->
|
|
60
|
+
|
|
50
61
|
### History
|
|
@@ -20,14 +20,44 @@ updated_at: "{{ CREATED_AT }}"
|
|
|
20
20
|
|
|
21
21
|
{{ BACKGROUND }}
|
|
22
22
|
|
|
23
|
+
### Requirements
|
|
24
|
+
|
|
25
|
+
<!-- R-numbered expectations for the fix. Include repro/expected behavior if it helps traceability. -->
|
|
26
|
+
|
|
27
|
+
### Acceptance Criteria
|
|
28
|
+
|
|
29
|
+
<!-- Given/When/Then regression scenario or checklist proving the bug is fixed. -->
|
|
30
|
+
|
|
31
|
+
### Q&A
|
|
32
|
+
|
|
33
|
+
<!-- Clarifications and triage decisions. Keep empty if none. -->
|
|
34
|
+
|
|
35
|
+
### Design
|
|
36
|
+
|
|
37
|
+
<!-- Fix approach and tradeoffs. Keep this short unless the issue changes architecture. -->
|
|
38
|
+
|
|
39
|
+
### Plan
|
|
40
|
+
|
|
41
|
+
<!-- Ordered debugging/fix checklist. Fill before moving to todo/wip. -->
|
|
42
|
+
|
|
23
43
|
### Root Cause
|
|
24
44
|
|
|
45
|
+
<!-- Verified underlying cause with file:line evidence. Fill once reproduced/isolated. -->
|
|
46
|
+
|
|
25
47
|
### Solution
|
|
26
48
|
|
|
49
|
+
<!-- Filled during implementation: file:line change map and concise rationale. -->
|
|
50
|
+
|
|
27
51
|
### Testing
|
|
28
52
|
|
|
53
|
+
<!-- Filled during verification: regression command(s), outcomes, coverage claim or N/A. -->
|
|
54
|
+
|
|
29
55
|
### Review
|
|
30
56
|
|
|
57
|
+
<!-- Filled during review: P1-P4 findings, residual risk, and final disposition. -->
|
|
58
|
+
|
|
31
59
|
### References
|
|
32
60
|
|
|
61
|
+
<!-- Links to failing logs, related issues, tasks, docs, or external references. -->
|
|
62
|
+
|
|
33
63
|
### History
|
|
@@ -20,12 +20,40 @@ updated_at: "{{ CREATED_AT }}"
|
|
|
20
20
|
|
|
21
21
|
{{ BACKGROUND }}
|
|
22
22
|
|
|
23
|
+
### Requirements
|
|
24
|
+
|
|
25
|
+
<!-- R-numbered expectations for the process/docs/chore outcome. Keep empty if not applicable. -->
|
|
26
|
+
|
|
27
|
+
### Acceptance Criteria
|
|
28
|
+
|
|
29
|
+
<!-- Lightweight checklist or Given/When/Then if there is an observable completion condition. -->
|
|
30
|
+
|
|
31
|
+
### Q&A
|
|
32
|
+
|
|
33
|
+
<!-- Clarifications and decisions made during refinement. Keep empty if none. -->
|
|
34
|
+
|
|
35
|
+
### Design
|
|
36
|
+
|
|
37
|
+
<!-- Approach and tradeoffs for process/docs/config changes. Keep this short. -->
|
|
38
|
+
|
|
23
39
|
### Plan
|
|
24
40
|
|
|
25
|
-
|
|
41
|
+
<!-- Ordered checklist. Fill before moving to todo/wip. -->
|
|
42
|
+
|
|
43
|
+
### Solution
|
|
44
|
+
|
|
45
|
+
<!-- Filled during implementation: changed files/sections and concise rationale. -->
|
|
26
46
|
|
|
27
47
|
### Testing
|
|
28
48
|
|
|
49
|
+
<!-- Filled during verification: commands/checks run, outcomes, coverage claim or N/A. -->
|
|
50
|
+
|
|
51
|
+
### Review
|
|
52
|
+
|
|
53
|
+
<!-- Filled during review: P1-P4 findings, residual risk, and final disposition. -->
|
|
54
|
+
|
|
29
55
|
### References
|
|
30
56
|
|
|
57
|
+
<!-- Links to docs, tasks, decisions, or external references. -->
|
|
58
|
+
|
|
31
59
|
### History
|
|
@@ -4,7 +4,6 @@ name: "{{ NAME }}"
|
|
|
4
4
|
description: ""
|
|
5
5
|
status: backlog
|
|
6
6
|
type: review
|
|
7
|
-
template: review
|
|
8
7
|
profile: standard
|
|
9
8
|
feature_id: null
|
|
10
9
|
parent_wbs: null
|
|
@@ -31,12 +30,37 @@ in the reviewed PR/commit/diff). Fix in priority order (P1 → P2 → …); re-r
|
|
|
31
30
|
| P1 | | | |
|
|
32
31
|
| P2 | | | |
|
|
33
32
|
|
|
33
|
+
### Requirements
|
|
34
|
+
|
|
35
|
+
<!-- R-numbered fix requirements derived from the findings. Fill after triage/refinement. -->
|
|
36
|
+
|
|
37
|
+
### Acceptance Criteria
|
|
38
|
+
|
|
39
|
+
<!-- Checks that prove the findings were addressed. Keep empty until the review task becomes executable work. -->
|
|
40
|
+
|
|
41
|
+
### Q&A
|
|
42
|
+
|
|
43
|
+
<!-- Clarifications, false positives, accepted risk, and triage decisions. -->
|
|
44
|
+
|
|
45
|
+
### Design
|
|
46
|
+
|
|
47
|
+
<!-- Fix approach and tradeoffs if the findings require design judgment. -->
|
|
48
|
+
|
|
34
49
|
### Plan
|
|
35
50
|
|
|
36
51
|
- [ ] Fix P1 findings
|
|
37
52
|
- [ ] Fix P2 findings
|
|
53
|
+
- [ ] Fix all the remaining findings if any
|
|
38
54
|
- [ ] Re-review the changed code
|
|
39
55
|
|
|
56
|
+
### Solution
|
|
57
|
+
|
|
58
|
+
<!-- Filled during implementation: file:line change map and concise rationale. -->
|
|
59
|
+
|
|
60
|
+
### Testing
|
|
61
|
+
|
|
62
|
+
<!-- Filled during verification: commands/checks run, outcomes, coverage claim or N/A. -->
|
|
63
|
+
|
|
40
64
|
### Review
|
|
41
65
|
|
|
42
66
|
Post-implementation reflection — filled **after** the first fix round: what went wrong, what
|
|
@@ -49,4 +73,6 @@ remains to fix before closing, and any **back-issues** (new findings surfaced by
|
|
|
49
73
|
|
|
50
74
|
### References
|
|
51
75
|
|
|
76
|
+
<!-- Links to source review, dogfood report, PR/diff, related tasks, or external references. -->
|
|
77
|
+
|
|
52
78
|
### History
|
|
@@ -20,29 +20,40 @@ updated_at: "{{ CREATED_AT }}"
|
|
|
20
20
|
|
|
21
21
|
{{ BACKGROUND }}
|
|
22
22
|
|
|
23
|
+
### Requirements
|
|
24
|
+
|
|
25
|
+
<!-- R-numbered list of what must be true when this task is complete. Keep empty until requirements are known. -->
|
|
26
|
+
|
|
23
27
|
### Acceptance Criteria
|
|
24
28
|
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
<!-- Given/When/Then scenarios or a checklist derived from Requirements. Keep empty if this task has no objective AC yet. -->
|
|
30
|
+
|
|
31
|
+
### Q&A
|
|
32
|
+
|
|
33
|
+
<!-- Clarifications and decisions made during refinement. Keep empty if none. -->
|
|
27
34
|
|
|
28
|
-
|
|
29
|
-
Given a precondition
|
|
30
|
-
When an action is taken
|
|
31
|
-
Then an expected result occurs
|
|
32
|
-
```
|
|
35
|
+
### Design
|
|
33
36
|
|
|
34
|
-
|
|
37
|
+
<!-- Chosen approach, key tradeoffs, invariants, and impacted surfaces. Keep snippets short. -->
|
|
35
38
|
|
|
36
39
|
### Plan
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
<!-- Ordered implementation checklist. Fill before moving to todo/wip. -->
|
|
39
42
|
|
|
40
43
|
### Solution
|
|
41
44
|
|
|
45
|
+
<!-- Filled during implementation: file:line change map and concise rationale. -->
|
|
46
|
+
|
|
42
47
|
### Testing
|
|
43
48
|
|
|
49
|
+
<!-- Filled during verification: commands run, outcomes, coverage claim or N/A. -->
|
|
50
|
+
|
|
44
51
|
### Review
|
|
45
52
|
|
|
53
|
+
<!-- Filled during review: P1-P4 findings, residual risk, and final disposition. -->
|
|
54
|
+
|
|
46
55
|
### References
|
|
47
56
|
|
|
57
|
+
<!-- Links to features, docs, ADRs, related tasks, or external references. -->
|
|
58
|
+
|
|
48
59
|
### History
|
package/spur.js
CHANGED
|
@@ -58899,7 +58899,7 @@ function renderTesting(v) {
|
|
|
58899
58899
|
lines.push(`| ${req.id} | ${req.status} | ${evidence} |`);
|
|
58900
58900
|
}
|
|
58901
58901
|
}
|
|
58902
|
-
lines.push("");
|
|
58902
|
+
lines.push("- Coverage: N/A (verdict-based; verify pipeline does not measure code coverage)");
|
|
58903
58903
|
return lines.join(`
|
|
58904
58904
|
`);
|
|
58905
58905
|
}
|
|
@@ -59054,7 +59054,7 @@ function sectionIsBare(doc2, name) {
|
|
|
59054
59054
|
const body = doc2.getSection(name);
|
|
59055
59055
|
if (body === null)
|
|
59056
59056
|
return true;
|
|
59057
|
-
const trimmed = body.trim();
|
|
59057
|
+
const trimmed = body.replace(/<!--[\s\S]*?-->/g, "").trim();
|
|
59058
59058
|
if (trimmed === "")
|
|
59059
59059
|
return true;
|
|
59060
59060
|
if (/^Pipeline run \d{4}\b/.test(trimmed))
|
|
@@ -68864,7 +68864,7 @@ import { join as join13, resolve as resolve4 } from "path";
|
|
|
68864
68864
|
var CLI_CONFIG = {
|
|
68865
68865
|
binaryName: "spur",
|
|
68866
68866
|
binaryLabel: "spur",
|
|
68867
|
-
binaryVersion: "0.2.
|
|
68867
|
+
binaryVersion: "0.2.10",
|
|
68868
68868
|
configDir: ".spur",
|
|
68869
68869
|
configFile: ".spur/config.yaml",
|
|
68870
68870
|
databaseFile: ".spur/spur.db"
|
|
@@ -68874,21 +68874,21 @@ var CLI_CONFIG = {
|
|
|
68874
68874
|
var SCAFFOLD_MANIFEST = [
|
|
68875
68875
|
{ source: "rules/recommended-pre-check.yaml", target: "rules/recommended-pre-check.yaml" },
|
|
68876
68876
|
{ source: "rules/recommended-post-check.yaml", target: "rules/recommended-post-check.yaml" },
|
|
68877
|
-
{ source: "workflows/basic.yaml", target: "
|
|
68878
|
-
{ source: "workflows/task-lifecycle.yaml", target: "
|
|
68879
|
-
{ source: "workflows/feature-lifecycle.yaml", target: "
|
|
68880
|
-
{ source: "workflows/feature-dev.yaml", target: "
|
|
68881
|
-
{ source: "workflows/task-pipeline.yaml", target: "
|
|
68882
|
-
{ source: "workflows/planning-pipeline.yaml", target: "
|
|
68877
|
+
{ source: "workflows/basic.yaml", target: "workflows/basic.yaml" },
|
|
68878
|
+
{ source: "workflows/task-lifecycle.yaml", target: "workflows/task-lifecycle.yaml" },
|
|
68879
|
+
{ source: "workflows/feature-lifecycle.yaml", target: "workflows/feature-lifecycle.yaml" },
|
|
68880
|
+
{ source: "workflows/feature-dev.yaml", target: "workflows/feature-dev.yaml" },
|
|
68881
|
+
{ source: "workflows/task-pipeline.yaml", target: "workflows/task-pipeline.yaml" },
|
|
68882
|
+
{ source: "workflows/planning-pipeline.yaml", target: "workflows/planning-pipeline.yaml" },
|
|
68883
68883
|
{ source: "tasks/section-matrix.yaml", target: "tasks/section-matrix.yaml" },
|
|
68884
68884
|
{ source: "templates/task/standard.md", target: "tasks/templates/standard.md" },
|
|
68885
68885
|
{ source: "templates/task/feature-impl.md", target: "tasks/templates/feature-impl.md" },
|
|
68886
68886
|
{ source: "templates/task/issue.md", target: "tasks/templates/issue.md" },
|
|
68887
68887
|
{ source: "templates/task/review.md", target: "tasks/templates/review.md" },
|
|
68888
68888
|
{ source: "templates/task/meta.md", target: "tasks/templates/meta.md" },
|
|
68889
|
-
{ source: "templates/feature/default.md", target: "
|
|
68890
|
-
{ source: "templates/bdd/gherkin.md", target: "
|
|
68891
|
-
{ source: "templates/bdd/checklist.md", target: "
|
|
68889
|
+
{ source: "templates/feature/default.md", target: "templates/feature/default.md" },
|
|
68890
|
+
{ source: "templates/bdd/gherkin.md", target: "templates/bdd/gherkin.md" },
|
|
68891
|
+
{ source: "templates/bdd/checklist.md", target: "templates/bdd/checklist.md" },
|
|
68892
68892
|
{
|
|
68893
68893
|
source: "templates/docs/99_PROJECT_CONSTITUTION.md",
|
|
68894
68894
|
target: "docs/99_PROJECT_CONSTITUTION.md",
|
|
@@ -68901,13 +68901,13 @@ var SCAFFOLD_MANIFEST = [
|
|
|
68901
68901
|
{ source: "templates/docs/03_ARCHITECTURE.md", target: "docs/03_ARCHITECTURE.md", root: true, preserve: true },
|
|
68902
68902
|
{ source: "templates/docs/04_DESIGN.md", target: "docs/04_DESIGN.md", root: true, preserve: true },
|
|
68903
68903
|
{ source: "templates/docs/05_FEATURES.md", target: "docs/05_FEATURES.md", root: true, preserve: true },
|
|
68904
|
-
{ source: "templates/docs/99_PROJECT_CONSTITUTION.md", target: "
|
|
68905
|
-
{ source: "templates/docs/00_ADR.md", target: "
|
|
68906
|
-
{ source: "templates/docs/01_PRD.md", target: "
|
|
68907
|
-
{ source: "templates/docs/02_ROADMAP.md", target: "
|
|
68908
|
-
{ source: "templates/docs/03_ARCHITECTURE.md", target: "
|
|
68909
|
-
{ source: "templates/docs/04_DESIGN.md", target: "
|
|
68910
|
-
{ source: "templates/docs/05_FEATURES.md", target: "
|
|
68904
|
+
{ source: "templates/docs/99_PROJECT_CONSTITUTION.md", target: "templates/docs/99_PROJECT_CONSTITUTION.md" },
|
|
68905
|
+
{ source: "templates/docs/00_ADR.md", target: "templates/docs/00_ADR.md" },
|
|
68906
|
+
{ source: "templates/docs/01_PRD.md", target: "templates/docs/01_PRD.md" },
|
|
68907
|
+
{ source: "templates/docs/02_ROADMAP.md", target: "templates/docs/02_ROADMAP.md" },
|
|
68908
|
+
{ source: "templates/docs/03_ARCHITECTURE.md", target: "templates/docs/03_ARCHITECTURE.md" },
|
|
68909
|
+
{ source: "templates/docs/04_DESIGN.md", target: "templates/docs/04_DESIGN.md" },
|
|
68910
|
+
{ source: "templates/docs/05_FEATURES.md", target: "templates/docs/05_FEATURES.md" }
|
|
68911
68911
|
];
|
|
68912
68912
|
|
|
68913
68913
|
// src/commands/init.ts
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
schema_version: 1
|
|
3
|
-
name: "{{ NAME }}"
|
|
4
|
-
description: ""
|
|
5
|
-
status: backlog
|
|
6
|
-
type: brainstorm
|
|
7
|
-
profile: standard
|
|
8
|
-
feature_id: null
|
|
9
|
-
parent_wbs: null
|
|
10
|
-
priority: P2
|
|
11
|
-
tags: []
|
|
12
|
-
dependencies: []
|
|
13
|
-
created_at: "{{ CREATED_AT }}"
|
|
14
|
-
updated_at: "{{ CREATED_AT }}"
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## {{ WBS }}. {{ NAME }}
|
|
18
|
-
|
|
19
|
-
### Background
|
|
20
|
-
|
|
21
|
-
{{ BACKGROUND }}
|
|
22
|
-
|
|
23
|
-
### Q&A
|
|
24
|
-
|
|
25
|
-
### Plan
|
|
26
|
-
|
|
27
|
-
### References
|
|
28
|
-
|
|
29
|
-
### History
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
schema_version: 1
|
|
3
|
-
name: "{{ NAME }}"
|
|
4
|
-
description: ""
|
|
5
|
-
status: backlog
|
|
6
|
-
type: task
|
|
7
|
-
profile: standard
|
|
8
|
-
feature_id: null
|
|
9
|
-
parent_wbs: null
|
|
10
|
-
priority: P2
|
|
11
|
-
tags: []
|
|
12
|
-
dependencies: []
|
|
13
|
-
created_at: "{{ CREATED_AT }}"
|
|
14
|
-
updated_at: "{{ CREATED_AT }}"
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## {{ WBS }}. {{ NAME }}
|
|
18
|
-
|
|
19
|
-
### Background
|
|
20
|
-
|
|
21
|
-
{{ BACKGROUND }}
|
|
22
|
-
|
|
23
|
-
### Acceptance Criteria
|
|
24
|
-
|
|
25
|
-
```gherkin
|
|
26
|
-
Feature: {{ NAME }}
|
|
27
|
-
|
|
28
|
-
Scenario: Basic acceptance
|
|
29
|
-
Given a precondition
|
|
30
|
-
When an action is taken
|
|
31
|
-
Then an expected result occurs
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
- [ ] Acceptance checklist item
|
|
35
|
-
|
|
36
|
-
### Design
|
|
37
|
-
|
|
38
|
-
### Plan
|
|
39
|
-
|
|
40
|
-
- [ ] Implementation step
|
|
41
|
-
|
|
42
|
-
### Solution
|
|
43
|
-
|
|
44
|
-
### Testing
|
|
45
|
-
|
|
46
|
-
### Review
|
|
47
|
-
|
|
48
|
-
### References
|
|
49
|
-
|
|
50
|
-
### History
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
schema_version: 1
|
|
3
|
-
name: "{{ NAME }}"
|
|
4
|
-
description: ""
|
|
5
|
-
status: backlog
|
|
6
|
-
type: issue
|
|
7
|
-
profile: standard
|
|
8
|
-
feature_id: null
|
|
9
|
-
parent_wbs: null
|
|
10
|
-
priority: P2
|
|
11
|
-
tags: ["bug"]
|
|
12
|
-
dependencies: []
|
|
13
|
-
created_at: "{{ CREATED_AT }}"
|
|
14
|
-
updated_at: "{{ CREATED_AT }}"
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## {{ WBS }}. {{ NAME }}
|
|
18
|
-
|
|
19
|
-
### Background
|
|
20
|
-
|
|
21
|
-
{{ BACKGROUND }}
|
|
22
|
-
|
|
23
|
-
### Root Cause
|
|
24
|
-
|
|
25
|
-
### Solution
|
|
26
|
-
|
|
27
|
-
### Testing
|
|
28
|
-
|
|
29
|
-
### Review
|
|
30
|
-
|
|
31
|
-
### References
|
|
32
|
-
|
|
33
|
-
### History
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
schema_version: 1
|
|
3
|
-
name: "{{ NAME }}"
|
|
4
|
-
description: ""
|
|
5
|
-
status: backlog
|
|
6
|
-
type: meta
|
|
7
|
-
profile: standard
|
|
8
|
-
feature_id: null
|
|
9
|
-
parent_wbs: null
|
|
10
|
-
priority: P2
|
|
11
|
-
tags: ["meta"]
|
|
12
|
-
dependencies: []
|
|
13
|
-
created_at: "{{ CREATED_AT }}"
|
|
14
|
-
updated_at: "{{ CREATED_AT }}"
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## {{ WBS }}. {{ NAME }}
|
|
18
|
-
|
|
19
|
-
### Background
|
|
20
|
-
|
|
21
|
-
{{ BACKGROUND }}
|
|
22
|
-
|
|
23
|
-
### Plan
|
|
24
|
-
|
|
25
|
-
- [ ] Implementation step
|
|
26
|
-
|
|
27
|
-
### Testing
|
|
28
|
-
|
|
29
|
-
### References
|
|
30
|
-
|
|
31
|
-
### History
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
schema_version: 1
|
|
3
|
-
name: "{{ NAME }}"
|
|
4
|
-
description: ""
|
|
5
|
-
status: backlog
|
|
6
|
-
type: review
|
|
7
|
-
template: review
|
|
8
|
-
profile: standard
|
|
9
|
-
feature_id: null
|
|
10
|
-
parent_wbs: null
|
|
11
|
-
priority: P2
|
|
12
|
-
tags: ["review"]
|
|
13
|
-
dependencies: []
|
|
14
|
-
created_at: "{{ CREATED_AT }}"
|
|
15
|
-
updated_at: "{{ CREATED_AT }}"
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## {{ WBS }}. {{ NAME }}
|
|
19
|
-
|
|
20
|
-
### Background
|
|
21
|
-
|
|
22
|
-
{{ BACKGROUND }}
|
|
23
|
-
|
|
24
|
-
#### Review Findings
|
|
25
|
-
|
|
26
|
-
The code-review findings this task must address — logged here as **input** (what was found
|
|
27
|
-
in the reviewed PR/commit/diff). Fix in priority order (P1 → P2 → …); re-review after.
|
|
28
|
-
|
|
29
|
-
| Severity | File | Finding | Recommendation |
|
|
30
|
-
| -------- | ---- | ------- | -------------- |
|
|
31
|
-
| P1 | | | |
|
|
32
|
-
| P2 | | | |
|
|
33
|
-
|
|
34
|
-
### Plan
|
|
35
|
-
|
|
36
|
-
- [ ] Fix P1 findings
|
|
37
|
-
- [ ] Fix P2 findings
|
|
38
|
-
- [ ] Fix all the remaining findings if any
|
|
39
|
-
- [ ] Re-review the changed code
|
|
40
|
-
|
|
41
|
-
### Review
|
|
42
|
-
|
|
43
|
-
Post-implementation reflection — filled **after** the first fix round: what went wrong, what
|
|
44
|
-
remains to fix before closing, and any **back-issues** (new findings surfaced by the fix).
|
|
45
|
-
|
|
46
|
-
| Severity | File | Finding | Recommendation |
|
|
47
|
-
| -------- | ---- | ------- | -------------- |
|
|
48
|
-
| P1 | | | |
|
|
49
|
-
| P2 | | | |
|
|
50
|
-
|
|
51
|
-
### References
|
|
52
|
-
|
|
53
|
-
### History
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
schema_version: 1
|
|
3
|
-
name: "{{ NAME }}"
|
|
4
|
-
description: ""
|
|
5
|
-
status: backlog
|
|
6
|
-
type: task
|
|
7
|
-
profile: standard
|
|
8
|
-
feature_id: null
|
|
9
|
-
parent_wbs: null
|
|
10
|
-
priority: P2
|
|
11
|
-
tags: []
|
|
12
|
-
dependencies: []
|
|
13
|
-
created_at: "{{ CREATED_AT }}"
|
|
14
|
-
updated_at: "{{ CREATED_AT }}"
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## {{ WBS }}. {{ NAME }}
|
|
18
|
-
|
|
19
|
-
### Background
|
|
20
|
-
|
|
21
|
-
{{ BACKGROUND }}
|
|
22
|
-
|
|
23
|
-
### Acceptance Criteria
|
|
24
|
-
|
|
25
|
-
```gherkin
|
|
26
|
-
Feature: {{ NAME }}
|
|
27
|
-
|
|
28
|
-
Scenario: Basic acceptance
|
|
29
|
-
Given a precondition
|
|
30
|
-
When an action is taken
|
|
31
|
-
Then an expected result occurs
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
- [ ] Acceptance checklist item
|
|
35
|
-
|
|
36
|
-
### Plan
|
|
37
|
-
|
|
38
|
-
- [ ] Implementation step
|
|
39
|
-
|
|
40
|
-
### Solution
|
|
41
|
-
|
|
42
|
-
### Testing
|
|
43
|
-
|
|
44
|
-
### Review
|
|
45
|
-
|
|
46
|
-
### References
|
|
47
|
-
|
|
48
|
-
### History
|