@gobing-ai/spur 0.2.8 → 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/rules/structure/test-location.yaml +1 -0
- package/spur-cli/config/tasks/section-matrix.yaml +48 -56
- 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 +8 -5
- 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 +12 -7
- package/spur.js +222 -45
- 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 -48
- 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
|
#
|
|
@@ -108,81 +101,80 @@ variants:
|
|
|
108
101
|
# Plan and Review are optional at backlog/todo so the template renders cleanly;
|
|
109
102
|
# Review becomes required at wip+.
|
|
110
103
|
#
|
|
111
|
-
#
|
|
112
|
-
#
|
|
113
|
-
#
|
|
104
|
+
# Requirements is optional from todo onward (the authoring stage where a refined
|
|
105
|
+
# review-findings task gains scoped requirements); Solution and Testing are optional
|
|
106
|
+
# at wip+ — none required, but tolerated so that a review-findings task that evolves
|
|
107
|
+
# into implementation work (the common dogfood follow-up path) can carry scoped
|
|
108
|
+
# requirements, a change-map, and coverage data without matrix violations.
|
|
114
109
|
# The required list guards the real deliverables; optional is permissive on purpose.
|
|
115
110
|
review:
|
|
116
111
|
backlog:
|
|
117
112
|
required: [Background]
|
|
118
|
-
optional: [Plan, Review]
|
|
119
|
-
forbidden: [Testing]
|
|
113
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
120
114
|
todo:
|
|
121
115
|
required: [Background, Plan]
|
|
122
|
-
optional: [Q&A, Review]
|
|
123
|
-
forbidden: [Testing]
|
|
116
|
+
optional: [Q&A, Requirements, Acceptance Criteria, Design, Solution, Testing, Review]
|
|
124
117
|
wip:
|
|
125
118
|
required: [Background, Review]
|
|
126
|
-
optional: [
|
|
119
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing]
|
|
127
120
|
testing:
|
|
128
121
|
required: [Background, Review]
|
|
129
|
-
optional: [Plan, Solution, Testing]
|
|
122
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing]
|
|
130
123
|
done:
|
|
131
124
|
required: [Background, Review]
|
|
132
|
-
optional: [
|
|
125
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing]
|
|
133
126
|
gate: true
|
|
134
127
|
blocked:
|
|
135
128
|
required: [Background]
|
|
136
|
-
optional: [Plan,
|
|
129
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
137
130
|
cancelled:
|
|
138
131
|
required: []
|
|
139
|
-
optional: [Background]
|
|
132
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
140
133
|
|
|
141
|
-
# Process / docs / chore —
|
|
134
|
+
# Process / docs / chore — same scaffold, lighter required gates.
|
|
142
135
|
meta:
|
|
143
136
|
backlog:
|
|
144
137
|
required: [Background]
|
|
145
|
-
|
|
138
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
146
139
|
todo:
|
|
147
140
|
required: [Background, Plan]
|
|
148
|
-
optional: [Q&A, Design]
|
|
149
|
-
forbidden: [Review]
|
|
141
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Solution, Testing, Review]
|
|
150
142
|
wip:
|
|
151
143
|
required: [Background, Plan]
|
|
152
|
-
optional: [Q&A, Design, Solution]
|
|
153
|
-
forbidden: [Review]
|
|
144
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Solution, Testing, Review]
|
|
154
145
|
testing:
|
|
155
146
|
required: [Background, Plan]
|
|
156
|
-
optional: [Solution, Testing]
|
|
147
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Solution, Testing, Review]
|
|
157
148
|
done:
|
|
158
149
|
required: [Background, Plan]
|
|
159
|
-
optional: [Solution, Testing, Review]
|
|
150
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Solution, Testing, Review]
|
|
160
151
|
blocked:
|
|
161
152
|
required: [Background]
|
|
162
|
-
optional: [Plan]
|
|
153
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
163
154
|
cancelled:
|
|
164
155
|
required: []
|
|
165
|
-
optional: [Background]
|
|
156
|
+
optional: [Background, Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
166
157
|
|
|
167
158
|
# Brainstorm template (minimal idea capture).
|
|
168
159
|
brainstorm:
|
|
169
160
|
backlog:
|
|
170
161
|
required: [Background]
|
|
171
|
-
|
|
162
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
172
163
|
todo:
|
|
173
164
|
required: [Background]
|
|
174
|
-
optional: [Q&A]
|
|
165
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
175
166
|
wip:
|
|
176
167
|
required: [Background, Plan]
|
|
177
|
-
optional: [Q&A, Design]
|
|
178
|
-
forbidden: [Review]
|
|
168
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Solution, Testing, Review]
|
|
179
169
|
testing:
|
|
180
170
|
required: [Background, Solution]
|
|
181
|
-
optional: [Testing]
|
|
182
|
-
forbidden: [Review]
|
|
171
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Testing, Review]
|
|
183
172
|
done:
|
|
184
173
|
required: [Background, Solution]
|
|
174
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Testing, Review]
|
|
185
175
|
blocked:
|
|
186
176
|
required: [Background]
|
|
177
|
+
optional: [Requirements, Acceptance Criteria, Q&A, Design, Plan, Solution, Testing, Review]
|
|
187
178
|
cancelled:
|
|
188
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
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
$schema: "@gobing-ai/spur/schemas/state-machine-workflow.schema.json"
|
|
2
1
|
"$schema": "@gobing-ai/spur/schemas/state-machine-workflow.schema.json"
|
|
3
2
|
kind: state-machine
|
|
4
3
|
name: feature-dev
|
|
@@ -63,7 +62,7 @@ states:
|
|
|
63
62
|
description: >
|
|
64
63
|
Drive EVERY pending task under the feature to done. The agent enumerates the work with
|
|
65
64
|
`spur task list --feature ${featureId} --status todo --json`, then runs each task through
|
|
66
|
-
task-pipeline.yaml (
|
|
65
|
+
task-pipeline.yaml (precheck → implement → test → review → approve → verify → record → done). It
|
|
67
66
|
stops and reports on the first non-PASS verdict — a failing task fails the feature.
|
|
68
67
|
onEnter:
|
|
69
68
|
- kind: agent.run
|
|
@@ -71,9 +70,13 @@ states:
|
|
|
71
70
|
agent: ${vars.agent}
|
|
72
71
|
input: >
|
|
73
72
|
Run every pending task under feature ${vars.featureId} to done. Enumerate with
|
|
74
|
-
`${vars.spurBin} task list --feature ${vars.featureId} --status todo --json
|
|
75
|
-
for each
|
|
76
|
-
|
|
73
|
+
`${vars.spurBin} task list --feature ${vars.featureId} --status todo --json`; then
|
|
74
|
+
for each WBS run the standard single-task pipeline VERBATIM:
|
|
75
|
+
`${vars.spurBin} workflow run config/workflows/task-pipeline.yaml --vars
|
|
76
|
+
'{"wbs":"<wbs>","profile":"${vars.profile}","agent":"${vars.agent}"}' --async --json`,
|
|
77
|
+
polling `${vars.spurBin} workflow trace <run-id>` until terminal and inspecting
|
|
78
|
+
`.spur/run/<wbs>-verdict.json`. Stop and report on the first non-PASS verdict
|
|
79
|
+
(a failing task fails the feature).
|
|
77
80
|
|
|
78
81
|
- id: feature-verify
|
|
79
82
|
description: >
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
$schema: "@gobing-ai/spur/schemas/state-machine-workflow.schema.json"
|
|
2
1
|
# Task execution pipeline — one run per execution attempt of a task (design §6).
|
|
3
2
|
#
|
|
4
3
|
# Orchestration is configuration (ADR-022 / §3.2): this is YAML over the existing
|
|
@@ -56,20 +55,26 @@ states:
|
|
|
56
55
|
|
|
57
56
|
- id: implement
|
|
58
57
|
description: >
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
Run agent-driven implementation via /sp:dev-run --mode implement, THEN move the
|
|
59
|
+
task to `wip` via the normal verb. The lifecycle transition fires AFTER the
|
|
60
|
+
implement agent.run succeeds — onEnter runs in declaration order and the default
|
|
61
|
+
'fail' policy halts the sequence (routing the run to `failed`) if the agent.run
|
|
62
|
+
fails or times out, so a halted implement never leaves the task at `wip` with an
|
|
63
|
+
empty Solution (the F3 half-state). The `--no-lifecycle` flag is correct here: the
|
|
64
|
+
pipeline owns this transition; the FSM guard would otherwise re-run `spur task
|
|
65
|
+
check`, which is precheck's job.
|
|
61
66
|
NOTE: this step must NOT call /sp:dev-run in full mode (the default) —
|
|
62
67
|
that command DRIVES this pipeline, so calling it here recurses.
|
|
63
68
|
--mode implement is the single-step implement entry.
|
|
64
69
|
onEnter:
|
|
65
|
-
- kind: shell
|
|
66
|
-
options:
|
|
67
|
-
command: "${vars.spurBin} task update ${vars.wbs} wip --no-lifecycle"
|
|
68
70
|
- kind: agent.run
|
|
69
71
|
options:
|
|
70
72
|
agent: ${vars.agent}
|
|
71
73
|
input: /sp:dev-run --mode implement ${vars.wbs} --auto
|
|
72
74
|
timeoutMs: ${vars.stepTimeoutMs}
|
|
75
|
+
- kind: shell
|
|
76
|
+
options:
|
|
77
|
+
command: "${vars.spurBin} task update ${vars.wbs} wip --no-lifecycle"
|
|
73
78
|
|
|
74
79
|
- id: test
|
|
75
80
|
description: Test execution + coverage via /sp:dev-unit.
|
|
@@ -81,7 +86,7 @@ states:
|
|
|
81
86
|
timeoutMs: ${vars.stepTimeoutMs}
|
|
82
87
|
|
|
83
88
|
- id: review
|
|
84
|
-
description:
|
|
89
|
+
description: SECUA-framework code review via /sp:dev-review (Security, Efficiency, Correctness, Usability, Architecture).
|
|
85
90
|
onEnter:
|
|
86
91
|
- kind: agent.run
|
|
87
92
|
options:
|