@gobing-ai/spur 0.4.5 → 0.4.6

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 (69) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/config/config.example.yaml +3 -4
  3. package/config/config.global.yaml +3 -4
  4. package/config/rules/quality/coverage-gate.yaml +6 -4
  5. package/config/transition-shims.json +0 -14
  6. package/package.json +1 -1
  7. package/plugins/sp/lib/inline-run.generated.mjs +1 -1
  8. package/plugins/sp/plugin.json +1 -1
  9. package/plugins/sp/scripts/commit-guard.mjs +49 -39
  10. package/plugins/sp/scripts/commit-guard.ts +60 -61
  11. package/plugins/sp/scripts/persist-out-check.mjs +28 -24
  12. package/plugins/sp/scripts/persist-out-check.ts +42 -33
  13. package/plugins/sp/skills/code-verification/references/verdict-schema.md +5 -3
  14. package/plugins/sp/skills/spur-cli/references/tasks/verbs.md +4 -2
  15. package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +3 -1
  16. package/plugins/sp/skills/spur-dev/references/done-housekeeping.md +3 -2
  17. package/spur.js +155 -48
  18. package/web/_astro/{BoardApp.hF0RAIrg.js → BoardApp.C5jnkkKP.js} +124 -124
  19. package/web/_astro/{BoardApp.Niubpe6z.js → BoardApp.CaNvQBD_.js} +1 -1
  20. package/web/_astro/{TaskDetail.DJpapt38.js → TaskDetail.DGKndhI8.js} +1 -1
  21. package/web/_astro/{arc.BgKcK0i8.js → arc.DHrwdg3G.js} +1 -1
  22. package/web/_astro/{architectureDiagram-3BPJPVTR.ChP-Ig0V.js → architectureDiagram-3BPJPVTR.pvKpK1s5.js} +1 -1
  23. package/web/_astro/{blockDiagram-GPEHLZMM.BVaCBoeN.js → blockDiagram-GPEHLZMM.BQmRcZsS.js} +1 -1
  24. package/web/_astro/{c4Diagram-AAUBKEIU.CHSDpEO5.js → c4Diagram-AAUBKEIU.CCLjHeH1.js} +1 -1
  25. package/web/_astro/channel.C7wG9RxA.js +1 -0
  26. package/web/_astro/{chunk-2J33WTMH.MYRcYVRa.js → chunk-2J33WTMH.DL6Yuoma.js} +1 -1
  27. package/web/_astro/{chunk-4BX2VUAB.S5j22Zqa.js → chunk-4BX2VUAB.CzlyEI7l.js} +1 -1
  28. package/web/_astro/{chunk-55IACEB6.gciRPvmZ.js → chunk-55IACEB6.B60EWxp1.js} +1 -1
  29. package/web/_astro/{chunk-727SXJPM.CdqrSQkX.js → chunk-727SXJPM.c7v_fRLo.js} +1 -1
  30. package/web/_astro/{chunk-AQP2D5EJ.CyokdHT3.js → chunk-AQP2D5EJ.8BxLWdDc.js} +1 -1
  31. package/web/_astro/{chunk-FMBD7UC4.Bg9KJhjW.js → chunk-FMBD7UC4.DmKuxGFT.js} +1 -1
  32. package/web/_astro/{chunk-ND2GUHAM.1gxxI-vD.js → chunk-ND2GUHAM.1Zwd4mqV.js} +1 -1
  33. package/web/_astro/{chunk-QZHKN3VN.DDEYtCKU.js → chunk-QZHKN3VN.BvYLu-A1.js} +1 -1
  34. package/web/_astro/{classDiagram-4FO5ZUOK.Ch3zi37T.js → classDiagram-4FO5ZUOK.CEqRt0WU.js} +1 -1
  35. package/web/_astro/{classDiagram-v2-Q7XG4LA2.Ch3zi37T.js → classDiagram-v2-Q7XG4LA2.CEqRt0WU.js} +1 -1
  36. package/web/_astro/{cose-bilkent-S5V4N54A.D2q5AINI.js → cose-bilkent-S5V4N54A.C7JiUdj2.js} +1 -1
  37. package/web/_astro/{cynefin-OW5HDTMX.BA9kC2YT.js → cynefin-OW5HDTMX.B6mZ-1be.js} +1 -1
  38. package/web/_astro/{dagre-BM42HDAG.CHO08nRp.js → dagre-BM42HDAG.BuryfDy6.js} +1 -1
  39. package/web/_astro/{diagram-2AECGRRQ.BfFQt0LW.js → diagram-2AECGRRQ.dao39YQM.js} +1 -1
  40. package/web/_astro/{diagram-5GNKFQAL.CHMwMTe4.js → diagram-5GNKFQAL.lnGZe4At.js} +1 -1
  41. package/web/_astro/{diagram-KO2AKTUF.BJ-7gK-w.js → diagram-KO2AKTUF.uWfhzEfT.js} +1 -1
  42. package/web/_astro/{diagram-LMA3HP47.C5xqcc0t.js → diagram-LMA3HP47.ppq8-198.js} +1 -1
  43. package/web/_astro/{diagram-OG6HWLK6.C2pQjfrC.js → diagram-OG6HWLK6.CKSCqDt5.js} +1 -1
  44. package/web/_astro/{erDiagram-TEJ5UH35._FoNyxgC.js → erDiagram-TEJ5UH35.sFSf2yBN.js} +1 -1
  45. package/web/_astro/{flowDiagram-I6XJVG4X.B_ENkT2I.js → flowDiagram-I6XJVG4X.BJQjKLbz.js} +1 -1
  46. package/web/_astro/{ganttDiagram-6RSMTGT7.B3q8h77C.js → ganttDiagram-6RSMTGT7.DAHKNj2N.js} +1 -1
  47. package/web/_astro/{gitGraphDiagram-PVQCEYII.QWZFDboZ.js → gitGraphDiagram-PVQCEYII.BlmzcW_O.js} +1 -1
  48. package/web/_astro/index.BCY1JJHd.css +1 -0
  49. package/web/_astro/{infoDiagram-5YYISTIA.Cs6eEc92.js → infoDiagram-5YYISTIA.DGhjaqsi.js} +1 -1
  50. package/web/_astro/{ishikawaDiagram-YF4QCWOH.BU9DJMHA.js → ishikawaDiagram-YF4QCWOH.gKIpgt6F.js} +1 -1
  51. package/web/_astro/{journeyDiagram-JHISSGLW.D35k6Jpe.js → journeyDiagram-JHISSGLW.DG3tmP0R.js} +1 -1
  52. package/web/_astro/{kanban-definition-UN3LZRKU.DBqcAT4m.js → kanban-definition-UN3LZRKU.CgHDSxkR.js} +1 -1
  53. package/web/_astro/{linear.D-LSNK8W.js → linear.BuGEpcuM.js} +1 -1
  54. package/web/_astro/{mermaid.core.CSruWVOa.js → mermaid.core.DBVqkWBp.js} +4 -4
  55. package/web/_astro/{mindmap-definition-RKZ34NQL.BiFaUsfj.js → mindmap-definition-RKZ34NQL.D-kOcji9.js} +1 -1
  56. package/web/_astro/{pieDiagram-4H26LBE5.D1KTKqb9.js → pieDiagram-4H26LBE5.BvGPwtZt.js} +1 -1
  57. package/web/_astro/{quadrantDiagram-W4KKPZXB.DBHflsMG.js → quadrantDiagram-W4KKPZXB.BKb_9FV6.js} +1 -1
  58. package/web/_astro/{requirementDiagram-4Y6WPE33.hwX9CNdk.js → requirementDiagram-4Y6WPE33.Cx0fvD8v.js} +1 -1
  59. package/web/_astro/{sankeyDiagram-5OEKKPKP.DkI8mJiE.js → sankeyDiagram-5OEKKPKP.fatULi0W.js} +1 -1
  60. package/web/_astro/{sequenceDiagram-3UESZ5HK.DMz7jBDx.js → sequenceDiagram-3UESZ5HK.ChHyKqco.js} +1 -1
  61. package/web/_astro/{stateDiagram-AJRCARHV.B6Ef2xJ1.js → stateDiagram-AJRCARHV.BdUpKWyj.js} +1 -1
  62. package/web/_astro/{stateDiagram-v2-BHNVJYJU.CgoaufB9.js → stateDiagram-v2-BHNVJYJU.fmJxqIm5.js} +1 -1
  63. package/web/_astro/{timeline-definition-PNZ67QCA.B3c8h1t-.js → timeline-definition-PNZ67QCA.BayDn5-V.js} +1 -1
  64. package/web/_astro/{vennDiagram-CIIHVFJN.BdHPAxAb.js → vennDiagram-CIIHVFJN.Bm2Aggwa.js} +1 -1
  65. package/web/_astro/{wardleyDiagram-YWT4CUSO.BrJXPPAj.js → wardleyDiagram-YWT4CUSO.DI75O-uG.js} +1 -1
  66. package/web/_astro/{xychartDiagram-2RQKCTM6.CMH5yFsV.js → xychartDiagram-2RQKCTM6.DL90E7Q7.js} +1 -1
  67. package/web/index.html +2 -2
  68. package/web/_astro/channel.DkpvN2tD.js +0 -1
  69. package/web/_astro/index.BFyW13JJ.css +0 -1
@@ -7,7 +7,7 @@
7
7
  "plugins": [
8
8
  {
9
9
  "name": "sp",
10
- "version": "0.4.5",
10
+ "version": "0.4.6",
11
11
  "source": "./plugins/sp"
12
12
  }
13
13
  ]
@@ -66,10 +66,9 @@ bootstrap:
66
66
  agent:
67
67
  # `default` is the role used for `--agent auto` when the caller declares
68
68
  # nothing (task 0542 R2 — the value domain moved from executor names to
69
- # roles). A role id selects its tier's cheapest eligible executor; a
70
- # configured executor name still resolves during the transition with a
71
- # one-time warning (shim agent-default-executor); any other value fails
72
- # naming both accepted sets.
69
+ # roles). A role id selects its tier's cheapest eligible executor; any
70
+ # other value fails. A configured executor name fails with a fix (use a
71
+ # role, and pin the executor with --agent <name>).
73
72
  default: coder
74
73
 
75
74
  # Role → tier map (SSOT: DEFAULT_AGENT_ROLES in packages/config, task 0572 /
@@ -35,10 +35,9 @@ version: "1.2"
35
35
  agent:
36
36
  # `default` is the role used for `--agent auto` when the caller declares
37
37
  # nothing (task 0542 R2 — the value domain moved from executor names to
38
- # roles). A role id selects its tier's cheapest eligible executor; a
39
- # configured executor name still resolves during the transition with a
40
- # one-time warning (shim agent-default-executor); any other value fails
41
- # naming both accepted sets.
38
+ # roles). A role id selects its tier's cheapest eligible executor; any
39
+ # other value fails. A configured executor name fails with a fix (use a
40
+ # role, and pin the executor with --agent <name>).
42
41
  default: coder
43
42
 
44
43
  # Role → tier map. Resolution: role → tier → cheapest USABLE executor whose
@@ -12,14 +12,16 @@ $schema: "@gobing-ai/spur/schemas/rule-file.schema.json"
12
12
  # `bun run test:full`. Running this rule directly via `spur rule run` outside the
13
13
  # repository wrapper bypasses that certification wrapper and is outside this
14
14
  # repository's certification contract. This rule and its evaluator are unchanged.
15
+ # Launcher children write isolated LCOV; canonical publication is exclusive and
16
+ # accepts only that run's complete records. Noncanonical launcher runs cannot
17
+ # overwrite the certified tracefile. Bare `bun test` still bypasses the launcher.
15
18
  #
16
19
  # Absorbed from ts-libs/.spur/rules/quality/coverage-gate.yaml, re-scoped to
17
20
  # Spur's monorepo layout:
18
21
  # - lcovPath kept at .coverage/lcov.info (Spur's `bun run test:coverage`
19
- # writes it via --coverage-dir=.coverage, and `bunfig.toml
20
- # [test] coverage = true` means a plain `bun run test` writes the same
21
- # artifact — so a TARGETED `bun test <file>` overwrites it with a partial
22
- # tracefile, and this rule then judges that partial data)
22
+ # publishes it after a completed run; bare TARGETED `bun test <file>` can
23
+ # still overwrite it with partial data, which the repository provenance
24
+ # wrapper refuses before this rule runs)
23
25
  # - include expanded to apps/** + packages/** (Spur tests cover both;
24
26
  # ts-libs only covers packages/**)
25
27
  # - threshold kept at 90 matching bunfig.toml coverageThreshold
@@ -7,20 +7,6 @@
7
7
  "file": "packages/app/src/services/agent-service.ts",
8
8
  "keepsWorking": "a bare coding-agent binary name (codex, omp, claude with no matching agent.executors entry) remains a valid --agent value during the role transition, with a one-time warning emitted by warnBareBinaryOnce",
9
9
  "removalCondition": "no bare-binary --agent value remains in docs/, config/workflows/, or plugins/sp/ (scan for --agent <binary-name> usages against agent.executors names)"
10
- },
11
- {
12
- "id": "spec-without-executor-field",
13
- "wbs": "0537",
14
- "file": "apps/cli/src/commands/agent.ts",
15
- "keepsWorking": "a pre-existing agent spec carrying only type (no executor field) still drains: --agent <specId> falls back to the spec's coding-agent type instead of resolving a missing executor",
16
- "removalCondition": "every spec under .spur/agents/ records an executor field (scan .spur/agents/*.yaml for the key; re-materialize the demo team first)"
17
- },
18
- {
19
- "id": "agent-default-executor",
20
- "wbs": "0542",
21
- "file": "packages/app/src/services/agent-service.ts",
22
- "keepsWorking": "a configured executor name in agent.default still resolves during the transition, warned once by warnAgentDefaultExecutorOnce; the value domain moved to roles (recommended default: coder)",
23
- "removalCondition": "no agent.default value names an agent.executors entry (scan .spur/config.yaml and config/config.example.yaml against the agent.executors names)"
24
10
  }
25
11
  ]
26
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobing-ai/spur",
3
- "version": "0.4.5",
3
+ "version": "0.4.6",
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",