@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobing-ai/spur",
3
- "version": "0.2.8",
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",
@@ -26,6 +26,7 @@ rules:
26
26
  - ".test.ts"
27
27
  - "/node_modules/"
28
28
  - "/dist/"
29
+ - "vendors/"
29
30
 
30
31
  - id: no-unsafe-git-commands
31
32
  description: "Unsafe git commands (force-push, hard reset) can overwrite history or cause data loss (AGENTS.md CRITICAL safety)."
@@ -52,3 +52,4 @@ rules:
52
52
  - "**/tests/**"
53
53
  ## pure re-export for UI components
54
54
  - "apps/web/src/ui.ts"
55
+ - "apps/web/src/modules/config.ts"
@@ -14,22 +14,19 @@ variants:
14
14
  standard:
15
15
  backlog:
16
16
  required: [Background]
17
- forbidden: [Solution, Review, Testing]
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
- # Design + Plan + Acceptance Criteria are required so a task can be reviewed
20
- # and approved before any code is written. Solution stays forbidden — it is
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
- forbidden: [Solution, Review, Testing]
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
- forbidden: [Solution, Review]
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, Q&A]
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, Plan]
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
- # Solution and Testing are optional at wip+ not required, but tolerated so that
112
- # a review-findings task that evolves into implementation work (the common dogfood
113
- # follow-up path) can carry a change-map and coverage data without matrix violations.
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: [Plan, Q&A, Solution, Testing]
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: [Plan, Q&A, Solution, Testing]
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, Review, Solution]
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 — lightweight: Background + Plan, no Solution/AC gate.
134
+ # Process / docs / chore — same scaffold, lighter required gates.
142
135
  meta:
143
136
  backlog:
144
137
  required: [Background]
145
- forbidden: [Review]
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
- forbidden: [Solution, Review, Testing]
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
- ```gherkin
26
- Feature: {{ NAME }}
29
+ <!-- Copy or derive real scenarios from the linked feature. Do not leave placeholder AC here. -->
27
30
 
28
- Scenario: Basic acceptance
29
- Given a precondition
30
- When an action is taken
31
- Then an expected result occurs
32
- ```
31
+ ### Q&A
33
32
 
34
- - [ ] Acceptance checklist item
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
- - [ ] Implementation step
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
- - [ ] Implementation step
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
- ```gherkin
26
- Feature: {{ NAME }}
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
- Scenario: Basic acceptance
29
- Given a precondition
30
- When an action is taken
31
- Then an expected result occurs
32
- ```
35
+ ### Design
33
36
 
34
- - [ ] Acceptance checklist item
37
+ <!-- Chosen approach, key tradeoffs, invariants, and impacted surfaces. Keep snippets short. -->
35
38
 
36
39
  ### Plan
37
40
 
38
- - [ ] Implementation step
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 (refine → implement → test → review → verify → record → done). It
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`, then
75
- for each task run the task-pipeline (e.g. /sp:dev-refine <wbs> --auto --next, which
76
- chains implement → verify → done). Stop and report on the first non-PASS verdict.
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
  "$schema": "@gobing-ai/spur/schemas/state-machine-workflow.schema.json"
3
2
  kind: state-machine
4
3
  name: feature-lifecycle
@@ -1,4 +1,3 @@
1
- $schema: "@gobing-ai/spur/schemas/state-machine-workflow.schema.json"
2
1
  # Planning pipeline — front-half of the development workflow (task 0088, design §6).
3
2
  #
4
3
  # Orchestration is configuration (ADR-022 / §3.2): this is YAML over the existing
@@ -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: task-lifecycle
@@ -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
- Move the task to `wip` (via the normal verb lifecycle guards apply, R3),
60
- then run agent-driven implementation via /sp:dev-run --mode implement.
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: SECU code review via /sp:dev-review.
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: