@gobing-ai/spur 0.4.9 → 0.4.10

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 (83) 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/task-pipeline.yaml +2 -2
  8. package/package.json +1 -1
  9. package/plugins/sp/agents/expert-spur.md +0 -1
  10. package/plugins/sp/commands/dev-changelog.md +1 -1
  11. package/plugins/sp/plugin.json +1 -1
  12. package/plugins/sp/skills/brainstorm/SKILL.md +12 -11
  13. package/plugins/sp/skills/brainstorm/agents/openai.yaml +1 -1
  14. package/plugins/sp/skills/brainstorm/examples/ideation-example.md +0 -4
  15. package/plugins/sp/skills/brainstorm/metadata.openclaw +1 -1
  16. package/plugins/sp/skills/brainstorm/references/workflows.md +4 -14
  17. package/plugins/sp/skills/code-verification/references/secu-review.md +3 -4
  18. package/plugins/sp/skills/history-anatomy/references/operations.md +3 -4
  19. package/plugins/sp/skills/history-anatomy/references/report-contract.md +2 -3
  20. package/plugins/sp/skills/issue-finding/SKILL.md +1 -1
  21. package/plugins/sp/skills/parallel-execution/SKILL.md +1 -1
  22. package/plugins/sp/skills/parallel-execution/references/result-synthesis.md +9 -10
  23. package/plugins/sp/skills/reverse-engineering/SKILL.md +4 -6
  24. package/plugins/sp/skills/session-review/SKILL.md +10 -26
  25. package/plugins/sp/skills/source-driven-development/SKILL.md +25 -29
  26. package/plugins/sp/skills/spur-cli/references/agent.md +5 -2
  27. package/plugins/sp/skills/spur-cli/references/features.md +1 -1
  28. package/plugins/sp/skills/spur-cli/references/workflows/authoring-workflows.md +1 -1
  29. package/plugins/sp/skills/spur-dev/references/dev-operations.md +5 -6
  30. package/plugins/sp/skills/spur-dev/references/execution-worktree-landing.md +1 -1
  31. package/spur.js +378 -411
  32. package/web/_astro/{BoardApp.CaNvQBD_.js → BoardApp.B5rTVNd_.js} +1 -1
  33. package/web/_astro/{BoardApp.C5jnkkKP.js → BoardApp.BMprmPRc.js} +141 -141
  34. package/web/_astro/{TaskDetail.DGKndhI8.js → TaskDetail.Ddsur8qd.js} +1 -1
  35. package/web/_astro/{arc.DHrwdg3G.js → arc.DLqVVBxP.js} +1 -1
  36. package/web/_astro/{architectureDiagram-3BPJPVTR.pvKpK1s5.js → architectureDiagram-3BPJPVTR.C-Pk3uAi.js} +1 -1
  37. package/web/_astro/{blockDiagram-GPEHLZMM.BQmRcZsS.js → blockDiagram-GPEHLZMM.BRO1i_Nm.js} +1 -1
  38. package/web/_astro/{c4Diagram-AAUBKEIU.CCLjHeH1.js → c4Diagram-AAUBKEIU.BU_cWu6e.js} +1 -1
  39. package/web/_astro/channel.Bs3Illhy.js +1 -0
  40. package/web/_astro/{chunk-2J33WTMH.DL6Yuoma.js → chunk-2J33WTMH.D2VXiQ2t.js} +1 -1
  41. package/web/_astro/{chunk-4BX2VUAB.CzlyEI7l.js → chunk-4BX2VUAB.BcHT772J.js} +1 -1
  42. package/web/_astro/{chunk-55IACEB6.B60EWxp1.js → chunk-55IACEB6.DhDtICmo.js} +1 -1
  43. package/web/_astro/{chunk-727SXJPM.c7v_fRLo.js → chunk-727SXJPM.BoKHp7gV.js} +1 -1
  44. package/web/_astro/{chunk-AQP2D5EJ.8BxLWdDc.js → chunk-AQP2D5EJ.Chu4JRpE.js} +1 -1
  45. package/web/_astro/{chunk-FMBD7UC4.DmKuxGFT.js → chunk-FMBD7UC4.wHdwKPlq.js} +1 -1
  46. package/web/_astro/{chunk-ND2GUHAM.1Zwd4mqV.js → chunk-ND2GUHAM.ffN-M1JB.js} +1 -1
  47. package/web/_astro/{chunk-QZHKN3VN.BvYLu-A1.js → chunk-QZHKN3VN.FRubwg4S.js} +1 -1
  48. package/web/_astro/{classDiagram-4FO5ZUOK.CEqRt0WU.js → classDiagram-4FO5ZUOK.c22tQsc_.js} +1 -1
  49. package/web/_astro/{classDiagram-v2-Q7XG4LA2.CEqRt0WU.js → classDiagram-v2-Q7XG4LA2.c22tQsc_.js} +1 -1
  50. package/web/_astro/{cose-bilkent-S5V4N54A.C7JiUdj2.js → cose-bilkent-S5V4N54A.B9c6fiSj.js} +1 -1
  51. package/web/_astro/{cynefin-OW5HDTMX.B6mZ-1be.js → cynefin-OW5HDTMX.DrZsrUHl.js} +1 -1
  52. package/web/_astro/{dagre-BM42HDAG.BuryfDy6.js → dagre-BM42HDAG.DG1U4b3y.js} +1 -1
  53. package/web/_astro/{diagram-2AECGRRQ.dao39YQM.js → diagram-2AECGRRQ.CH15b-K3.js} +1 -1
  54. package/web/_astro/{diagram-5GNKFQAL.lnGZe4At.js → diagram-5GNKFQAL.BH1j7twR.js} +1 -1
  55. package/web/_astro/{diagram-KO2AKTUF.uWfhzEfT.js → diagram-KO2AKTUF.q2zCkbAj.js} +1 -1
  56. package/web/_astro/{diagram-LMA3HP47.ppq8-198.js → diagram-LMA3HP47.BLaaZnHV.js} +1 -1
  57. package/web/_astro/{diagram-OG6HWLK6.CKSCqDt5.js → diagram-OG6HWLK6.BcpRdQwI.js} +1 -1
  58. package/web/_astro/{erDiagram-TEJ5UH35.sFSf2yBN.js → erDiagram-TEJ5UH35.D7KBlqfM.js} +1 -1
  59. package/web/_astro/{flowDiagram-I6XJVG4X.BJQjKLbz.js → flowDiagram-I6XJVG4X.D_gmuRqg.js} +1 -1
  60. package/web/_astro/{ganttDiagram-6RSMTGT7.DAHKNj2N.js → ganttDiagram-6RSMTGT7.DzgWYniD.js} +1 -1
  61. package/web/_astro/{gitGraphDiagram-PVQCEYII.BlmzcW_O.js → gitGraphDiagram-PVQCEYII.576i3hm3.js} +1 -1
  62. package/web/_astro/index.DiC1a6lh.css +1 -0
  63. package/web/_astro/{infoDiagram-5YYISTIA.DGhjaqsi.js → infoDiagram-5YYISTIA.DMCclBiz.js} +1 -1
  64. package/web/_astro/{ishikawaDiagram-YF4QCWOH.gKIpgt6F.js → ishikawaDiagram-YF4QCWOH.9Kyca4SH.js} +1 -1
  65. package/web/_astro/{journeyDiagram-JHISSGLW.DG3tmP0R.js → journeyDiagram-JHISSGLW.chbdG-8q.js} +1 -1
  66. package/web/_astro/{kanban-definition-UN3LZRKU.CgHDSxkR.js → kanban-definition-UN3LZRKU.Bds54-e0.js} +1 -1
  67. package/web/_astro/{linear.BuGEpcuM.js → linear.D5ND9GN_.js} +1 -1
  68. package/web/_astro/{mermaid.core.DBVqkWBp.js → mermaid.core.D9N_PGbj.js} +4 -4
  69. package/web/_astro/{mindmap-definition-RKZ34NQL.D-kOcji9.js → mindmap-definition-RKZ34NQL.t0xop5vp.js} +1 -1
  70. package/web/_astro/{pieDiagram-4H26LBE5.BvGPwtZt.js → pieDiagram-4H26LBE5.DqgKh6hM.js} +1 -1
  71. package/web/_astro/{quadrantDiagram-W4KKPZXB.BKb_9FV6.js → quadrantDiagram-W4KKPZXB.DeuHVi2t.js} +1 -1
  72. package/web/_astro/{requirementDiagram-4Y6WPE33.Cx0fvD8v.js → requirementDiagram-4Y6WPE33.BdYFSG4W.js} +1 -1
  73. package/web/_astro/{sankeyDiagram-5OEKKPKP.fatULi0W.js → sankeyDiagram-5OEKKPKP.k1LPPETJ.js} +1 -1
  74. package/web/_astro/{sequenceDiagram-3UESZ5HK.ChHyKqco.js → sequenceDiagram-3UESZ5HK.DdyfpzoG.js} +1 -1
  75. package/web/_astro/{stateDiagram-AJRCARHV.BdUpKWyj.js → stateDiagram-AJRCARHV.DSEI8il0.js} +1 -1
  76. package/web/_astro/{stateDiagram-v2-BHNVJYJU.fmJxqIm5.js → stateDiagram-v2-BHNVJYJU.CoMnQRKo.js} +1 -1
  77. package/web/_astro/{timeline-definition-PNZ67QCA.BayDn5-V.js → timeline-definition-PNZ67QCA.DM1AHNm-.js} +1 -1
  78. package/web/_astro/{vennDiagram-CIIHVFJN.Bm2Aggwa.js → vennDiagram-CIIHVFJN.C-cJmVtl.js} +1 -1
  79. package/web/_astro/{wardleyDiagram-YWT4CUSO.DI75O-uG.js → wardleyDiagram-YWT4CUSO.D0xMzKPb.js} +1 -1
  80. package/web/_astro/{xychartDiagram-2RQKCTM6.DL90E7Q7.js → xychartDiagram-2RQKCTM6.BH5xJcEq.js} +1 -1
  81. package/web/index.html +2 -2
  82. package/web/_astro/channel.C7wG9RxA.js +0 -1
  83. package/web/_astro/index.BCY1JJHd.css +0 -1
@@ -7,7 +7,7 @@
7
7
  "plugins": [
8
8
  {
9
9
  "name": "sp",
10
- "version": "0.4.9",
10
+ "version": "0.4.10",
11
11
  "source": "./plugins/sp"
12
12
  }
13
13
  ]
@@ -17,7 +17,7 @@ install or to ts-libs.
17
17
  | `surface` | `surface/` | CLI surface consistency (registerXxxCommand wiring, --json serialization) |
18
18
  | `migration` | `migration/` | Transitional helpers for the regex → `rg` evaluator move (`rg-dialect`) |
19
19
  | `ui` | `ui/` | Web UI seam boundaries (import seam, daisyUI class leak) |
20
- | `docs` | `docs/` | Sourced API/library claims in markdown — citation anchor + HIGH/MEDIUM/LOW level. Advisory (`info`), and deliberately **not** in a preset: see the file header for its calibration audit and the one-line promotion step. |
20
+ | `docs` | `docs/` | Sourced API/library claims in markdown — same-line citation anchor (no confidence level, ADR-138). Advisory (`info`), and deliberately **not** in a preset: see the file header for its calibration audit. |
21
21
 
22
22
  ## Presets
23
23
 
@@ -13,7 +13,6 @@ $schema: "@gobing-ai/spur/schemas/rule-file.schema.json"
13
13
  # gateway — because `superskill install` bundles them on targets with no
14
14
  # node_modules, where any `@gobing-ai/*` import fails ("Bundle failed", task
15
15
  # 0669). It mirrors the upstream semantics and is the one exempt file.
16
- # The `superskill script convert` `.mjs` twins remain self-contained by inlining.
17
16
  # - `apps/web` uses `import.meta.env` (Vite browser plane) — not process env, never matches.
18
17
  # - Which variables exist and who consumes them is documented in `.env.example`.
19
18
  # (The former per-var lease table moved there; the rule now enforces the funnel,
@@ -2,11 +2,11 @@ $schema: "@gobing-ai/spur/schemas/rule-file.schema.json"
2
2
  # [boundary] ADR-130 script placement contract (task 1000). Runs the fast
3
3
  # --placement-only mode of the relocated script-contract-check on every
4
4
  # recommended-pre-check; SKIPs outside the Spur source repo (same pattern as
5
- # strict/rule-files-structural.yaml SKIP on missing yq). The full twin check
6
- # stays in spur-check-feature.
5
+ # strict/rule-files-structural.yaml SKIP on missing yq). The full hook-only
6
+ # layout check (`bun run script-contract-check`) stays in spur-check-feature.
7
7
  rules:
8
8
  - id: sp-script-placement
9
- description: "Plugins/sp scripts must honor the ADR-130 placement contract (glue budget, no db imports, no corpus parsing, no noun clash, ADR-129 hook layout); any finding fails (task 1213 retired the baseline ledger)."
9
+ description: "plugins/sp and scripts/commands must honor the ADR-130 placement contract (hook entry budget, no DB driver or corpus parsing in plugin scripts/hooks/lib, no raw DB driver in scripts/commands, no noun clash, ADR-129 hook layout); any finding fails, no baseline."
10
10
  severity: error
11
11
  evaluator:
12
12
  type: exit-code
@@ -1,51 +1,18 @@
1
1
  $schema: "@gobing-ai/spur/schemas/rule-file.schema.json"
2
- # Sourced-claims rules (docs corpus) — API/library claims in markdown must be
3
- # verifiable. A bare version string or a time-anchored API claim ("deprecated
4
- # since", "added in 0.5.x") on a line with no citation anchor (http(s) URL or a
5
- # repo path:line reference) is an unverifyable claim: readers cannot tell
6
- # measured fact from model memory. The deterministic scan is line-level and
7
- # heuristic — code fences and command examples can legitimately carry bare
8
- # versions, so severity is info (advisory visibility; the recommended-pre-check
9
- # gate runs --fail-on warning, so this rule surfaces findings for review without
10
- # reddening gates — changed-file enforcement happens in SECUA review).
2
+ # Sourced-claims rules (docs corpus) — an external API/library claim in markdown
3
+ # (a bare x.y.z version, or "deprecated since / added in / removed in <v>") must carry
4
+ # a same-line citation anchor: an http(s) URL or a repo path:line. Contract owned by
5
+ # sp-source-driven-development; changed-file enforcement is SECUA review.
11
6
  #
12
- # Calibration audit (2026-10-12, `spur rule run --file … --json`, unsuppressed):
13
- # the category was pulled from `recommended-pre-check` on 2026-10-08 for "finding
14
- # noise" — 593 findings. The audit split them 580 `cited-version-strings` /
15
- # 13 `cited-api-claims`, and 579 of the 580 were false positives on two shapes
16
- # that are not external claims at all: a document's own version
17
- # (`docs/00_ADR.md:5` → `version: 1.69.0`), a section number in a heading
18
- # (`docs/04_DESIGN.md:116` → `### 1.0.1 Shared option registry`) and a
19
- # `§`-numbered cross-reference (`docs/00_ADR.md:1118` → `§1.2.1`). All three are
20
- # excluded by the pattern below — the first two on the line's shape, the third on
21
- # the token itself. The remaining source was a stale exclude list that stopped at
22
- # `docs/tasks4/` while the active corpus folder is `docs/tasks5/`, which alone
23
- # produced 226 findings; it is now one `docs/tasks*/**` glob. 593 → 330 after those
24
- # two fixes, then 277 once the `§` shape was excluded too — the residual are
25
- # version-pinned package claims that genuinely lack a same-line anchor, and they
26
- # stay visible rather than suppressed.
7
+ # Severity is info and the category is deliberately NOT in any preset: the scan is
8
+ # line-level, fires inside code fences, and its residual is a review surface, not a
9
+ # gate (2026-10-12 audit: 593 → 277 findings after the shape/`§`/excludes fixes; the
10
+ # 2026-10-16 widening admitted only verbs whose shape vouches for a version).
11
+ # Re-measure with `spur rule run --file … --json` before widening the vocabulary.
27
12
  #
28
- # The semantic contract — every external API/library claim carries a source
29
- # citation (URL or path:line) AND a confidence level (HIGH/MEDIUM/LOW) — is
30
- # owned by the sp-source-driven-development skill and verified in SECUA review
31
- # (code-verification secu-review checklist). These rules are its deterministic
32
- # backstop: the three `cited-*` rules cover the citation half, and
33
- # `cited-api-claims-confidence` covers the level half.
34
- # `cited-high-confidence` covers the HONESTY half — the level is a claim like
35
- # any other, so the one level that asserts "verified this session" must show the
36
- # source it was verified against. MEDIUM (recalled, plausibly stale) and LOW
37
- # (memory only) require no anchor by contract and are deliberately not flagged.
38
- # All are severity `info`,
39
- # and the category is deliberately NOT in `recommended-pre-check` — it surfaces
40
- # findings for review without reddening gates. The 2026-10-12 audit below settled
41
- # the promotion question: the residual findings stay a review-surface concern
42
- # (SECUA checklist), not a gate one — do not add `- docs` to that preset.
43
- #
44
- # Fenced-code behavior (measured 2026-10-16, `spur rule run --file … --json` over a
45
- # probe doc): code fences are NOT skipped by the regex evaluator — every rule here
46
- # fires on a matching line inside a fence. The earlier note claiming fenced lines
47
- # were "out of regex reach" was wrong; fence noise is one more reason these stay
48
- # `info` and ad hoc rather than gated.
13
+ # Citation only — no HIGH/MEDIUM/LOW level rule (ADR-138, task 1221): a model can
14
+ # write HIGH as easily as a claim, so the level verified nothing. The anchor is the
15
+ # evidence; do not reintroduce a level half.
49
16
  include:
50
17
  - "docs/**/*.md"
51
18
  - "plugins/sp/skills/**/references/**/*.md"
@@ -58,6 +25,11 @@ exclude:
58
25
  # fallback strips the `*` down to `docs/tasks/` — which is why that form
59
26
  # silently excluded nothing (measured 2026-10-12).
60
27
  - "docs/tasks*/**"
28
+ # Dated working records — see the "Historical-record excludes" note above.
29
+ - "docs/report*/**"
30
+ - "docs/dogfood/**"
31
+ - "docs/plans/**"
32
+ - "docs/analysis/**"
61
33
  - "drizzle/**"
62
34
  - "**/node_modules/**"
63
35
  rules:
@@ -66,8 +38,8 @@ rules:
66
38
  A markdown line asserting a version string (x.y.z) without a citation
67
39
  anchor on the same line — http(s) URL or repo path reference like
68
40
  packages/app/src/foo.ts:123 — is unverifyable. Add the anchor, or drop
69
- the version if it is not load-bearing. Confidence level (HIGH/MEDIUM/LOW)
70
- is part of the claim contract; see sp-source-driven-development.
41
+ the version if it is not load-bearing; contract in
42
+ sp-source-driven-development.
71
43
  severity: info
72
44
  evaluator:
73
45
  type: regex
@@ -87,57 +59,12 @@ rules:
87
59
  - id: cited-api-claims
88
60
  description: >
89
61
  A markdown line making a time- or version-anchored external API claim
90
- ("deprecated since 1.2", "introduced in v3", "available since 0.9") must
91
- carry a citation anchor on the same line — URL or repo path:line. Add the
92
- source (URL or path:line) and the confidence level (HIGH/MEDIUM/LOW);
93
- contract in sp-source-driven-development.
94
- severity: info
95
- evaluator:
96
- type: regex
97
- config:
98
- mode: forbid
99
- pattern: "^(?!.*(?:https?://|(?:[\\w.-]+/)+[\\w.-]+:\\d+)).*\\b(?:deprecated (?:since|in|as of)|introduced in|added in|available since|stable since)\\b"
100
- - id: cited-api-claims-confidence
101
- description: >
102
- A markdown line making a time- or version-anchored external API claim
103
- ("deprecated since 1.2", "introduced in v3", "available since 0.9") must
104
- also state its confidence level — HIGH, MEDIUM or LOW — so a reader can
105
- tell a checked fact from model memory; contract in
106
- sp-source-driven-development. Pairs with `cited-api-claims`, which covers
107
- the citation half: a line missing both halves reports once per rule,
108
- deliberately, because each missing half is its own defect.
109
- severity: info
110
- evaluator:
111
- type: regex
112
- config:
113
- mode: forbid
114
- # Fires on a claim line carrying no uppercase level token. The verbs match
115
- # `cited-api-claims` exactly, so the two rules never disagree about which
116
- # lines are claims.
117
- pattern: "^(?!.*\\b(?:HIGH|MEDIUM|LOW)\\b).*\\b(?:deprecated (?:since|in|as of)|introduced in|added in|available since|stable since)\\b"
118
- - id: cited-high-confidence
119
- description: >
120
- A line stating HIGH confidence about an external API/library claim must
121
- carry a source citation anchor on the same line — URL or repo path:line.
122
- The claim contract (sp-source-driven-development) defines HIGH as
123
- "verified against the pinned version's docs/source THIS SESSION", so an
124
- uncited HIGH is the one level that cannot be honest: MEDIUM is recalled and
125
- plausibly stale, LOW is memory only, and both are explicitly allowed
126
- without a source (LOW must never be presented as fact — that stays a review
127
- judgment, not a regex). Scoped to the same claim verbs as
128
- `cited-api-claims`, so the two rules agree on which lines are claims: a
129
- decision record's own `Confidence:` grade (the brainstorm family) is a
130
- different contract and is deliberately out of scope. Pairs with
131
- `cited-api-claims-confidence`, which catches a claim line carrying no level
132
- at all.
62
+ ("deprecated since 1.2", "introduced in v3", "removed in 0.9") must carry
63
+ a citation anchor on the same line — URL or repo path:line; contract in
64
+ sp-source-driven-development.
133
65
  severity: info
134
66
  evaluator:
135
67
  type: regex
136
68
  config:
137
69
  mode: forbid
138
- # Fires when a claim line names HIGH but carries no anchor. The anchor
139
- # vocabulary is identical to its siblings (URL or `path:line`), so one
140
- # line cannot read as cited for one rule and uncited for another. The level
141
- # is asserted with a lookahead so either prose order matches — `(HIGH)` after
142
- # the claim (the usual form) and `HIGH — <claim>` both count.
143
- pattern: "^(?!.*(?:https?://|(?:[\\w.-]+/)+[\\w.-]+:\\d+))(?=.*\\bHIGH\\b).*\\b(?:deprecated (?:since|in|as of)|introduced in|added in|available since|stable since)\\b"
70
+ pattern: "^(?!.*(?:https?://|(?:[\\w.-]+/)+[\\w.-]+:\\d+)).*\\b(?:deprecated (?:since|in|as of)|introduced in|added in|available since|stable since|removed (?:in|since) [vV]?\\d|(?:since|as of) (?:[vV]\\d+\\.\\d+(?:\\.\\d+)?|\\d+\\.\\d+\\.\\d+))\\b"
@@ -52,14 +52,6 @@ vars:
52
52
  featureId: "X"
53
53
  spurBin: "spur"
54
54
  verificationCmd: "bun run spur-check-feature"
55
- # Operator-declared confidence level; empty derives it from the pass (HIGH when the selected
56
- # definition's own command exited 0 with an unchanged proof-input digest, MEDIUM under a caller
57
- # `--cmd` override, LOW otherwise). The completion boundary refuses a PASS carrying no level or
58
- # LOW unless the receipt records the acknowledgement below.
59
- confidence: ""
60
- # Operator acknowledgement of a LOW level. It rides the receipt, so the transition reads it from
61
- # the evidence rather than from whatever flags a later command happens to pass.
62
- ackLowConfidence: "false"
63
55
  __runId: ""
64
56
 
65
57
  states:
@@ -73,7 +65,7 @@ states:
73
65
  - kind: shell
74
66
  options:
75
67
  command: >-
76
- mkdir -p .spur/run; ACK=""; [ "$ackLowConfidence" = "true" ] && ACK="--ack-low-confidence"; $spurBin feature verify "$featureId" --run-id "$__runId" --confidence "$confidence" $ACK --no-logo || printf 'FAIL feature-verification failed closed — spur feature verify exited nonzero\n' > ".spur/run/$__runId-feature-verification.status"; exit 0
68
+ mkdir -p .spur/run; $spurBin feature verify "$featureId" --run-id "$__runId" --no-logo || printf 'FAIL feature-verification failed closed — spur feature verify exited nonzero\n' > ".spur/run/$__runId-feature-verification.status"; exit 0
77
69
 
78
70
  - id: done
79
71
  description: Terminal — repo-wide checks passed and the receipt is bound.
@@ -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.10",
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,5 +1,5 @@
1
1
  {
2
2
  "name": "sp",
3
- "version": "0.4.9",
3
+ "version": "0.4.10",
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,9 @@ 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
+ - [ ] API/library claims in changed docs carry a source citation (URL or `path:line`) per
94
+ source-driven-development; no confidence label is required (ADR-138). The deterministic
95
+ advisory backstop is the `cited-version-strings` / `cited-api-claims` rules
97
96
  (`.spur/rules/docs/sourced-api-claims.yaml`, run ad hoc — not wired into a preset).
98
97
  - [ ] Review section has P1–P4 findings table (even if all rows are empty — the table itself proves review happened).
99
98
 
@@ -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)
@@ -201,7 +201,6 @@ Audit categories:
201
201
  | Analysis Date | YYYY-MM-DD |
202
202
  | Target | `path` |
203
203
  | Mode / Focus / Format | `briefing` / `[focus]` / `markdown` |
204
- | Confidence | High / Medium / Low |
205
204
 
206
205
  ## Purpose Hypothesis
207
206
 
@@ -209,8 +208,8 @@ Audit categories:
209
208
 
210
209
  ## Tech Stack
211
210
 
212
- | Layer | Technology | Evidence | Confidence |
213
- |---|---|---|---|
211
+ | Layer | Technology | Evidence |
212
+ |---|---|---|
214
213
 
215
214
  ## Entry Points
216
215
 
@@ -282,7 +281,6 @@ Use this shape for `--format json` or `--format both`. Omit fields only when the
282
281
  "analysisDate": "YYYY-MM-DD",
283
282
  "mode": "architecture",
284
283
  "focus": "all",
285
- "confidence": "high|medium|low",
286
284
  "stack": [],
287
285
  "entryPoints": [],
288
286
  "components": [],
@@ -301,7 +299,7 @@ Use this shape for `--format json` or `--format both`. Omit fields only when the
301
299
  - Cite `file/path:line` for claims derived from source files.
302
300
  - Cite manifest paths for stack and package manager claims.
303
301
  - Cite multiple files for architectural boundary claims when possible.
304
- - Mark inferred claims with `Confidence: Medium` or `Confidence: Low`.
302
+ - Mark inferred claims `Inferred:` and name the evidence that would confirm them; no confidence label (ADR-138).
305
303
  - Never invent services, databases, tables, endpoints, actors, diagrams, or business flows that are not supported by evidence.
306
304
  - If line numbers are unavailable from a tool, cite the file path and state that line numbers were not available.
307
305
 
@@ -339,7 +337,7 @@ The indexed-context layer is optional and opportunistic.
339
337
  |---|---|
340
338
  | Empty/minimal codebase | Return `briefing` with "insufficient evidence", list missing artifacts, suggest next files needed. |
341
339
  | Monorepo | Identify packages/apps; ask for scope unless `--auto` or requested mode can safely summarize all packages. |
342
- | No clear entry point | List candidates with confidence and evidence; do not choose one as definitive. |
340
+ | No clear entry point | List candidates with their evidence; do not choose one as definitive. |
343
341
  | Binary-heavy repo | Focus on manifests, scripts, config, docs, and visible source. |
344
342
  | Generated/vendor-heavy repo | Exclude generated/vendor paths from architecture conclusions unless directly relevant. |
345
343
  | Framework convention over configuration | State inferred convention and cite framework-specific file patterns. |