@gobing-ai/spur 0.4.9 → 0.4.11

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 (89) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/config/rules/README.md +1 -1
  3. package/config/rules/boundary/env-var-hygiene.yaml +0 -1
  4. package/config/rules/boundary/sp-script-placement.yaml +3 -3
  5. package/config/rules/docs/sourced-api-claims.yaml +23 -96
  6. package/config/workflows/feature-verification.yaml +1 -9
  7. package/config/workflows/pr-review.yaml +72 -224
  8. package/config/workflows/task-pipeline.yaml +2 -2
  9. package/package.json +1 -1
  10. package/plugins/sp/agents/expert-spur.md +0 -1
  11. package/plugins/sp/commands/dev-changelog.md +1 -1
  12. package/plugins/sp/commands/dev-pr-review.md +27 -17
  13. package/plugins/sp/plugin.json +1 -1
  14. package/plugins/sp/skills/brainstorm/SKILL.md +12 -11
  15. package/plugins/sp/skills/brainstorm/agents/openai.yaml +1 -1
  16. package/plugins/sp/skills/brainstorm/examples/ideation-example.md +0 -4
  17. package/plugins/sp/skills/brainstorm/metadata.openclaw +1 -1
  18. package/plugins/sp/skills/brainstorm/references/workflows.md +4 -14
  19. package/plugins/sp/skills/code-verification/references/secu-review.md +7 -4
  20. package/plugins/sp/skills/history-anatomy/references/operations.md +3 -4
  21. package/plugins/sp/skills/history-anatomy/references/report-contract.md +2 -3
  22. package/plugins/sp/skills/issue-finding/SKILL.md +1 -1
  23. package/plugins/sp/skills/parallel-execution/SKILL.md +1 -1
  24. package/plugins/sp/skills/parallel-execution/references/result-synthesis.md +9 -10
  25. package/plugins/sp/skills/pr-reviewing/SKILL.md +157 -210
  26. package/plugins/sp/skills/reverse-engineering/SKILL.md +4 -6
  27. package/plugins/sp/skills/session-review/SKILL.md +10 -26
  28. package/plugins/sp/skills/source-driven-development/SKILL.md +35 -31
  29. package/plugins/sp/skills/spur-cli/SKILL.md +1 -1
  30. package/plugins/sp/skills/spur-cli/references/agent.md +5 -2
  31. package/plugins/sp/skills/spur-cli/references/builder.md +86 -13
  32. package/plugins/sp/skills/spur-cli/references/features.md +1 -1
  33. package/plugins/sp/skills/spur-cli/references/workflows/authoring-workflows.md +1 -1
  34. package/plugins/sp/skills/spur-dev/references/dev-operations.md +5 -6
  35. package/plugins/sp/skills/spur-dev/references/execution-worktree-landing.md +1 -1
  36. package/plugins/sp/skills/spur-dev/references/flag-glossary.md +3 -2
  37. package/spur.js +1280 -417
  38. package/web/_astro/{BoardApp.CaNvQBD_.js → BoardApp.B5rTVNd_.js} +1 -1
  39. package/web/_astro/{BoardApp.C5jnkkKP.js → BoardApp.BMprmPRc.js} +141 -141
  40. package/web/_astro/{TaskDetail.DGKndhI8.js → TaskDetail.Ddsur8qd.js} +1 -1
  41. package/web/_astro/{arc.DHrwdg3G.js → arc.DLqVVBxP.js} +1 -1
  42. package/web/_astro/{architectureDiagram-3BPJPVTR.pvKpK1s5.js → architectureDiagram-3BPJPVTR.C-Pk3uAi.js} +1 -1
  43. package/web/_astro/{blockDiagram-GPEHLZMM.BQmRcZsS.js → blockDiagram-GPEHLZMM.BRO1i_Nm.js} +1 -1
  44. package/web/_astro/{c4Diagram-AAUBKEIU.CCLjHeH1.js → c4Diagram-AAUBKEIU.BU_cWu6e.js} +1 -1
  45. package/web/_astro/channel.Bs3Illhy.js +1 -0
  46. package/web/_astro/{chunk-2J33WTMH.DL6Yuoma.js → chunk-2J33WTMH.D2VXiQ2t.js} +1 -1
  47. package/web/_astro/{chunk-4BX2VUAB.CzlyEI7l.js → chunk-4BX2VUAB.BcHT772J.js} +1 -1
  48. package/web/_astro/{chunk-55IACEB6.B60EWxp1.js → chunk-55IACEB6.DhDtICmo.js} +1 -1
  49. package/web/_astro/{chunk-727SXJPM.c7v_fRLo.js → chunk-727SXJPM.BoKHp7gV.js} +1 -1
  50. package/web/_astro/{chunk-AQP2D5EJ.8BxLWdDc.js → chunk-AQP2D5EJ.Chu4JRpE.js} +1 -1
  51. package/web/_astro/{chunk-FMBD7UC4.DmKuxGFT.js → chunk-FMBD7UC4.wHdwKPlq.js} +1 -1
  52. package/web/_astro/{chunk-ND2GUHAM.1Zwd4mqV.js → chunk-ND2GUHAM.ffN-M1JB.js} +1 -1
  53. package/web/_astro/{chunk-QZHKN3VN.BvYLu-A1.js → chunk-QZHKN3VN.FRubwg4S.js} +1 -1
  54. package/web/_astro/{classDiagram-4FO5ZUOK.CEqRt0WU.js → classDiagram-4FO5ZUOK.c22tQsc_.js} +1 -1
  55. package/web/_astro/{classDiagram-v2-Q7XG4LA2.CEqRt0WU.js → classDiagram-v2-Q7XG4LA2.c22tQsc_.js} +1 -1
  56. package/web/_astro/{cose-bilkent-S5V4N54A.C7JiUdj2.js → cose-bilkent-S5V4N54A.B9c6fiSj.js} +1 -1
  57. package/web/_astro/{cynefin-OW5HDTMX.B6mZ-1be.js → cynefin-OW5HDTMX.DrZsrUHl.js} +1 -1
  58. package/web/_astro/{dagre-BM42HDAG.BuryfDy6.js → dagre-BM42HDAG.DG1U4b3y.js} +1 -1
  59. package/web/_astro/{diagram-2AECGRRQ.dao39YQM.js → diagram-2AECGRRQ.CH15b-K3.js} +1 -1
  60. package/web/_astro/{diagram-5GNKFQAL.lnGZe4At.js → diagram-5GNKFQAL.BH1j7twR.js} +1 -1
  61. package/web/_astro/{diagram-KO2AKTUF.uWfhzEfT.js → diagram-KO2AKTUF.q2zCkbAj.js} +1 -1
  62. package/web/_astro/{diagram-LMA3HP47.ppq8-198.js → diagram-LMA3HP47.BLaaZnHV.js} +1 -1
  63. package/web/_astro/{diagram-OG6HWLK6.CKSCqDt5.js → diagram-OG6HWLK6.BcpRdQwI.js} +1 -1
  64. package/web/_astro/{erDiagram-TEJ5UH35.sFSf2yBN.js → erDiagram-TEJ5UH35.D7KBlqfM.js} +1 -1
  65. package/web/_astro/{flowDiagram-I6XJVG4X.BJQjKLbz.js → flowDiagram-I6XJVG4X.D_gmuRqg.js} +1 -1
  66. package/web/_astro/{ganttDiagram-6RSMTGT7.DAHKNj2N.js → ganttDiagram-6RSMTGT7.DzgWYniD.js} +1 -1
  67. package/web/_astro/{gitGraphDiagram-PVQCEYII.BlmzcW_O.js → gitGraphDiagram-PVQCEYII.576i3hm3.js} +1 -1
  68. package/web/_astro/index.DiC1a6lh.css +1 -0
  69. package/web/_astro/{infoDiagram-5YYISTIA.DGhjaqsi.js → infoDiagram-5YYISTIA.DMCclBiz.js} +1 -1
  70. package/web/_astro/{ishikawaDiagram-YF4QCWOH.gKIpgt6F.js → ishikawaDiagram-YF4QCWOH.9Kyca4SH.js} +1 -1
  71. package/web/_astro/{journeyDiagram-JHISSGLW.DG3tmP0R.js → journeyDiagram-JHISSGLW.chbdG-8q.js} +1 -1
  72. package/web/_astro/{kanban-definition-UN3LZRKU.CgHDSxkR.js → kanban-definition-UN3LZRKU.Bds54-e0.js} +1 -1
  73. package/web/_astro/{linear.BuGEpcuM.js → linear.D5ND9GN_.js} +1 -1
  74. package/web/_astro/{mermaid.core.DBVqkWBp.js → mermaid.core.D9N_PGbj.js} +4 -4
  75. package/web/_astro/{mindmap-definition-RKZ34NQL.D-kOcji9.js → mindmap-definition-RKZ34NQL.t0xop5vp.js} +1 -1
  76. package/web/_astro/{pieDiagram-4H26LBE5.BvGPwtZt.js → pieDiagram-4H26LBE5.DqgKh6hM.js} +1 -1
  77. package/web/_astro/{quadrantDiagram-W4KKPZXB.BKb_9FV6.js → quadrantDiagram-W4KKPZXB.DeuHVi2t.js} +1 -1
  78. package/web/_astro/{requirementDiagram-4Y6WPE33.Cx0fvD8v.js → requirementDiagram-4Y6WPE33.BdYFSG4W.js} +1 -1
  79. package/web/_astro/{sankeyDiagram-5OEKKPKP.fatULi0W.js → sankeyDiagram-5OEKKPKP.k1LPPETJ.js} +1 -1
  80. package/web/_astro/{sequenceDiagram-3UESZ5HK.ChHyKqco.js → sequenceDiagram-3UESZ5HK.DdyfpzoG.js} +1 -1
  81. package/web/_astro/{stateDiagram-AJRCARHV.BdUpKWyj.js → stateDiagram-AJRCARHV.DSEI8il0.js} +1 -1
  82. package/web/_astro/{stateDiagram-v2-BHNVJYJU.fmJxqIm5.js → stateDiagram-v2-BHNVJYJU.CoMnQRKo.js} +1 -1
  83. package/web/_astro/{timeline-definition-PNZ67QCA.BayDn5-V.js → timeline-definition-PNZ67QCA.DM1AHNm-.js} +1 -1
  84. package/web/_astro/{vennDiagram-CIIHVFJN.Bm2Aggwa.js → vennDiagram-CIIHVFJN.C-cJmVtl.js} +1 -1
  85. package/web/_astro/{wardleyDiagram-YWT4CUSO.DI75O-uG.js → wardleyDiagram-YWT4CUSO.D0xMzKPb.js} +1 -1
  86. package/web/_astro/{xychartDiagram-2RQKCTM6.DL90E7Q7.js → xychartDiagram-2RQKCTM6.BH5xJcEq.js} +1 -1
  87. package/web/index.html +2 -2
  88. package/web/_astro/channel.C7wG9RxA.js +0 -1
  89. package/web/_astro/index.BCY1JJHd.css +0 -1
@@ -58,8 +58,8 @@ name: task-pipeline
58
58
  # verifier's and reviewer's self-graded levels (re-imported from the cc anti-hallucination skill
59
59
  # by task 1068) are no longer written, checked, or gated on; spur certifies on deterministic
60
60
  # evidence (rows MET, proof digests, findings dispositioned). The `confidence` check row, the
61
- # `ackLowConfidence` var, and the guards' LOW/absent clauses are gone; the derived
62
- # feature-receipt confidence (ADR-131/1196) is a different family and stays.
61
+ # `ackLowConfidence` var, and the guards' LOW/absent clauses are gone. The derived
62
+ # feature-receipt confidence (1196) followed in task 1221 (ADR-138 amendment).
63
63
  version: "7"
64
64
  description: "Standard task pipeline: precheck → implement → quality-gate (test/fix/recheck) → review → approve → verify → record → done"
65
65
  # Task entity lifecycle (owned by task-lifecycle.yaml):
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gobing-ai/spur",
3
- "version": "0.4.9",
3
+ "version": "0.4.11",
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",
@@ -98,7 +98,6 @@ their runbook here.
98
98
  **Noun(s):** task | feature | rule | workflow | agent spec
99
99
  **Method:** corpus campaign | compose/tune (`sp:spur-composer`) | evaluate/reflect (`sp:spur-doctor`)
100
100
  **Scope:** <resolved ids/files>
101
- **Confidence:** HIGH | MEDIUM | LOW
102
101
 
103
102
  ### Changes
104
103
  | Target | Operation | Result |
@@ -26,5 +26,5 @@ For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag
26
26
 
27
27
  ## Implementation
28
28
 
29
- Follow the inline procedure in [dev-operations.md](../skills/spur-dev/references/dev-operations.md#8-changelog) (changelog). This is a docs-only generator: run no quality gates (`bun run gate`, lint, typecheck, tests, `spur-check`, rules) — a generic "verify before finishing" rule does not apply here. The generator's own claim-verification pass is part of the procedure, not a gate, and carries two required checks per claim bullet (dev-operations §8, step 7): a **source citation** — an anchor naming a URL or a repo `path:line` — and a **confidence level**, exactly one of `HIGH`, `MEDIUM`, `LOW`, both held in the bullet's `<!-- src: … · <level> -->` comment and re-verified by step 8's self-check.
29
+ Follow the inline procedure in [dev-operations.md](../skills/spur-dev/references/dev-operations.md#8-changelog) (changelog). This is a docs-only generator: run no quality gates (`bun run gate`, lint, typecheck, tests, `spur-check`, rules) — a generic "verify before finishing" rule does not apply here. The generator's own claim-verification pass is part of the procedure, not a gate, and carries one required check per claim bullet (dev-operations §8, step 7): a **source citation** — an anchor naming a URL or a repo `path:line` — held in the bullet's `<!-- src: … -->` comment and re-verified by step 8's self-check. No confidence level is recorded (ADR-138).
30
30
 
@@ -1,39 +1,49 @@
1
1
  ---
2
- description: "Review GitHub PRs with Codex; collect and fix findings."
2
+ description: "Local-first PR review — status, a local branch-diff review, and validated fixes; --codex opts into the GitHub Codex review spine."
3
3
  role: reviewer
4
- argument-hint: "[full|submit|collect|fix|rerun|status|rules] [--base <branch>] [--no-wait] [--agent <inline|auto|name>] [<focus>]"
4
+ argument-hint: "[status|review|fix] [--codex] [--force] [--no-wait] [--base <branch>] [--agent <inline|auto|name>] [<focus>]"
5
5
  allowed-tools: ["Bash", "Read", "Skill"]
6
6
  ---
7
7
 
8
8
  # Dev PR Review
9
9
 
10
- Wraps the **sp:pr-reviewing** skill. The review itself runs on the GitHub PR through Codex
11
- (`@codex review`) — never through a local Codex review mechanism; the invoking agent orchestrates
12
- and (in `fix` mode) implements.
10
+ Wraps the **sp:pr-reviewing** skill. The default `status` mode is a read-only snapshot of the
11
+ branch, its base and the pull request; `review` runs a **local** review of the branch diff unless
12
+ `--codex` opts into the GitHub `@codex review` spine; `fix` triages findings from either reviewer
13
+ and commits the verified ones. The invoking agent orchestrates.
13
14
 
14
15
  ## Argument Flags
15
16
 
16
17
  | Flag | Description | Default |
17
18
  | --- | --- | --- |
18
- | `<mode>` | `full\|submit\|collect\|fix\|rerun\|status\|rules` — full: request (deduped) + wait + report; submit: request and stop at pending; collect: report the latest review; fix: validate findings, fix legitimate ones, re-review; rerun: force a fresh review of the pushed HEAD; status: read-only composite; rules: author the repo's `AGENTS.md` `## Code Review Rules`. | full |
19
- | `--base` `<branch>` | Base branch when a new PR must be created. | existing PR base, else repo default |
20
- | `--no-wait` | Return pending right after the review request instead of polling. | off |
21
- | `--agent` `<inline\|auto\|name>` | Who performs model-bearing triage/fix. Omit uses the current agent, `inline` forbids dispatch, `auto` resolves the declared role, and a name pins that executor. This does not change the deterministic workflow/direct route. | omit |
22
- | `<focus>` | Remaining free text — extra review focus appended to the Codex request (e.g. `security boundaries and transaction idempotency`). | none |
19
+ | `<mode>` | `status\|review\|fix` — status: read-only branch + PR state; review: local branch-diff review (or the GitHub Codex spine with `--codex`); fix: validate, fix and commit findings from either reviewer. | status |
20
+ | `--codex` | `review` only — route through the GitHub Codex spine (`pr-review.yaml`) instead of the local `/sp:dev-review`. | off |
21
+ | `--force` | `review --codex` only — request a fresh review of the current HEAD even when it was already reviewed (`mode=rerun`). | off |
22
+ | `--no-wait` | `review --codex` only — post the request and return `pending` without polling (`mode=submit`). | off |
23
+ | `--base <branch>` | Base branch for the branch report, the `pr-check` diff and a newly created PR. | existing PR base, else repo default |
24
+ | `--agent <inline\|auto\|name>` | Who performs the model-bearing triage/fix. Omit uses the current agent, `inline` forbids dispatch, `auto` resolves the declared role, and a name pins that executor. This does not change the deterministic route. | omit |
25
+ | `<focus>` | Remaining free text — extra review focus for the local review or the Codex request (e.g. `security boundaries and transaction idempotency`). | none |
23
26
 
24
27
  For shared semantics, see the [flag glossary](../skills/spur-dev/references/flag-glossary.md).
25
28
 
26
29
  ## Usage
27
30
 
28
- /sp:dev-pr-review [full|submit|collect|fix|rerun|status|rules] [--base <branch>] [--no-wait] [--agent <inline|auto|name>] [review focus]
31
+ ```
32
+ /sp:dev-pr-review [status|review|fix] [--codex] [--force] [--no-wait] [--base <branch>] [--agent <inline|auto|name>] [review focus]
33
+ ```
29
34
 
30
35
  ## Implementation
31
36
 
32
37
  - Apply the [inline-default execution-surface contract](../skills/spur-dev/references/cross-cutting.md#inline-default-execution-surface).
33
38
  - Delegate everything: `Skill(skill="sp:pr-reviewing", args="$ARGUMENTS")`. The skill owns mode
34
- routing, finding triage, fix, and rules authoring; `pr-review.yaml` is the SSOT
35
- for the review spine's state order and guards; `spur builder pr` is the
36
- deterministic git/gh core every spine step shells out to.
37
- - The external review goes through the GitHub PR and an `@codex review` comment only — never local
38
- Codex review commands. Never force-push, rewrite history, merge the PR, or discard unrelated
39
- changes; outside `fix` mode, ask before creating any commit.
39
+ routing, the local `/sp:dev-review` dispatch, the Codex spine and finding triage/fix. On the
40
+ Codex path `pr-review.yaml` is the SSOT for state order and guards, and the four flat
41
+ `spur builder pr-<verb>` verbs are the deterministic git/gh core every spine step shells out to.
42
+ - Retired modes print one notice line and run their replacement: `full` → `review --codex`;
43
+ `submit` → `review --codex --no-wait`; `rerun` → `review --codex --force`; `collect` → `status`.
44
+ `rules` prints that `AGENTS.md` review-rule authoring belongs to `cc:cc-magents` (the `cc` plugin)
45
+ and exits without running a review.
46
+ - Never force-push, rewrite history, close or integrate the PR, or discard unrelated changes.
47
+ `review` without `--codex` makes no GitHub writes. `fix` pre-authorizes one focused commit for the
48
+ verified findings — stop if unrelated uncommitted changes make safe separation or committing
49
+ ambiguous.
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "sp",
3
- "version": "0.4.9",
3
+ "version": "0.4.11",
4
4
  "description": "Spur — a local-first harness engineering toolkit that wraps mainstream coding agents with constraint checking, workflow orchestration, and history analytics."
5
5
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: brainstorm
3
- description: "Structured ideation: generate solution options with trade-offs and confidence scoring, then delegate to research/task-creation skills. Triggers: \"brainstorm ideas\", \"explore solutions\", \"consider options\", \"research approaches\", \"what are my options\", \"how should I approach X\"."
3
+ description: "Structured ideation: generate solution options with trade-offs and source citations, then delegate to research/task-creation skills. Triggers: \"brainstorm ideas\", \"explore solutions\", \"consider options\", \"research approaches\", \"what are my options\", \"how should I approach X\"."
4
4
  license: Apache-2.0
5
5
  version: 1.0.0
6
6
  created_at: 2026-03-25
@@ -30,7 +30,7 @@ see_also:
30
30
 
31
31
  # sp:brainstorm — Structured Ideation Workflow
32
32
 
33
- Generate solution options with trade-offs, recommendations, and confidence scoring. Delegates research to specialized skills.
33
+ Generate solution options with trade-offs, recommendations, and source citations. Delegates research to specialized skills.
34
34
 
35
35
  **Key distinction:**
36
36
  - **`sp:brainstorm`** = Ideation: generate approaches with trade-offs
@@ -40,7 +40,7 @@ Generate solution options with trade-offs, recommendations, and confidence scori
40
40
 
41
41
  ## Overview
42
42
 
43
- The `sp:brainstorm` skill generates multiple solution approaches with explicit trade-offs, confidence scoring, and source citations. It follows a structured 3-phase workflow: Input parsing, Ideation with research delegation, and structured Output. Unlike pure research or bare task creation, brainstorm focuses on ideation—generating and comparing options before committing to a solution path.
43
+ The `sp:brainstorm` skill generates multiple solution approaches with explicit trade-offs and source citations. It follows a structured 3-phase workflow: Input parsing, Ideation with research delegation, and structured Output. Unlike pure research or bare task creation, brainstorm focuses on ideation—generating and comparing options before committing to a solution path.
44
44
 
45
45
  ## Quick Start
46
46
 
@@ -101,14 +101,15 @@ See the [inline-default contract](../spur-dev/references/cross-cutting.md#inline
101
101
 
102
102
  ### 3. Generate 2-3 Approaches
103
103
 
104
- Always generate multiple options, each with description, trade-offs, confidence, and sources — full
104
+ Always generate multiple options, each with description, trade-offs, and sources — full
105
105
  per-approach template: [references/workflows.md](references/workflows.md#approach-generation).
106
106
 
107
- ### 4. Confidence Scoring
107
+ ### 4. Source Citations
108
108
 
109
- Every approach and every external claim carries a HIGH/MEDIUM/LOW confidence score plus a dated
110
- source citation — table, thresholds, and citation format:
111
- [references/workflows.md](references/workflows.md#confidence-scoring).
109
+ Every external claim carries a dated source citation — format:
110
+ [references/workflows.md](references/workflows.md#source-citation-format). No HIGH/MEDIUM/LOW
111
+ confidence score (ADR-138): a self-assigned score is as easy to write as the claim; the citation and
112
+ the trade-offs are what the operator compares.
112
113
 
113
114
  ### 5. Task Delegation
114
115
 
@@ -224,13 +225,13 @@ still pauses unless the operator has encoded prior approval in the workflow vars
224
225
  | "I understand the request — skip clarifying." | Ideating on a misread wastes the whole session. Validate input clarity and the two input modes before generating options. |
225
226
  | "More options are always better." | Beyond ~3, options dilute focus and stall the decision. Cap at three and delegate deeper research instead. |
226
227
  | "I'll design the architecture while I brainstorm." | Brainstorm generates and scores approaches; it does not lock the design. Route a chosen approach through the Design Approval Gate. |
227
- | "Confidence scores are subjective — skip them." | An unscored option hides its risk. Cite sources and assign confidence so the operator compares on evidence, not vibes. |
228
+ | "Sources are obvious — skip them." | An uncited option hides its risk. Cite sources and name the trade-offs so the operator compares on evidence, not vibes. |
228
229
 
229
230
  ## Red Flags
230
231
 
231
232
  - Presenting a single approach with no alternatives or trade-offs.
232
233
  - Starting ideation before the input is clarified.
233
- - More than three approaches, or approaches with no confidence score / source.
234
+ - More than three approaches, or approaches with no source.
234
235
  - Skipping the task-delegation offer after the operator confirms a direction.
235
236
  - Treating a brainstorm output as an approved design (bypassing the approval gate).
236
237
 
@@ -293,7 +294,7 @@ codebase-first rule, stop conditions, depth question budgets, smart positional d
293
294
  The skill uses this tree to:
294
295
  1. **Constrain the option space** — each approach must be compatible with resolved decisions
295
296
  2. **Generate decision-trace annotations** — each approach lists which decisions it depends on
296
- 3. **Calibrate confidence** — decisions resolved from codebase evidence get higher confidence
297
+ 3. **Cite the evidence** — decisions resolved from codebase evidence cite the `path:line` they rest on
297
298
 
298
299
  When `--skip-discovery` is used (no `--context`), the operation falls back to the standard
299
300
  3-phase workflow with its own lightweight clarification step.
@@ -1,6 +1,6 @@
1
1
  name: brainstorm
2
2
  description: "Structured ideation workflow for generating solution options with
3
- trade-offs, confidence scoring, and delegation to research and task creation
3
+ trade-offs, source citations, and delegation to research and task creation
4
4
  skills. Triggers: brainstorm ideas, explore solutions, consider options,
5
5
  research approaches, multiple solution options with trade-offs."
6
6
  version: 1.0.0
@@ -80,7 +80,6 @@ async function authMiddleware(c: Context, next: Next) {
80
80
  }
81
81
  ```
82
82
 
83
- **Confidence:** HIGH
84
83
  **Sources:**
85
84
  - [jose Library Docs](https://github.com/panva/jose) | Verified: 2026-03-25
86
85
  - [Hono Middleware Guide](https://hono.dev/docs/middleware/builtin/bearer-auth) | Verified: 2026-03-25
@@ -127,7 +126,6 @@ async function handleLogin(username: string, password: string) {
127
126
  }
128
127
  ```
129
128
 
130
- **Confidence:** MEDIUM
131
129
  **Sources:**
132
130
  - [Auth0 Node.js SDK v5](https://auth0.github.io/node-auth0/) | Verified: 2026-03-25
133
131
  - [Firebase Admin Setup](https://firebase.google.com/docs/admin/setup) | Verified: 2026-03-15
@@ -172,7 +170,6 @@ async function apiKeyMiddleware(c: Context, next: Next) {
172
170
  }
173
171
  ```
174
172
 
175
- **Confidence:** MEDIUM
176
173
  **Sources:**
177
174
  - [Hono Bearer Auth Middleware](https://hono.dev/docs/middleware/builtin/bearer-auth) | Verified: 2026-03-25
178
175
 
@@ -206,4 +203,3 @@ async function apiKeyMiddleware(c: Context, next: Next) {
206
203
 
207
204
  **Generated by:** sp:brainstorm
208
205
  **Research delegation:** sp:source-driven-development, spur agent run
209
- **Confidence:** HIGH (official jose/Hono documentation, 2026)
@@ -1,6 +1,6 @@
1
1
  name: brainstorm
2
2
  description: "Structured ideation workflow for generating solution options with
3
- trade-offs, confidence scoring, and delegation to research and task creation
3
+ trade-offs, source citations, and delegation to research and task creation
4
4
  skills. Triggers: brainstorm ideas, explore solutions, consider options,
5
5
  research approaches, multiple solution options with trade-offs."
6
6
  version: 1.0.0
@@ -85,7 +85,7 @@ DO NOT implement research directly. Delegate to specialized skills:
85
85
 
86
86
  2. Delegate research + synthesis inline by default
87
87
  - Run in the current session; escalate to `spur agent run` only on a subprocess trigger
88
- - Request confidence scoring
88
+ - Request source citations
89
89
  ```
90
90
 
91
91
  ### Approach Generation
@@ -108,7 +108,6 @@ DO NOT implement research directly. Delegate to specialized skills:
108
108
  - Key technical considerations
109
109
  - Dependencies or prerequisites
110
110
 
111
- **Confidence:** HIGH/MEDIUM/LOW
112
111
  **Sources:** [Citations with dates]
113
112
  ```
114
113
 
@@ -120,14 +119,6 @@ DO NOT implement research directly. Delegate to specialized skills:
120
119
  - [Title](URL) | **Verified**: YYYY-MM-DD
121
120
  ```
122
121
 
123
- ### Confidence Scoring
124
-
125
- | Level | Range | Criteria |
126
- |-------|-------|----------|
127
- | **HIGH** | >90% | Direct quote from official docs (2025+) |
128
- | **MEDIUM** | 70-90% | Synthesized from multiple sources |
129
- | **LOW** | <70% | Uncertain, flag for review |
130
-
131
122
  ---
132
123
 
133
124
  ## Phase 3: Structured Output
@@ -144,7 +135,7 @@ DO NOT implement research directly. Delegate to specialized skills:
144
135
  2. **Approaches** (200-300 words each)
145
136
  - 2-3 options with trade-offs
146
137
  - Implementation considerations
147
- - Confidence levels
138
+ - Sources
148
139
 
149
140
  3. **Recommendations** (100-150 words)
150
141
  - Recommended approach with reasoning
@@ -197,7 +188,6 @@ run_id: <run id, omit when none>
197
188
  **Implementation Notes:**
198
189
  - [Technical considerations]
199
190
 
200
- **Confidence:** HIGH/MEDIUM/LOW
201
191
  **Sources:** [Citations]
202
192
 
203
193
  ### Approach 2: [Name]
@@ -255,7 +245,7 @@ Bash: spur task batch-create --file decomposition.json # bare JSON array (see
255
245
  | File not found | Provide clear error with path |
256
246
  | Invalid YAML | Report parsing error |
257
247
  | Missing fields | List missing fields, ask if incomplete |
258
- | Research unavailable | Continue, note reduced confidence |
248
+ | Research unavailable | Continue, mark the uncited claims |
259
249
  | Save fails | Display output, suggest manual save |
260
250
 
261
251
  ---
@@ -265,6 +255,6 @@ Bash: spur task batch-create --file decomposition.json # bare JSON array (see
265
255
  When tools unavailable:
266
256
 
267
257
  1. **Continue** with available tools
268
- 2. **Note** reduced confidence
258
+ 2. **Mark** claims left uncited
269
259
  3. **Suggest** manual fallback
270
260
  4. **Save** intermediate state
@@ -90,10 +90,13 @@ Before declaring a task `done`, run this lightweight checklist. It catches the m
90
90
  - [ ] No `console.log` / `console.error` in production code (use the project logger).
91
91
  - [ ] No `--no-verify`, `--force`, or new suppression comments added to bypass gates.
92
92
  - [ ] Solution section contains `file:line` citations for every changed file.
93
- - [ ] API/library claims in changed docs carry a source citation (URL or `path:line`) and an honest
94
- confidence level (HIGH/MEDIUM/LOW) per source-driven-development — a HIGH claim must show the
95
- source it was verified against on the same line (MEDIUM/LOW need no anchor); the deterministic advisory backstop is
96
- the `cited-version-strings` / `cited-api-claims` / `cited-api-claims-confidence` / `cited-high-confidence` rules
93
+ - [ ] Every API/library claim in changed docs carries BOTH a source citation (URL or `path:line`) and
94
+ an EARNED level `HIGH|MEDIUM|LOW` — `HIGH` cites (a URL, `path:line`, or a path with a
95
+ code/doc extension), `MEDIUM`/`LOW` cite or name what is unverified. That is the
96
+ `| Claim | Source | Local verification | Confidence |` contract of
97
+ `.spur/rules/structure/api-library-claim-citation.yaml`; ADR-138 still forbids a confidence
98
+ label on the VERDICT or verify answer. The deterministic advisory backstop for the citation
99
+ half is the `cited-version-strings` / `cited-api-claims` rules
97
100
  (`.spur/rules/docs/sourced-api-claims.yaml`, run ad hoc — not wired into a preset).
98
101
  - [ ] Review section has P1–P4 findings table (even if all rows are empty — the table itself proves review happened).
99
102
 
@@ -31,10 +31,9 @@ Given the current and baseline artifacts, author the model half of the report. A
31
31
  calendar day; ad-hoc → immediately preceding equal-duration window. If baseline coverage is
32
32
  insufficient or materially different, emit `not comparable` and **no** trend/delta/percentage.
33
33
  3. **Findings** — each with the full per-finding field set (key, category, impact, trend,
34
- observation, inference, confidence, contradictions, evidenceAnchor, severity, reproCommand,
34
+ observation, inference, contradictions, evidenceAnchor, severity, reproCommand,
35
35
  ownerSurface). Categories from the closed vocabulary; stable keys of the form
36
- `<category>:<owner-surface>:<signal>`. Severity is the closed P1/P2/P3 vocabulary and is
37
- orthogonal to confidence; reproCommand reproduces the observation verbatim; ownerSurface names
36
+ `<category>:<owner-surface>:<signal>`. Severity is the closed P1/P2/P3 vocabulary; reproCommand reproduces the observation verbatim; ownerSurface names
38
37
  the concrete owning surface (file/package/command), consistent with the key's middle segment.
39
38
  4. **Recurrence ledger** — classify every finding against the baseline on the **stable key**.
40
39
  5. **Telemetry gaps** — every dimension the artifact cannot support, rendered `not available`.
@@ -58,7 +57,7 @@ Given a candidate report and the artifacts, independently verify:
58
57
  - **Twelve-section completeness and order** — all twelve section names present in the frozen
59
58
  order; none renamed/omitted.
60
59
  - **Per-finding fields** — every finding (problem and positive) carries key, category, impact,
61
- trend, observation, inference, confidence, contradictions, evidenceAnchor, severity (P1/P2/P3),
60
+ trend, observation, inference, contradictions, evidenceAnchor, severity (P1/P2/P3),
62
61
  reproCommand, ownerSurface; category in the closed vocabulary; stable-key grammar. A finding
63
62
  missing any triage field FAILs (the deterministic gate enforces the same set).
64
63
  - **Remediation handoff** — each accepted-proposal handoff carries a `spur task create`
@@ -62,10 +62,9 @@ Every finding — problem and positive alike — carries the full field set:
62
62
  | `trend` | `new` / `recurring` / `regressed` / `improved` / `resolved` / `not-comparable` (see recurrence). |
63
63
  | `observation` | What the artifacts show — evidence, not interpretation. |
64
64
  | `inference` | What the observation is reasoned to mean; names its supporting observations. |
65
- | `confidence` | Per-finding: `high` / `medium` / `low`. Never one blanket report-level score. |
66
65
  | `contradictions` | Any contradicting signal shown beside the finding, not silently reconciled. |
67
66
  | `evidenceAnchor` | At least one anchor to the forensics artifact or cited `file:line`. An entry with no anchor is invalid. |
68
- | `severity` | Closed vocabulary `P1` / `P2` / `P3` — how much the finding matters. Orthogonal to `confidence`: severity orders work, confidence says how sure we are (0680 R1). The structure gate fails a finding without one. |
67
+ | `severity` | Closed vocabulary `P1` / `P2` / `P3` — how much the finding matters. Severity orders work (0680 R1); how well a finding is supported lives in its `observation`, `inference`, `contradictions` and `evidenceAnchor`, never a confidence label (ADR-138). The structure gate fails a finding without one. |
69
68
  | `reproCommand` | The invocation that reproduces the observation — one command a reader can run verbatim (0680 R2). Gate-enforced. |
70
69
  | `ownerSurface` | The concrete surface that owns the fix (a file path, package, or command), consistent with the key's `<owner-surface>` segment but named as a target rather than a slug (0680 R3). Gate-enforced. |
71
70
 
@@ -114,7 +113,7 @@ reclassify a recurring finding as new.
114
113
  ## Positive patterns
115
114
 
116
115
  Positive entries are held to the **same evidence standard as problems**: they carry observation,
117
- inference, confidence, and at least one evidence anchor. An entry without an anchor is invalid. The
116
+ inference, and at least one evidence anchor. An entry without an anchor is invalid. The
118
117
  section renders successful workflows, resolved past issues that stay resolved, and healthy,
119
118
  repeating behavior worth keeping.
120
119
 
@@ -411,7 +411,7 @@ Thin wrapper: `Skill(skill="sp:issue-finding", args="$ARGUMENTS")`.
411
411
  - Wholesale raw JSONL parsing when the source has a typed mapper.
412
412
  - Accepting `--use-history` or `--no-task` silently instead of naming their replacements.
413
413
  - GENERATE recipes inventing a title flag, dotted template forms, or quoted dotted section flags.
414
- - Claiming multi-agent forensics without stating source confidence (High/Medium/Low).
414
+ - Claiming multi-agent forensics without citing the session source each finding came from.
415
415
  - Skipping batch section writes + single `spur task check` (when generating).
416
416
  - Emitting empty findings without inventorying sessions first.
417
417
 
@@ -61,7 +61,7 @@ Parallel subagent outputs must be **synthesized**, not concatenated. The synthes
61
61
 
62
62
  1. **Dedup** — merge findings with the same `file:line` anchor; keep the highest-severity version.
63
63
  2. **Resolve conflicts** — when two subagents disagree on the same claim, surface the disagreement explicitly; don't silently pick one.
64
- 3. **Rank by confidence** — sort synthesized results by confidence (HIGH → MEDIUM → LOW); unresolved conflicts go last.
64
+ 3. **Rank by evidence** — verified findings (executed check or cited source) first, unverified next, unresolved conflicts last; severity within each tier.
65
65
  4. **Unified format** — emit one coherent output, not N raw dumps.
66
66
 
67
67
  Full synthesis methodology: [result-synthesis.md](references/result-synthesis.md).
@@ -41,13 +41,12 @@ Synthesis: ⚠ CONFLICT — Redis migration safety
41
41
 
42
42
  **Rule:** conflicts are findings, not failures. Surface them with both positions stated; let the operator resolve.
43
43
 
44
- ### 3. Rank by confidence
44
+ ### 3. Rank by evidence
45
45
 
46
- Sort synthesized results:
47
- 1. HIGH confidence (empirically verified, source-cited)
48
- 2. MEDIUM confidence (reasoned, but not empirically verified)
49
- 3. LOW confidence (heuristic, pattern-match, or uncertain)
50
- 4. Unresolved conflicts (both sides stated)
46
+ Sort synthesized results by what backs them, not a self-assigned confidence label (ADR-138):
47
+ 1. Verified (an executed check or a cited `path:line` / URL)
48
+ 2. Unverified (reasoned or pattern-matched; name the check that would ground it)
49
+ 3. Unresolved conflicts (both sides stated)
51
50
 
52
51
  Within each tier, sort by severity (P1 → P2 → P3 → P4).
53
52
 
@@ -58,11 +57,11 @@ Emit one coherent output. The unified report has:
58
57
  ```
59
58
  ## Synthesized Results
60
59
 
61
- ### HIGH Confidence
62
- | # | Finding | Source | Severity | File:Line |
63
- |---|---------|--------|----------|-----------|
60
+ ### Verified
61
+ | # | Finding | Source | Severity | File:Line | Evidence |
62
+ |---|---------|--------|----------|-----------|----------|
64
63
 
65
- ### MEDIUM Confidence
64
+ ### Unverified
66
65
  ...
67
66
 
68
67
  ### Conflicts (unresolved)