@gobing-ai/spur 0.3.99 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/config/config.global.yaml +17 -0
- package/config/decisions/gates.yaml +36 -0
- package/config/decisions/history-anatomy.yaml +35 -0
- package/config/decisions/idea-pipeline.yaml +38 -0
- package/config/decisions/task-pipeline.yaml +55 -0
- package/config/plugin-scripts.json +25 -0
- package/config/rules/boundary/sp-runtime-path.yaml +2 -0
- package/config/rules/docs/sourced-api-claims.yaml +60 -0
- package/config/rules/quality/coverage-gate.yaml +5 -3
- package/config/rules/recommended-pre-check.yaml +8 -3
- package/config/rules/strict/runtime-boundaries.yaml +11 -0
- package/config/rules/structure/protected-files.yaml +3 -0
- package/config/rules/structure/scratch-evidence-pointer.yaml +35 -0
- package/config/script-placement-baseline.json +2 -2
- package/config/workflows/feature-lifecycle.yaml +9 -2
- package/config/workflows/history-anatomy.yaml +22 -0
- package/config/workflows/idea-pipeline.yaml +75 -0
- package/config/workflows/task-pipeline.yaml +368 -49
- package/config/workflows/wrapup-pipeline.yaml +106 -13
- package/package.json +9 -9
- package/plugins/sp/README.md +25 -2
- package/plugins/sp/agents/super-planner.md +11 -0
- package/plugins/sp/agents/super-reviewer.md +39 -11
- package/plugins/sp/bunfig.toml +8 -0
- package/plugins/sp/commands/dev-brainstorm.md +29 -16
- package/plugins/sp/commands/dev-changelog.md +5 -4
- package/plugins/sp/commands/dev-find-way.md +80 -0
- package/plugins/sp/commands/dev-idea.md +6 -0
- package/plugins/sp/commands/dev-parallel.md +8 -2
- package/plugins/sp/commands/dev-plan.md +6 -0
- package/plugins/sp/commands/dev-review-session.md +14 -7
- package/plugins/sp/commands/dev-run.md +17 -4
- package/plugins/sp/commands/dev-runall.md +21 -10
- package/plugins/sp/hooks/agent-lifecycle.ts +155 -0
- package/plugins/sp/hooks/context-session-start.ts +1 -1
- package/plugins/sp/hooks/fleet-guest-stop.ts +180 -0
- package/plugins/sp/hooks/hooks.json +45 -1
- package/plugins/sp/hooks/pi/guard-extension.ts +21 -0
- package/plugins/sp/lib/history-anatomy.generated.mjs +5 -0
- package/plugins/sp/lib/idea-handoff.generated.mjs +72 -11
- package/plugins/sp/lib/inline-run-app.ts +28 -0
- package/plugins/sp/lib/inline-run.generated.d.mts +6 -0
- package/plugins/sp/lib/inline-run.generated.mjs +364 -46
- package/plugins/sp/lib/plan-projection.generated.d.mts +28 -0
- package/plugins/sp/lib/plan-projection.generated.mjs +255 -0
- package/plugins/sp/lib/quality-gate.generated.d.mts +47 -1
- package/plugins/sp/lib/quality-gate.generated.mjs +30489 -82
- package/plugins/sp/lib/residual-scan.generated.d.mts +19 -0
- package/plugins/sp/lib/residual-scan.generated.mjs +66 -0
- package/plugins/sp/lib/run-summary-core.ts +561 -0
- package/plugins/sp/lib/transcript.ts +275 -0
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/references/roles.md +1 -1
- package/plugins/sp/scripts/batch-plan.mjs +335 -0
- package/plugins/sp/scripts/batch-plan.ts +100 -0
- package/plugins/sp/scripts/batch-preflight.mjs +51 -3
- package/plugins/sp/scripts/batch-preflight.ts +72 -1
- package/plugins/sp/scripts/commit-guard.mjs +216 -0
- package/plugins/sp/scripts/commit-guard.ts +249 -0
- package/plugins/sp/scripts/history-anatomy-cache.mjs +5 -0
- package/plugins/sp/scripts/inline-run-dispatch.mjs +130 -0
- package/plugins/sp/scripts/inline-run-dispatch.ts +135 -0
- package/plugins/sp/scripts/inline-run-setup.mjs +563 -91
- package/plugins/sp/scripts/inline-run-setup.ts +65 -97
- package/plugins/sp/scripts/persist-out-check.mjs +90 -41
- package/plugins/sp/scripts/persist-out-check.ts +112 -57
- package/plugins/sp/scripts/quality-gate.mjs +30407 -73
- package/plugins/sp/scripts/quality-gate.ts +21 -5
- package/plugins/sp/scripts/residual-scan.mjs +88 -38
- package/plugins/sp/scripts/residual-scan.ts +35 -38
- package/plugins/sp/scripts/run-summary.mjs +693 -0
- package/plugins/sp/scripts/run-summary.ts +105 -0
- package/plugins/sp/scripts/session-timeline.mjs +331 -0
- package/plugins/sp/scripts/session-timeline.ts +204 -0
- package/plugins/sp/scripts/wrapup-steps.mjs +150 -2
- package/plugins/sp/scripts/wrapup-steps.ts +203 -1
- package/plugins/sp/skills/brainstorm/SKILL.md +9 -47
- package/plugins/sp/skills/branch-workflow/SKILL.md +1 -0
- package/plugins/sp/skills/branch-workflow/references/worktree-patterns.md +1 -0
- package/plugins/sp/skills/code-implementation/SKILL.md +48 -1
- package/plugins/sp/skills/code-verification/SKILL.md +8 -4
- package/plugins/sp/skills/code-verification/references/secu-review.md +3 -0
- package/plugins/sp/skills/code-verification/references/verdict-schema.md +68 -0
- package/plugins/sp/skills/fleet-join/SKILL.md +63 -0
- package/plugins/sp/skills/session-review/SKILL.md +77 -24
- package/plugins/sp/skills/source-driven-development/SKILL.md +5 -0
- package/plugins/sp/skills/spec-decomposition/references/decomposition.md +5 -3
- package/plugins/sp/skills/spur-cli/SKILL.md +6 -2
- package/plugins/sp/skills/spur-cli/references/agent.md +124 -17
- package/plugins/sp/skills/spur-cli/references/decision.md +98 -0
- package/plugins/sp/skills/spur-cli/references/message.md +7 -7
- package/plugins/sp/skills/spur-cli/references/tasks/verbs.md +41 -3
- package/plugins/sp/skills/spur-cli/references/tasks.md +10 -7
- package/plugins/sp/skills/spur-cli/references/workflows/authoring-workflows.md +7 -0
- package/plugins/sp/skills/spur-cli/references/workflows.md +7 -2
- package/plugins/sp/skills/spur-composer/SKILL.md +28 -2
- package/plugins/sp/skills/spur-dev/SKILL.md +18 -14
- package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +6 -3
- package/plugins/sp/skills/spur-dev/references/cross-cutting.md +49 -14
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +51 -18
- package/plugins/sp/skills/spur-dev/references/execution-batch-continuation.md +68 -0
- package/plugins/sp/skills/spur-dev/references/execution-batch-report.md +194 -0
- package/plugins/sp/skills/spur-dev/references/execution-batch.md +113 -963
- package/plugins/sp/skills/spur-dev/references/execution-parallel-isolation.md +130 -0
- package/plugins/sp/skills/spur-dev/references/execution-workflow.md +20 -0
- package/plugins/sp/skills/spur-dev/references/execution-worktree-landing.md +471 -0
- package/plugins/sp/skills/spur-dev/references/execution-worktree-setup.md +379 -0
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +51 -9
- package/plugins/sp/skills/spur-dev/references/glossary.md +2 -2
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +361 -156
- package/plugins/sp/skills/spur-dev/references/planning-workflow.md +6 -0
- package/plugins/sp/skills/spur-dev/references/structured-trace-emission.md +178 -0
- package/plugins/sp/skills/wayfinder/SKILL.md +10 -14
- package/schemas/decision-catalog.schema.json +226 -0
- package/schemas/spur-config.schema.json +25 -0
- package/schemas/state-machine-workflow.schema.json +23 -0
- package/spur.js +28165 -19051
- package/web/_astro/{BoardApp.i4eh_fHA.js → BoardApp.D66k_s_T.js} +1 -1
- package/web/_astro/BoardApp.D6sjAJr_.js +324 -0
- package/web/_astro/{TaskDetail.C5Cu8LdB.js → TaskDetail.BynLnMNc.js} +1 -1
- package/web/_astro/{arc.Bu5XpBEz.js → arc._BUadrdH.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.9vHQTvhF.js → architectureDiagram-3BPJPVTR.Dh7xS1Pp.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.Cn2Xl7D6.js → blockDiagram-GPEHLZMM.DFDVpfXm.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.7o0P_QDo.js → c4Diagram-AAUBKEIU.V7_3_glh.js} +1 -1
- package/web/_astro/channel.DZVfto-r.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.C3zZFsNt.js → chunk-2J33WTMH.De1yx7Jz.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.CNy_M7fO.js → chunk-4BX2VUAB.BDhHFuxx.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.2TiPnLBL.js → chunk-55IACEB6.DDLkWnmC.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.5CGSyKAp.js → chunk-727SXJPM.CwfiLnA7.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.w-ZIgfsK.js → chunk-AQP2D5EJ.CtGDmUnM.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.BkcEyhKa.js → chunk-FMBD7UC4.BOLjpw73.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.mxKKbBG4.js → chunk-ND2GUHAM.BDhQls6O.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.cyA0z9aT.js → chunk-QZHKN3VN.76qBynDF.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.CqtUzwhX.js → classDiagram-4FO5ZUOK.N0mpPHT0.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.CqtUzwhX.js → classDiagram-v2-Q7XG4LA2.N0mpPHT0.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.BExPTopI.js → cose-bilkent-S5V4N54A.CKknFfjB.js} +1 -1
- package/web/_astro/{cynefin-OW5HDTMX.Bq2i10Cn.js → cynefin-OW5HDTMX.Cw3ZWBAh.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.By_HsOuv.js → dagre-BM42HDAG.D3yIKCRD.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.BtU0b7hz.js → diagram-2AECGRRQ.D51dO83Z.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.D00ztMdT.js → diagram-5GNKFQAL.Bb-FViDj.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.DMVJWaUN.js → diagram-KO2AKTUF.D3mN8S6x.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.Cxqrjg5-.js → diagram-LMA3HP47.dMMyPcbJ.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.2lz_1B5h.js → diagram-OG6HWLK6.AzbvzY4C.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.BVQEuJ3T.js → erDiagram-TEJ5UH35.BR5I4OZb.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.Qlyo90ky.js → flowDiagram-I6XJVG4X.DFqvhGkn.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7.DRwb8HHZ.js → ganttDiagram-6RSMTGT7.ByJbhH6J.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.YfoPthfS.js → gitGraphDiagram-PVQCEYII.CInHjQR3.js} +1 -1
- package/web/_astro/index.COh_kBxN.css +1 -0
- package/web/_astro/{infoDiagram-5YYISTIA.DvFREck1.js → infoDiagram-5YYISTIA.Cm0dGVjJ.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.BzCj9Q0-.js → ishikawaDiagram-YF4QCWOH.C3nOP6Sj.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.BDMT_AFb.js → journeyDiagram-JHISSGLW.4IvLa2MW.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.D6Fh3gj9.js → kanban-definition-UN3LZRKU.DS87Cl-k.js} +1 -1
- package/web/_astro/{linear.Dxw00fGQ.js → linear.MzmRrNER.js} +1 -1
- package/web/_astro/{mermaid.core.CsoxUWa0.js → mermaid.core.fK-WNswS.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.CN8oeHLu.js → mindmap-definition-RKZ34NQL.BqipOHhY.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.C7ADqQ_7.js → pieDiagram-4H26LBE5.0nBiPqFG.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.Cw9lKyHP.js → quadrantDiagram-W4KKPZXB.Szj7Zpx5.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.B1ni-z4q.js → requirementDiagram-4Y6WPE33.D4UR6TWo.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.BhexdjVr.js → sankeyDiagram-5OEKKPKP.DAE7BdOs.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.C3Rm7dpQ.js → sequenceDiagram-3UESZ5HK.BP9ZVq25.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.CkuMt27u.js → stateDiagram-AJRCARHV.BQW7mIxk.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.Dc_aazUA.js → stateDiagram-v2-BHNVJYJU.PbK4nDih.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.ja7sUFhH.js → timeline-definition-PNZ67QCA.Ci_GvUpo.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.BxIshX_K.js → vennDiagram-CIIHVFJN.DNw1Y5qx.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.DfHlC0sh.js → wardleyDiagram-YWT4CUSO.CwlkaaNe.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.DSnhHwCh.js → xychartDiagram-2RQKCTM6.MI6ZuiH_.js} +1 -1
- package/web/board-runtime.json +1 -1
- package/web/index.html +2 -2
- package/web/_astro/BoardApp.BVp-LYi6.js +0 -322
- package/web/_astro/channel.6IFIKBhu.js +0 -1
- package/web/_astro/index.CbNz17Sx.css +0 -1
|
@@ -79,6 +79,10 @@ vars:
|
|
|
79
79
|
|
|
80
80
|
states:
|
|
81
81
|
- id: start
|
|
82
|
+
display:
|
|
83
|
+
phase: discover
|
|
84
|
+
phaseTitle: Discover
|
|
85
|
+
title: Check inputs
|
|
82
86
|
description: >
|
|
83
87
|
Pipeline start. The idea text arrives as vars.idea. The pipeline stops at
|
|
84
88
|
handoff — no task execution. Soft agent doctor (status file) so doctor red
|
|
@@ -113,6 +117,10 @@ states:
|
|
|
113
117
|
printf 'FAIL\n' > ".spur/run/$__runId-idea-precheck-doctor.status"
|
|
114
118
|
|
|
115
119
|
- id: discovery
|
|
120
|
+
display:
|
|
121
|
+
phase: discover
|
|
122
|
+
phaseTitle: Discover
|
|
123
|
+
title: Discovery interview
|
|
116
124
|
description: >
|
|
117
125
|
Dispatch sp:brainstorm to explore the idea, generate approaches with trade-offs,
|
|
118
126
|
and record a design summary. The brainstorm ALWAYS records a design summary
|
|
@@ -146,8 +154,35 @@ states:
|
|
|
146
154
|
awk '/^## Recommendation/{f=1;next} f&&NF{r=tolower($0);exit}
|
|
147
155
|
END{print (match(r,/^[*_ ]*(proceed|reshape|drop)/) ? substr(r,RSTART,RLENGTH) : "unknown")}'
|
|
148
156
|
".spur/run/$__runId-idea-eval-report.md" | tr -d '*_ ' > ".spur/run/$__runId-idea-recommendation.txt"
|
|
157
|
+
# 1097 R2 (design §4 rescue-only): the awk parse stays first; this rescue runs ONLY when
|
|
158
|
+
# the derived file is `unknown`. A model answer is written only when `source == "model"`
|
|
159
|
+
# and it lands in the closed vocabulary (proceed|reshape|drop) — every other outcome
|
|
160
|
+
# (spur missing/non-zero, unparseable output, model `unknown`) leaves `unknown` in place,
|
|
161
|
+
# which is today's idea-eval pause route. Exits 0 on every path (default onError: fail).
|
|
162
|
+
- kind: shell
|
|
163
|
+
options:
|
|
164
|
+
command: >-
|
|
165
|
+
f=".spur/run/$__runId-idea-recommendation.txt";
|
|
166
|
+
[ "$(cat "$f" 2>/dev/null)" = unknown ] || exit 0;
|
|
167
|
+
v="$($spurBin decision run idea-recommendation --evidence ".spur/run/$__runId-idea-eval-report.md" --json 2>/dev/null | jq -r 'if .source=="model" then .value else "unknown" end' 2>/dev/null)";
|
|
168
|
+
case "$v" in proceed|reshape|drop) printf '%s\n' "$v" > "$f" ;; esac
|
|
169
|
+
# 1097 R3 (same rescue-only pattern): a valid needs_design boolean short-circuits — no
|
|
170
|
+
# decision is called. On a missing/corrupt/non-boolean file the catalog decision decides:
|
|
171
|
+
# `{"needs_design": false}` only when `source == "model"` AND `value == "skip"`; otherwise
|
|
172
|
+
# `{"needs_design": true}` — today's behavior for a missing or corrupt file. The
|
|
173
|
+
# ac-generate route writer (:274) consumes this file unchanged. Exits 0 on every path.
|
|
174
|
+
- kind: shell
|
|
175
|
+
options:
|
|
176
|
+
command: >-
|
|
177
|
+
f=".spur/run/$__runId-idea-needs-design.json";
|
|
178
|
+
jq -e '.needs_design|type=="boolean"' "$f" >/dev/null 2>&1 && exit 0;
|
|
179
|
+
$spurBin decision run needs-design --evidence ".spur/run/$__runId-idea-eval-report.md" --json 2>/dev/null | jq -e '.source=="model" and .value=="skip"' >/dev/null 2>&1 && printf '{"needs_design": false}\n' > "$f" || printf '{"needs_design": true}\n' > "$f"
|
|
149
180
|
|
|
150
181
|
- id: idea-eval
|
|
182
|
+
display:
|
|
183
|
+
phase: discover
|
|
184
|
+
phaseTitle: Discover
|
|
185
|
+
title: Evaluate idea
|
|
151
186
|
description: >
|
|
152
187
|
HITL taste gate. Discovery has produced the idea-evaluation report
|
|
153
188
|
(.spur/run/${vars.__runId}-idea-eval-report.md) with urgency/necessity scores, premises,
|
|
@@ -164,6 +199,10 @@ states:
|
|
|
164
199
|
mode: never
|
|
165
200
|
|
|
166
201
|
- id: feature-create
|
|
202
|
+
display:
|
|
203
|
+
phase: define
|
|
204
|
+
phaseTitle: "Define feature"
|
|
205
|
+
title: Create feature
|
|
167
206
|
description: >
|
|
168
207
|
Create a feature via spur feature create, or select an existing feature id.
|
|
169
208
|
The agent writes the feature id to .spur/run/${vars.__runId}-idea-feature-id.txt and body-only
|
|
@@ -203,6 +242,10 @@ states:
|
|
|
203
242
|
$spurBin feature update "$featureId" --section Scope --from-file .spur/run/$__runId-idea-scope.md
|
|
204
243
|
|
|
205
244
|
- id: ac-generate
|
|
245
|
+
display:
|
|
246
|
+
phase: define
|
|
247
|
+
phaseTitle: "Define feature"
|
|
248
|
+
title: Generate AC
|
|
206
249
|
description: >
|
|
207
250
|
Generate acceptance criteria per ac-style-guide.md. Write AC scenarios to the
|
|
208
251
|
feature file via `spur feature update --section "Acceptance Criteria"
|
|
@@ -279,6 +322,10 @@ states:
|
|
|
279
322
|
printf 'FAIL\n' > .spur/run/$__runId-idea-ac-ready.status; }
|
|
280
323
|
|
|
281
324
|
- id: feature-check
|
|
325
|
+
display:
|
|
326
|
+
phase: define
|
|
327
|
+
phaseTitle: "Define feature"
|
|
328
|
+
title: Check feature
|
|
282
329
|
description: >
|
|
283
330
|
HITL gate over the recorded `idea-ac-check` result (measured at the ac-generate
|
|
284
331
|
boundary — this gate never re-runs the CLI). Deliberately NOT --strict: before
|
|
@@ -306,6 +353,10 @@ states:
|
|
|
306
353
|
# JSON, recorded ac-check status) cannot change across hitl.confirm.
|
|
307
354
|
|
|
308
355
|
- id: system-design
|
|
356
|
+
display:
|
|
357
|
+
phase: design
|
|
358
|
+
phaseTitle: Design
|
|
359
|
+
title: System design
|
|
309
360
|
description: >
|
|
310
361
|
Dispatch sp:sys-architecture to produce the system design. This state runs
|
|
311
362
|
only when needs_design=true (design=auto signal path). The agent creates ADR
|
|
@@ -356,6 +407,10 @@ states:
|
|
|
356
407
|
timeoutMs: 120000
|
|
357
408
|
|
|
358
409
|
- id: design-approval
|
|
410
|
+
display:
|
|
411
|
+
phase: design
|
|
412
|
+
phaseTitle: Design
|
|
413
|
+
title: Approve design
|
|
359
414
|
description: >
|
|
360
415
|
HITL taste gate. The operator reviews the system design and approves or
|
|
361
416
|
rejects it. Routed around only when profile=auto AND vars.design_approved=true
|
|
@@ -383,6 +438,10 @@ states:
|
|
|
383
438
|
mode: never
|
|
384
439
|
|
|
385
440
|
- id: decompose
|
|
441
|
+
display:
|
|
442
|
+
phase: decompose
|
|
443
|
+
phaseTitle: Decompose
|
|
444
|
+
title: Decompose into tasks
|
|
386
445
|
description: >
|
|
387
446
|
Dispatch sp:spec-decomposition with the brainstorm artifact, feature AC, and
|
|
388
447
|
design doc as input. The agent produces a task-batch JSON file at
|
|
@@ -427,6 +486,10 @@ states:
|
|
|
427
486
|
' "$ORDER" >/dev/null
|
|
428
487
|
|
|
429
488
|
- id: batch-create
|
|
489
|
+
display:
|
|
490
|
+
phase: decompose
|
|
491
|
+
phaseTitle: Decompose
|
|
492
|
+
title: Approve task batch
|
|
430
493
|
description: >
|
|
431
494
|
HITL gate: runs spur task batch-create with the batch JSON from the
|
|
432
495
|
decompose state. The check is objective (schema validation) and
|
|
@@ -443,6 +506,10 @@ states:
|
|
|
443
506
|
mode: never
|
|
444
507
|
|
|
445
508
|
- id: batch-create-run
|
|
509
|
+
display:
|
|
510
|
+
phase: decompose
|
|
511
|
+
phaseTitle: Decompose
|
|
512
|
+
title: Create tasks
|
|
446
513
|
description: >
|
|
447
514
|
Executes task batch creation exactly once per decomposition attempt. The
|
|
448
515
|
side effect lives in onEnter and records a sentinel; transition guards only
|
|
@@ -472,6 +539,10 @@ states:
|
|
|
472
539
|
fi
|
|
473
540
|
|
|
474
541
|
- id: ready-prepare
|
|
542
|
+
display:
|
|
543
|
+
phase: handoff
|
|
544
|
+
phaseTitle: "Hand off"
|
|
545
|
+
title: Prepare ready set
|
|
475
546
|
description: >
|
|
476
547
|
Ready-by-default preparation (0788): the planning owner applies the
|
|
477
548
|
ready-refinement checklist to each created task (requirements, design,
|
|
@@ -521,6 +592,10 @@ states:
|
|
|
521
592
|
jq -e 'type == "object" and (.tasks | type == "array") and (all(.tasks[]; (.wbs | type == "string") and (.status == "ready" or .status == "failed" or .status == "skipped") and (.planningDigest | type == "string") and (.checks | type == "array") and (all(.checks[]; (.id | type == "string") and (.pass | type == "boolean") and (.evidence | type == "string")))))' "$READY" >/dev/null
|
|
522
593
|
|
|
523
594
|
- id: handoff-finalize
|
|
595
|
+
display:
|
|
596
|
+
phase: handoff
|
|
597
|
+
phaseTitle: "Hand off"
|
|
598
|
+
title: Finalize handoff
|
|
524
599
|
description: >
|
|
525
600
|
Post-create finalization (0518): zip batch item names to the created WBS
|
|
526
601
|
values from the captured batch-create result (equal-length/unique-name
|