@gobing-ai/spur 0.3.12 → 0.3.14

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.
Files changed (55) hide show
  1. package/config/workflows/task-lifecycle.yaml +10 -0
  2. package/config/workflows/wayfinder-resolution.yaml +199 -0
  3. package/package.json +1 -1
  4. package/spur.js +229 -50
  5. package/web/_astro/BoardApp.BdyUxAQU.js +1 -0
  6. package/web/_astro/{BoardApp.CqBOrPzf.js → BoardApp.oOZMY52P.js} +65 -65
  7. package/web/_astro/{TaskDetail.BmxycoeS.js → TaskDetail.DZVfe6fy.js} +1 -1
  8. package/web/_astro/{arc.-ZkWbWcN.js → arc.CmzWyu5T.js} +1 -1
  9. package/web/_astro/{architectureDiagram-3BPJPVTR.fJ8ETc6n.js → architectureDiagram-3BPJPVTR.DEvXeSWP.js} +1 -1
  10. package/web/_astro/{blockDiagram-GPEHLZMM.CdhoveXr.js → blockDiagram-GPEHLZMM.DULgqAsN.js} +1 -1
  11. package/web/_astro/{c4Diagram-AAUBKEIU.CWv7Jy0p.js → c4Diagram-AAUBKEIU.CtwqGUxK.js} +1 -1
  12. package/web/_astro/channel.C6f9ncOV.js +1 -0
  13. package/web/_astro/{chunk-2J33WTMH.CvYWDwal.js → chunk-2J33WTMH.lyKyWJjV.js} +1 -1
  14. package/web/_astro/{chunk-4BX2VUAB.BVp_y1oc.js → chunk-4BX2VUAB.COAavIDd.js} +1 -1
  15. package/web/_astro/{chunk-55IACEB6.CQCviGQk.js → chunk-55IACEB6.EoRbsXM1.js} +1 -1
  16. package/web/_astro/{chunk-727SXJPM.B3E6Bisv.js → chunk-727SXJPM.DhjfPs_B.js} +1 -1
  17. package/web/_astro/{chunk-AQP2D5EJ.BvWfYj9E.js → chunk-AQP2D5EJ.BgSRWTUm.js} +1 -1
  18. package/web/_astro/{chunk-FMBD7UC4.DcLP2Ypw.js → chunk-FMBD7UC4.Dj0MuLrK.js} +1 -1
  19. package/web/_astro/{chunk-ND2GUHAM.DvXZJEqI.js → chunk-ND2GUHAM.B2_roVTb.js} +1 -1
  20. package/web/_astro/{chunk-QZHKN3VN.D4rK2HTI.js → chunk-QZHKN3VN.Cr3PSROo.js} +1 -1
  21. package/web/_astro/{classDiagram-4FO5ZUOK.DSCYtdVf.js → classDiagram-4FO5ZUOK.CXEuLRp6.js} +1 -1
  22. package/web/_astro/{classDiagram-v2-Q7XG4LA2.DSCYtdVf.js → classDiagram-v2-Q7XG4LA2.CXEuLRp6.js} +1 -1
  23. package/web/_astro/{cose-bilkent-S5V4N54A.Bf7HMV4Q.js → cose-bilkent-S5V4N54A._ulIkUyI.js} +1 -1
  24. package/web/_astro/{dagre-BM42HDAG.DsBoJTBN.js → dagre-BM42HDAG.D5SRsv4S.js} +1 -1
  25. package/web/_astro/{diagram-2AECGRRQ.BMVxdKV3.js → diagram-2AECGRRQ.rMwI7OR9.js} +1 -1
  26. package/web/_astro/{diagram-5GNKFQAL.BllW5zst.js → diagram-5GNKFQAL.DWZ2ui2V.js} +1 -1
  27. package/web/_astro/{diagram-KO2AKTUF.CNHoSD6q.js → diagram-KO2AKTUF.DuqJ_D0B.js} +1 -1
  28. package/web/_astro/{diagram-LMA3HP47.DZT6otFZ.js → diagram-LMA3HP47.BDxKBl9B.js} +1 -1
  29. package/web/_astro/{diagram-OG6HWLK6.EwFWHBRO.js → diagram-OG6HWLK6.D6IMfAPf.js} +1 -1
  30. package/web/_astro/{erDiagram-TEJ5UH35.CaXPcR5W.js → erDiagram-TEJ5UH35.DSsh9EFG.js} +1 -1
  31. package/web/_astro/{flowDiagram-I6XJVG4X.FEcfML44.js → flowDiagram-I6XJVG4X.DwjNzc4e.js} +1 -1
  32. package/web/_astro/{ganttDiagram-6RSMTGT7.Bs7t3AQM.js → ganttDiagram-6RSMTGT7.DbYs_nXA.js} +1 -1
  33. package/web/_astro/{gitGraphDiagram-PVQCEYII.DmxLV9JC.js → gitGraphDiagram-PVQCEYII.DX5-xqVb.js} +1 -1
  34. package/web/_astro/{infoDiagram-5YYISTIA.E7_NrFUE.js → infoDiagram-5YYISTIA.jP6EGbwr.js} +1 -1
  35. package/web/_astro/{ishikawaDiagram-YF4QCWOH.Bs5Q4r-U.js → ishikawaDiagram-YF4QCWOH.Cn89YzBJ.js} +1 -1
  36. package/web/_astro/{journeyDiagram-JHISSGLW.D3U7T1y1.js → journeyDiagram-JHISSGLW.CNT2WvMT.js} +1 -1
  37. package/web/_astro/{kanban-definition-UN3LZRKU.DfdWsO2E.js → kanban-definition-UN3LZRKU.CLEZjEjD.js} +1 -1
  38. package/web/_astro/{linear.CAqUTUf3.js → linear.Cn4ewR2z.js} +1 -1
  39. package/web/_astro/{mermaid.core.ZlPUJ21K.js → mermaid.core.BEACwKCZ.js} +4 -4
  40. package/web/_astro/{mindmap-definition-RKZ34NQL.ClTJkcTG.js → mindmap-definition-RKZ34NQL.BE9cnWaH.js} +1 -1
  41. package/web/_astro/{pieDiagram-4H26LBE5.B9kJfBw_.js → pieDiagram-4H26LBE5.CLcCK_JM.js} +1 -1
  42. package/web/_astro/{quadrantDiagram-W4KKPZXB.CtTJH5Fo.js → quadrantDiagram-W4KKPZXB.qw8LmkgG.js} +1 -1
  43. package/web/_astro/{requirementDiagram-4Y6WPE33.WVLq9rr2.js → requirementDiagram-4Y6WPE33.D02534qk.js} +1 -1
  44. package/web/_astro/{sankeyDiagram-5OEKKPKP.L_XUdyqe.js → sankeyDiagram-5OEKKPKP.I6nOztAU.js} +1 -1
  45. package/web/_astro/{sequenceDiagram-3UESZ5HK.DCdtsEdj.js → sequenceDiagram-3UESZ5HK.CXTuiAV8.js} +1 -1
  46. package/web/_astro/{stateDiagram-AJRCARHV.-Koi9kLh.js → stateDiagram-AJRCARHV.BV-mNJRM.js} +1 -1
  47. package/web/_astro/{stateDiagram-v2-BHNVJYJU.DHXu_l8w.js → stateDiagram-v2-BHNVJYJU.kF2_t5fy.js} +1 -1
  48. package/web/_astro/{timeline-definition-PNZ67QCA.Czotaq0j.js → timeline-definition-PNZ67QCA.BiIzvhe5.js} +1 -1
  49. package/web/_astro/{vennDiagram-CIIHVFJN.BfEI3zhc.js → vennDiagram-CIIHVFJN.9cR-p_zq.js} +1 -1
  50. package/web/_astro/{wardley-L42UT6IY.C33mahwT.js → wardley-L42UT6IY.CwwpzGfz.js} +1 -1
  51. package/web/_astro/{wardleyDiagram-YWT4CUSO.D8IzxB1w.js → wardleyDiagram-YWT4CUSO.Q3hswh_f.js} +1 -1
  52. package/web/_astro/{xychartDiagram-2RQKCTM6.D-cfi9uT.js → xychartDiagram-2RQKCTM6.Co-1OW2E.js} +1 -1
  53. package/web/index.html +1 -1
  54. package/web/_astro/BoardApp.XG2FoRlA.js +0 -1
  55. package/web/_astro/channel.BrBVc6tg.js +0 -1
@@ -10,6 +10,16 @@ description: >
10
10
  today, behavioral wiring activates as the verb ships. Unconditional transitions
11
11
  use the `always` guard (externally-driven via `requestTransition`, not
12
12
  auto-advance).
13
+
14
+ Two-layer done gate (task 0292): this workflow's testing→done guard
15
+ (`spur task check --strict-core`) is the FIRST gate. The CLI verdict guard
16
+ (`packages/app/src/services/done-transition-guard.ts`) is the SECOND gate,
17
+ invoked by `apps/cli/src/commands/task.ts` for every `spur task update <wbs>
18
+ done` call — it reads `.spur/run/<wbs>-verdict.json` and blocks non-PASS
19
+ verdicts unless `--force-done --reason "<why>"` is supplied. The CLI gate
20
+ covers the `--no-lifecycle` and adapter-unavailable paths that bypass this
21
+ workflow. Overrides are recorded via the `done_forced` / `done_reason`
22
+ frontmatter fields.
13
23
  initialState: backlog
14
24
  terminalStates:
15
25
  - cancelled
@@ -0,0 +1,199 @@
1
+ "$schema": "@gobing-ai/spur/schemas/state-machine-workflow.schema.json"
2
+ kind: state-machine
3
+ name: wayfinder-resolution
4
+ description: "Reusable resolution pipeline for research/specification tasks without invoking the code implementation pipeline"
5
+ iterationBound: 20
6
+ initialState: precheck
7
+ terminalStates:
8
+ - done
9
+ - failed
10
+ - cancelled
11
+ vars:
12
+ wbs: "0000"
13
+ profile: "standard"
14
+ spurBin: "spur"
15
+ agent: "omp"
16
+ stepTimeoutMs: "900000"
17
+ approval: "required"
18
+ resolutionMode: "research"
19
+ evidencePolicy: "spur-cli-first"
20
+ __hitlAnswer: ""
21
+
22
+ states:
23
+ - id: precheck
24
+ description: "Validate the task and confirm the requested resolution mode before delegation."
25
+ onEnter:
26
+ - kind: shell
27
+ options:
28
+ command: "${vars.spurBin} task check ${vars.wbs}"
29
+ - kind: shell
30
+ options:
31
+ command: "${vars.spurBin} task show ${vars.wbs} --json"
32
+ - kind: note
33
+ options:
34
+ message: "Wayfinder resolution started for task ${vars.wbs} (mode=${vars.resolutionMode}, evidence=${vars.evidencePolicy}); no code implementation pipeline is permitted."
35
+
36
+ - id: collect
37
+ description: "Create a deterministic local input bundle before delegation."
38
+ onEnter:
39
+ - kind: shell
40
+ options:
41
+ command: "mkdir -p .spur/run/wayfinder && ${vars.spurBin} task show ${vars.wbs} --json > .spur/run/wayfinder/${vars.wbs}-input.json"
42
+ - kind: shell
43
+ options:
44
+ command: "${vars.spurBin} workflow validate config/workflows/wayfinder-resolution.yaml > .spur/run/wayfinder/${vars.wbs}-workflow-check.txt"
45
+ - kind: shell
46
+ options:
47
+ command: "${vars.spurBin} task check ${vars.wbs} > .spur/run/wayfinder/${vars.wbs}-precheck.txt"
48
+
49
+ - id: investigate
50
+ description: "Resolve the task's research/specification requirements and author evidence-backed sections through Spur CLI."
51
+ onEnter:
52
+ - kind: agent.run
53
+ options:
54
+ agent: ${vars.agent}
55
+ capture: true
56
+ mode: text
57
+ input: >-
58
+ Resolve task ${vars.wbs} in resolution mode ${vars.resolutionMode} using the prepared
59
+ local bundle `.spur/run/wayfinder/${vars.wbs}-input.json` and only local shell/file
60
+ reads plus the `spur` CLI; do not use network search or MCP tools. Do not
61
+ invoke task-pipeline.yaml, /sp:dev-run, /sp:dev-runall, or code implementation.
62
+ Read the task file, map its existing Requirements and Acceptance Criteria to the
63
+ existing Design/Plan/References, then author concise Solution, Testing, and Review
64
+ sections through `spur task update --section --from-file`. Preserve the research
65
+ boundary. Finish with a short summary and stop. Evidence policy: ${vars.evidencePolicy}.
66
+ timeoutMs: ${vars.stepTimeoutMs}
67
+
68
+ - id: verify
69
+ description: "Perform an independent evidence and traceability check for the resolved research task."
70
+ onEnter:
71
+ - kind: agent.run
72
+ options:
73
+ agent: ${vars.agent}
74
+ capture: true
75
+ mode: text
76
+ input: >-
77
+ Verify resolved task ${vars.wbs} using only local reads and `spur` CLI. Check its
78
+ requirements, acceptance scenarios, Solution, Testing, and Review. Confirm workflow
79
+ orchestration uses `spur workflow` and execution uses `spur` CLI by default. Run
80
+ `spur task check ${vars.wbs}` and update Testing/Review via the CLI only if needed.
81
+ Do not implement plugin code. Write the final verdict word (exactly PASS, PARTIAL,
82
+ or FAIL, nothing else) to `.spur/run/wayfinder/${vars.wbs}-resolution-verdict.txt`,
83
+ then finish with the same verdict and stop.
84
+ timeoutMs: ${vars.stepTimeoutMs}
85
+
86
+ - id: approve
87
+ description: "Human review gate unless the caller explicitly selects auto approval."
88
+ pause: true
89
+ onEnter:
90
+ - kind: hitl.confirm
91
+ options:
92
+ prompt: "Approve research resolution for task ${vars.wbs}?"
93
+
94
+ - id: record
95
+ description: "Record the resolution through the canonical task CLI and transition only after checks pass."
96
+ onEnter:
97
+ - kind: shell
98
+ options:
99
+ command: "${vars.spurBin} task check ${vars.wbs}"
100
+ - kind: shell
101
+ options:
102
+ # PASS-only completion (preserve-list P4): lifecycle guards stay on; a forced
103
+ # done without verdict evidence is the 0280 regression this replaces (see 0292).
104
+ command: "${vars.spurBin} task update ${vars.wbs} done"
105
+
106
+ - id: done
107
+ description: "Research task resolved and ready to feed the implementation backlog."
108
+ onEnter:
109
+ - kind: note
110
+ options:
111
+ message: "Wayfinder research task ${vars.wbs} resolved; implementation remains deferred to the synthesized build backlog."
112
+
113
+ - id: failed
114
+ description: "Research resolution failed a gate; no completion transition is attempted."
115
+
116
+ - id: cancelled
117
+ description: "Operator cancelled the research resolution."
118
+
119
+ transitions:
120
+ - from: precheck
121
+ to: collect
122
+ description: "Precheck passed — collect deterministic local inputs."
123
+ guard:
124
+ kind: shell
125
+ options:
126
+ command: "${vars.spurBin} task check ${vars.wbs}"
127
+ - from: precheck
128
+ to: failed
129
+ description: "Precheck failed — stop before delegation."
130
+ guard:
131
+ kind: shell
132
+ options:
133
+ command: "! ${vars.spurBin} task check ${vars.wbs}"
134
+ - from: collect
135
+ to: investigate
136
+ description: "Input bundle collected — resolve the research task."
137
+ guard:
138
+ kind: shell
139
+ options:
140
+ command: "test -s .spur/run/wayfinder/${vars.wbs}-input.json && test -s .spur/run/wayfinder/${vars.wbs}-precheck.txt"
141
+ - from: collect
142
+ to: failed
143
+ description: "Input collection failed — stop before delegation."
144
+ guard:
145
+ kind: shell
146
+ options:
147
+ command: "! test -s .spur/run/wayfinder/${vars.wbs}-input.json || ! test -s .spur/run/wayfinder/${vars.wbs}-precheck.txt"
148
+ - from: investigate
149
+ to: verify
150
+ description: "Research resolution authored — verify evidence and traceability."
151
+ guard:
152
+ kind: always
153
+ - from: verify
154
+ to: record
155
+ description: "Auto profile — record only on a machine-readable PASS verdict (fail-closed to the approve gate otherwise)."
156
+ guard:
157
+ kind: shell
158
+ options:
159
+ command: 'test "${vars.approval}" = auto && grep -qx PASS .spur/run/wayfinder/${vars.wbs}-resolution-verdict.txt'
160
+ - from: verify
161
+ to: approve
162
+ description: "Verification completed — require explicit review approval."
163
+ guard:
164
+ kind: always
165
+ - from: approve
166
+ to: record
167
+ description: "Operator approved the research resolution."
168
+ guard:
169
+ kind: shell
170
+ options:
171
+ command: 'test "${vars.__hitlAnswer}" = yes'
172
+ - from: approve
173
+ to: cancelled
174
+ description: "Operator cancelled the research resolution."
175
+ guard:
176
+ kind: shell
177
+ options:
178
+ command: 'test "${vars.__hitlAnswer}" = cancel'
179
+ - from: approve
180
+ to: failed
181
+ description: "Operator rejected the research resolution."
182
+ guard:
183
+ kind: shell
184
+ options:
185
+ command: 'test "${vars.__hitlAnswer}" = no'
186
+ - from: record
187
+ to: done
188
+ description: "Task check passed and the task status is actually done (the lifecycle transition succeeded)."
189
+ guard:
190
+ kind: shell
191
+ options:
192
+ command: '${vars.spurBin} task check ${vars.wbs} && test "$(${vars.spurBin} task show ${vars.wbs} --json | jq -r .status)" = done'
193
+ - from: record
194
+ to: failed
195
+ description: "Recording/check failed or the task never reached done — stop without claiming completion."
196
+ guard:
197
+ kind: shell
198
+ options:
199
+ command: '! ${vars.spurBin} task check ${vars.wbs} || test "$(${vars.spurBin} task show ${vars.wbs} --json | jq -r .status)" != done'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobing-ai/spur",
3
- "version": "0.3.12",
3
+ "version": "0.3.14",
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",