@gobing-ai/spur 0.3.94 → 0.3.96
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/README.md +42 -0
- package/board/index.d.ts +38 -0
- package/config/plugin-scripts.json +3 -52
- package/config/rules/boundary/sp-script-placement.yaml +19 -0
- package/config/rules/strict/runtime-boundaries.yaml +5 -0
- package/config/rules/structure/test-location.yaml +2 -0
- package/config/rules/typescript/no-syscall-emulation-in-boundary-mock.yaml +1 -1
- package/config/rules/typescript/output-boundaries.yaml +15 -2
- package/config/script-placement-baseline.json +51 -0
- package/config/workflows/feature-verification.yaml +7 -4
- package/config/workflows/history-anatomy.yaml +23 -11
- package/config/workflows/idea-pipeline.yaml +87 -86
- package/config/workflows/pr-review.yaml +18 -9
- package/config/workflows/task-pipeline.yaml +84 -109
- package/config/workflows/wrapup-pipeline.yaml +173 -46
- package/package.json +15 -11
- package/plugins/sp/README.md +8 -10
- package/plugins/sp/agents/super-reviewer.md +43 -18
- package/plugins/sp/commands/dev-fixgha.md +83 -0
- package/plugins/sp/commands/dev-gitmsg.md +8 -6
- package/plugins/sp/commands/dev-gtd.md +2 -2
- package/plugins/sp/commands/dev-idea.md +22 -12
- package/plugins/sp/commands/dev-plan.md +8 -9
- package/plugins/sp/commands/dev-review.md +22 -13
- package/plugins/sp/commands/dev-verify.md +7 -4
- package/plugins/sp/commands/dev-verifyall.md +5 -4
- package/plugins/sp/commands/dev-wrap.md +1 -1
- package/plugins/sp/commands/spur-init.md +2 -2
- package/plugins/sp/hooks/context-post-tool.ts +2 -2
- package/plugins/sp/hooks/context-session-start.ts +2 -1
- package/plugins/sp/hooks/context-session-stop.ts +22 -14
- package/plugins/sp/hooks/pi/guard-extension.ts +109 -150
- package/plugins/sp/lib/history-anatomy.generated.d.mts +112 -0
- package/plugins/sp/lib/history-anatomy.generated.mjs +686 -0
- package/plugins/sp/lib/idea-handoff.generated.mjs +6 -5
- package/plugins/sp/lib/inline-run.generated.d.mts +13 -2
- package/plugins/sp/lib/inline-run.generated.mjs +33 -16
- package/plugins/sp/lib/quality-gate.generated.d.mts +104 -0
- package/plugins/sp/lib/quality-gate.generated.mjs +438 -0
- package/plugins/sp/lib/residual-scan.generated.d.mts +62 -0
- package/plugins/sp/lib/residual-scan.generated.mjs +210 -0
- package/plugins/sp/lib/spur-bin.ts +36 -0
- package/plugins/sp/lib/step-profile.generated.d.mts +71 -0
- package/plugins/sp/lib/step-profile.generated.mjs +174 -0
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/references/roles.md +1 -1
- package/plugins/sp/scripts/daily-summary/daily-summary.mjs +3 -3
- package/plugins/sp/scripts/daily-summary/daily-summary.ts +3 -3
- package/plugins/sp/scripts/dogfood-testing/detect-pipeline-driving.mjs +2 -0
- package/plugins/sp/scripts/dogfood-testing/detect-pipeline-driving.ts +1 -0
- package/plugins/sp/scripts/dogfood-testing/validate-report.mjs +9 -7
- package/plugins/sp/scripts/dogfood-testing/validate-report.ts +8 -7
- package/plugins/sp/scripts/feature-verification-steps.ts +6 -6
- package/plugins/sp/scripts/history-anatomy-cache.mjs +23 -22
- package/plugins/sp/scripts/history-anatomy-cache.ts +23 -928
- package/plugins/sp/scripts/inline-run-setup.mjs +90 -315
- package/plugins/sp/scripts/inline-run-setup.ts +109 -639
- package/plugins/sp/scripts/pr-reviewing.mjs +2 -0
- package/plugins/sp/scripts/pr-reviewing.ts +1 -0
- package/plugins/sp/scripts/quality-gate.mjs +38 -21
- package/plugins/sp/scripts/quality-gate.ts +20 -660
- package/plugins/sp/scripts/residual-scan.mjs +138 -159
- package/plugins/sp/scripts/residual-scan.ts +102 -499
- package/plugins/sp/scripts/script-root.mjs +129 -0
- package/plugins/sp/scripts/script-root.ts +199 -0
- package/plugins/sp/scripts/workflow-step-profile.mjs +27 -16
- package/plugins/sp/scripts/workflow-step-profile.ts +22 -314
- package/plugins/sp/scripts/wrapup-drift-probe.mjs +12 -3
- package/plugins/sp/scripts/wrapup-drift-probe.ts +6 -3
- package/plugins/sp/scripts/wrapup-steps.mjs +42 -40
- package/plugins/sp/scripts/wrapup-steps.ts +64 -46
- package/plugins/sp/skills/code-improvement/SKILL.md +5 -4
- package/plugins/sp/skills/code-verification/SKILL.md +46 -16
- package/plugins/sp/skills/code-verification/references/verdict-schema.md +13 -2
- package/plugins/sp/skills/functional-review/SKILL.md +8 -5
- package/plugins/sp/skills/functional-review/references/verdict-schema.md +1 -1
- package/plugins/sp/skills/history-anatomy/references/modes.md +2 -1
- package/plugins/sp/skills/next-feature/references/handoff-routing.md +1 -1
- package/plugins/sp/skills/next-router/references/routing-table.md +2 -2
- package/plugins/sp/skills/spur-cli/SKILL.md +3 -3
- package/plugins/sp/skills/spur-cli/references/agent.md +10 -10
- package/plugins/sp/skills/spur-cli/references/features.md +17 -6
- package/plugins/sp/skills/spur-cli/references/init.md +17 -16
- package/plugins/sp/skills/spur-cli/references/self.md +3 -2
- package/plugins/sp/skills/spur-cli/references/serve.md +10 -10
- package/plugins/sp/skills/spur-cli/references/tasks/verbs.md +28 -5
- package/plugins/sp/skills/spur-cli/references/tasks.md +14 -8
- package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +4 -3
- package/plugins/sp/skills/spur-dev/references/cross-cutting.md +11 -9
- package/plugins/sp/skills/spur-dev/references/decision-brief.md +1 -1
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +86 -70
- package/plugins/sp/skills/spur-dev/references/done-housekeeping.md +3 -3
- package/plugins/sp/skills/spur-dev/references/execution-batch.md +107 -44
- package/plugins/sp/skills/spur-dev/references/execution-workflow.md +5 -9
- package/plugins/sp/skills/spur-dev/references/feature-link-helper.md +3 -3
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +31 -21
- package/plugins/sp/skills/spur-dev/references/gate-checklists.md +19 -19
- package/plugins/sp/skills/spur-dev/references/idea-evaluation.md +4 -3
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +35 -6
- package/plugins/sp/skills/spur-doctor/SKILL.md +1 -1
- package/plugins/sp/skills/sys-architecture/SKILL.md +3 -2
- package/plugins/sp/tsconfig.json +8 -0
- package/spur.js +6638 -4775
- package/web/_astro/BoardApp.BIjMatT1.js +1 -0
- package/web/_astro/{BoardApp.FTEs3-N8.js → BoardApp.GvjIe9Z6.js} +150 -153
- package/web/_astro/TaskDetail.BZM3EAFx.js +1 -0
- package/web/_astro/_commonjsHelpers.CqkleIqs.js +1 -0
- package/web/_astro/{arc.uuAf51IT.js → arc.HkRiZnoI.js} +1 -1
- package/web/_astro/architectureDiagram-3BPJPVTR.BDdK-tgZ.js +36 -0
- package/web/_astro/{blockDiagram-GPEHLZMM.D1mGCq3p.js → blockDiagram-GPEHLZMM.CZ9kOBxx.js} +1 -1
- package/web/_astro/board-facade-react-dom-client.B2U5wMvk.js +1 -0
- package/web/_astro/board-facade-react-dom.Cd2MuMhF.js +1 -0
- package/web/_astro/board-facade-react-jsx-dev-runtime.B_L3JzfC.js +1 -0
- package/web/_astro/board-facade-react-jsx-runtime.BY2yfHRi.js +1 -0
- package/web/_astro/board-facade-react-router-dom.Dy5pjzOw.js +1 -0
- package/web/_astro/board-facade-react-router.DjjqU27_.js +1 -0
- package/web/_astro/board-facade-react.Dgf4GRyj.js +1 -0
- package/web/_astro/{c4Diagram-AAUBKEIU.CMsolcde.js → c4Diagram-AAUBKEIU.DXK9qeRD.js} +1 -1
- package/web/_astro/channel.DlhX2MEt.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.CrGA3fik.js → chunk-2J33WTMH.BTD2WeX5.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.DsLVVla0.js → chunk-4BX2VUAB.Ci6Qbcvk.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.Dxc59Tfi.js → chunk-55IACEB6.yl3zsj7p.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.CaEVE2Wy.js → chunk-727SXJPM.ClXZsfyR.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.BiJ4HXeI.js → chunk-AQP2D5EJ.BmKWZBcP.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.Mxf1fru5.js → chunk-FMBD7UC4.By30fcb7.js} +1 -1
- package/web/_astro/chunk-JMJ3UQ3L.BQJEJHu4.js +34 -0
- package/web/_astro/{chunk-ND2GUHAM.pyOWQixH.js → chunk-ND2GUHAM.24NmrD-k.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.BmEsg4vr.js → chunk-QZHKN3VN.BN4sKdcS.js} +1 -1
- package/web/_astro/chunk-YNUBSHFH.CxeAygfi.js +7 -0
- package/web/_astro/{classDiagram-4FO5ZUOK.BHhhMFTO.js → classDiagram-4FO5ZUOK.CJpoMPb5.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.BHhhMFTO.js → classDiagram-v2-Q7XG4LA2.CJpoMPb5.js} +1 -1
- package/web/_astro/client.BhluLQqe.js +1 -0
- package/web/_astro/client.DBpSRLnx.js +9 -0
- package/web/_astro/cose-bilkent-S5V4N54A.BraxQ2Nt.js +1 -0
- package/web/_astro/{cynefin-OW5HDTMX.C2j1_lKL.js → cynefin-OW5HDTMX.gzoU73oL.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.hZ2NCTdT.js → dagre-BM42HDAG.wyDfWySU.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.Bfw5_EzK.js → diagram-2AECGRRQ.h2_EbMxV.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.Bt1V_Tmk.js → diagram-5GNKFQAL.Db6dcs89.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.DEk-YFwp.js → diagram-KO2AKTUF.NVwzxu_U.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.CDjndtQm.js → diagram-LMA3HP47.B-eNgDQk.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.cFnUHScG.js → diagram-OG6HWLK6.Bsa8ZRbJ.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.DlhYp7NV.js → erDiagram-TEJ5UH35.BospRE5Q.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.DNTpsxfx.js → flowDiagram-I6XJVG4X.DMzvHwAA.js} +1 -1
- package/web/_astro/ganttDiagram-6RSMTGT7.Dmdxgd-M.js +292 -0
- package/web/_astro/{gitGraphDiagram-PVQCEYII.DkEqNI0P.js → gitGraphDiagram-PVQCEYII.CaqdO0rL.js} +1 -1
- package/web/_astro/index.5dn-Zm-2.js +1 -0
- package/web/_astro/index.C-IqPpW2.js +1 -0
- package/web/_astro/index.Cyc_GA4f.js +1 -0
- package/web/_astro/index.EoZlzLK-.css +1 -0
- package/web/_astro/index.tZfqwSut.js +1 -0
- package/web/_astro/{infoDiagram-5YYISTIA.CrjioCTG.js → infoDiagram-5YYISTIA.DDVD9Wn7.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.BcK0CN8n.js → ishikawaDiagram-YF4QCWOH.EKyCUFsL.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.p0CbBDX1.js → journeyDiagram-JHISSGLW.By2-RkYB.js} +1 -1
- package/web/_astro/jsx-runtime.DWOiEOII.js +1 -0
- package/web/_astro/{kanban-definition-UN3LZRKU.puHIFt6J.js → kanban-definition-UN3LZRKU.ar-WmlyR.js} +1 -1
- package/web/_astro/{linear.Bb-3a1d7.js → linear.BnzMBgo_.js} +1 -1
- package/web/_astro/{mermaid.core.CJDgXOJs.js → mermaid.core.DSqeFu2Y.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.BoAZEI9t.js → mindmap-definition-RKZ34NQL.1XcF8Wh2.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.CJNSdqY7.js → pieDiagram-4H26LBE5.DnItHOdK.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.DtTy7_0Z.js → quadrantDiagram-W4KKPZXB.BQQyrnBt.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.BNYV98Xg.js → requirementDiagram-4Y6WPE33.Dmzxun82.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.DRq9DGHp.js → sankeyDiagram-5OEKKPKP.BBIeRKYB.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.B7KdBFCm.js → sequenceDiagram-3UESZ5HK.CUNVdBBf.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.CD62ZJ2H.js → stateDiagram-AJRCARHV.DlFf2sJm.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.CeVk1TAj.js → stateDiagram-v2-BHNVJYJU.DXR7I1H5.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.C_ZPA5tT.js → timeline-definition-PNZ67QCA.BcO-GyX2.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.CrThO_FQ.js → vennDiagram-CIIHVFJN.ChCECmmW.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.DSZCA5nl.js → wardleyDiagram-YWT4CUSO.CRaT12mD.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.KI7baTuk.js → xychartDiagram-2RQKCTM6.B3lsHVpj.js} +1 -1
- package/web/board-runtime.json +69 -0
- package/web/index.html +2 -2
- package/plugins/sp/lib/artifact-digest.generated.d.mts +0 -7
- package/plugins/sp/lib/artifact-digest.generated.mjs +0 -48
- package/plugins/sp/scripts/feature-sync-bounded.mjs +0 -298
- package/plugins/sp/scripts/feature-sync-bounded.ts +0 -479
- package/plugins/sp/scripts/idea-coverage-check.ts +0 -168
- package/plugins/sp/scripts/inline-pipeline-parity-check.ts +0 -298
- package/plugins/sp/scripts/record-feature-sync.mjs +0 -63
- package/plugins/sp/scripts/record-feature-sync.ts +0 -84
- package/plugins/sp/scripts/script-contract-check.ts +0 -377
- package/plugins/sp/scripts/stage-registry-adapter.ts +0 -1533
- package/plugins/sp/scripts/surface-drift-inventory.ts +0 -989
- package/plugins/sp/scripts/task-evidence-precheck.ts +0 -187
- package/plugins/sp/scripts/task-size-precheck.ts +0 -210
- package/plugins/sp/scripts/transition-shim-check.ts +0 -238
- package/plugins/sp/scripts/validate-commands.ts +0 -689
- package/plugins/sp/scripts/validate-flag-contracts.ts +0 -878
- package/plugins/sp/scripts/verify-answer-lint.ts +0 -547
- package/web/_astro/BoardApp.C02hAHPO.js +0 -1
- package/web/_astro/TaskDetail.C-GdsS-t.js +0 -1
- package/web/_astro/architectureDiagram-3BPJPVTR.CGe629A1.js +0 -36
- package/web/_astro/channel.fsgl7o5j.js +0 -1
- package/web/_astro/client.yhYJvxCU.js +0 -9
- package/web/_astro/cose-bilkent-S5V4N54A.2fH4YOlp.js +0 -1
- package/web/_astro/ganttDiagram-6RSMTGT7.DC_p36PI.js +0 -292
- package/web/_astro/index.De90oHcH.js +0 -1
- package/web/_astro/index.Hjbr15fG.css +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: init
|
|
3
|
-
description: "spur-cli noun reference for `spur init` and `spur status`: CLI verbs (init scaffold with --name/--force/--minimal, status with --json) plus post-scaffold init validation for /sp:spur-init - Phase 1.5 functional-validation probes and Phase 1.6 rule-glob adaptation."
|
|
3
|
+
description: "spur-cli noun reference for `spur self init` and `spur self status`: CLI verbs (init scaffold with --name/--force/--minimal, status with --json) plus post-scaffold init validation for /sp:spur-init - Phase 1.5 functional-validation probes and Phase 1.6 rule-glob adaptation."
|
|
4
4
|
see_also:
|
|
5
5
|
- spur-cli
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# spur init / spur status - CLI verbs and post-scaffold validation
|
|
8
|
+
# spur self init / spur self status - CLI verbs and post-scaffold validation
|
|
9
9
|
|
|
10
10
|
## CLI verbs
|
|
11
11
|
|
|
@@ -14,14 +14,14 @@ see_also:
|
|
|
14
14
|
| `init` | Scaffold a new Spur project in the current directory | `--name <name>` `--force` `--minimal` `--json` |
|
|
15
15
|
| `status [path]` | Show project and git status for a Spur project | `--json` |
|
|
16
16
|
|
|
17
|
-
### `spur init` - scaffold a Spur project
|
|
17
|
+
### `spur self init` - scaffold a Spur project
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
spur init # interactive: prompt for project name
|
|
21
|
-
spur init --name my-project # non-interactive
|
|
22
|
-
spur init --name my-project --force # overwrite existing .spur/ files
|
|
23
|
-
spur init --minimal # skip optional scaffolding (rules, workflows)
|
|
24
|
-
spur init --json # machine-readable
|
|
20
|
+
spur self init # interactive: prompt for project name
|
|
21
|
+
spur self init --name my-project # non-interactive
|
|
22
|
+
spur self init --name my-project --force # overwrite existing .spur/ files
|
|
23
|
+
spur self init --minimal # skip optional scaffolding (rules, workflows)
|
|
24
|
+
spur self init --json # machine-readable
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
Materializes the `.spur/` directory tree with config, docs, rules, and workflow templates. The
|
|
@@ -34,14 +34,15 @@ post-scaffold validation probes (Phase 1.5 / 1.6, below) run immediately after t
|
|
|
34
34
|
| `--name <name>` | Project name (skips interactive prompt). |
|
|
35
35
|
| `--force` | Overwrite existing `.spur/` files. Without it, existing files are preserved. |
|
|
36
36
|
| `--minimal` | Skip optional scaffolding (rules presets, workflow templates). Core config + docs only. |
|
|
37
|
+
| `--adopt-global-config` | Also rewrite `~/.config/spur/config.yaml` from the shipped global default (backed up first). Opt-in only. |
|
|
37
38
|
| `--json` | Output machine-readable JSON instead of interactive summary. |
|
|
38
39
|
|
|
39
|
-
### `spur status [path]` - project and git status
|
|
40
|
+
### `spur self status [path]` - project and git status
|
|
40
41
|
|
|
41
42
|
```bash
|
|
42
|
-
spur status # current directory
|
|
43
|
-
spur status /path/to/project # specific project
|
|
44
|
-
spur status --json # machine-readable
|
|
43
|
+
spur self status # current directory
|
|
44
|
+
spur self status /path/to/project # specific project
|
|
45
|
+
spur self status --json # machine-readable
|
|
45
46
|
```
|
|
46
47
|
|
|
47
48
|
Reports the project's Spur configuration state (init status, feature/task counts, rule preset
|
|
@@ -50,11 +51,11 @@ directory.
|
|
|
50
51
|
|
|
51
52
|
## Post-scaffold validation
|
|
52
53
|
|
|
53
|
-
Two probes sit between the deterministic scaffold (`spur init`) and the non-deterministic doc
|
|
54
|
+
Two probes sit between the deterministic scaffold (`spur self init`) and the non-deterministic doc
|
|
54
55
|
customization: Phase 1.5 (functional validation) confirms the fresh tree is immediately functional;
|
|
55
56
|
Phase 1.6 (rule glob adaptation) rewrites layout-dependent rule globs so `recommended-pre-check`
|
|
56
57
|
runs clean on this project's layout. The executing agent owns content *adaptation* only — `spur
|
|
57
|
-
init` owns *file materialization* (`04_DESIGN.md` §1.1 "Init ownership contract").
|
|
58
|
+
self init` owns *file materialization* (`04_DESIGN.md` §1.1 "Init ownership contract").
|
|
58
59
|
|
|
59
60
|
### Phase 1.5 — Functional validation probe
|
|
60
61
|
|
|
@@ -62,8 +63,8 @@ Before any customization, confirm the fresh scaffold is immediately functional.
|
|
|
62
63
|
fails, STOP and report the gap rather than papering over it with customization:
|
|
63
64
|
|
|
64
65
|
```
|
|
65
|
-
spur status
|
|
66
|
-
spur task create "__probe__" --template standard # confirms task template + matrix resolve
|
|
66
|
+
spur self status
|
|
67
|
+
spur task create "__probe__" --template standard --skip-ready # no model dispatch; confirms task template + matrix resolve
|
|
67
68
|
spur workflow validate task-pipeline.yaml
|
|
68
69
|
```
|
|
69
70
|
|
|
@@ -17,7 +17,7 @@ top-level forms are omitted from `spur --help`, leaving `self` as the visible su
|
|
|
17
17
|
|
|
18
18
|
| Verb | Purpose | Key flags |
|
|
19
19
|
| ---- | ------- | --------- |
|
|
20
|
-
| `init` | Scaffold a new Spur project in the current directory | `--name <name>` `--force` `--minimal` `--json` |
|
|
20
|
+
| `init` | Scaffold a new Spur project in the current directory | `--name <name>` `--force` `--minimal` `--adopt-global-config` `--json` |
|
|
21
21
|
| `maintain` | Run database maintenance: PRAGMA optimize, WAL truncation, optional VACUUM | `--vacuum` `--json` |
|
|
22
22
|
| `migrate` | Apply CLI-owned schema migrations | `--json` |
|
|
23
23
|
| `serve` | Start the Spur web server (local fallback) | `--port <n>` `--host <addr>` `--no-open` `--cwd <path>` `--json` |
|
|
@@ -40,7 +40,8 @@ spur self init --json # machine-readable
|
|
|
40
40
|
|
|
41
41
|
Materializes the `.spur/` directory tree with config, docs, rules, and workflow templates. Flags:
|
|
42
42
|
`--name <name>` (default: current directory name), `--force` (recreate existing files), `--minimal`
|
|
43
|
-
(skip optional scaffolding), `--
|
|
43
|
+
(skip optional scaffolding), `--adopt-global-config` (also rewrite `~/.config/spur/config.yaml` from
|
|
44
|
+
the shipped global default, backed up first), `--json` (machine-readable output). Post-scaffold validation probes
|
|
44
45
|
(Phase 1.5 / 1.6) run immediately after this verb completes — see **[init.md](init.md)** for the
|
|
45
46
|
probe protocol and rule-glob adaptation procedure.
|
|
46
47
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spur-cli-serve
|
|
3
|
-
description: "spur-cli noun reference: operate `spur serve` as the local web-server fallback - start the Hono/Cloudflare-Worker server that backs the web Task Kanban and the supervisor API. Single verb, five flags."
|
|
3
|
+
description: "spur-cli noun reference: operate `spur self serve` as the local web-server fallback - start the Hono/Cloudflare-Worker server that backs the web Task Kanban and the supervisor API. Single verb, five flags."
|
|
4
4
|
see_also:
|
|
5
5
|
- spur-cli
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# spur serve - local web server
|
|
8
|
+
# spur self serve - local web server
|
|
9
9
|
|
|
10
|
-
`spur serve` starts the **Spur web server** - a local Hono / Cloudflare-Worker server that serves
|
|
10
|
+
`spur self serve` starts the **Spur web server** - a local Hono / Cloudflare-Worker server that serves
|
|
11
11
|
the web Task Kanban and exposes the supervisor API (`/api/processes/*` + `/api/agents/*`). It is the local fallback
|
|
12
12
|
when no remote server is configured.
|
|
13
13
|
|
|
@@ -22,10 +22,10 @@ when no remote server is configured.
|
|
|
22
22
|
## `serve` - start the web server
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
|
-
spur serve # default: localhost:3000, opens browser
|
|
26
|
-
spur serve --port 8080 --host 0.0.0.0
|
|
27
|
-
spur serve --no-open # skip browser
|
|
28
|
-
spur serve --json # dry probe: print { port, url, pid, running } and exit
|
|
25
|
+
spur self serve # default: localhost:3000, opens browser
|
|
26
|
+
spur self serve --port 8080 --host 0.0.0.0
|
|
27
|
+
spur self serve --no-open # skip browser
|
|
28
|
+
spur self serve --json # dry probe: print { port, url, pid, running } and exit
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Starts the server with the Hono app backed by the local SQLite database. The web Task Kanban and
|
|
@@ -46,14 +46,14 @@ the supervisor API become available at `http://<host>:<port>`.
|
|
|
46
46
|
|
|
47
47
|
## What this skill is NOT
|
|
48
48
|
|
|
49
|
-
- **Not the agent supervisor.** `spur serve` hosts the supervisor API; `spur agent start` / `stop` /
|
|
49
|
+
- **Not the agent supervisor.** `spur self serve` hosts the supervisor API; `spur agent start` / `stop` /
|
|
50
50
|
`agent list --specs` are the verbs that drive and inspect it (0848). See
|
|
51
51
|
**[agent.md](agent.md)**.
|
|
52
52
|
- **Not a production server.** This is the local fallback. Production deployment uses the Cloudflare
|
|
53
|
-
Worker build (`apps/server/`), not `spur serve`.
|
|
53
|
+
Worker build (`apps/server/`), not `spur self serve`.
|
|
54
54
|
|
|
55
55
|
## See also
|
|
56
56
|
|
|
57
|
-
- **`spur agent` (see [agent.md](agent.md))** - `start`/`stop`/`list --specs` require `spur serve`
|
|
57
|
+
- **`spur agent` (see [agent.md](agent.md))** - `start`/`stop`/`list --specs` require `spur self serve`
|
|
58
58
|
for the supervisor API.
|
|
59
59
|
- **`sp:spur-cli`** SKILL.md - the facade that routes to this reference.
|
|
@@ -24,8 +24,16 @@ blocking retry).
|
|
|
24
24
|
| `--feature <id>` | Records `feature_id` in frontmatter; derives `Background` from the feature's `Goal` (L4 edge). |
|
|
25
25
|
| `--parent <wbs>` | Groups under a parent WBS for sub-task decomposition. |
|
|
26
26
|
| `--template <variant>` | Selects the section-matrix variant for the new file. |
|
|
27
|
+
| `--skip-ready` | Keep the capture as-is: no ready preparation, no model dispatch. |
|
|
28
|
+
| `--agent <selector>` | Agent used for ready preparation (default: the configured agent). Exit `2` when combined with `--skip-ready`. |
|
|
27
29
|
| `--folder <path>` | Target a non-default tasks folder. |
|
|
28
|
-
| `--json` | Emit `{ ref: { id, filePath } }`. |
|
|
30
|
+
| `--json` | Emit `{ ref: { id, filePath }, wbs, filePath, readiness: { status, depth } }`. |
|
|
31
|
+
|
|
32
|
+
**Ready by default (ADR-109):** after the capture is saved, `create` prepares the same WBS in place —
|
|
33
|
+
model refine → deterministic post-check (`task check --as todo`) → promotion to `todo`.
|
|
34
|
+
`readiness.status` is `ready`, `skipped` (`--skip-ready`), or `failed`. A failed preparation exits `1`
|
|
35
|
+
with error code `preparation-failed` (`failedStage`, `recoveryCommand`, `findings`); the task file and
|
|
36
|
+
its WBS are kept. `batch-create` takes the same two flags.
|
|
29
37
|
|
|
30
38
|
(See also the full verb map in [tasks.md](../tasks.md).)
|
|
31
39
|
|
|
@@ -67,6 +75,10 @@ frontmatter scalar.
|
|
|
67
75
|
wholesale. No inline-body flag. Section names: `Background`, `Requirements`, `Acceptance Criteria`, `Q&A`, `Design`, `Plan`, `Solution`, `Testing`, `Review`, `References`, `History`, `Notes`.
|
|
68
76
|
- **Frontmatter** (`--feature <id>`, `--priority <p>`): sets the scalar frontmatter field on an
|
|
69
77
|
existing task — the only post-create path, allow-listed to `feature_id` / `parent_wbs` / `priority`.
|
|
78
|
+
- **Estimate** (`--estimate-hours <n>`): sets the `estimate_hours` frontmatter field (positive number) —
|
|
79
|
+
the decomposition size estimate the inline pipeline driver reads.
|
|
80
|
+
- **`--provenance-bypass`** (pair with `--force-done` and `--reason`): records an audited
|
|
81
|
+
provenance-bypass link when no pipeline run exists. Replaces the `SPUR_PROVENANCE_OVERRIDE` env var.
|
|
70
82
|
- **AC controls** (`--ac-altitude <graduating|task-local>`, `--ac-numbering task-local`) — independent
|
|
71
83
|
of each other (task 0818 R5). `--ac-altitude task-local` skips the **DD-09 feature-AC subset** rule
|
|
72
84
|
because the task's scenarios are intentionally not the feature's ship criteria; `--ac-numbering
|
|
@@ -156,7 +168,7 @@ backfill, and a lifecycle transition. Collapses the pipeline's record step to on
|
|
|
156
168
|
| ---- | ------ |
|
|
157
169
|
| `--verdict-file <path>` | Verdict JSON (default `.spur/run/<wbs>-verdict.json`). |
|
|
158
170
|
| `--solution-from-diff` | Backfill `Solution` from `git diff -U0` **only when Solution is bare**. |
|
|
159
|
-
| `--transition <status>` | Optional lifecycle transition after writing. **
|
|
171
|
+
| `--transition <status>` | Optional lifecycle transition after writing. `done` is a **guarded** path: it requires a PASS verdict, auto-walks `wip → testing → done`, and auto-creates the pipeline run-link; a non-PASS verdict errors instead of transitioning. |
|
|
160
172
|
|
|
161
173
|
**Verdict shape** (`.spur/run/<wbs>-verdict.json`):
|
|
162
174
|
|
|
@@ -334,6 +346,17 @@ column to distinguish AC rows from requirement rows:
|
|
|
334
346
|
`Status`: `MET` | `PARTIAL` | `UNMET` | `N/A`. `Evidence Type`: `test` | `command` | `static-ref`
|
|
335
347
|
(or `static`) | `manual-review` (or `manual`) | `llm-judge` (or `judge`) | `n/a` (or `na`).
|
|
336
348
|
|
|
349
|
+
**Graduating tasks — one row keyed to both checks (0993).** A task whose linked feature has
|
|
350
|
+
`ac_altitude: graduating` must satisfy two independent id spaces: the feature scenario alias
|
|
351
|
+
`AC-<i>` (which credits the scenario) and the task checkbox id `AC<i>` (which the box flip needs).
|
|
352
|
+
Key the row **`AC<n> — <scenario title>`**, omitting the scenario's own `R<n>` label — then one row
|
|
353
|
+
does both: `normalizeTitle` strips the `AC<n>` prefix so the row still matches the scenario title,
|
|
354
|
+
and `prefixId` normalizes `AC<n>` so the box flips. A bare `AC-<i>` also does both: `record`
|
|
355
|
+
resolves it through the feature's scenario order to the AC line aliasing scenario *i*
|
|
356
|
+
(`AC<k> — [R<n> — ]<scenario title>`) and flips that box — never the same-numbered `AC<i>`; with no
|
|
357
|
+
aliasing line it flips nothing. A bare `AC<n>` credits no scenario; a title carrying the scenario's
|
|
358
|
+
`R<n>` label matches neither.
|
|
359
|
+
|
|
337
360
|
**Evidence rule (behavior-bearing AC):** an AC row with `status: MET` on a behavior-bearing id
|
|
338
361
|
(no `[advisory]`/`[non-core]`/`[non-behavior]`/`[docs-only]` marker) MUST carry `test` or
|
|
339
362
|
`command` evidence; any other evidence type downgrades the row to `PARTIAL` and caps the verdict.
|
|
@@ -402,9 +425,9 @@ unallocated.
|
|
|
402
425
|
## Command surface (quick)
|
|
403
426
|
|
|
404
427
|
```
|
|
405
|
-
spur task create <title> [--feature <id>] [--parent <wbs>] [--template <v>] [--dedupe-within <seconds>] [--allow-duplicate-name] [--folder] [--json]
|
|
428
|
+
spur task create <title> [--feature <id>] [--parent <wbs>] [--template <v>] [--dedupe-within <seconds>] [--allow-duplicate-name] [--skip-ready | --agent <selector>] [--folder] [--json]
|
|
406
429
|
spur task show <wbs> [--folder] [--json]
|
|
407
|
-
spur task update <wbs> [status] [--section <n> --from-file <p>] [--feature <id>] [--priority <p>] [--no-lifecycle] [--folder] [--json]
|
|
430
|
+
spur task update <wbs> [status] [--section <n> --from-file <p>] [--feature <id>] [--priority <p>] [--ac-numbering task-local] [--ac-altitude <a>] [--estimate-hours <n>] [--assignee <spec-id>] [--no-lifecycle] [--force-done --reason <text> [--provenance-bypass] [--verdict-dir <path>]] [--folder] [--json]
|
|
408
431
|
spur task deps <wbs> <set|add|remove|clear> [values...] [--folder] [--json]
|
|
409
432
|
spur task sections <wbs> <init|add|list> [name] [--folder] [--json]
|
|
410
433
|
spur task list [--status <s>] [--phase <p>] [--parent <wbs>] [--feature <id>] [--folder] [--json]
|
|
@@ -412,7 +435,7 @@ spur task refresh [--folder] [--json]
|
|
|
412
435
|
spur task migrate [--dry-run] [--folder] [--json]
|
|
413
436
|
spur task migrate-anchors [--dry-run] [--json]
|
|
414
437
|
spur task refresh-roster <wbs> [--folder] [--json]
|
|
415
|
-
spur task batch-create --file <path> [--folder] [--json]
|
|
438
|
+
spur task batch-create --file <path> [--skip-ready | --agent <selector>] [--folder] [--json]
|
|
416
439
|
spur task record <wbs> [--verdict-file <p>] [--solution-from-diff] [--transition <s>] [--folder] [--json]
|
|
417
440
|
spur task verdict <wbs> [--from-answer <p>] [--folder] [--json]
|
|
418
441
|
spur task verifyall-aggregate [--from-file <path>] [--json]
|
|
@@ -38,9 +38,9 @@ re-reading or re-tokenizing the task.
|
|
|
38
38
|
|
|
39
39
|
| Verb | Purpose | Key flags |
|
|
40
40
|
| ---- | ------- | --------- |
|
|
41
|
-
| `create <title>` | Allocate a new task (race-safe WBS) | `--feature <id>` `--parent <wbs>` `--template <variant>` `--dedupe-within <s>` `--allow-duplicate-name` `--folder` `--json` |
|
|
41
|
+
| `create <title>` | Allocate a new task (race-safe WBS) | `--feature <id>` `--parent <wbs>` `--template <variant>` `--dedupe-within <s>` `--allow-duplicate-name` `--skip-ready` `--agent <selector>` `--folder` `--json` |
|
|
42
42
|
| `show <wbs>` | Print one task's frontmatter + body | `--folder` `--json` |
|
|
43
|
-
| `update <wbs> [status]` | Lifecycle transition, section replace, **or** frontmatter set | `--section <name> --from-file <path>` `--assignee <spec-id>` (exclusive with `--section`) `--feature <id>` `--priority <p>` `--no-lifecycle` `--force-done` `--reason <text>` `--verdict-dir <path>` `--folder` `--json` |
|
|
43
|
+
| `update <wbs> [status]` | Lifecycle transition, section replace, **or** frontmatter set | `--section <name> --from-file <path>` `--assignee <spec-id>` (exclusive with `--section`) `--feature <id>` `--priority <p>` `--ac-numbering task-local` `--ac-altitude <a>` `--estimate-hours <n>` `--no-lifecycle` `--force-done` `--reason <text>` `--provenance-bypass` `--verdict-dir <path>` `--folder` `--json` |
|
|
44
44
|
| `deps <wbs> <op> [values...]` | Mutate `dependencies[]` frontmatter array (ops: `set`, `add`, `remove`, `clear`) | `--folder` `--json` |
|
|
45
45
|
| `sections <wbs> <op> [name]` | Initialize, add, or list canonical task sections (ops: `init`, `add`, `list`) | `--folder` `--json` |
|
|
46
46
|
| `list` | List tasks, filtered | `--status <s>` `--phase <p>` `--parent <wbs>` `--feature <id>` `--folder` `--json` |
|
|
@@ -48,10 +48,10 @@ re-reading or re-tokenizing the task.
|
|
|
48
48
|
| `migrate` | One-time A17 corpus normalization pass | `--dry-run` `--folder` `--json` |
|
|
49
49
|
| `migrate-anchors` | Qualify in-repo evidence anchors to repo-relative paths (0583 R1–R3) | `--dry-run` `--json` |
|
|
50
50
|
| `refresh-roster <wbs>` | Regenerate a parent task's sub-task roster block in `## Plan` | `--folder` `--json` |
|
|
51
|
-
| `batch-create` | Create many tasks from a validated JSON array | `--file <path>` `--folder` `--json` |
|
|
51
|
+
| `batch-create` | Create many tasks from a validated JSON array | `--file <path>` `--skip-ready` `--agent <selector>` `--folder` `--json` |
|
|
52
52
|
| `record <wbs>` | Write `Testing` from a verify verdict (deterministic); bare-`## Review` fallback only; optional Solution + transition | `--verdict-file <path>` `--solution-from-diff` `--transition <status>` `--folder` `--json` |
|
|
53
53
|
| `verdict <wbs>` | Derive PASS/PARTIAL/FAIL/UNKNOWN from verify answer text → verdict JSON; see [answer-file shape](tasks/verbs.md#answer-file-shape-what---from-answer-parses) | `--from-answer <path>` `--folder` `--json` |
|
|
54
|
-
| `check [wbs]` | Four-layer validation; `--fix` repairs structure; `--corpus` is the explicit unsuppressed audit | `--strict` `--as <status>` `--strict-core` `--fix` `--folder` `--corpus` `--since <ref>` `--json` |
|
|
54
|
+
| `check [wbs]` | Four-layer validation; `--fix` repairs structure; `--corpus` is the explicit unsuppressed audit; `--precheck` adds the pipeline precheck gate (size + evidence channel, WBS required) | `--strict` `--as <status>` `--strict-core` `--precheck` `--fix` `--folder` `--corpus` `--since <ref>` `--json` |
|
|
55
55
|
| `resolve <file-path>` | Map a file path to its owning task WBS | `--strict` `--folder` `--json` |
|
|
56
56
|
| `path <wbs>` | Map a WBS to its absolute task file path (inverse of `resolve`) | `--folder` `--json` |
|
|
57
57
|
| `run-link <wbs>` | Record pipeline run provenance link for task | `--source <src>` `--run-id <id>` `--json` |
|
|
@@ -73,6 +73,11 @@ spur task create "Add email validation" --feature H2 --parent 0040
|
|
|
73
73
|
- **`--template <variant>`** selects the section-matrix variant that shapes the new file's sections:
|
|
74
74
|
`standard·feature-impl·issue·review·meta·brainstorm`. The default is **`feature-impl` when
|
|
75
75
|
`--feature` is given, else `standard`**. An unknown variant is exit `2`.
|
|
76
|
+
- **Ready by default (ADR-109):** `create` and `batch-create` dispatch a model to prepare the new task
|
|
77
|
+
to ready (refine → `task check --as todo` post-check → promotion to `todo`). Pass **`--skip-ready`**
|
|
78
|
+
for a plain capture with no model dispatch; **`--agent <selector>`** picks the preparing agent.
|
|
79
|
+
`--json` carries `readiness: { status: ready|skipped|failed, depth }`; a failed preparation exits `1`
|
|
80
|
+
(`preparation-failed`) and keeps the task.
|
|
76
81
|
|
|
77
82
|
The same `--template` axis drives both *which sections the new file carries* (per the
|
|
78
83
|
Section-Status-Matrix) and *its creation status*: a spec'd task (a `--feature` link, or a batch item
|
|
@@ -271,7 +276,7 @@ spur task check --json # whole corpus
|
|
|
271
276
|
spur task check 0040 --json # one task
|
|
272
277
|
spur task check --strict --json # elevate ALL warnings to failures
|
|
273
278
|
spur task check 0040 --as done # evaluate as the done row (lifecycle target, F92 R2)
|
|
274
|
-
spur task check 0040 --strict-core #
|
|
279
|
+
spur task check 0040 --strict-core # compatibility alias; not the done gate (use --as done)
|
|
275
280
|
```
|
|
276
281
|
|
|
277
282
|
**Folder resolution (task 0522):** a WBS-targeted check (`<wbs>` present, no `--folder`) resolves
|
|
@@ -291,9 +296,10 @@ The two flags are distinct gate profiles:
|
|
|
291
296
|
- **`--strict`** elevates *all* warnings to failures (the strictest reading).
|
|
292
297
|
- **`--as <status>`** evaluates the task as if it were already in `<status>` (F92 R2); the lifecycle
|
|
293
298
|
guards pass the transition target. Validated against canonical task statuses; excluded with `--corpus`.
|
|
294
|
-
- **`--strict-core`** is a **
|
|
295
|
-
|
|
296
|
-
as
|
|
299
|
+
- **`--strict-core`** is a **compatibility alias** (F92 R2) kept so installed plugins/workflows that
|
|
300
|
+
call it keep working. It runs the default severity computation against the task's *current* status
|
|
301
|
+
and is no longer meaningful on its own. The lifecycle guards are `--as testing` (`wip→testing`) and
|
|
302
|
+
`--as done` (`testing→done`); use `--as <status>` for gate checks.
|
|
297
303
|
|
|
298
304
|
See [tasks/verbs.md](tasks/verbs.md) for the JSON shape per finding.
|
|
299
305
|
|
|
@@ -125,7 +125,7 @@ Any of the four may additionally carry a **bracket tag** in any position — `[d
|
|
|
125
125
|
`Scenario: [advisory] Foo`. Tags are stripped before matching (0398 R7), so tagging never breaks
|
|
126
126
|
the linkage.
|
|
127
127
|
|
|
128
|
-
Task-side, `
|
|
128
|
+
Task-side, the `spur task verdict` answer lint additionally accepts a fifth declared id source — a **bold-trajectory
|
|
129
129
|
paragraph**: a whole-line `**AC id…**` paragraph inside the task's `### Acceptance Criteria`
|
|
130
130
|
block (task 0817 R3). The id up to its first `:` and the paragraph's full spelling are both
|
|
131
131
|
declared; two bold spans on one line are not a declaration (an interpolated bold id stays
|
|
@@ -141,7 +141,7 @@ unmatchable):
|
|
|
141
141
|
|
|
142
142
|
### A bullet's bold head is its id
|
|
143
143
|
|
|
144
|
-
`
|
|
144
|
+
The `spur task verdict` answer lint declares the bold span of a single-line criterion bullet
|
|
145
145
|
(`- **AC2 — The roster runtime is gone (R3).** Given …, when …, then …`) and its head before the
|
|
146
146
|
first ` — ` or `:` — so answer rows may key `AC2` or `AC2 — The roster runtime is gone (R3).`. Keep
|
|
147
147
|
at least one answer row keyed to the verbatim feature scenario title the task graduates, and keep
|
|
@@ -222,7 +222,8 @@ Use the canonical BDD template at `templates/bdd/gherkin.md`. Key rules:
|
|
|
222
222
|
```
|
|
223
223
|
|
|
224
224
|
Every inventory item without a `[deferred: ...]` marker must be covered by at least one
|
|
225
|
-
scenario — `
|
|
225
|
+
scenario — the `feature check --inventory` gate (inventory-coverage finding) measures this at
|
|
226
|
+
the idea-pipeline's ac-generate boundary.
|
|
226
227
|
|
|
227
228
|
Avoid:
|
|
228
229
|
|
|
@@ -22,7 +22,7 @@ not redefine it.
|
|
|
22
22
|
> precedence chain, and the `implementAgent` override.** Every other reference (flag-glossary,
|
|
23
23
|
> execution-workflow, execution-batch, dev-operations, cmd_agent, cmd_workflow) links here and
|
|
24
24
|
> does not restate the contract. The value table below is authoritative; parity with it is
|
|
25
|
-
> enforced by `validate-flag-contracts.ts` (C3a/C3b).
|
|
25
|
+
> enforced by `scripts/commands/validate-flag-contracts.ts` (C3a/C3b).
|
|
26
26
|
|
|
27
27
|
### The one rule
|
|
28
28
|
|
|
@@ -289,8 +289,8 @@ Never edit a task or feature file directly. Every mutation goes through:
|
|
|
289
289
|
|
|
290
290
|
The interactive `--next` step-chain (`dev-refine → dev-run → dev-verify → done`) moves a task's
|
|
291
291
|
status with `spur task update <wbs> <status>` **without `--no-lifecycle`**, so the lifecycle guards
|
|
292
|
-
run: `wip → testing` invokes `spur task check`, `testing → done` invokes
|
|
293
|
-
`spur task check --
|
|
292
|
+
run: `wip → testing` invokes `spur task check --as testing`, `testing → done` invokes
|
|
293
|
+
`spur task check --as done`. A guard failure **stops the chain as review-pending** — leave the
|
|
294
294
|
task at its current status, surface the blocking finding, do not advance. This is the gate that
|
|
295
295
|
keeps a malformed task out of `testing`/`done`.
|
|
296
296
|
|
|
@@ -455,7 +455,7 @@ Seven non-negotiable invariants for the spur-dev lifecycle. These are laws, not
|
|
|
455
455
|
violation is a defect in the run, not a style choice. Every competency skill and the spine consume
|
|
456
456
|
them; they live here because they cross every phase boundary.
|
|
457
457
|
|
|
458
|
-
1. **NEVER skip the verification gate.** A task is not done until `spur task check <wbs> --
|
|
458
|
+
1. **NEVER skip the verification gate.** A task is not done until `spur task check <wbs> --as done`
|
|
459
459
|
returns PASS and every AC scenario has a corresponding verify command that exited 0. "I tested it
|
|
460
460
|
manually" is not verification evidence.
|
|
461
461
|
2. **NEVER write to task/feature corpus outside the `spur` CLI.** Direct file edits to
|
|
@@ -463,7 +463,7 @@ them; they live here because they cross every phase boundary.
|
|
|
463
463
|
under `.spur/memory/`. Every other mutation goes through `spur task` / `spur feature` so the
|
|
464
464
|
schema, matrix, and traceability guards run.
|
|
465
465
|
3. **NEVER mark a task done without a PASS verdict.** `testing → done` requires
|
|
466
|
-
`spur task check --
|
|
466
|
+
`spur task check --as done` PASS and a recorded verdict. PARTIAL or FAIL verdicts leave the
|
|
467
467
|
task at `testing` and surface to the operator.
|
|
468
468
|
4. **NEVER proceed past a failed gate without explicit operator approval.** A failed
|
|
469
469
|
`feature-check`, `batch-create`, `precheck`, `review`, or `verify` stops the run. The operator
|
|
@@ -783,10 +783,12 @@ The Design Approval Gate is the taste gate between system design and decompositi
|
|
|
783
783
|
**Auto-mode behavior:**
|
|
784
784
|
|
|
785
785
|
- `--auto` routes around taste HITL states BEFORE entry only when the matching pre-clear vars are
|
|
786
|
-
true.
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
786
|
+
true. On the planning commands (`dev-idea`, `dev-plan`) CLI **`--auto`** sets `profile=auto`,
|
|
787
|
+
`design_approved=true`, and `idea_approved=true` — the planning exception to Auto-Decision
|
|
788
|
+
Principle #5 (reversible corpus writes; see flag-glossary `--auto`).
|
|
789
|
+
- The bypass still follows the evidence: idea-eval continues only on a `proceed`/`reshape`
|
|
790
|
+
recommendation (`drop` cancels, missing pauses) and design-approval only on a PASS design check.
|
|
791
|
+
Direct `spur workflow run` callers that leave the pre-clear vars `false` keep both taste pauses.
|
|
790
792
|
- The brainstorm design summary is ALWAYS recorded, regardless of `--auto` — `--auto` does not
|
|
791
793
|
bypass the "nothing is too simple" pattern.
|
|
792
794
|
|
|
@@ -74,7 +74,7 @@ Option B — <name> [kind-note: optimizes for X over Y, not "more/less complet
|
|
|
74
74
|
| `spec-decomposition` pre-batch quiz | approve the task breakdown | The granularity / dependency quiz is a decision brief: recommended breakdown + the trade-off of each alternative slicing. |
|
|
75
75
|
| `dev-plan` intake | scope, constraints, success (design package via `--skip-design` only) | Single `AskUserQuestion` call with multiple questions — one per independent dimension. Recommendation and scored options per dimension. |
|
|
76
76
|
| `dev-idea` intake | idea scope, feature, success (design package via `--skip-design` only) | Single `AskUserQuestion` call with multiple questions — one per independent dimension. Recommendation and scored options per dimension. |
|
|
77
|
-
| `dev-idea` idea-eval | approve enhanced idea / reject (no feature) | Taste HITL after discovery: report at `.spur/run/idea-eval-report.md` (urgency/necessity, premises, pros/cons).
|
|
77
|
+
| `dev-idea` idea-eval | approve enhanced idea / reject (no feature) | Taste HITL after discovery: report at `.spur/run/idea-eval-report.md` (urgency/necessity, premises, pros/cons). Options: approve (proceed/reshape) · reject (no feature) · cancel; the report's recommendation is the recommended option. `--auto` takes it (`drop` → cancel). |
|
|
78
78
|
| `dev-wrap` branch cleanup | merge strategy, target, cleanup scope | Single `AskUserQuestion` call — asked even under `--auto` (irreversible). Confirmation collects all parameters up front. |
|
|
79
79
|
| `dev-wrapall` batch branch cleanup | merge strategy, target, scope, feature transition | Single `AskUserQuestion` call — asked even under `--auto` (irreversible). Confirmation collects all parameters up front. |
|
|
80
80
|
| `dev-refine` focus selection | `--focus` bundle selection | Single `AskUserQuestion` call with one question per focus dimension. Scored choices from the decision brief become `options[]`. |
|