@specship/specship-win32-arm64 0.25.0 → 0.28.0

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 (274) hide show
  1. package/bin/specship.cmd +31 -1
  2. package/lib/dist/activation/cheatsheet.d.ts +17 -1
  3. package/lib/dist/activation/cheatsheet.d.ts.map +1 -1
  4. package/lib/dist/activation/cheatsheet.js +47 -3
  5. package/lib/dist/activation/cheatsheet.js.map +1 -1
  6. package/lib/dist/activation/hook-output.d.ts +80 -0
  7. package/lib/dist/activation/hook-output.d.ts.map +1 -0
  8. package/lib/dist/activation/hook-output.js +103 -0
  9. package/lib/dist/activation/hook-output.js.map +1 -0
  10. package/lib/dist/activation/search-intercept.d.ts +60 -29
  11. package/lib/dist/activation/search-intercept.d.ts.map +1 -1
  12. package/lib/dist/activation/search-intercept.js +159 -55
  13. package/lib/dist/activation/search-intercept.js.map +1 -1
  14. package/lib/dist/activation/steering.d.ts +8 -10
  15. package/lib/dist/activation/steering.d.ts.map +1 -1
  16. package/lib/dist/activation/steering.js +21 -6
  17. package/lib/dist/activation/steering.js.map +1 -1
  18. package/lib/dist/behaviour/behaviour-surface.d.ts +47 -0
  19. package/lib/dist/behaviour/behaviour-surface.d.ts.map +1 -1
  20. package/lib/dist/behaviour/behaviour-surface.js +108 -2
  21. package/lib/dist/behaviour/behaviour-surface.js.map +1 -1
  22. package/lib/dist/bin/node-version-check.d.ts +22 -7
  23. package/lib/dist/bin/node-version-check.d.ts.map +1 -1
  24. package/lib/dist/bin/node-version-check.js +39 -9
  25. package/lib/dist/bin/node-version-check.js.map +1 -1
  26. package/lib/dist/bin/specship.js +762 -81
  27. package/lib/dist/bin/specship.js.map +1 -1
  28. package/lib/dist/commands/specship/learn.md +22 -0
  29. package/lib/dist/commands/specship/spec.md +12 -0
  30. package/lib/dist/db/sqlite-adapter.d.ts +7 -5
  31. package/lib/dist/db/sqlite-adapter.d.ts.map +1 -1
  32. package/lib/dist/db/sqlite-adapter.js +11 -9
  33. package/lib/dist/db/sqlite-adapter.js.map +1 -1
  34. package/lib/dist/enforce/changed-files.d.ts +11 -0
  35. package/lib/dist/enforce/changed-files.d.ts.map +1 -1
  36. package/lib/dist/enforce/changed-files.js +42 -0
  37. package/lib/dist/enforce/changed-files.js.map +1 -1
  38. package/lib/dist/enforce/enforce.d.ts +25 -1
  39. package/lib/dist/enforce/enforce.d.ts.map +1 -1
  40. package/lib/dist/enforce/enforce.js +58 -3
  41. package/lib/dist/enforce/enforce.js.map +1 -1
  42. package/lib/dist/enforce/mutation.d.ts +46 -0
  43. package/lib/dist/enforce/mutation.d.ts.map +1 -0
  44. package/lib/dist/enforce/mutation.js +104 -0
  45. package/lib/dist/enforce/mutation.js.map +1 -0
  46. package/lib/dist/enforce/suppressions.d.ts +33 -0
  47. package/lib/dist/enforce/suppressions.d.ts.map +1 -0
  48. package/lib/dist/enforce/suppressions.js +159 -0
  49. package/lib/dist/enforce/suppressions.js.map +1 -0
  50. package/lib/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -1
  51. package/lib/dist/extraction/specs/markdown-spec-extractor.js +16 -2
  52. package/lib/dist/extraction/specs/markdown-spec-extractor.js.map +1 -1
  53. package/lib/dist/graph/spec-coverage.d.ts +57 -1
  54. package/lib/dist/graph/spec-coverage.d.ts.map +1 -1
  55. package/lib/dist/graph/spec-coverage.js +129 -5
  56. package/lib/dist/graph/spec-coverage.js.map +1 -1
  57. package/lib/dist/health/smoke-check.js +2 -2
  58. package/lib/dist/health/smoke-check.js.map +1 -1
  59. package/lib/dist/index.d.ts +8 -3
  60. package/lib/dist/index.d.ts.map +1 -1
  61. package/lib/dist/index.js +65 -9
  62. package/lib/dist/index.js.map +1 -1
  63. package/lib/dist/installer/gemini-commands.d.ts +107 -0
  64. package/lib/dist/installer/gemini-commands.d.ts.map +1 -0
  65. package/lib/dist/installer/gemini-commands.js +264 -0
  66. package/lib/dist/installer/gemini-commands.js.map +1 -0
  67. package/lib/dist/installer/index.d.ts +23 -1
  68. package/lib/dist/installer/index.d.ts.map +1 -1
  69. package/lib/dist/installer/index.js +22 -3
  70. package/lib/dist/installer/index.js.map +1 -1
  71. package/lib/dist/installer/install-defaults.d.ts +19 -0
  72. package/lib/dist/installer/install-defaults.d.ts.map +1 -1
  73. package/lib/dist/installer/install-defaults.js +28 -0
  74. package/lib/dist/installer/install-defaults.js.map +1 -1
  75. package/lib/dist/installer/instructions-template.d.ts +22 -0
  76. package/lib/dist/installer/instructions-template.d.ts.map +1 -1
  77. package/lib/dist/installer/instructions-template.js +37 -1
  78. package/lib/dist/installer/instructions-template.js.map +1 -1
  79. package/lib/dist/installer/targets/claude.d.ts +4 -0
  80. package/lib/dist/installer/targets/claude.d.ts.map +1 -1
  81. package/lib/dist/installer/targets/claude.js +8 -25
  82. package/lib/dist/installer/targets/claude.js.map +1 -1
  83. package/lib/dist/installer/targets/gemini.d.ts +85 -12
  84. package/lib/dist/installer/targets/gemini.d.ts.map +1 -1
  85. package/lib/dist/installer/targets/gemini.js +527 -30
  86. package/lib/dist/installer/targets/gemini.js.map +1 -1
  87. package/lib/dist/installer/targets/shared.d.ts +13 -0
  88. package/lib/dist/installer/targets/shared.d.ts.map +1 -1
  89. package/lib/dist/installer/targets/shared.js +18 -0
  90. package/lib/dist/installer/targets/shared.js.map +1 -1
  91. package/lib/dist/installer/targets/types.d.ts +12 -0
  92. package/lib/dist/installer/targets/types.d.ts.map +1 -1
  93. package/lib/dist/jira/auto-publish.d.ts +71 -4
  94. package/lib/dist/jira/auto-publish.d.ts.map +1 -1
  95. package/lib/dist/jira/auto-publish.js +186 -17
  96. package/lib/dist/jira/auto-publish.js.map +1 -1
  97. package/lib/dist/jira/reconcile.d.ts +24 -1
  98. package/lib/dist/jira/reconcile.d.ts.map +1 -1
  99. package/lib/dist/jira/reconcile.js +46 -2
  100. package/lib/dist/jira/reconcile.js.map +1 -1
  101. package/lib/dist/jira/repo-config.d.ts +9 -0
  102. package/lib/dist/jira/repo-config.d.ts.map +1 -1
  103. package/lib/dist/jira/repo-config.js +11 -0
  104. package/lib/dist/jira/repo-config.js.map +1 -1
  105. package/lib/dist/jira/types.d.ts +7 -0
  106. package/lib/dist/jira/types.d.ts.map +1 -1
  107. package/lib/dist/jira/types.js.map +1 -1
  108. package/lib/dist/knowledge/enforce.d.ts +75 -0
  109. package/lib/dist/knowledge/enforce.d.ts.map +1 -0
  110. package/lib/dist/knowledge/enforce.js +250 -0
  111. package/lib/dist/knowledge/enforce.js.map +1 -0
  112. package/lib/dist/knowledge/facts.d.ts +33 -0
  113. package/lib/dist/knowledge/facts.d.ts.map +1 -0
  114. package/lib/dist/knowledge/facts.js +117 -0
  115. package/lib/dist/knowledge/facts.js.map +1 -0
  116. package/lib/dist/knowledge/proposals.d.ts +88 -0
  117. package/lib/dist/knowledge/proposals.d.ts.map +1 -0
  118. package/lib/dist/knowledge/proposals.js +360 -0
  119. package/lib/dist/knowledge/proposals.js.map +1 -0
  120. package/lib/dist/knowledge/stale.d.ts +64 -0
  121. package/lib/dist/knowledge/stale.d.ts.map +1 -0
  122. package/lib/dist/knowledge/stale.js +174 -0
  123. package/lib/dist/knowledge/stale.js.map +1 -0
  124. package/lib/dist/mcp/gemini-session.d.ts +50 -0
  125. package/lib/dist/mcp/gemini-session.d.ts.map +1 -0
  126. package/lib/dist/mcp/gemini-session.js +159 -0
  127. package/lib/dist/mcp/gemini-session.js.map +1 -0
  128. package/lib/dist/mcp/jira-tools.d.ts.map +1 -1
  129. package/lib/dist/mcp/jira-tools.js +25 -0
  130. package/lib/dist/mcp/jira-tools.js.map +1 -1
  131. package/lib/dist/mcp/model-context.d.ts +22 -9
  132. package/lib/dist/mcp/model-context.d.ts.map +1 -1
  133. package/lib/dist/mcp/model-context.js +35 -13
  134. package/lib/dist/mcp/model-context.js.map +1 -1
  135. package/lib/dist/mcp/proxy.js +1 -1
  136. package/lib/dist/mcp/proxy.js.map +1 -1
  137. package/lib/dist/mcp/server-instructions.d.ts +16 -15
  138. package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
  139. package/lib/dist/mcp/server-instructions.js +67 -1
  140. package/lib/dist/mcp/server-instructions.js.map +1 -1
  141. package/lib/dist/mcp/session.js +1 -1
  142. package/lib/dist/mcp/session.js.map +1 -1
  143. package/lib/dist/mcp/spec-tools.d.ts +9 -1
  144. package/lib/dist/mcp/spec-tools.d.ts.map +1 -1
  145. package/lib/dist/mcp/spec-tools.js +69 -21
  146. package/lib/dist/mcp/spec-tools.js.map +1 -1
  147. package/lib/dist/mcp/tools.d.ts +37 -1
  148. package/lib/dist/mcp/tools.d.ts.map +1 -1
  149. package/lib/dist/mcp/tools.js +120 -9
  150. package/lib/dist/mcp/tools.js.map +1 -1
  151. package/lib/dist/pulse/pulse.d.ts +93 -0
  152. package/lib/dist/pulse/pulse.d.ts.map +1 -0
  153. package/lib/dist/pulse/pulse.js +401 -0
  154. package/lib/dist/pulse/pulse.js.map +1 -0
  155. package/lib/dist/reflect/apply.d.ts.map +1 -1
  156. package/lib/dist/reflect/apply.js +38 -3
  157. package/lib/dist/reflect/apply.js.map +1 -1
  158. package/lib/dist/reflect/auto-sweep.d.ts +26 -0
  159. package/lib/dist/reflect/auto-sweep.d.ts.map +1 -0
  160. package/lib/dist/reflect/auto-sweep.js +90 -0
  161. package/lib/dist/reflect/auto-sweep.js.map +1 -0
  162. package/lib/dist/reflect/cli.d.ts +62 -0
  163. package/lib/dist/reflect/cli.d.ts.map +1 -0
  164. package/lib/dist/reflect/cli.js +163 -0
  165. package/lib/dist/reflect/cli.js.map +1 -0
  166. package/lib/dist/reflect/miner.d.ts.map +1 -1
  167. package/lib/dist/reflect/miner.js +119 -0
  168. package/lib/dist/reflect/miner.js.map +1 -1
  169. package/lib/dist/reflect/sweep.d.ts +1 -0
  170. package/lib/dist/reflect/sweep.d.ts.map +1 -1
  171. package/lib/dist/reflect/sweep.js +62 -13
  172. package/lib/dist/reflect/sweep.js.map +1 -1
  173. package/lib/dist/reflect/targets.d.ts +2 -0
  174. package/lib/dist/reflect/targets.d.ts.map +1 -1
  175. package/lib/dist/reflect/targets.js +33 -0
  176. package/lib/dist/reflect/targets.js.map +1 -1
  177. package/lib/dist/reflect/types.d.ts +19 -2
  178. package/lib/dist/reflect/types.d.ts.map +1 -1
  179. package/lib/dist/resolution/test-title-links.d.ts.map +1 -1
  180. package/lib/dist/resolution/test-title-links.js +3 -14
  181. package/lib/dist/resolution/test-title-links.js.map +1 -1
  182. package/lib/dist/server/routes/claude.js +15 -7
  183. package/lib/dist/server/routes/knowledge.js +118 -0
  184. package/lib/dist/server/server.js +2 -0
  185. package/lib/dist/spec-lint/lint.d.ts +1 -1
  186. package/lib/dist/spec-lint/lint.d.ts.map +1 -1
  187. package/lib/dist/spec-lint/lint.js +63 -2
  188. package/lib/dist/spec-lint/lint.js.map +1 -1
  189. package/lib/dist/spec-quality/criterion-ids.d.ts +13 -0
  190. package/lib/dist/spec-quality/criterion-ids.d.ts.map +1 -0
  191. package/lib/dist/spec-quality/criterion-ids.js +38 -0
  192. package/lib/dist/spec-quality/criterion-ids.js.map +1 -0
  193. package/lib/dist/spec-quality/evidence-kind.d.ts +54 -0
  194. package/lib/dist/spec-quality/evidence-kind.d.ts.map +1 -0
  195. package/lib/dist/spec-quality/evidence-kind.js +183 -0
  196. package/lib/dist/spec-quality/evidence-kind.js.map +1 -0
  197. package/lib/dist/spec-quality/link-persist.d.ts +65 -0
  198. package/lib/dist/spec-quality/link-persist.d.ts.map +1 -0
  199. package/lib/dist/spec-quality/link-persist.js +249 -0
  200. package/lib/dist/spec-quality/link-persist.js.map +1 -0
  201. package/lib/dist/spec-quality/plan-scope.d.ts +38 -0
  202. package/lib/dist/spec-quality/plan-scope.d.ts.map +1 -0
  203. package/lib/dist/spec-quality/plan-scope.js +129 -0
  204. package/lib/dist/spec-quality/plan-scope.js.map +1 -0
  205. package/lib/dist/spec-quality/postcheck.d.ts +85 -0
  206. package/lib/dist/spec-quality/postcheck.d.ts.map +1 -0
  207. package/lib/dist/spec-quality/postcheck.js +390 -0
  208. package/lib/dist/spec-quality/postcheck.js.map +1 -0
  209. package/lib/dist/spec-quality/readiness.d.ts +72 -0
  210. package/lib/dist/spec-quality/readiness.d.ts.map +1 -0
  211. package/lib/dist/spec-quality/readiness.js +226 -0
  212. package/lib/dist/spec-quality/readiness.js.map +1 -0
  213. package/lib/dist/workflows/agents/claude.d.ts +16 -0
  214. package/lib/dist/workflows/agents/claude.d.ts.map +1 -0
  215. package/lib/dist/workflows/agents/claude.js +82 -0
  216. package/lib/dist/workflows/agents/claude.js.map +1 -0
  217. package/lib/dist/workflows/agents/gemini.d.ts +21 -0
  218. package/lib/dist/workflows/agents/gemini.d.ts.map +1 -0
  219. package/lib/dist/workflows/agents/gemini.js +124 -0
  220. package/lib/dist/workflows/agents/gemini.js.map +1 -0
  221. package/lib/dist/workflows/agents/index.d.ts +28 -0
  222. package/lib/dist/workflows/agents/index.d.ts.map +1 -0
  223. package/lib/dist/workflows/agents/index.js +104 -0
  224. package/lib/dist/workflows/agents/index.js.map +1 -0
  225. package/lib/dist/workflows/agents/types.d.ts +55 -0
  226. package/lib/dist/workflows/agents/types.d.ts.map +1 -0
  227. package/lib/dist/workflows/agents/types.js +46 -0
  228. package/lib/dist/workflows/agents/types.js.map +1 -0
  229. package/lib/dist/workflows/batch.d.ts +63 -0
  230. package/lib/dist/workflows/batch.d.ts.map +1 -0
  231. package/lib/dist/workflows/batch.js +151 -0
  232. package/lib/dist/workflows/batch.js.map +1 -0
  233. package/lib/dist/workflows/defaults/claude-design-implement.yaml +3 -4
  234. package/lib/dist/workflows/defaults/spec-author.yaml +11 -9
  235. package/lib/dist/workflows/defaults/spec-implement-mixed.yaml +21 -436
  236. package/lib/dist/workflows/defaults/spec-implement.yaml +465 -46
  237. package/lib/dist/workflows/discovery.d.ts +13 -0
  238. package/lib/dist/workflows/discovery.d.ts.map +1 -1
  239. package/lib/dist/workflows/discovery.js +79 -17
  240. package/lib/dist/workflows/discovery.js.map +1 -1
  241. package/lib/dist/workflows/executor.d.ts +18 -0
  242. package/lib/dist/workflows/executor.d.ts.map +1 -1
  243. package/lib/dist/workflows/executor.js +130 -33
  244. package/lib/dist/workflows/executor.js.map +1 -1
  245. package/lib/dist/workflows/gc.d.ts +50 -0
  246. package/lib/dist/workflows/gc.d.ts.map +1 -0
  247. package/lib/dist/workflows/gc.js +120 -0
  248. package/lib/dist/workflows/gc.js.map +1 -0
  249. package/lib/dist/workflows/merge-queue.d.ts +64 -0
  250. package/lib/dist/workflows/merge-queue.d.ts.map +1 -0
  251. package/lib/dist/workflows/merge-queue.js +162 -0
  252. package/lib/dist/workflows/merge-queue.js.map +1 -0
  253. package/lib/dist/workflows/runners/approval.d.ts +1 -1
  254. package/lib/dist/workflows/runners/approval.d.ts.map +1 -1
  255. package/lib/dist/workflows/runners/approval.js +11 -2
  256. package/lib/dist/workflows/runners/approval.js.map +1 -1
  257. package/lib/dist/workflows/runners/bash.d.ts +15 -0
  258. package/lib/dist/workflows/runners/bash.d.ts.map +1 -1
  259. package/lib/dist/workflows/runners/bash.js +50 -1
  260. package/lib/dist/workflows/runners/bash.js.map +1 -1
  261. package/lib/dist/workflows/runners/prompt.d.ts +16 -41
  262. package/lib/dist/workflows/runners/prompt.d.ts.map +1 -1
  263. package/lib/dist/workflows/runners/prompt.js +55 -120
  264. package/lib/dist/workflows/runners/prompt.js.map +1 -1
  265. package/lib/dist/workflows/runners/types.d.ts +12 -0
  266. package/lib/dist/workflows/runners/types.d.ts.map +1 -1
  267. package/lib/dist/workflows/schemas/workflow.d.ts +17 -0
  268. package/lib/dist/workflows/schemas/workflow.d.ts.map +1 -1
  269. package/lib/dist/workflows/schemas/workflow.js +27 -0
  270. package/lib/dist/workflows/schemas/workflow.js.map +1 -1
  271. package/lib/node_modules/.package-lock.json +1 -1
  272. package/lib/package.json +2 -2
  273. package/package.json +5 -3
  274. package/node.exe +0 -4
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ /**
3
+ * Suppression-comment scan (REQ-QGATE-004).
4
+ *
5
+ * Agents under pressure silence lint/type rules instead of fixing code — the
6
+ * implement workflows forbid it in prose, but prose isn't enforcement. This
7
+ * module detects suppression markers INTRODUCED by a change: a pure function
8
+ * over unified diff text (A2), so the workflows' gate, `specship check`, and
9
+ * tests all share one implementation.
10
+ *
11
+ * Ratchet semantics (A1): only added lines count, and an added line whose
12
+ * exact content also appears among the diff's removed lines is a move, not an
13
+ * introduction. Pre-existing suppressions are out of scope.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.scanDisableComments = scanDisableComments;
17
+ exports.formatSuppressionFinding = formatSuppressionFinding;
18
+ /** File families a linter actually honors each marker in (precision guard). */
19
+ const JS_EXT = new Set(['ts', 'tsx', 'mts', 'cts', 'js', 'jsx', 'mjs', 'cjs', 'svelte', 'vue', 'astro']);
20
+ const PY_EXT = new Set(['py', 'pyi']);
21
+ /**
22
+ * Marker families. Precision rules (A2): a marker only counts in a file type
23
+ * its linter reads (`exts`) AND in comment position (`pos` must match the
24
+ * line up to and including the marker) — a mention in prose, a YAML/markdown
25
+ * doc, or a string literal is not a suppression. The first dogfood run of
26
+ * this scanner flagged its own documentation; that false-positive class is
27
+ * what these guards remove.
28
+ */
29
+ // A directive is only honored at the START of its comment (eslint, tsc and
30
+ // biome all require this), so the regexes anchor there — a prose mention
31
+ // later in a comment is not a suppression.
32
+ const MARKERS = [
33
+ { marker: 'eslint-disable', re: /^\s*eslint-disable(?:-next-line|-line)?\b/, exts: JS_EXT },
34
+ { marker: '@ts-expect-error', re: /^\s*@ts-expect-error\b/, exts: JS_EXT },
35
+ { marker: '@ts-ignore', re: /^\s*@ts-ignore\b/, exts: JS_EXT },
36
+ { marker: 'biome-ignore', re: /^\s*biome-ignore\b/, exts: JS_EXT },
37
+ { marker: 'type: ignore', re: /#\s*type:\s*ignore\b/, exts: PY_EXT },
38
+ { marker: 'noqa', re: /#\s*noqa\b/, exts: PY_EXT },
39
+ ];
40
+ function fileExt(file) {
41
+ const dot = file.lastIndexOf('.');
42
+ return dot === -1 ? '' : file.slice(dot + 1).toLowerCase();
43
+ }
44
+ /**
45
+ * The comment part of a line, or null when the line has none. Line-local
46
+ * heuristic: a `//`, `/*` (JS families) or `#` (Python) opener counts only
47
+ * when every quote character before it is balanced — an opener inside a
48
+ * string literal is content, not a comment. Multi-line strings/comments are
49
+ * out of reach for a diff-line scanner; linters need the marker on its own
50
+ * statement line anyway, so line-local is where the real suppressions are.
51
+ */
52
+ function commentPart(line, js) {
53
+ const openerAt = (idx) => {
54
+ const before = line.slice(0, idx);
55
+ for (const q of ["'", '"', '`']) {
56
+ if ((before.split(q).length - 1) % 2 === 1)
57
+ return false;
58
+ }
59
+ return true;
60
+ };
61
+ const openers = js ? ['//', '/*'] : ['#'];
62
+ let best = -1;
63
+ for (const o of openers) {
64
+ let i = line.indexOf(o);
65
+ while (i !== -1) {
66
+ if (openerAt(i)) {
67
+ best = best === -1 ? i : Math.min(best, i);
68
+ break;
69
+ }
70
+ i = line.indexOf(o, i + 1);
71
+ }
72
+ }
73
+ return best === -1 ? null : line.slice(best);
74
+ }
75
+ /**
76
+ * A suppression is "justified" when it carries an inline explanation in the
77
+ * family's own syntax: eslint's ` -- reason`, biome-ignore's `: reason`.
78
+ * Justified suppressions are still findings — the label exists so a reviewer
79
+ * can triage, not so the gate waves them through.
80
+ */
81
+ function isJustified(marker, line) {
82
+ if (marker === 'eslint-disable')
83
+ return /--\s*\S/.test(line.slice(line.indexOf('eslint-disable')));
84
+ if (marker === 'biome-ignore')
85
+ return /biome-ignore\s+\S+\s*:\s*\S/.test(line);
86
+ return false;
87
+ }
88
+ function matchMarker(line, file) {
89
+ const ext = fileExt(file);
90
+ for (const { marker, re, exts } of MARKERS) {
91
+ if (!exts.has(ext))
92
+ continue;
93
+ const comment = commentPart(line, exts === JS_EXT);
94
+ if (comment === null)
95
+ continue;
96
+ // Strip the opener so the start-anchored directive regexes see the
97
+ // comment TEXT (`// @ts-ignore` → ` @ts-ignore`); Python regexes carry
98
+ // their own `#` anchor and test the raw comment.
99
+ const text = exts === JS_EXT ? comment.replace(/^(?:\/\/+|\/\*+)/, '') : comment;
100
+ if (re.test(text))
101
+ return marker;
102
+ }
103
+ return null;
104
+ }
105
+ /**
106
+ * Scan unified diff text for suppression markers on added lines (A1, A2).
107
+ * Pure: input diff text, output findings — no git, no filesystem.
108
+ */
109
+ function scanDisableComments(diffText) {
110
+ const lines = diffText.split('\n');
111
+ // First pass: collect removed-line content so moves don't count (A1).
112
+ const removed = new Set();
113
+ for (const l of lines) {
114
+ if (l.startsWith('-') && !l.startsWith('---'))
115
+ removed.add(l.slice(1).trim());
116
+ }
117
+ const findings = [];
118
+ let file = null;
119
+ let newLine = 0; // 1-indexed line number in the new file for the NEXT line
120
+ for (const l of lines) {
121
+ if (l.startsWith('+++ ')) {
122
+ const p = l.slice(4).trim();
123
+ file = p === '/dev/null' ? null : p.replace(/^b\//, '');
124
+ continue;
125
+ }
126
+ const hunk = /^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(l);
127
+ if (hunk) {
128
+ newLine = parseInt(hunk[1] ?? '0', 10);
129
+ continue;
130
+ }
131
+ if (l.startsWith('-') && !l.startsWith('---'))
132
+ continue; // old-file only
133
+ if (l.startsWith('+')) {
134
+ const content = l.slice(1);
135
+ const marker = file ? matchMarker(content, file) : null;
136
+ if (marker && file && !removed.has(content.trim())) {
137
+ findings.push({
138
+ file,
139
+ line: newLine,
140
+ marker,
141
+ justified: isJustified(marker, content),
142
+ text: content.trim(),
143
+ });
144
+ }
145
+ newLine++;
146
+ continue;
147
+ }
148
+ // Context line (or anything else inside a hunk body) advances the counter
149
+ // only when we're inside a hunk; headers between hunks reset it anyway.
150
+ if (newLine > 0 && !l.startsWith('diff ') && !l.startsWith('--- '))
151
+ newLine++;
152
+ }
153
+ return findings;
154
+ }
155
+ /** Render a finding as one gate-report line. */
156
+ function formatSuppressionFinding(f) {
157
+ return `${f.file}:${f.line} introduces ${f.marker}${f.justified ? ' (justified)' : ''} — ${f.text}`;
158
+ }
159
+ //# sourceMappingURL=suppressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/enforce/suppressions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-spec-extractor.d.ts","sourceRoot":"","sources":["../../../src/extraction/specs/markdown-spec-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,EAAE,oBAAoB,EAAqB,MAAM,SAAS,CAAC;AAsBlE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAaD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK5C,OAAO,IAAI,oBAAoB;IAsZ/B,kEAAkE;IAClE,OAAO,CAAC,WAAW;IAKnB,mEAAmE;IACnE,OAAO,CAAC,YAAY;IAIpB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,aAAa;IAmGrB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,YAAY;IAgEpB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IA6DxB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,yBAAyB;IAajC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;CAyD5B"}
1
+ {"version":3,"file":"markdown-spec-extractor.d.ts","sourceRoot":"","sources":["../../../src/extraction/specs/markdown-spec-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,EAAE,oBAAoB,EAAqB,MAAM,SAAS,CAAC;AA4BlE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAaD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK5C,OAAO,IAAI,oBAAoB;IAsZ/B,kEAAkE;IAClE,OAAO,CAAC,WAAW;IAKnB,mEAAmE;IACnE,OAAO,CAAC,YAAY;IAIpB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,aAAa;IA4GrB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,YAAY;IAgEpB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IA6DxB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,yBAAyB;IAajC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;CAyD5B"}
@@ -50,7 +50,13 @@ const IMPL_REF = /^[-*]\s+([^\s:]+)\s*:\s*([A-Za-z0-9_$.]+)\s*$/;
50
50
  /** Pattern: a Markdown list bullet (`- foo` / `* foo`, indentation tolerant). */
51
51
  const BULLET = /^\s*[-*]\s+(.*\S)\s*$/;
52
52
  /** The four recognized domain-fact `type` values (REQ-DOMAIN-001). */
53
- const DOMAIN_TYPES = new Set(['term', 'rule', 'decision', 'constraint']);
53
+ /**
54
+ * Recognized domain-fact types. `external` (REQ-KNOW-001) is a fact about a
55
+ * third-party tool or library, pinned to the dependency version it was
56
+ * verified against; its provenance (`dependency` / `version` / `source`) is
57
+ * checked by the spec lint, not here, so a fact missing it still indexes.
58
+ */
59
+ const DOMAIN_TYPES = new Set(['term', 'rule', 'decision', 'constraint', 'external']);
54
60
  /**
55
61
  * Derive an acceptance criterion's parent requirement from its id suffix
56
62
  * (REQ-ACCEPTANCE-001.A2). The convention is `<REQ-ID>.A<N>` — `REQ-AUTH-001.A2`
@@ -471,13 +477,21 @@ class MarkdownSpecExtractor {
471
477
  const type = meta.type;
472
478
  if (typeof type === 'string' && !DOMAIN_TYPES.has(type)) {
473
479
  errors.push({
474
- message: `Domain fact "${id}" has unknown type "${type}" (expected one of: term, rule, decision, constraint)`,
480
+ message: `Domain fact "${id}" has unknown type "${type}" (expected one of: ${[...DOMAIN_TYPES].join(', ')})`,
475
481
  filePath: this.filePath,
476
482
  line: 1,
477
483
  severity: 'warning',
478
484
  code: 'spec_unknown_domain_type',
479
485
  });
480
486
  }
487
+ // An external fact's `version` is the dependency version it was verified
488
+ // against (REQ-KNOW-001), not the document revision — `version` is a known
489
+ // frontmatter key, so carry it into metadata (as a string) where the rest of
490
+ // the fact's provenance lives. The spec revision then falls back to 1
491
+ // unless it was a plain integer.
492
+ if (type === 'external' && frontmatter.version !== undefined) {
493
+ meta.version = String(frontmatter.version);
494
+ }
481
495
  // Title: frontmatter `title`, else the first heading, else the id.
482
496
  let title = typeof frontmatter.title === 'string' && frontmatter.title.length > 0
483
497
  ? frontmatter.title
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-spec-extractor.js","sourceRoot":"","sources":["../../../src/extraction/specs/markdown-spec-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown-spec-extractor.js","sourceRoot":"","sources":["../../../src/extraction/specs/markdown-spec-extractor.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@
12
12
  */
13
13
  import type { Spec, SpecLink, SpecLinkState } from '../types';
14
14
  import type { SpecQueries } from '../db/spec-queries';
15
+ import { type EvidenceKind } from '../spec-quality/evidence-kind';
15
16
  /**
16
17
  * Coverage verdict for one spec node.
17
18
  *
@@ -35,6 +36,33 @@ export interface CriterionCoverage {
35
36
  implementsLinks: LinkRollup;
36
37
  testsLinks: LinkRollup;
37
38
  verdict: CoverageVerdict;
39
+ /**
40
+ * The evidence kind this criterion requires (REQ-PIPETRUST-001) — declared
41
+ * inline or derived. Advisory alongside the verdict; never changes it.
42
+ */
43
+ requiredKind: EvidenceKind;
44
+ /** Kinds actually provided by the criterion's usable `tests` links (REQ-PIPETRUST-003). */
45
+ presentKinds: EvidenceKind[];
46
+ /** True when `presentKinds` includes `requiredKind`. */
47
+ kindSatisfied: boolean;
48
+ }
49
+ /** Per-criterion evidence-kind result (REQ-PIPETRUST-003). */
50
+ export interface EvidenceKindResult {
51
+ requiredKind: EvidenceKind;
52
+ presentKinds: EvidenceKind[];
53
+ kindSatisfied: boolean;
54
+ }
55
+ export interface EvidenceKindOptions {
56
+ /** Implements links whose targets decide `linksUi` / `linksRoute`. */
57
+ implementsLinks?: SpecLink[];
58
+ /** Root that relative link target paths resolve against (default: cwd). */
59
+ projectRoot?: string;
60
+ /** Test-file classifier; defaults to reading the file. Injectable for caching. */
61
+ classify?: (absPath: string, relPath: string) => EvidenceKind;
62
+ }
63
+ export interface SpecCoverageOptions {
64
+ /** Project root for reading linked test files when classifying evidence kind. */
65
+ projectRoot?: string;
38
66
  }
39
67
  /** Coverage for one requirement plus each of its criteria. */
40
68
  export interface RequirementCoverage extends CriterionCoverage {
@@ -57,6 +85,11 @@ export interface SpecCoverageReport {
57
85
  criteriaVerified: number;
58
86
  criteriaBroken: number;
59
87
  };
88
+ /** Evidence-kind rollup (REQ-PIPETRUST-003) — kept out of `totals` so its shape is unchanged. */
89
+ evidence: {
90
+ /** Criteria (requirements with none count as one) lacking their required kind. */
91
+ criteriaMissingKind: number;
92
+ };
60
93
  }
61
94
  /**
62
95
  * Verdict from `tests` links alone (REQ-VSTATE-006.A1 / .A3). Links flagged as
@@ -65,6 +98,17 @@ export interface SpecCoverageReport {
65
98
  * one stays `untested`.
66
99
  */
67
100
  export declare function verdictFor(testsLinks: SpecLink[]): CoverageVerdict;
101
+ /**
102
+ * Required vs present evidence kind for one criterion (REQ-PIPETRUST-003.A1).
103
+ *
104
+ * Required: {@link requiredEvidenceKind} over the criterion text, with
105
+ * `linksUi` / `linksRoute` read from the given implements links (a UI file
106
+ * extension, or a target node of kind `route`). Present: the kind of each
107
+ * usable `tests` link's target file — links flagged as non-test evidence are
108
+ * ignored, exactly as the verdict ignores them. Link state does not matter
109
+ * here: the verdict already says whether the tests pass.
110
+ */
111
+ export declare function evidenceKindCoverage(criterionText: string, testsLinks: SpecLink[], opts?: EvidenceKindOptions): EvidenceKindResult;
68
112
  /**
69
113
  * Compute the coverage rollup for one spec, or for every requirement in the
70
114
  * project when `specId` is omitted.
@@ -75,7 +119,19 @@ export declare function verdictFor(testsLinks: SpecLink[]): CoverageVerdict;
75
119
  * no children and no links — returns an empty-but-valid report, never an error
76
120
  * (REQ-VSTATE-006.A4).
77
121
  */
78
- export declare function computeSpecCoverage(sq: SpecQueries, specId?: string): SpecCoverageReport;
122
+ export declare function computeSpecCoverage(sq: SpecQueries, specId?: string, options?: SpecCoverageOptions): SpecCoverageReport;
123
+ /**
124
+ * Every in-scope criterion lacking its required evidence kind — the list
125
+ * `specship coverage` flags, as `{ specId, requiredKind, presentKinds }`. A
126
+ * requirement with no criteria stands in as its own single criterion.
127
+ */
128
+ export declare function criteriaMissingKind(report: SpecCoverageReport): CriterionCoverage[];
129
+ /**
130
+ * Exit code for `specship coverage --require-kinds` (REQ-PIPETRUST-003.A2):
131
+ * non-zero when any in-scope criterion lacks its required kind, else zero.
132
+ * Without the flag the command never fails on kinds.
133
+ */
134
+ export declare function requireKindsExitCode(report: SpecCoverageReport, requireKinds: boolean): number;
79
135
  /**
80
136
  * The single coverage line the implement workflow's human gate rests on
81
137
  * (REQ-VSTATE-005.A2). Rendered here, from the same report `getSpecCoverage`
@@ -1 +1 @@
1
- {"version":3,"file":"spec-coverage.d.ts","sourceRoot":"","sources":["../../src/graph/spec-coverage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE5E,8CAA8C;AAC9C,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;CAChD;AAED,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,eAAe,EAAE,UAAU,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,8DAA8D;AAC9D,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAChD,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAQD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,eAAe,CAMlE;AAwBD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAsExF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAIrE"}
1
+ {"version":3,"file":"spec-coverage.d.ts","sourceRoot":"","sources":["../../src/graph/spec-coverage.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,51 @@
11
11
  * (REQ-VSTATE-006.A3). This is the conflation the dashboard's
12
12
  * implemented-counted-as-met display was built on.
13
13
  */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
14
47
  Object.defineProperty(exports, "__esModule", { value: true });
15
48
  exports.verdictFor = verdictFor;
49
+ exports.evidenceKindCoverage = evidenceKindCoverage;
16
50
  exports.computeSpecCoverage = computeSpecCoverage;
51
+ exports.criteriaMissingKind = criteriaMissingKind;
52
+ exports.requireKindsExitCode = requireKindsExitCode;
17
53
  exports.formatCoverageLine = formatCoverageLine;
18
54
  const test_title_links_1 = require("../resolution/test-title-links");
55
+ const path = __importStar(require("path"));
56
+ const evidence_kind_1 = require("../spec-quality/evidence-kind");
57
+ /** Matches behaviour-surface's `UI_FILE`: a direct link to one of these is UI code. */
58
+ const UI_FILE = /\.(tsx|jsx|vue|svelte|astro)$/i;
19
59
  function rollup(links) {
20
60
  const states = {};
21
61
  for (const l of links)
@@ -50,16 +90,62 @@ function mergeVerdicts(verdicts) {
50
90
  return 'verified';
51
91
  return 'tested';
52
92
  }
53
- function coverageOf(sq, spec) {
93
+ /**
94
+ * Required vs present evidence kind for one criterion (REQ-PIPETRUST-003.A1).
95
+ *
96
+ * Required: {@link requiredEvidenceKind} over the criterion text, with
97
+ * `linksUi` / `linksRoute` read from the given implements links (a UI file
98
+ * extension, or a target node of kind `route`). Present: the kind of each
99
+ * usable `tests` link's target file — links flagged as non-test evidence are
100
+ * ignored, exactly as the verdict ignores them. Link state does not matter
101
+ * here: the verdict already says whether the tests pass.
102
+ */
103
+ function evidenceKindCoverage(criterionText, testsLinks, opts = {}) {
104
+ const impl = opts.implementsLinks ?? [];
105
+ const requiredKind = (0, evidence_kind_1.requiredEvidenceKind)(criterionText, {
106
+ linksUi: impl.some((l) => UI_FILE.test(l.targetFilePath ?? '')),
107
+ linksRoute: impl.some((l) => l.targetNodeKind === 'route'),
108
+ });
109
+ const classify = opts.classify ?? ((abs) => (0, evidence_kind_1.classifyTestEvidence)(abs));
110
+ const present = new Set();
111
+ for (const l of testsLinks) {
112
+ if (l.kind !== 'tests' || (0, test_title_links_1.isNonTestEvidence)(l) || !l.targetFilePath)
113
+ continue;
114
+ const rel = l.targetFilePath;
115
+ const abs = path.isAbsolute(rel) || !opts.projectRoot ? rel : path.join(opts.projectRoot, rel);
116
+ present.add(classify(abs, rel));
117
+ }
118
+ const presentKinds = evidence_kind_1.EVIDENCE_KINDS.filter((k) => present.has(k));
119
+ return { requiredKind, presentKinds, kindSatisfied: present.has(requiredKind) };
120
+ }
121
+ /** Classify each test file once per report, keyed by absolute path. */
122
+ function cachedClassifier() {
123
+ const cache = new Map();
124
+ return (abs) => {
125
+ let k = cache.get(abs);
126
+ if (!k) {
127
+ k = (0, evidence_kind_1.classifyTestEvidence)(abs);
128
+ cache.set(abs, k);
129
+ }
130
+ return k;
131
+ };
132
+ }
133
+ function coverageOf(sq, spec, kindOpts) {
54
134
  const links = sq.getLinksBySpec(spec.id);
55
135
  const testsLinks = links.filter((l) => l.kind === 'tests');
136
+ const implementsLinks = links.filter((l) => l.kind === 'implements');
137
+ const kinds = evidenceKindCoverage(spec.body ?? spec.title, testsLinks, {
138
+ ...kindOpts,
139
+ implementsLinks: [...(kindOpts.extraImplements ?? []), ...implementsLinks],
140
+ });
56
141
  return {
57
142
  specId: spec.id,
58
143
  title: spec.title,
59
144
  kind: spec.kind,
60
- implementsLinks: rollup(links.filter((l) => l.kind === 'implements')),
145
+ implementsLinks: rollup(implementsLinks),
61
146
  testsLinks: rollup(testsLinks),
62
147
  verdict: verdictFor(testsLinks),
148
+ ...kinds,
63
149
  };
64
150
  }
65
151
  /**
@@ -72,7 +158,11 @@ function coverageOf(sq, spec) {
72
158
  * no children and no links — returns an empty-but-valid report, never an error
73
159
  * (REQ-VSTATE-006.A4).
74
160
  */
75
- function computeSpecCoverage(sq, specId) {
161
+ function computeSpecCoverage(sq, specId, options = {}) {
162
+ const kindOpts = {
163
+ projectRoot: options.projectRoot,
164
+ classify: cachedClassifier(),
165
+ };
76
166
  let roots;
77
167
  if (specId) {
78
168
  const spec = sq.getSpecById(specId);
@@ -81,6 +171,7 @@ function computeSpecCoverage(sq, specId) {
81
171
  specId,
82
172
  requirements: [],
83
173
  totals: { requirements: 0, criteria: 0, criteriaWithTests: 0, criteriaVerified: 0, criteriaBroken: 0 },
174
+ evidence: { criteriaMissingKind: 0 },
84
175
  };
85
176
  }
86
177
  roots =
@@ -92,11 +183,14 @@ function computeSpecCoverage(sq, specId) {
92
183
  roots = sq.getAllSpecs().filter((s) => s.kind === 'requirement');
93
184
  }
94
185
  const requirements = roots.map((req) => {
95
- const own = coverageOf(sq, req);
186
+ const own = coverageOf(sq, req, kindOpts);
187
+ // A criterion inherits the requirement's direct implements links when
188
+ // deciding UI / route (REQ-PIPETRUST-001.A2 — "a requirement linked to…").
189
+ const reqImplements = sq.getLinksBySpec(req.id).filter((l) => l.kind === 'implements');
96
190
  const criteria = sq
97
191
  .getSpecsByParent(req.id)
98
192
  .filter((c) => c.kind === 'acceptance')
99
- .map((c) => coverageOf(sq, c));
193
+ .map((c) => coverageOf(sq, c, { ...kindOpts, extraImplements: reqImplements }));
100
194
  const criteriaTotals = {
101
195
  untested: 0,
102
196
  tested: 0,
@@ -120,12 +214,16 @@ function computeSpecCoverage(sq, specId) {
120
214
  return {
121
215
  ...own,
122
216
  verdict: mergeVerdicts(criteria.length > 0 ? criteria.map((c) => c.verdict) : [own.verdict]),
217
+ // A requirement's kind is satisfied only when every criterion's is; with
218
+ // no criteria it is its own single criterion.
219
+ kindSatisfied: criteria.length > 0 ? criteria.every((c) => c.kindSatisfied) : own.kindSatisfied,
123
220
  criteria,
124
221
  criteriaTotals,
125
222
  criteriaWithTests,
126
223
  criteriaCount,
127
224
  };
128
225
  });
226
+ const criteriaMissingKind = requirements.reduce((n, r) => n + (r.criteria.length > 0 ? r.criteria.filter((c) => !c.kindSatisfied).length : r.kindSatisfied ? 0 : 1), 0);
129
227
  return {
130
228
  specId: specId ?? null,
131
229
  requirements,
@@ -136,8 +234,34 @@ function computeSpecCoverage(sq, specId) {
136
234
  criteriaVerified: requirements.reduce((n, r) => n + r.criteriaTotals.verified, 0),
137
235
  criteriaBroken: requirements.reduce((n, r) => n + r.criteriaTotals.broken, 0),
138
236
  },
237
+ evidence: { criteriaMissingKind },
139
238
  };
140
239
  }
240
+ /**
241
+ * Every in-scope criterion lacking its required evidence kind — the list
242
+ * `specship coverage` flags, as `{ specId, requiredKind, presentKinds }`. A
243
+ * requirement with no criteria stands in as its own single criterion.
244
+ */
245
+ function criteriaMissingKind(report) {
246
+ const out = [];
247
+ for (const r of report.requirements) {
248
+ if (r.criteria.length > 0)
249
+ out.push(...r.criteria.filter((c) => !c.kindSatisfied));
250
+ else if (!r.kindSatisfied)
251
+ out.push(r);
252
+ }
253
+ return out;
254
+ }
255
+ /**
256
+ * Exit code for `specship coverage --require-kinds` (REQ-PIPETRUST-003.A2):
257
+ * non-zero when any in-scope criterion lacks its required kind, else zero.
258
+ * Without the flag the command never fails on kinds.
259
+ */
260
+ function requireKindsExitCode(report, requireKinds) {
261
+ if (!requireKinds)
262
+ return 0;
263
+ return criteriaMissingKind(report).length > 0 ? 1 : 0;
264
+ }
141
265
  /**
142
266
  * The single coverage line the implement workflow's human gate rests on
143
267
  * (REQ-VSTATE-005.A2). Rendered here, from the same report `getSpecCoverage`