@gobing-ai/spur 0.3.48 → 0.3.50

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 (85) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/config/config.example.yaml +52 -4
  3. package/config/corpus-baseline.json +12144 -3
  4. package/config/workflows/pr-review.yaml +338 -0
  5. package/package.json +9 -9
  6. package/plugins/sp/README.md +9 -6
  7. package/plugins/sp/commands/{dev-featurechange.md → dev-feature-change.md} +7 -10
  8. package/plugins/sp/commands/dev-find-issue.md +24 -19
  9. package/plugins/sp/commands/dev-find-next.md +3 -3
  10. package/plugins/sp/commands/dev-gtd.md +11 -12
  11. package/plugins/sp/commands/dev-history-load.md +63 -0
  12. package/plugins/sp/commands/dev-pr-review.md +39 -0
  13. package/plugins/sp/plugin.json +1 -1
  14. package/plugins/sp/references/roles.md +25 -12
  15. package/plugins/sp/scripts/history-load.ts +400 -0
  16. package/plugins/sp/scripts/pr-reviewing.ts +867 -0
  17. package/plugins/sp/scripts/validate-commands.ts +33 -2
  18. package/plugins/sp/skills/code-implementation/SKILL.md +9 -1
  19. package/plugins/sp/skills/code-verification/SKILL.md +41 -28
  20. package/plugins/sp/skills/issue-finding/SKILL.md +6 -5
  21. package/plugins/sp/skills/issue-finding/references/session-formats.md +4 -2
  22. package/plugins/sp/skills/next-feature/SKILL.md +6 -6
  23. package/plugins/sp/skills/next-feature/references/handoff-routing.md +5 -5
  24. package/plugins/sp/skills/next-feature/references/signal-derivation.md +7 -2
  25. package/plugins/sp/skills/pr-reviewing/SKILL.md +285 -0
  26. package/plugins/sp/skills/spur-cli/references/features/hierarchy-mece.md +5 -5
  27. package/plugins/sp/skills/spur-cli/references/features.md +1 -1
  28. package/plugins/sp/skills/spur-cli/references/tasks.md +1 -0
  29. package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +18 -2
  30. package/plugins/sp/skills/spur-dev/references/cross-cutting.md +14 -6
  31. package/plugins/sp/skills/spur-dev/references/flag-glossary.md +14 -4
  32. package/schemas/spur-config.schema.json +20 -0
  33. package/spur.js +5336 -5714
  34. package/web/_astro/BoardApp.pdtYu-yW.js +1 -0
  35. package/web/_astro/{BoardApp.BjQUNhuj.js → BoardApp.plVXYkKo.js} +11 -11
  36. package/web/_astro/{TaskDetail.CVBuD6dF.js → TaskDetail.5DIyVQ_N.js} +1 -1
  37. package/web/_astro/{arc.BMMjdODi.js → arc.BnUgL7ho.js} +1 -1
  38. package/web/_astro/{architectureDiagram-3BPJPVTR.BU5ShzXf.js → architectureDiagram-3BPJPVTR.B9YMJau-.js} +1 -1
  39. package/web/_astro/{blockDiagram-GPEHLZMM.Bj1iEqPD.js → blockDiagram-GPEHLZMM.Dw2qgvWJ.js} +1 -1
  40. package/web/_astro/{c4Diagram-AAUBKEIU.vX8wepCL.js → c4Diagram-AAUBKEIU.jTbU0-Nk.js} +1 -1
  41. package/web/_astro/channel.DEqvaz-I.js +1 -0
  42. package/web/_astro/{chunk-2J33WTMH.BKAipTym.js → chunk-2J33WTMH.Di46EtkU.js} +1 -1
  43. package/web/_astro/{chunk-4BX2VUAB.B68XkPG7.js → chunk-4BX2VUAB.DweHBwqQ.js} +1 -1
  44. package/web/_astro/{chunk-55IACEB6.BmeDLcrc.js → chunk-55IACEB6.rRjTKaa7.js} +1 -1
  45. package/web/_astro/{chunk-727SXJPM.PDuBA3Kw.js → chunk-727SXJPM.BkEQIkSV.js} +1 -1
  46. package/web/_astro/{chunk-AQP2D5EJ.C7A044za.js → chunk-AQP2D5EJ.Cfe9IvAd.js} +1 -1
  47. package/web/_astro/{chunk-FMBD7UC4.BtzKKFqR.js → chunk-FMBD7UC4.fI6tLbeN.js} +1 -1
  48. package/web/_astro/{chunk-ND2GUHAM.BJuDeeOy.js → chunk-ND2GUHAM.BIjgpq0O.js} +1 -1
  49. package/web/_astro/{chunk-QZHKN3VN.DSeMDgcQ.js → chunk-QZHKN3VN.ZwLnVxyz.js} +1 -1
  50. package/web/_astro/{classDiagram-4FO5ZUOK.D53Q4tCw.js → classDiagram-4FO5ZUOK.BJAGYidE.js} +1 -1
  51. package/web/_astro/{classDiagram-v2-Q7XG4LA2.D53Q4tCw.js → classDiagram-v2-Q7XG4LA2.BJAGYidE.js} +1 -1
  52. package/web/_astro/{cose-bilkent-S5V4N54A.c712AFRH.js → cose-bilkent-S5V4N54A.B5y3nz26.js} +1 -1
  53. package/web/_astro/{dagre-BM42HDAG.D-idisph.js → dagre-BM42HDAG.DHmw0ZBC.js} +1 -1
  54. package/web/_astro/{diagram-2AECGRRQ.DLgnsJCU.js → diagram-2AECGRRQ.10gapJfY.js} +1 -1
  55. package/web/_astro/{diagram-5GNKFQAL.BiaxBVqx.js → diagram-5GNKFQAL.Gh33_drM.js} +1 -1
  56. package/web/_astro/{diagram-KO2AKTUF.C8HX1vd8.js → diagram-KO2AKTUF.8ROWlfcX.js} +1 -1
  57. package/web/_astro/{diagram-LMA3HP47.CfqDLLes.js → diagram-LMA3HP47.BsP3tKmg.js} +1 -1
  58. package/web/_astro/{diagram-OG6HWLK6.15SDiEed.js → diagram-OG6HWLK6.DM2WFDhU.js} +1 -1
  59. package/web/_astro/{erDiagram-TEJ5UH35.DksYtOYM.js → erDiagram-TEJ5UH35.royaC_lH.js} +1 -1
  60. package/web/_astro/{flowDiagram-I6XJVG4X.DR_Au-HV.js → flowDiagram-I6XJVG4X.C9GEvIie.js} +1 -1
  61. package/web/_astro/{ganttDiagram-6RSMTGT7.CHhHrffI.js → ganttDiagram-6RSMTGT7.CXO4T2U0.js} +1 -1
  62. package/web/_astro/{gitGraphDiagram-PVQCEYII.B2Xehvam.js → gitGraphDiagram-PVQCEYII.Q02KzYH7.js} +1 -1
  63. package/web/_astro/{infoDiagram-5YYISTIA.C9c3CNNN.js → infoDiagram-5YYISTIA.DNfSDKJt.js} +1 -1
  64. package/web/_astro/{ishikawaDiagram-YF4QCWOH.BibUHkh8.js → ishikawaDiagram-YF4QCWOH.BFttvtgJ.js} +1 -1
  65. package/web/_astro/{journeyDiagram-JHISSGLW.BYoVHiyO.js → journeyDiagram-JHISSGLW.Cfm-2SbG.js} +1 -1
  66. package/web/_astro/{kanban-definition-UN3LZRKU.CM1K5wHE.js → kanban-definition-UN3LZRKU.BWGNW6fV.js} +1 -1
  67. package/web/_astro/{linear.SPpjJUb-.js → linear.BprdUk2Y.js} +1 -1
  68. package/web/_astro/{mermaid.core.BAgx3nnb.js → mermaid.core.B2zRNxtX.js} +4 -4
  69. package/web/_astro/{mindmap-definition-RKZ34NQL.D35oPG1R.js → mindmap-definition-RKZ34NQL.g9jij8sw.js} +1 -1
  70. package/web/_astro/{pieDiagram-4H26LBE5.DiWuRwk7.js → pieDiagram-4H26LBE5.CbzR4n5b.js} +1 -1
  71. package/web/_astro/{quadrantDiagram-W4KKPZXB.B9PBzTWn.js → quadrantDiagram-W4KKPZXB.DxV3viWt.js} +1 -1
  72. package/web/_astro/{requirementDiagram-4Y6WPE33.CYuuamFN.js → requirementDiagram-4Y6WPE33.DvAb90JS.js} +1 -1
  73. package/web/_astro/{sankeyDiagram-5OEKKPKP.W24UhhtD.js → sankeyDiagram-5OEKKPKP.CIFz5t4D.js} +1 -1
  74. package/web/_astro/{sequenceDiagram-3UESZ5HK.BpbNjA51.js → sequenceDiagram-3UESZ5HK.DzlEQynd.js} +1 -1
  75. package/web/_astro/{stateDiagram-AJRCARHV.DqVsHudf.js → stateDiagram-AJRCARHV.Dph2V-ts.js} +1 -1
  76. package/web/_astro/{stateDiagram-v2-BHNVJYJU.CzwHYX81.js → stateDiagram-v2-BHNVJYJU.wJhfrLAy.js} +1 -1
  77. package/web/_astro/{timeline-definition-PNZ67QCA.Bc3B6djw.js → timeline-definition-PNZ67QCA.BrSiyubX.js} +1 -1
  78. package/web/_astro/{vennDiagram-CIIHVFJN.C-D5rh8O.js → vennDiagram-CIIHVFJN.COobPrUX.js} +1 -1
  79. package/web/_astro/{wardley-L42UT6IY.D7PdYCqn.js → wardley-L42UT6IY.CrjeTx8A.js} +1 -1
  80. package/web/_astro/{wardleyDiagram-YWT4CUSO.CwmJKXF3.js → wardleyDiagram-YWT4CUSO.B8_fTQ8E.js} +1 -1
  81. package/web/_astro/{xychartDiagram-2RQKCTM6.avDYnLsb.js → xychartDiagram-2RQKCTM6.BPpokgVv.js} +1 -1
  82. package/web/favicon.svg +1 -0
  83. package/web/index.html +1 -1
  84. package/web/_astro/BoardApp.8hiqShQn.js +0 -1
  85. package/web/_astro/channel.EwdSemIC.js +0 -1
@@ -6,7 +6,7 @@
6
6
  },
7
7
  "plugins": [
8
8
  {
9
- "version": "0.3.48",
9
+ "version": "0.3.50",
10
10
  "name": "sp",
11
11
  "source": "./plugins/sp",
12
12
  "description": "Spur - my harness toolkits"
@@ -49,6 +49,28 @@ agent:
49
49
  # naming both accepted sets.
50
50
  default: coder
51
51
 
52
+ # Role → tier map (SSOT: DEFAULT_AGENT_ROLES in packages/config, task 0572 /
53
+ # ADR-061; plugins/sp/references/roles.md is a parity-gated projection).
54
+ # Resolution: role → tier → cheapest USABLE executor whose tier >= the role's
55
+ # tier, climbing the ladder across gaps. Declare at least one usable executor
56
+ # at or above each rung or that role fails loudly at dispatch:
57
+ # scribe=cheap · coder=standard · reviewer=capable-1 · planner=capable-2
58
+ # Stage floors (stage-registry model_policy): changelog=cheap;
59
+ # implement/test/wrap/review/refine/brainstorm=standard;
60
+ # verify/dogfood=capable-1; plan=capable-2. A stage's fallback ladder
61
+ # (auth / resource-exhaustion / gate-fail) only advances when a higher rung
62
+ # has a usable executor — an empty rung turns a quota failure into a hang.
63
+ #
64
+ # Optional per-project override (0572): re-tier / re-stage a KNOWN role only —
65
+ # the vocabulary is closed; a config naming any other key fails at config load
66
+ # naming the accepted four. Per-field merge over the defaults (restate only
67
+ # what you override; a role you omit keeps its default wholesale):
68
+ # roles:
69
+ # reviewer:
70
+ # tier: capable-2 # e.g. pin review work one rung higher
71
+ # coder:
72
+ # stages: [implement] # e.g. stop folding test/wrap into coder
73
+
52
74
  # Canonical coding-agent ids (ts-ai-runner DISPLAY_ORDER, 0.4.8+):
53
75
  # claude, codex, gemini, pi, omp, opencode, antigravity-cli,
54
76
  # openclaw, hermes, grok
@@ -56,32 +78,58 @@ agent:
56
78
  # auth-status verb).
57
79
 
58
80
  # Named executor profiles (ADR-033 / 0343). Each pairs a canonical agent with
59
- # an optional opaque model override and an explicit capability tier.
81
+ # an explicit model override and an explicit capability tier.
82
+ # `model` is pinned on every entry: omitting it defers to the agent CLI's own
83
+ # default, which drifts with CLI upgrades and account state — pin what your
84
+ # CLI would resolve today (`grok models`, omp config.yml modelRoles.default,
85
+ # ~/.codex/config.toml, ~/.claude.json). The ids below are working examples,
86
+ # not vendor defaults — re-pin for your accounts.
87
+ #
88
+ # Pairing philosophy (operator guidance, 2026-08): a `native` pair — a vendor's
89
+ # model served by that vendor's own CLI (gpt-5.6-* via codex, claude-*-5 via
90
+ # claude, grok-4.6 via grok, gemini-3.x via agy) — consistently outperforms the
91
+ # same model routed through a third-party CLI, and belongs at the capable rungs.
92
+ # `portable` models (glm-5.x, deepseek-v4-*, …) are provider-agnostic and best
93
+ # carried by omp or pi at the cheap/standard rungs. The ladder below mixes both
94
+ # classes on purpose; measure pairings with the history plane before promoting
95
+ # a portable model into a capable rung.
60
96
  # Live tiers: cheap | standard | capable-1 | capable-2 | capable-3
61
97
  # (1=low quality within capable, 3=high). DECLARE tier — inference never
62
98
  # invents capable-2/3. Stage routing starts on the cheapest executor whose
63
99
  # tier >= min_tier; same exact tier ties break by array order.
64
100
  # Legacy bare `capable` is accepted at runtime as synonym for capable-1.
65
101
  executors:
102
+ # cheap rung is optional: with none declared, scribe-role work starts one
103
+ # rung up at the cheapest standard executor. Add one when transcript-heavy
104
+ # mechanical commands (changelog/gitmsg/handover) get noisy on cost.
105
+ # - name: minimax
106
+ # agent: omp
107
+ # model: minimax/MiniMax-M3
108
+ # tier: cheap
66
109
  - name: omp
67
110
  agent: omp
111
+ model: opencode/deepseek-v4-flash
68
112
  tier: standard
69
113
  # - name: omp-zai
70
114
  # agent: omp
71
115
  # model: zai/glm-5.2
72
116
  # tier: standard
117
+ - name: pi
118
+ agent: pi
119
+ model: "k3"
120
+ tier: capable-1
73
121
  - name: grok
74
122
  agent: grok
123
+ model: grok-4.6
75
124
  tier: capable-2
76
125
  - name: claude
77
126
  agent: claude
127
+ model: k3
78
128
  tier: capable-3
79
129
  - name: codex
80
130
  agent: codex
131
+ model: gpt-5.6
81
132
  tier: capable-3
82
- # - name: pi
83
- # agent: pi
84
- # tier: capable-1
85
133
 
86
134
  # `default-by-phase` is a REMOVED (0452). Prefer
87
135
  # executor `tier` + stage-registry model_policy. When present, a matching