@gobing-ai/spur 0.3.81 → 0.3.82
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 +19 -17
- package/config/config.global.yaml +6 -3
- package/config/templates/docs/99_PROJECT_CONSTITUTION.md +75 -13
- package/config/transition-shims.json +0 -7
- package/package.json +1 -1
- package/plugins/sp/README.md +2 -2
- package/plugins/sp/agents/expert-spur.md +3 -3
- package/plugins/sp/lib/idea-handoff.generated.mjs +43 -43
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/scripts/inline-run-setup.ts +69 -1
- package/plugins/sp/scripts/quality-gate.mjs +52 -1
- package/plugins/sp/scripts/quality-gate.ts +70 -0
- package/plugins/sp/scripts/surface-drift-inventory.ts +0 -2
- package/plugins/sp/scripts/task-size-precheck.ts +44 -16
- package/plugins/sp/scripts/verify-answer-lint.ts +17 -1
- package/plugins/sp/skills/code-review/references/review-lenses.md +3 -0
- package/plugins/sp/skills/spur-cli/SKILL.md +4 -8
- package/plugins/sp/skills/spur-cli/references/agent.md +30 -97
- package/plugins/sp/skills/spur-cli/references/message.md +1 -1
- package/plugins/sp/skills/spur-cli/references/projects.md +7 -27
- package/plugins/sp/skills/spur-cli/references/self.md +2 -2
- package/plugins/sp/skills/spur-cli/references/serve.md +4 -4
- package/plugins/sp/skills/spur-cli/references/tasks.md +1 -1
- package/plugins/sp/skills/spur-composer/SKILL.md +3 -3
- package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +10 -0
- package/plugins/sp/skills/spur-dev/references/execution-batch.md +1 -1
- package/plugins/sp/skills/spur-dev/references/execution-workflow.md +4 -6
- package/plugins/sp/skills/spur-dev/references/glossary.md +1 -1
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +11 -1
- package/plugins/sp/skills/spur-doctor/SKILL.md +2 -2
- package/schemas/spur-config.schema.json +56 -85
- package/spur.js +3498 -4835
- package/web/_astro/BoardApp.D-WlxiN2.js +1 -0
- package/web/_astro/{BoardApp.B1U26g3I.js → BoardApp.D8bM9pKL.js} +73 -73
- package/web/_astro/{TaskDetail.DwPqpq7v.js → TaskDetail.BPRqgVUE.js} +1 -1
- package/web/_astro/{arc.CweZEjN2.js → arc.BPrPES3z.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.D89pbDuv.js → architectureDiagram-3BPJPVTR.qX_7q02P.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.BOuTeEpX.js → blockDiagram-GPEHLZMM.CUZfj5V7.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.CASbkWZF.js → c4Diagram-AAUBKEIU.CTaOr8hH.js} +1 -1
- package/web/_astro/channel.DGZaFHZx.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.BKQYtOvY.js → chunk-2J33WTMH.Dt-9wf3h.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.9sHLdMtG.js → chunk-4BX2VUAB.CTC2sdoN.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.wOLXWlPs.js → chunk-55IACEB6.DQcxt2_g.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.DovFbwg3.js → chunk-727SXJPM.DXFPSn-a.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.B1Weod1X.js → chunk-AQP2D5EJ.BCx3U4bT.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.TEMS04st.js → chunk-FMBD7UC4.DL2tJkdO.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.Cp8VT1wQ.js → chunk-ND2GUHAM.DZyflMro.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.BzATdEcP.js → chunk-QZHKN3VN.CUI2mT09.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.C9BOCfAO.js → classDiagram-4FO5ZUOK.g4rX4Fr1.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.C9BOCfAO.js → classDiagram-v2-Q7XG4LA2.g4rX4Fr1.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.DUnr4UAw.js → cose-bilkent-S5V4N54A.CzWJLqp0.js} +1 -1
- package/web/_astro/{cynefin-OW5HDTMX.rYq5uM3D.js → cynefin-OW5HDTMX.WgsvQeCR.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.CWeNKe3I.js → dagre-BM42HDAG.Dzv6ngql.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.DCkfls10.js → diagram-2AECGRRQ.CpJ4a9rU.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.D5U4JCka.js → diagram-5GNKFQAL.CzPlF_dq.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.BZJgqaqG.js → diagram-KO2AKTUF.TAkZNTcQ.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.DoMeHvPR.js → diagram-LMA3HP47.uCjoKSag.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.B50qwwWX.js → diagram-OG6HWLK6.eMplIjoK.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.DdGPG6LK.js → erDiagram-TEJ5UH35.Bf7zoXGz.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.QP2MJ12u.js → flowDiagram-I6XJVG4X.B_bHj3gN.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7.BI6LgKSy.js → ganttDiagram-6RSMTGT7.BasrHRMj.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.npPZiC2G.js → gitGraphDiagram-PVQCEYII.C6iphq1x.js} +1 -1
- package/web/_astro/{infoDiagram-5YYISTIA.DCJCBVbp.js → infoDiagram-5YYISTIA.HXmDMhW4.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.BMLV-3I1.js → ishikawaDiagram-YF4QCWOH.BSmW8NiU.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.LE58crde.js → journeyDiagram-JHISSGLW.DEQow5fo.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.BPbz8rH9.js → kanban-definition-UN3LZRKU.IVm9cTdc.js} +1 -1
- package/web/_astro/{linear.DhZaBtYh.js → linear.CrsM73_9.js} +1 -1
- package/web/_astro/{mermaid.core.BD5-jXum.js → mermaid.core.CfBeDJls.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.MTJyrQ65.js → mindmap-definition-RKZ34NQL.C3j60Y-0.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.BrDhDvIS.js → pieDiagram-4H26LBE5.B-aCMeEA.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.71d73_5N.js → quadrantDiagram-W4KKPZXB.Cib965yq.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.Bga6UF-z.js → requirementDiagram-4Y6WPE33.D61cS4O-.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.BnHs4K82.js → sankeyDiagram-5OEKKPKP.GKF2qVPy.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.DsfY2gnj.js → sequenceDiagram-3UESZ5HK.DZnq8F2h.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.DvsTSc9a.js → stateDiagram-AJRCARHV.DXUFmdgM.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.DxzzmHUR.js → stateDiagram-v2-BHNVJYJU.BtHmhLEz.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.4ZuQmOTt.js → timeline-definition-PNZ67QCA.Cy-WW2ln.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.Ck5Q86SG.js → vennDiagram-CIIHVFJN.SLp5b9KI.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.BK7k2hXr.js → wardleyDiagram-YWT4CUSO.Bww45mWV.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.DfCrgauK.js → xychartDiagram-2RQKCTM6.DR4swI6a.js} +1 -1
- package/web/apple-touch-icon.png +0 -0
- package/web/favicon.ico +0 -0
- package/web/favicon.svg +17 -4
- package/web/icon-192.png +0 -0
- package/web/icon-512.png +0 -0
- package/web/index.html +2 -2
- package/web/site.webmanifest +31 -0
- package/web/spur_logo.svg +1 -0
- package/plugins/sp/skills/spur-cli/references/team.md +0 -165
- package/web/_astro/BoardApp.Csgyg-lS.js +0 -1
- package/web/_astro/channel.Cx6sXxhq.js +0 -1
|
@@ -180,24 +180,26 @@ agent:
|
|
|
180
180
|
# dev-run: omp
|
|
181
181
|
# dev-review: claude
|
|
182
182
|
|
|
183
|
-
# A project's agent roster is a **fleet** declared in the project's own
|
|
184
|
-
#
|
|
185
|
-
#
|
|
186
|
-
#
|
|
187
|
-
#
|
|
188
|
-
#
|
|
189
|
-
#
|
|
190
|
-
#
|
|
191
|
-
#
|
|
192
|
-
#
|
|
193
|
-
#
|
|
194
|
-
#
|
|
195
|
-
#
|
|
183
|
+
# A project's agent roster is a **fleet** declared in the project's own
|
|
184
|
+
# `.spur/config.yaml` under `agent.fleet` — never in this global file, and never
|
|
185
|
+
# in the retired `<projectPath>/.spur/fleet.json` (ADR-116 carrier moved by task
|
|
186
|
+
# 0858). Materialized and autostarted at `spur serve` start only when
|
|
187
|
+
# `agent.fleet.enabled` is true; preview with `spur projects list --fleet`.
|
|
188
|
+
# Shape (project layer; a member declares role or executor):
|
|
189
|
+
# agent:
|
|
190
|
+
# fleet:
|
|
191
|
+
# enabled: true
|
|
192
|
+
# strategy: gtd # rest | gtd (default rest)
|
|
193
|
+
# orchestrator: planner-1
|
|
194
|
+
# members:
|
|
195
|
+
# - { role: planner, purpose: orchestrator }
|
|
196
|
+
# - { role: coder, executor: omp }
|
|
197
|
+
# - { role: reviewer, enabled: false }
|
|
196
198
|
# `enabled: false` keeps the member's derived `<role>-<n>` id index, so later
|
|
197
|
-
# members never silently reallocate ids. The
|
|
198
|
-
#
|
|
199
|
-
#
|
|
200
|
-
# team name.
|
|
199
|
+
# members never silently reallocate ids. The retired per-team config key is no
|
|
200
|
+
# longer read — a leftover block fails the load and names `agent.fleet` as the
|
|
201
|
+
# replacement — a leftover `fleet.json` fails the load too, and the roster is
|
|
202
|
+
# keyed on the worktree path now, not on a config-global team name.
|
|
201
203
|
|
|
202
204
|
rules:
|
|
203
205
|
paths:
|
|
@@ -19,9 +19,12 @@
|
|
|
19
19
|
# Only machine-wide keys belong in this file. Project-shaped keys — `name`,
|
|
20
20
|
# `bootstrap`, `rules`, `redaction`, `tasks`, `features` — resolve against a
|
|
21
21
|
# project's own folder structure and must stay in `.spur/config.yaml`. The agent
|
|
22
|
-
# roster is not a config key at all any more: it is
|
|
23
|
-
# (ADR-116
|
|
24
|
-
#
|
|
22
|
+
# roster is not a config key at all any more: it is the project-layer `agent.fleet`
|
|
23
|
+
# section of `.spur/config.yaml` (ADR-116 carrier moved by 0858; it replaced
|
|
24
|
+
# `<projectPath>/.spur/fleet.json`). The retired team roster key is gone: a leftover
|
|
25
|
+
# block fails the load and names `agent.fleet` as the replacement (0857), a leftover
|
|
26
|
+
# `fleet.json` fails it too (0858), and the `spur team` noun was removed at the G64
|
|
27
|
+
# cutover.
|
|
25
28
|
|
|
26
29
|
$schema: "@gobing-ai/spur/schemas/spur-config.schema.json"
|
|
27
30
|
|
|
@@ -3,7 +3,7 @@ name: Project Constitution
|
|
|
3
3
|
doc: 99_PROJECT_CONSTITUTION
|
|
4
4
|
owns: PROCESS — how the key files are maintained
|
|
5
5
|
authority: authoritative-on-process
|
|
6
|
-
version: 1.
|
|
6
|
+
version: 1.7.0
|
|
7
7
|
created_at: {{init-date}}
|
|
8
8
|
updated_at: {{init-date}}
|
|
9
9
|
edit_rules: 99 §6.8
|
|
@@ -35,10 +35,12 @@ Within project documentation, authority is scoped to the question:
|
|
|
35
35
|
| Visual and interaction design | Root `DESIGN.md`, when present |
|
|
36
36
|
| Delivery sequence, current mechanisms, non-UI contracts, feature state | `02`–`05`, derived within their respective responsibilities |
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
all key files. Neither an ADR nor a task can
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
The designated subject owner governs; document numbers do not confer authority over another
|
|
39
|
+
owner's subject. `99` governs maintenance across all key files. Neither an ADR nor a task can
|
|
40
|
+
silently change the constitution. Identify the governing statement first; correct it only if
|
|
41
|
+
defective, otherwise repair the conflicting projection. If authoritative statements conflict and
|
|
42
|
+
existing authorization does not resolve them, report the conflict rather than invent a decision.
|
|
43
|
+
Never average conflicting statements. Keep document numbers stable.
|
|
42
44
|
|
|
43
45
|
## 3. Shared tools
|
|
44
46
|
|
|
@@ -118,7 +120,7 @@ it does not require touching every key file for each feature or task.
|
|
|
118
120
|
| T1 | New architectural choice passing §6.1, or reversal | Record `00` before divergence; update affected `03`/`04`; `01` only if scope changes |
|
|
119
121
|
| T2 | Implementation would contradict an existing ADR | Record the decision amendment or superseding ADR before implementing the contradiction |
|
|
120
122
|
| T3 | CLI/API/config/schema/DTO or non-UI behavior changes | Update the owning `04` satellite; index and `AGENTS.md` only if their own facts change |
|
|
121
|
-
| T4 | Feature lifecycle or acceptance changes |
|
|
123
|
+
| T4 | Feature hierarchy, scope, lifecycle or acceptance changes | Apply §6.6 authorization; update through the feature tool and refresh its generated projection; `01` only for product scope changes |
|
|
122
124
|
| T5 | Phase goal, order, dependency, or exit changes | Update `02`; task completion alone does not trigger a roadmap entry |
|
|
123
125
|
| T6 | Product scope added, removed, or deferred | Update `01`; `02` if sequencing changes |
|
|
124
126
|
| T7 | Authorized change to document responsibilities, authority, or maintenance rules | Update `99`, affected entry/routing instructions, and in-scope init templates |
|
|
@@ -141,18 +143,23 @@ Do not append to a key file merely to prove work happened.
|
|
|
141
143
|
|
|
142
144
|
### 6.1 `docs/00_ADR.md`
|
|
143
145
|
|
|
144
|
-
|
|
146
|
+
Every entry and amendment MUST select among meaningful alternatives and establish or change
|
|
145
147
|
a lasting architecture boundary or invariant across features/modules: dependency direction,
|
|
146
148
|
persistence ownership, trust model, protocol, runtime or shared execution model. Record the
|
|
147
149
|
choice, context/reason, material tradeoff/consequence, status/date, and a detail pointer.
|
|
148
150
|
|
|
151
|
+
Entries and amendments MUST remain precise and concise. State the decision and its rationale
|
|
152
|
+
once; link detailed contracts and implementation guidance to their owners. Naming a feature,
|
|
153
|
+
task, technology or technical concern alone does not establish architectural significance.
|
|
154
|
+
|
|
149
155
|
Single-feature design, public-surface consent, task progress, test results and implementation
|
|
150
156
|
receipts go to their design/task records. Bug fixes that restore an existing contract need no ADR.
|
|
151
157
|
Doc-map and maintenance changes belong in `99`, not an ADR certifying a constitution edit.
|
|
152
158
|
|
|
153
159
|
- One architectural decision per entry. New choices append; reversals name the superseded ADR.
|
|
154
160
|
- Never renumber, reuse or delete an ADR ID. Preserve original titles/anchors and dates.
|
|
155
|
-
- Corrections to the decision use dated amendments
|
|
161
|
+
- Corrections to the decision use dated amendments stating only what changed and why. Amendments
|
|
162
|
+
must pass the same admission test; editorial corrections update wording in place without an addendum.
|
|
156
163
|
- Editorial condensation may remove repetition and misplaced detail while preserving the choice,
|
|
157
164
|
rationale, material alternatives, consequences and amendment history. It must not silently
|
|
158
165
|
reverse a decision or present a historical choice as current.
|
|
@@ -195,6 +202,26 @@ parallel hand-written status table. Requirements, acceptance and decomposition l
|
|
|
195
202
|
records; execution evidence lives in task records. Verify status and acceptance against evidence
|
|
196
203
|
before relying on them. Never raw-edit satellites or generated regions.
|
|
197
204
|
|
|
205
|
+
The project is the logical tree root; its direct children are top-level features, without requiring
|
|
206
|
+
an extra persisted project node. Each top-level feature MUST represent a durable project module,
|
|
207
|
+
product capability or project-wide concern. Its scope and top-level placement MUST be supported
|
|
208
|
+
by an explicit requirement or approval from the operator or designated product owner.
|
|
209
|
+
|
|
210
|
+
Record the supporting requirement or approval reference in the feature record through its tool.
|
|
211
|
+
Existing explicit authorization is sufficient. Implementation, silence, task approval or an agent's
|
|
212
|
+
recommendation does not establish approval for top-level placement.
|
|
213
|
+
|
|
214
|
+
Prefer an existing owner. Children decompose their parent's approved scope; sibling boundaries
|
|
215
|
+
must be clear and avoid duplicate ownership. A task, delivery wave, incident, technical detail or
|
|
216
|
+
child-count limit alone does not justify a new top-level feature.
|
|
217
|
+
|
|
218
|
+
Creating or promoting a top-level feature, materially redefining its scope, or merging or removing
|
|
219
|
+
top-level boundaries requires explicit authorization covering that change. Routine decomposition
|
|
220
|
+
within approved scope needs no repeated approval.
|
|
221
|
+
|
|
222
|
+
For legacy roots without recorded provenance, report the gap without inventing approval or
|
|
223
|
+
automatically restructuring the tree. Preserve history and references during authorized migration.
|
|
224
|
+
|
|
198
225
|
### 6.7 `AGENTS.md`
|
|
199
226
|
|
|
200
227
|
Keep essential orientation, commands, boundaries and document routing. Verify facts from the
|
|
@@ -213,20 +240,54 @@ is not a reason to edit this file or bump its metadata. Keep implementation-spec
|
|
|
213
240
|
and tool bindings in their owners. Do not automatically promote lessons into constitutional rules.
|
|
214
241
|
Update authorized templates/copies; do not mutate unrelated repositories without authorization.
|
|
215
242
|
|
|
243
|
+
### 6.9 `DESIGN.md` (root, when present)
|
|
244
|
+
|
|
245
|
+
Keep shared visual and interaction rules, including accessibility and responsive behavior. Link
|
|
246
|
+
detailed UI references; distinguish current conventions from proposed changes. Preserve required
|
|
247
|
+
accessibility behavior when simplifying. Non-UI contracts belong in `04`; delivery status stays
|
|
248
|
+
in feature/task records. Update this owner when shared UI rules change, not for every screen edit.
|
|
249
|
+
|
|
216
250
|
## 7. Drift control
|
|
217
251
|
|
|
218
|
-
|
|
252
|
+
### 7.1 Detection
|
|
253
|
+
|
|
254
|
+
During relevant document edits and task wrap-up, check affected owners and their references using
|
|
255
|
+
source/help, manifests, Git diffs, generated indexes and links. A comprehensive audit is a separate
|
|
256
|
+
scope; routine work does not require a repository-wide sweep.
|
|
219
257
|
|
|
220
258
|
- Responsibility: content belongs to the file's §4.1 row; no competing ledger or rule owner.
|
|
221
259
|
- Reality: current contracts/mechanisms match source; proposed/historical content is labeled.
|
|
222
260
|
- Scope/status: `01` covers capabilities; phase/feature claims have current evidence.
|
|
261
|
+
- Feature structure: top-level boundaries have §6.6 provenance; decomposition stays within approved scope.
|
|
223
262
|
- References: IDs, heading anchors, index pointers and aliases still resolve.
|
|
224
263
|
- Synchronization: apply §5 to changed facts; unchanged owners need no edit.
|
|
225
264
|
- Metadata/templates: contracts and dates match actual edits; portable guidance agrees.
|
|
226
265
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
266
|
+
### 7.2 Automatic repair
|
|
267
|
+
|
|
268
|
+
Automatically repair confirmed documentation defects when authoritative evidence supports the
|
|
269
|
+
correction, approved meaning is preserved, and the repair falls within authorized work. Examples
|
|
270
|
+
include broken references with a verified destination, duplicate prose, misplaced detail, stale
|
|
271
|
+
factual descriptions, and generated projections refreshed through their owning tools.
|
|
272
|
+
|
|
273
|
+
Identify the governing owner first. Correct it only if its statement is defective; otherwise repair
|
|
274
|
+
the conflicting projection. Observed implementation is evidence of current behavior, not authorization
|
|
275
|
+
to change accepted scope, decisions or contracts.
|
|
276
|
+
|
|
277
|
+
Auto-healing MUST NOT invent requirements or approvals, reverse architectural decisions, weaken
|
|
278
|
+
acceptance criteria or gates, fabricate completion evidence, or amend this constitution outside §6.8
|
|
279
|
+
authorization. Apply an already-authorized change without requesting approval again; otherwise report
|
|
280
|
+
the conflict and proposed resolution. An authorized ADR reversal follows §6.1.
|
|
281
|
+
|
|
282
|
+
Preserve decision history, stable references and unrelated edits. Regenerate tool-owned content
|
|
283
|
+
through its tool. Synchronize affected detail/index/entry files and in-scope templates under §5.
|
|
284
|
+
|
|
285
|
+
### 7.3 Verification and unresolved findings
|
|
286
|
+
|
|
287
|
+
After repair, verify affected contracts, links, metadata and template parity with the applicable
|
|
288
|
+
checks. Record findings, verification and unresolved or unverified claims in the task or a dated
|
|
289
|
+
report. Do not claim a repository-wide audit from focused checks. If evidence remains ambiguous
|
|
290
|
+
or a repair fails verification, stop that repair and report the cause; do not declare it healed.
|
|
230
291
|
|
|
231
292
|
## 8. Lessons learned per file
|
|
232
293
|
|
|
@@ -243,6 +304,7 @@ this routing rule, not an instruction to append lessons here.
|
|
|
243
304
|
Seed `00`–`05`, this constitution and `AGENTS.md` through the project initializer. Fill project
|
|
244
305
|
facts from actual requirements and manifests; leave unknowns explicit. Do not pre-accept an
|
|
245
306
|
ADR, invent a completed phase, or create fictitious feature/status rows in a fresh project.
|
|
246
|
-
|
|
307
|
+
Start feature decomposition from approved requirements and apply §6.6 before creating top-level
|
|
308
|
+
features. Use the feature tool for its index. Keep `DESIGN.md` optional; author it when UI work needs a
|
|
247
309
|
shared design language. Preserve existing customized docs and supported entry symlinks.
|
|
248
310
|
Read `AGENTS.md` first, then the owners relevant to the work.
|
|
@@ -21,13 +21,6 @@
|
|
|
21
21
|
"file": "packages/app/src/services/agent-service.ts",
|
|
22
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
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
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"id": "team-noun-retired",
|
|
27
|
-
"wbs": "0848",
|
|
28
|
-
"file": "apps/cli/src/commands/team.ts",
|
|
29
|
-
"keepsWorking": "the `spur team` noun keeps working after its six verbs moved to owning nouns (0848): assign → `spur task update --assignee`, status → `spur agent list --specs`, up → fleet materialization at serve start (`spur projects list --fleet` for --check), down/start/stop → `spur agent stop|start|stop <spec-id>`; a one-time stderr warning (warnTeamNounRetiredOnce) names the replacement for the invoked verb and every verb keeps its previous exit code and output",
|
|
30
|
-
"removalCondition": "no `spur team` invocation remains in config/workflows/, plugins/sp/, scripts/, or docs/, and the cutover window is recorded in docs/features/G64_retire-workspace-inbox-teams-and-spur-team.md"
|
|
31
24
|
}
|
|
32
25
|
]
|
|
33
26
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gobing-ai/spur",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.82",
|
|
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",
|
package/plugins/sp/README.md
CHANGED
|
@@ -502,7 +502,7 @@ hold `SKILL.md` and prompt-side companions only.
|
|
|
502
502
|
| `scripts/daily-summary/{daily-summary,logger}.ts` | ccusage + git-history orchestration helpers for `sp:daily-summary` |
|
|
503
503
|
| `scripts/feature-sync-bounded.ts` | Bounded retry-suppression wrapper for `spur feature sync` during batch/wrap-up runs — suppresses identical L4-blocked repeats |
|
|
504
504
|
| `scripts/stage-registry-adapter.ts` | dev-next golden-path adapter over the canonical stage registry — TABLE A/B/C resolution bridge for the status-aware facade |
|
|
505
|
-
| `scripts/task-size-precheck.ts` | Pipeline size precheck guard (R2)
|
|
505
|
+
| `scripts/task-size-precheck.ts` | Pipeline size precheck guard (R2) — evaluates R-item/Plan-count limits to PASS/FAIL |
|
|
506
506
|
| `scripts/validate-flag-contracts.ts` | Mechanical consistency gate — compares flag claims across command files, flag-glossary, cross-cutting, dev-operations, and ADR; reports disagreements |
|
|
507
507
|
| `*.test.ts` | Unit suites — in `hooks/` for guards, in `tests/<skill>/` per ADR-031 pairing |
|
|
508
508
|
|
|
@@ -536,7 +536,7 @@ graph TB
|
|
|
536
536
|
end
|
|
537
537
|
|
|
538
538
|
subgraph "Execution layer"
|
|
539
|
-
CLI["spur CLI<br/>task · feature · rule · workflow<br/>· agent · history ·
|
|
539
|
+
CLI["spur CLI<br/>task · feature · rule · workflow<br/>· agent · history · message"]
|
|
540
540
|
SCRIPT["hooks/task-write-guard.ts"]
|
|
541
541
|
end
|
|
542
542
|
|
|
@@ -87,8 +87,8 @@ their runbook here.
|
|
|
87
87
|
- Drive a task batch through execution, chain campaigns into a recurring loop, or dispatch and
|
|
88
88
|
coordinate multiple agents — no batch driving, no recurring loops, no coordination dispatch here;
|
|
89
89
|
they hand off to `sp:super-planner` or a workflow.
|
|
90
|
-
- Use `spur
|
|
91
|
-
|
|
90
|
+
- Use `spur agent loop` — a supervisor-internal, forbidden surface. Agent specs are read through
|
|
91
|
+
`spur agent list --specs`.
|
|
92
92
|
|
|
93
93
|
## Output Format
|
|
94
94
|
|
|
@@ -124,4 +124,4 @@ recurring evolution loops, and multi-agent coordination are not dispatch duties
|
|
|
124
124
|
to `sp:super-planner` or a workflow definition. If the operator explicitly asks for a follow-up
|
|
125
125
|
corpus dispatch, its surface contract is
|
|
126
126
|
[dispatch-surface.md](../skills/parallel-execution/references/dispatch-surface.md): native subagent
|
|
127
|
-
by default, `spur agent run` only on a named trigger — never `spur
|
|
127
|
+
by default, `spur agent run` only on a named trigger — never `spur agent loop`.
|