@gobing-ai/spur 0.3.60 → 0.3.62
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.example.yaml +2 -2
- package/config/config.global.yaml +68 -57
- package/config/corpus-baseline.json +505 -57
- package/config/plugin-scripts.json +2 -2
- package/config/rules/boundary/config-loading-ownership.yaml +21 -0
- package/config/workflow-composition-baseline.json +1 -1
- package/config/workflows/history-anatomy.yaml +366 -0
- package/config/workflows/wayfinder-resolution.yaml +4 -6
- package/package.json +1 -1
- package/plugins/README.md +5 -4
- package/plugins/sp/README.md +22 -9
- package/plugins/sp/agents/super-planner.md +1 -1
- package/plugins/sp/commands/dev-find-issue.md +25 -46
- package/plugins/sp/commands/dev-pr-review.md +1 -1
- package/plugins/sp/commands/dev-run.md +22 -3
- package/plugins/sp/commands/dev-wrap.md +2 -2
- package/plugins/sp/commands/dev-wrapall.md +2 -2
- package/plugins/sp/lib/artifact-digest.generated.d.mts +7 -0
- package/plugins/sp/lib/artifact-digest.generated.mjs +48 -0
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/references/roles.md +17 -14
- package/plugins/sp/scripts/history-anatomy-cache.mjs +669 -0
- package/plugins/sp/scripts/history-anatomy-cache.ts +818 -0
- package/plugins/sp/scripts/surface-drift-inventory.ts +51 -17
- package/plugins/sp/scripts/validate-commands.ts +11 -4
- package/plugins/sp/skills/code-verification/SKILL.md +1 -1
- package/plugins/sp/skills/code-verification/references/verdict-schema.md +1 -1
- package/plugins/sp/skills/history-anatomy/SKILL.md +67 -0
- package/plugins/sp/skills/history-anatomy/references/modes.md +82 -0
- package/plugins/sp/skills/history-anatomy/references/operations.md +67 -0
- package/plugins/sp/skills/history-anatomy/references/report-contract.md +133 -0
- package/plugins/sp/skills/issue-finding/SKILL.md +1 -1
- package/plugins/sp/skills/next-router/references/routing-table.md +1 -1
- package/plugins/sp/skills/pr-reviewing/SKILL.md +2 -2
- package/plugins/sp/skills/spec-decomposition/references/decomposition.md +1 -1
- package/plugins/sp/skills/spur-cli/references/init.md +1 -1
- package/plugins/sp/skills/spur-cli/references/tasks/l3-guard-cheatsheet.md +1 -1
- package/plugins/sp/skills/spur-cli/references/workflows/operations.md +1 -1
- package/plugins/sp/skills/spur-cli/references/workflows.md +4 -4
- package/plugins/sp/skills/spur-dev/SKILL.md +4 -4
- package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +4 -4
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +11 -11
- package/plugins/sp/skills/spur-dev/references/done-housekeeping.md +1 -1
- package/plugins/sp/skills/spur-dev/references/execution-batch.md +17 -4
- package/plugins/sp/skills/spur-dev/references/execution-workflow.md +8 -1
- package/plugins/sp/skills/spur-dev/references/feature-link-helper.md +3 -2
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +25 -13
- package/plugins/sp/skills/spur-dev/references/gate-checklists.md +1 -1
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +5 -2
- package/plugins/sp/skills/spur-dev/references/planning-workflow.md +2 -2
- package/schemas/spur-config.schema.json +1 -1
- package/spur.js +1278 -890
- package/web/_astro/BoardApp.Z9jMwI9G.js +1 -0
- package/web/_astro/BoardApp.rkWGVwwK.js +178 -0
- package/web/_astro/{TaskDetail.B0l1uzsB.js → TaskDetail.B7ODt_bA.js} +1 -1
- package/web/_astro/{arc.DPruHC3P.js → arc.C5QRz6AQ.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.CuOqAck6.js → architectureDiagram-3BPJPVTR.CHptn8gZ.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.Cxb7HDIA.js → blockDiagram-GPEHLZMM.b1nEDkDw.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.Dw7wa-0S.js → c4Diagram-AAUBKEIU.BWj8S_Qq.js} +1 -1
- package/web/_astro/channel.BJtn6CGV.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.MECQitzo.js → chunk-2J33WTMH.q0BBuE1n.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.p3ofhIGE.js → chunk-4BX2VUAB.DP2KDkAU.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.BmQGsPZP.js → chunk-55IACEB6.CkCId72p.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.CwrK23OA.js → chunk-727SXJPM.oHWzxMot.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.CUKI_QXp.js → chunk-AQP2D5EJ.DkkgxfMP.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.7AtDgShM.js → chunk-FMBD7UC4.lmFJDvRK.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.f_YJbTs3.js → chunk-ND2GUHAM.52jt0eHK.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.0q7V3gEg.js → chunk-QZHKN3VN.Cg8KEFoD.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.C_hG3HMK.js → classDiagram-4FO5ZUOK.BuOUhxcD.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.C_hG3HMK.js → classDiagram-v2-Q7XG4LA2.BuOUhxcD.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.vsaaaEMy.js → cose-bilkent-S5V4N54A.BRUU8E_0.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.BN7XFqQ4.js → dagre-BM42HDAG.GDbfFYVV.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.ED6AfryZ.js → diagram-2AECGRRQ.CvIDBeJF.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.Dxllzg8R.js → diagram-5GNKFQAL.DMgJjWOX.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.RuWppieD.js → diagram-KO2AKTUF.njjl-0AP.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.CL32Xn6s.js → diagram-LMA3HP47.CcCqgP8M.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.CUneEhqB.js → diagram-OG6HWLK6.Btqd-YVE.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.DI-92Lec.js → erDiagram-TEJ5UH35.BbhML_Xo.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.69Aqa1FF.js → flowDiagram-I6XJVG4X.CkvsIgY8.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7.DdpClZpa.js → ganttDiagram-6RSMTGT7.m8IWD_wW.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.xqWfkvB4.js → gitGraphDiagram-PVQCEYII.5z87HXO-.js} +1 -1
- package/web/_astro/index.nWve6EHS.css +1 -0
- package/web/_astro/{infoDiagram-5YYISTIA.B3G5sfKm.js → infoDiagram-5YYISTIA.Bvyvsd7Q.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.ahVNsoAQ.js → ishikawaDiagram-YF4QCWOH.DdWVYO87.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.PmFHLc-X.js → journeyDiagram-JHISSGLW.C3kOlYH1.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.Co1qOPTd.js → kanban-definition-UN3LZRKU.CfKTUHVC.js} +1 -1
- package/web/_astro/{linear.DoHZ-iRt.js → linear.CMDHnzgX.js} +1 -1
- package/web/_astro/{mermaid.core.DNRElYN2.js → mermaid.core.DN7-WrsP.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.CdfJZidJ.js → mindmap-definition-RKZ34NQL.DcQxLvqG.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.C1A8dby4.js → pieDiagram-4H26LBE5.Nu-Inbw6.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.NmZqjG_c.js → quadrantDiagram-W4KKPZXB.Dck2EChs.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.tY36zYtK.js → requirementDiagram-4Y6WPE33.C--E5XuW.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.rOEGZYjo.js → sankeyDiagram-5OEKKPKP.B_0iRNna.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.Dpnw3S9J.js → sequenceDiagram-3UESZ5HK.PKuKr9mk.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.DGpvQ3Wz.js → stateDiagram-AJRCARHV.ClhGHb-O.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.CbwQdEfu.js → stateDiagram-v2-BHNVJYJU.Bv6BBnvg.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.DAYUpUJT.js → timeline-definition-PNZ67QCA.BZm2ZvAH.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.C7JCCd6-.js → vennDiagram-CIIHVFJN.Dt6yZXry.js} +1 -1
- package/web/_astro/{wardley-L42UT6IY.BGgwOH5_.js → wardley-L42UT6IY.rUs-E00M.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.oIZqzI2l.js → wardleyDiagram-YWT4CUSO.BcWgv4cA.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.DohcJzqm.js → xychartDiagram-2RQKCTM6.DH-M-cX9.js} +1 -1
- package/web/index.html +2 -2
- package/plugins/sp/commands/dev-history-load.md +0 -63
- package/plugins/sp/scripts/history-load.mjs +0 -268
- package/plugins/sp/scripts/history-load.ts +0 -400
- package/web/_astro/BoardApp.BJs3l7O8.js +0 -179
- package/web/_astro/BoardApp.D8InuCYx.js +0 -1
- package/web/_astro/channel.XCf1DcsL.js +0 -1
- package/web/_astro/index.DJl2RAVZ.css +0 -1
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
# Copy / adapt into a project as `.spur/config.yaml`.
|
|
5
5
|
|
|
6
6
|
$schema: "@gobing-ai/spur/schemas/spur-config.schema.json"
|
|
7
|
-
# Config schema version (string). Current recommended: "1.
|
|
7
|
+
# Config schema version (string). Current recommended: "1.2".
|
|
8
8
|
# "1" remains accepted; there is no hard migrator yet. Prefer "1.1" for
|
|
9
9
|
# new projects so editors and operators know the file targets the ADR-033
|
|
10
10
|
# + planning shape.
|
|
11
|
-
version: "1.
|
|
11
|
+
version: "1.2"
|
|
12
12
|
name: my-project
|
|
13
13
|
|
|
14
14
|
# ── Portable bootstrap (consumed by @gobing-ai/ts-infra
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
# Spur GLOBAL configuration — `~/.config/spur/config.yaml`
|
|
2
2
|
#
|
|
3
|
-
# Seeded here by `spur init` on first run (never overwritten once it exists —
|
|
4
|
-
# own this file). It is the DEFAULT layer: every project's
|
|
5
|
-
# merged OVER it, so a project config only needs to carry
|
|
3
|
+
# Seeded here by `spur init` on first run (never overwritten once it exists —
|
|
4
|
+
# you own this file). It is the DEFAULT layer: every project's
|
|
5
|
+
# `.spur/config.yaml` is merged OVER it, so a project config only needs to carry
|
|
6
|
+
# its delta.
|
|
6
7
|
#
|
|
7
8
|
# Merge contract (A4 / config 1.2):
|
|
8
|
-
# - Both layers are validated by the SAME schema; each legitimately carries a
|
|
9
|
-
#
|
|
10
|
-
# -
|
|
11
|
-
#
|
|
12
|
-
# -
|
|
13
|
-
#
|
|
9
|
+
# - Both layers are validated by the SAME schema; each legitimately carries a
|
|
10
|
+
# subset.
|
|
11
|
+
# - The merge is total and automatic: project layer wins over global, key by
|
|
12
|
+
# key.
|
|
13
|
+
# - Validation runs ONCE, on the merged result — a partial entry here is a
|
|
14
|
+
# legal merge fragment, never a legal config on its own.
|
|
15
|
+
# - `agent.executors` merges by `name`: a project restating `- name: omp` with
|
|
16
|
+
# a different `model` overrides just that field and keeps the rest from
|
|
17
|
+
# here.
|
|
14
18
|
#
|
|
15
19
|
# Only machine-wide keys belong in this file. Project-shaped keys — `name`,
|
|
16
20
|
# `bootstrap`, `rules`, `redaction`, `tasks`, `features`, `agent.team` — resolve
|
|
@@ -18,6 +22,10 @@
|
|
|
18
22
|
|
|
19
23
|
$schema: "@gobing-ai/spur/schemas/spur-config.schema.json"
|
|
20
24
|
|
|
25
|
+
# Inert label (task 0649 R6 ruling): nothing branches on `version` today.
|
|
26
|
+
# Reunified at "1.2" across every shipped artifact (init stamp, JSON Schema).
|
|
27
|
+
version: "1.2"
|
|
28
|
+
|
|
21
29
|
agent:
|
|
22
30
|
# `default` is the role used for `--agent auto` when the caller declares
|
|
23
31
|
# nothing (task 0542 R2 — the value domain moved from executor names to
|
|
@@ -28,26 +36,27 @@ agent:
|
|
|
28
36
|
default: coder
|
|
29
37
|
|
|
30
38
|
# Role → tier map. Resolution: role → tier → cheapest USABLE executor whose
|
|
31
|
-
# tier >= the role's tier, climbing the ladder across gaps. Keep at least
|
|
32
|
-
# usable executor at or above each rung or that role fails loudly at
|
|
33
|
-
# Stage floors (stage-registry model_policy): changelog=cheap;
|
|
39
|
+
# tier >= the role's tier, climbing the ladder across gaps. Keep at least
|
|
40
|
+
# one usable executor at or above each rung or that role fails loudly at
|
|
41
|
+
# dispatch. Stage floors (stage-registry model_policy): changelog=cheap;
|
|
34
42
|
# implement/test/wrap/review/refine/brainstorm=standard;
|
|
35
|
-
# verify/dogfood=capable-1; plan=capable-2. A stage's fallback ladder
|
|
36
|
-
#
|
|
37
|
-
#
|
|
43
|
+
# verify/dogfood=capable-1; plan=capable-2. A stage's fallback ladder (auth
|
|
44
|
+
# / resource-exhaustion / gate-fail) only advances when a higher rung has a
|
|
45
|
+
# usable executor — an empty rung turns a quota failure into a hang.
|
|
38
46
|
#
|
|
39
|
-
# The vocabulary is CLOSED (task 0536): re-tier or re-stage these four,
|
|
40
|
-
# invent a fifth — a config naming any other key fails at load naming
|
|
41
|
-
# accepted four. A project may override per-field in its own
|
|
42
|
-
# restate only what you change.
|
|
47
|
+
# The vocabulary is CLOSED (task 0536): re-tier or re-stage these four,
|
|
48
|
+
# never invent a fifth — a config naming any other key fails at load naming
|
|
49
|
+
# the accepted four. A project may override per-field in its own
|
|
50
|
+
# `.spur/config.yaml`; restate only what you change.
|
|
43
51
|
#
|
|
44
52
|
# ADR-078: THIS TABLE IS THE SSOT. `DEFAULT_AGENT_ROLES` in
|
|
45
|
-
# `packages/config/src/index.ts` is a byte-identical fallback that applies
|
|
46
|
-
# when no config layer supplies `agent.roles` at all (the CF-safe core
|
|
47
|
-
# resolve roles with no filesystem). The two must stay byte-identical —
|
|
48
|
-
# fallback that differed would turn a missing config file into a silent
|
|
53
|
+
# `packages/config/src/index.ts` is a byte-identical fallback that applies
|
|
54
|
+
# only when no config layer supplies `agent.roles` at all (the CF-safe core
|
|
55
|
+
# must resolve roles with no filesystem). The two must stay byte-identical —
|
|
56
|
+
# a fallback that differed would turn a missing config file into a silent
|
|
49
57
|
# behavior change. `plugins/sp/tests/roles.test.ts` R9 gates all three
|
|
50
|
-
# projections (this table, the constant, and
|
|
58
|
+
# projections (this table, the constant, and
|
|
59
|
+
# `plugins/sp/references/roles.md`).
|
|
51
60
|
roles:
|
|
52
61
|
scribe:
|
|
53
62
|
tier: cheap
|
|
@@ -62,40 +71,42 @@ agent:
|
|
|
62
71
|
tier: capable-2
|
|
63
72
|
stages: [plan, refine, brainstorm]
|
|
64
73
|
|
|
65
|
-
# Canonical coding-agent ids (ts-ai-runner DISPLAY_ORDER, 0.4.8+):
|
|
66
|
-
#
|
|
67
|
-
# openclaw, hermes, grok
|
|
74
|
+
# Canonical coding-agent ids (ts-ai-runner DISPLAY_ORDER, 0.4.8+): claude,
|
|
75
|
+
# codex, gemini, pi, omp, opencode, antigravity-cli, openclaw, hermes, grok
|
|
68
76
|
# Grok auth: non-empty XAI_API_KEY and/or ~/.grok/auth.json (no CLI
|
|
69
77
|
# auth-status verb).
|
|
70
78
|
|
|
71
|
-
# Named executor profiles (ADR-033 / 0343). Each pairs a canonical agent
|
|
72
|
-
# an explicit model override and an explicit capability tier.
|
|
73
|
-
#
|
|
79
|
+
# Named executor profiles (ADR-033 / 0343). Each pairs a canonical agent
|
|
80
|
+
# with an explicit model override and an explicit capability tier. `model`
|
|
81
|
+
# is pinned on every entry: omitting it defers to the agent CLI's own
|
|
74
82
|
# default, which drifts with CLI upgrades and account state — pin what your
|
|
75
83
|
# CLI would resolve today (`grok models`, omp config.yml modelRoles.default,
|
|
76
84
|
# ~/.codex/config.toml, ~/.claude.json). The ids below are working examples,
|
|
77
85
|
# not vendor defaults — re-pin for your accounts.
|
|
78
86
|
#
|
|
79
|
-
# Pairing philosophy (operator guidance, 2026-08): a `native` pair — a
|
|
80
|
-
# model served by that vendor's own CLI (gpt-5.6-* via codex,
|
|
81
|
-
# claude, grok-4.6 via grok, gemini-3.x via agy) —
|
|
82
|
-
# same model routed through a third-party CLI,
|
|
83
|
-
# `portable` models (glm-5.x,
|
|
84
|
-
# carried by omp or pi at
|
|
85
|
-
#
|
|
86
|
-
#
|
|
87
|
-
# Live tiers: cheap | standard | capable-1 | capable-2
|
|
88
|
-
# (1=low quality within capable, 3=high). DECLARE tier —
|
|
89
|
-
# invents capable-2/3. Stage routing starts on the cheapest
|
|
90
|
-
# tier >= min_tier; same exact tier ties break by array
|
|
91
|
-
# Legacy bare `capable` is accepted at runtime as synonym for
|
|
87
|
+
# Pairing philosophy (operator guidance, 2026-08): a `native` pair — a
|
|
88
|
+
# vendor's model served by that vendor's own CLI (gpt-5.6-* via codex,
|
|
89
|
+
# claude-*-5 via claude, grok-4.6 via grok, gemini-3.x via agy) —
|
|
90
|
+
# consistently outperforms the same model routed through a third-party CLI,
|
|
91
|
+
# and belongs at the capable rungs. `portable` models (glm-5.x,
|
|
92
|
+
# deepseek-v4-*, …) are provider-agnostic and best carried by omp or pi at
|
|
93
|
+
# the cheap/standard rungs. The ladder below mixes both classes on purpose;
|
|
94
|
+
# measure pairings with the history plane before promoting a portable model
|
|
95
|
+
# into a capable rung. Live tiers: cheap | standard | capable-1 | capable-2
|
|
96
|
+
# | capable-3 (1=low quality within capable, 3=high). DECLARE tier —
|
|
97
|
+
# inference never invents capable-2/3. Stage routing starts on the cheapest
|
|
98
|
+
# executor whose tier >= min_tier; same exact tier ties break by array
|
|
99
|
+
# order. Legacy bare `capable` is accepted at runtime as synonym for
|
|
100
|
+
# capable-1.
|
|
92
101
|
#
|
|
93
102
|
# Because this is the global layer, a project that wants one different model
|
|
94
|
-
# writes only `- name: omp` + `model: …` — the agent and tier come from
|
|
103
|
+
# writes only `- name: omp` + `model: …` — the agent and tier come from
|
|
104
|
+
# here.
|
|
95
105
|
executors:
|
|
96
|
-
# cheap rung is optional: with none declared, scribe-role work starts
|
|
97
|
-
# rung up at the cheapest standard executor. Add one when
|
|
98
|
-
# mechanical commands (changelog/gitmsg/handover) get
|
|
106
|
+
# cheap rung is optional: with none declared, scribe-role work starts
|
|
107
|
+
# one rung up at the cheapest standard executor. Add one when
|
|
108
|
+
# transcript-heavy mechanical commands (changelog/gitmsg/handover) get
|
|
109
|
+
# noisy on cost.
|
|
99
110
|
# - name: minimax
|
|
100
111
|
# agent: omp
|
|
101
112
|
# model: minimax/MiniMax-M3
|
|
@@ -121,13 +132,13 @@ agent:
|
|
|
121
132
|
model: gpt-5.6
|
|
122
133
|
tier: capable-3
|
|
123
134
|
|
|
124
|
-
# `workflows
|
|
125
|
-
#
|
|
126
|
-
#
|
|
127
|
-
#
|
|
128
|
-
#
|
|
129
|
-
#
|
|
130
|
-
#
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
135
|
+
# `bundled:workflows` resolves against the installed package's own config root
|
|
136
|
+
# at read time (BUNDLED_PATH_PREFIX in apps/cli/src/commands/workflow.ts), so
|
|
137
|
+
# every project discovers the shipped workflows without a machine-specific
|
|
138
|
+
# absolute path ever being persisted here. A project's own `workflows.paths`
|
|
139
|
+
# concatenates over this (loader merge), and the run-time adapter resolves
|
|
140
|
+
# bundled → project on its own (make-lifecycle-adapter.ts, two tiers since
|
|
141
|
+
# task 0648).
|
|
142
|
+
workflows:
|
|
143
|
+
paths:
|
|
144
|
+
- bundled:workflows
|