@shrkcrft/cli 0.1.0-alpha.30 → 0.1.0-alpha.31

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 (510) hide show
  1. package/dist/asset-preview/apply-asset-preview.js +1 -1
  2. package/dist/authoring/authoring-kit.d.ts +9 -1
  3. package/dist/authoring/authoring-kit.d.ts.map +1 -1
  4. package/dist/authoring/authoring-kit.js +26 -13
  5. package/dist/bootstrap/unlinked-workspace-dependency.d.ts +11 -0
  6. package/dist/bootstrap/unlinked-workspace-dependency.d.ts.map +1 -0
  7. package/dist/bootstrap/unlinked-workspace-dependency.js +99 -0
  8. package/dist/command-registry.d.ts +100 -1
  9. package/dist/command-registry.d.ts.map +1 -1
  10. package/dist/command-registry.js +130 -3
  11. package/dist/commands/api-diff.command.d.ts.map +1 -1
  12. package/dist/commands/api-diff.command.js +12 -0
  13. package/dist/commands/apply.command.d.ts.map +1 -1
  14. package/dist/commands/apply.command.js +3 -0
  15. package/dist/commands/arch.command.d.ts.map +1 -1
  16. package/dist/commands/arch.command.js +26 -7
  17. package/dist/commands/architecture.command.d.ts.map +1 -1
  18. package/dist/commands/architecture.command.js +8 -2
  19. package/dist/commands/baseline.command.d.ts +54 -3
  20. package/dist/commands/baseline.command.d.ts.map +1 -1
  21. package/dist/commands/baseline.command.js +582 -74
  22. package/dist/commands/biome.command.d.ts.map +1 -1
  23. package/dist/commands/biome.command.js +20 -0
  24. package/dist/commands/boundaries.command.d.ts +9 -1
  25. package/dist/commands/boundaries.command.d.ts.map +1 -1
  26. package/dist/commands/boundaries.command.js +88 -20
  27. package/dist/commands/bundle.command.d.ts.map +1 -1
  28. package/dist/commands/bundle.command.js +57 -11
  29. package/dist/commands/cache-align.command.d.ts.map +1 -1
  30. package/dist/commands/cache-align.command.js +3 -1
  31. package/dist/commands/changelog-data.d.ts.map +1 -1
  32. package/dist/commands/changelog-data.js +138 -0
  33. package/dist/commands/changes.command.d.ts.map +1 -1
  34. package/dist/commands/changes.command.js +15 -0
  35. package/dist/commands/check.command.d.ts.map +1 -1
  36. package/dist/commands/check.command.js +1241 -322
  37. package/dist/commands/checks.command.d.ts.map +1 -1
  38. package/dist/commands/checks.command.js +188 -40
  39. package/dist/commands/ci.command.d.ts.map +1 -1
  40. package/dist/commands/ci.command.js +35 -2
  41. package/dist/commands/code-intel.command.d.ts.map +1 -1
  42. package/dist/commands/code-intel.command.js +3 -0
  43. package/dist/commands/command-catalog.d.ts +23 -1
  44. package/dist/commands/command-catalog.d.ts.map +1 -1
  45. package/dist/commands/command-catalog.js +152 -35
  46. package/dist/commands/commands.command.d.ts +21 -3
  47. package/dist/commands/commands.command.d.ts.map +1 -1
  48. package/dist/commands/commands.command.js +172 -27
  49. package/dist/commands/compress.command.d.ts.map +1 -1
  50. package/dist/commands/compress.command.js +4 -0
  51. package/dist/commands/constructs.command.d.ts.map +1 -1
  52. package/dist/commands/constructs.command.js +50 -12
  53. package/dist/commands/context.command.d.ts.map +1 -1
  54. package/dist/commands/context.command.js +40 -5
  55. package/dist/commands/contract-templates.command.d.ts.map +1 -1
  56. package/dist/commands/contract-templates.command.js +9 -1
  57. package/dist/commands/contract.command.d.ts.map +1 -1
  58. package/dist/commands/contract.command.js +35 -0
  59. package/dist/commands/conventions.command.d.ts.map +1 -1
  60. package/dist/commands/conventions.command.js +189 -29
  61. package/dist/commands/coverage.command.d.ts.map +1 -1
  62. package/dist/commands/coverage.command.js +9 -0
  63. package/dist/commands/daily.commands.d.ts +0 -1
  64. package/dist/commands/daily.commands.d.ts.map +1 -1
  65. package/dist/commands/daily.commands.js +12 -76
  66. package/dist/commands/dashboard.command.d.ts.map +1 -1
  67. package/dist/commands/dashboard.command.js +10 -0
  68. package/dist/commands/dev.command.d.ts.map +1 -1
  69. package/dist/commands/dev.command.js +45 -2
  70. package/dist/commands/diagnostics.command.d.ts +0 -2
  71. package/dist/commands/diagnostics.command.d.ts.map +1 -1
  72. package/dist/commands/diagnostics.command.js +5 -78
  73. package/dist/commands/diff-check.command.d.ts +6 -4
  74. package/dist/commands/diff-check.command.d.ts.map +1 -1
  75. package/dist/commands/diff-check.command.js +190 -103
  76. package/dist/commands/docs-references.command.d.ts +13 -0
  77. package/dist/commands/docs-references.command.d.ts.map +1 -1
  78. package/dist/commands/docs-references.command.js +269 -72
  79. package/dist/commands/doctor.command.d.ts.map +1 -1
  80. package/dist/commands/doctor.command.js +58 -4
  81. package/dist/commands/drift.command.d.ts.map +1 -1
  82. package/dist/commands/drift.command.js +17 -4
  83. package/dist/commands/eslint.command.d.ts.map +1 -1
  84. package/dist/commands/eslint.command.js +20 -0
  85. package/dist/commands/export.command.d.ts.map +1 -1
  86. package/dist/commands/export.command.js +23 -1
  87. package/dist/commands/feedback-dispatch.command.d.ts.map +1 -1
  88. package/dist/commands/feedback-dispatch.command.js +29 -0
  89. package/dist/commands/feedback.command.d.ts.map +1 -1
  90. package/dist/commands/feedback.command.js +6 -1
  91. package/dist/commands/finish.command.d.ts.map +1 -1
  92. package/dist/commands/finish.command.js +32 -8
  93. package/dist/commands/fix.command.d.ts.map +1 -1
  94. package/dist/commands/fix.command.js +19 -0
  95. package/dist/commands/gate.command.d.ts +6 -1
  96. package/dist/commands/gate.command.d.ts.map +1 -1
  97. package/dist/commands/gate.command.js +50 -124
  98. package/dist/commands/gates.command.d.ts +52 -0
  99. package/dist/commands/gates.command.d.ts.map +1 -1
  100. package/dist/commands/gates.command.js +811 -185
  101. package/dist/commands/gen.command.d.ts.map +1 -1
  102. package/dist/commands/gen.command.js +4 -0
  103. package/dist/commands/generated.command.d.ts +33 -3
  104. package/dist/commands/generated.command.d.ts.map +1 -1
  105. package/dist/commands/generated.command.js +499 -147
  106. package/dist/commands/graph-code-subverbs.d.ts +15 -0
  107. package/dist/commands/graph-code-subverbs.d.ts.map +1 -1
  108. package/dist/commands/graph-code-subverbs.js +198 -24
  109. package/dist/commands/graph.command.d.ts.map +1 -1
  110. package/dist/commands/graph.command.js +79 -37
  111. package/dist/commands/help.command.d.ts +30 -6
  112. package/dist/commands/help.command.d.ts.map +1 -1
  113. package/dist/commands/help.command.js +323 -199
  114. package/dist/commands/helper.command.d.ts +1 -0
  115. package/dist/commands/helper.command.d.ts.map +1 -1
  116. package/dist/commands/helper.command.js +195 -56
  117. package/dist/commands/impact.command.d.ts.map +1 -1
  118. package/dist/commands/impact.command.js +115 -12
  119. package/dist/commands/infer.command.d.ts.map +1 -1
  120. package/dist/commands/infer.command.js +20 -45
  121. package/dist/commands/ingest.command.d.ts +0 -1
  122. package/dist/commands/ingest.command.d.ts.map +1 -1
  123. package/dist/commands/ingest.command.js +25 -41
  124. package/dist/commands/knowledge-author.command.d.ts +0 -3
  125. package/dist/commands/knowledge-author.command.d.ts.map +1 -1
  126. package/dist/commands/knowledge-author.command.js +10 -23
  127. package/dist/commands/knowledge.command.d.ts.map +1 -1
  128. package/dist/commands/knowledge.command.js +469 -129
  129. package/dist/commands/languages.command.d.ts.map +1 -1
  130. package/dist/commands/languages.command.js +27 -0
  131. package/dist/commands/lint.command.d.ts.map +1 -1
  132. package/dist/commands/lint.command.js +3 -0
  133. package/dist/commands/mcp.command.d.ts +18 -0
  134. package/dist/commands/mcp.command.d.ts.map +1 -1
  135. package/dist/commands/mcp.command.js +33 -8
  136. package/dist/commands/onboard.command.d.ts.map +1 -1
  137. package/dist/commands/onboard.command.js +20 -0
  138. package/dist/commands/owners.command.d.ts.map +1 -1
  139. package/dist/commands/owners.command.js +14 -2
  140. package/dist/commands/packs-new.d.ts +13 -1
  141. package/dist/commands/packs-new.d.ts.map +1 -1
  142. package/dist/commands/packs-new.js +500 -335
  143. package/dist/commands/packs.command.d.ts.map +1 -1
  144. package/dist/commands/packs.command.js +378 -36
  145. package/dist/commands/paths.command.d.ts.map +1 -1
  146. package/dist/commands/paths.command.js +9 -1
  147. package/dist/commands/pipelines.command.d.ts.map +1 -1
  148. package/dist/commands/pipelines.command.js +7 -1
  149. package/dist/commands/plan-check.command.d.ts.map +1 -1
  150. package/dist/commands/plan-check.command.js +3 -0
  151. package/dist/commands/plan.command.d.ts.map +1 -1
  152. package/dist/commands/plan.command.js +3 -0
  153. package/dist/commands/playbooks.command.d.ts.map +1 -1
  154. package/dist/commands/playbooks.command.js +7 -2
  155. package/dist/commands/policy-lint.command.d.ts +19 -2
  156. package/dist/commands/policy-lint.command.d.ts.map +1 -1
  157. package/dist/commands/policy-lint.command.js +224 -65
  158. package/dist/commands/policy.command.d.ts.map +1 -1
  159. package/dist/commands/policy.command.js +6 -1
  160. package/dist/commands/pr.command.d.ts.map +1 -1
  161. package/dist/commands/pr.command.js +14 -0
  162. package/dist/commands/presets.command.d.ts.map +1 -1
  163. package/dist/commands/presets.command.js +12 -27
  164. package/dist/commands/profiles.command.d.ts.map +1 -1
  165. package/dist/commands/profiles.command.js +94 -26
  166. package/dist/commands/provenance.command.js +1 -1
  167. package/dist/commands/quality.command.d.ts.map +1 -1
  168. package/dist/commands/quality.command.js +129 -33
  169. package/dist/commands/recommend.command.d.ts +20 -4
  170. package/dist/commands/recommend.command.d.ts.map +1 -1
  171. package/dist/commands/recommend.command.js +172 -278
  172. package/dist/commands/registrations.command.d.ts.map +1 -1
  173. package/dist/commands/registrations.command.js +138 -13
  174. package/dist/commands/registry-lifecycle-run.d.ts +14 -0
  175. package/dist/commands/registry-lifecycle-run.d.ts.map +1 -0
  176. package/dist/commands/registry-lifecycle-run.js +336 -0
  177. package/dist/commands/registry.command.d.ts.map +1 -1
  178. package/dist/commands/registry.command.js +235 -62
  179. package/dist/commands/release.command.d.ts.map +1 -1
  180. package/dist/commands/release.command.js +99 -20
  181. package/dist/commands/report.command.d.ts.map +1 -1
  182. package/dist/commands/report.command.js +38 -2
  183. package/dist/commands/reuse-coverage.command.d.ts +23 -0
  184. package/dist/commands/reuse-coverage.command.d.ts.map +1 -0
  185. package/dist/commands/reuse-coverage.command.js +536 -0
  186. package/dist/commands/reuse.command.d.ts +3 -18
  187. package/dist/commands/reuse.command.d.ts.map +1 -1
  188. package/dist/commands/reuse.command.js +395 -244
  189. package/dist/commands/review.command.d.ts.map +1 -1
  190. package/dist/commands/review.command.js +33 -1
  191. package/dist/commands/rounds.command.d.ts.map +1 -1
  192. package/dist/commands/rounds.command.js +5 -0
  193. package/dist/commands/safety.command.d.ts.map +1 -1
  194. package/dist/commands/safety.command.js +9 -0
  195. package/dist/commands/scaffolds.command.d.ts.map +1 -1
  196. package/dist/commands/scaffolds.command.js +97 -25
  197. package/dist/commands/search.command.d.ts +0 -8
  198. package/dist/commands/search.command.d.ts.map +1 -1
  199. package/dist/commands/search.command.js +136 -28
  200. package/dist/commands/self-config-xrefs.command.d.ts +24 -0
  201. package/dist/commands/self-config-xrefs.command.d.ts.map +1 -0
  202. package/dist/commands/self-config-xrefs.command.js +170 -0
  203. package/dist/commands/self-config.command.d.ts.map +1 -1
  204. package/dist/commands/self-config.command.js +261 -65
  205. package/dist/commands/smart-context.command.d.ts.map +1 -1
  206. package/dist/commands/smart-context.command.js +39 -3
  207. package/dist/commands/spec.command.d.ts.map +1 -1
  208. package/dist/commands/spec.command.js +3 -0
  209. package/dist/commands/stats.command.d.ts.map +1 -1
  210. package/dist/commands/stats.command.js +3 -0
  211. package/dist/commands/surface.command.d.ts +6 -1
  212. package/dist/commands/surface.command.d.ts.map +1 -1
  213. package/dist/commands/surface.command.js +256 -54
  214. package/dist/commands/task-context.command.js +1 -1
  215. package/dist/commands/task.command.d.ts.map +1 -1
  216. package/dist/commands/task.command.js +22 -1
  217. package/dist/commands/templates.command.d.ts +4 -0
  218. package/dist/commands/templates.command.d.ts.map +1 -1
  219. package/dist/commands/templates.command.js +109 -22
  220. package/dist/commands/test.command.d.ts.map +1 -1
  221. package/dist/commands/test.command.js +161 -33
  222. package/dist/commands/tests.command.d.ts.map +1 -1
  223. package/dist/commands/tests.command.js +29 -3
  224. package/dist/commands/trace.command.d.ts.map +1 -1
  225. package/dist/commands/trace.command.js +29 -4
  226. package/dist/commands/watch.command.d.ts.map +1 -1
  227. package/dist/commands/watch.command.js +3 -0
  228. package/dist/commands/why.command.d.ts.map +1 -1
  229. package/dist/commands/why.command.js +3 -0
  230. package/dist/commands/wiring.command.d.ts +18 -4
  231. package/dist/commands/wiring.command.d.ts.map +1 -1
  232. package/dist/commands/wiring.command.js +360 -73
  233. package/dist/dashboard/code-intelligence-data.js +4 -4
  234. package/dist/diff/deleted-orphan-coverage.d.ts +32 -0
  235. package/dist/diff/deleted-orphan-coverage.d.ts.map +1 -0
  236. package/dist/diff/deleted-orphan-coverage.js +107 -0
  237. package/dist/diff/deleted-orphan-scope-notes.d.ts +23 -0
  238. package/dist/diff/deleted-orphan-scope-notes.d.ts.map +1 -0
  239. package/dist/diff/deleted-orphan-scope-notes.js +49 -0
  240. package/dist/diff/deleted-orphans.d.ts +32 -0
  241. package/dist/diff/deleted-orphans.d.ts.map +1 -1
  242. package/dist/diff/deleted-orphans.js +42 -2
  243. package/dist/dispatch/closest-match.d.ts +15 -0
  244. package/dist/dispatch/closest-match.d.ts.map +1 -0
  245. package/dist/dispatch/closest-match.js +47 -0
  246. package/dist/dispatch/global-flags.d.ts +94 -0
  247. package/dist/dispatch/global-flags.d.ts.map +1 -0
  248. package/dist/dispatch/global-flags.js +123 -0
  249. package/dist/dispatch/guard-invocation-input.d.ts +24 -0
  250. package/dist/dispatch/guard-invocation-input.d.ts.map +1 -0
  251. package/dist/dispatch/guard-invocation-input.js +1 -0
  252. package/dist/dispatch/guard-invocation.d.ts +33 -0
  253. package/dist/dispatch/guard-invocation.d.ts.map +1 -0
  254. package/dist/dispatch/guard-invocation.js +183 -0
  255. package/dist/dispatch/help-intercept.d.ts +22 -0
  256. package/dist/dispatch/help-intercept.d.ts.map +1 -0
  257. package/dist/dispatch/help-intercept.js +42 -0
  258. package/dist/dispatch/i-declared-invocation.d.ts +17 -0
  259. package/dist/dispatch/i-declared-invocation.d.ts.map +1 -0
  260. package/dist/dispatch/i-declared-invocation.js +1 -0
  261. package/dist/dispatch/i-unknown-flag-refusal-input.d.ts +28 -0
  262. package/dist/dispatch/i-unknown-flag-refusal-input.d.ts.map +1 -0
  263. package/dist/dispatch/i-unknown-flag-refusal-input.js +1 -0
  264. package/dist/dispatch/invocation-rejection-kind.d.ts +15 -0
  265. package/dist/dispatch/invocation-rejection-kind.d.ts.map +1 -0
  266. package/dist/dispatch/invocation-rejection-kind.js +15 -0
  267. package/dist/dispatch/invocation-rejection.d.ts +18 -0
  268. package/dist/dispatch/invocation-rejection.d.ts.map +1 -0
  269. package/dist/dispatch/invocation-rejection.js +1 -0
  270. package/dist/dispatch/judge-invocation.d.ts +24 -0
  271. package/dist/dispatch/judge-invocation.d.ts.map +1 -0
  272. package/dist/dispatch/judge-invocation.js +50 -0
  273. package/dist/dispatch/positional-mode.d.ts +18 -0
  274. package/dist/dispatch/positional-mode.d.ts.map +1 -0
  275. package/dist/dispatch/positional-mode.js +18 -0
  276. package/dist/dispatch/read-tracking-map.d.ts +28 -0
  277. package/dist/dispatch/read-tracking-map.d.ts.map +1 -0
  278. package/dist/dispatch/read-tracking-map.js +58 -0
  279. package/dist/dispatch/refuse-sibling-valve-flags.d.ts +30 -0
  280. package/dist/dispatch/refuse-sibling-valve-flags.d.ts.map +1 -0
  281. package/dist/dispatch/refuse-sibling-valve-flags.js +65 -0
  282. package/dist/dispatch/subverb-spec.d.ts +26 -0
  283. package/dist/dispatch/subverb-spec.d.ts.map +1 -0
  284. package/dist/dispatch/subverb-spec.js +1 -0
  285. package/dist/dispatch/undocumented-flag-reads.d.ts +22 -0
  286. package/dist/dispatch/undocumented-flag-reads.d.ts.map +1 -0
  287. package/dist/dispatch/undocumented-flag-reads.js +283 -0
  288. package/dist/dispatch/unknown-flag-refusal-mode.d.ts +13 -0
  289. package/dist/dispatch/unknown-flag-refusal-mode.d.ts.map +1 -0
  290. package/dist/dispatch/unknown-flag-refusal-mode.js +13 -0
  291. package/dist/dispatch/unknown-flag-refusal.d.ts +22 -0
  292. package/dist/dispatch/unknown-flag-refusal.d.ts.map +1 -0
  293. package/dist/dispatch/unknown-flag-refusal.js +57 -0
  294. package/dist/dispatch/unread-flags.d.ts +152 -0
  295. package/dist/dispatch/unread-flags.d.ts.map +1 -0
  296. package/dist/dispatch/unread-flags.js +295 -0
  297. package/dist/dispatch/verdict-valve-flag.d.ts +21 -0
  298. package/dist/dispatch/verdict-valve-flag.d.ts.map +1 -0
  299. package/dist/dispatch/verdict-valve-flag.js +21 -0
  300. package/dist/dispatch/walk-declared-subverbs.d.ts +14 -0
  301. package/dist/dispatch/walk-declared-subverbs.d.ts.map +1 -0
  302. package/dist/dispatch/walk-declared-subverbs.js +28 -0
  303. package/dist/exit-codes.d.ts +41 -3
  304. package/dist/exit-codes.d.ts.map +1 -1
  305. package/dist/exit-codes.js +153 -14
  306. package/dist/finish/run-finish.d.ts +72 -5
  307. package/dist/finish/run-finish.d.ts.map +1 -1
  308. package/dist/finish/run-finish.js +453 -104
  309. package/dist/gates/accepted-empty-note.d.ts +10 -0
  310. package/dist/gates/accepted-empty-note.d.ts.map +1 -0
  311. package/dist/gates/accepted-empty-note.js +11 -0
  312. package/dist/gates/allow-empty.d.ts +25 -0
  313. package/dist/gates/allow-empty.d.ts.map +1 -0
  314. package/dist/gates/allow-empty.js +27 -0
  315. package/dist/gates/asset-doctor-failing-units.d.ts +16 -0
  316. package/dist/gates/asset-doctor-failing-units.d.ts.map +1 -0
  317. package/dist/gates/asset-doctor-failing-units.js +14 -0
  318. package/dist/gates/asset-doctor-failure-line.d.ts +16 -0
  319. package/dist/gates/asset-doctor-failure-line.d.ts.map +1 -0
  320. package/dist/gates/asset-doctor-failure-line.js +28 -0
  321. package/dist/gates/empty-rule-advice-lines.d.ts +15 -0
  322. package/dist/gates/empty-rule-advice-lines.d.ts.map +1 -0
  323. package/dist/gates/empty-rule-advice-lines.js +20 -0
  324. package/dist/gates/gate-envelope.d.ts +85 -8
  325. package/dist/gates/gate-envelope.d.ts.map +1 -1
  326. package/dist/gates/gate-envelope.js +56 -7
  327. package/dist/gates/gate-rule-globs.d.ts +37 -3
  328. package/dist/gates/gate-rule-globs.d.ts.map +1 -1
  329. package/dist/gates/gate-rule-globs.js +78 -40
  330. package/dist/gates/gate-rule-view.d.ts +17 -4
  331. package/dist/gates/gate-rule-view.d.ts.map +1 -1
  332. package/dist/gates/gate-rule-view.js +105 -90
  333. package/dist/gates/i-coverage-dead-glob.d.ts +19 -0
  334. package/dist/gates/i-coverage-dead-glob.d.ts.map +1 -0
  335. package/dist/gates/i-coverage-dead-glob.js +1 -0
  336. package/dist/gates/i-coverage-negation.d.ts +13 -0
  337. package/dist/gates/i-coverage-negation.d.ts.map +1 -0
  338. package/dist/gates/i-coverage-negation.js +1 -0
  339. package/dist/gates/i-registration-query-settle-input.d.ts +18 -0
  340. package/dist/gates/i-registration-query-settle-input.d.ts.map +1 -0
  341. package/dist/gates/i-registration-query-settle-input.js +1 -0
  342. package/dist/gates/i-unit-state-note-row.d.ts +16 -0
  343. package/dist/gates/i-unit-state-note-row.d.ts.map +1 -0
  344. package/dist/gates/i-unit-state-note-row.js +1 -0
  345. package/dist/gates/i-unit-state-notes.d.ts +32 -0
  346. package/dist/gates/i-unit-state-notes.d.ts.map +1 -0
  347. package/dist/gates/i-unit-state-notes.js +1 -0
  348. package/dist/gates/incomplete-registry-inventory.d.ts +19 -0
  349. package/dist/gates/incomplete-registry-inventory.d.ts.map +1 -0
  350. package/dist/gates/incomplete-registry-inventory.js +63 -0
  351. package/dist/gates/measure-registration-roles.d.ts +10 -0
  352. package/dist/gates/measure-registration-roles.d.ts.map +1 -0
  353. package/dist/gates/measure-registration-roles.js +9 -0
  354. package/dist/gates/plane-verdict.d.ts +14 -0
  355. package/dist/gates/plane-verdict.d.ts.map +1 -0
  356. package/dist/gates/plane-verdict.js +22 -0
  357. package/dist/gates/qualify-clean-for-units.d.ts +12 -0
  358. package/dist/gates/qualify-clean-for-units.d.ts.map +1 -0
  359. package/dist/gates/qualify-clean-for-units.js +18 -0
  360. package/dist/gates/registration-graph-verdict.d.ts +34 -0
  361. package/dist/gates/registration-graph-verdict.d.ts.map +1 -0
  362. package/dist/gates/registration-graph-verdict.js +70 -0
  363. package/dist/gates/registration-roles.d.ts +9 -0
  364. package/dist/gates/registration-roles.d.ts.map +1 -0
  365. package/dist/gates/registration-roles.js +1 -0
  366. package/dist/gates/registry-liveness.d.ts +11 -0
  367. package/dist/gates/registry-liveness.d.ts.map +1 -0
  368. package/dist/gates/registry-liveness.js +13 -0
  369. package/dist/gates/rule-coverage.d.ts +187 -4
  370. package/dist/gates/rule-coverage.d.ts.map +1 -1
  371. package/dist/gates/rule-coverage.js +501 -49
  372. package/dist/gates/run-gate-planes.d.ts +14 -0
  373. package/dist/gates/run-gate-planes.d.ts.map +1 -1
  374. package/dist/gates/run-gate-planes.js +172 -30
  375. package/dist/gates/scaffold-selftest.d.ts +56 -0
  376. package/dist/gates/scaffold-selftest.d.ts.map +1 -0
  377. package/dist/gates/scaffold-selftest.js +119 -0
  378. package/dist/gates/seam-rejected-rules.d.ts +28 -0
  379. package/dist/gates/seam-rejected-rules.d.ts.map +1 -0
  380. package/dist/gates/seam-rejected-rules.js +95 -0
  381. package/dist/gates/self-test-check.d.ts +29 -0
  382. package/dist/gates/self-test-check.d.ts.map +1 -0
  383. package/dist/gates/self-test-check.js +1 -0
  384. package/dist/gates/self-test-subject.d.ts +28 -0
  385. package/dist/gates/self-test-subject.d.ts.map +1 -0
  386. package/dist/gates/self-test-subject.js +1 -0
  387. package/dist/gates/self-test.d.ts +20 -0
  388. package/dist/gates/self-test.d.ts.map +1 -0
  389. package/dist/gates/self-test.js +82 -0
  390. package/dist/gates/settle-verdict.d.ts +14 -0
  391. package/dist/gates/settle-verdict.d.ts.map +1 -0
  392. package/dist/gates/settle-verdict.js +13 -0
  393. package/dist/gates/settled-verdict.d.ts +8 -0
  394. package/dist/gates/settled-verdict.d.ts.map +1 -0
  395. package/dist/gates/settled-verdict.js +1 -0
  396. package/dist/gates/template-registry-coverage.d.ts +18 -0
  397. package/dist/gates/template-registry-coverage.d.ts.map +1 -0
  398. package/dist/gates/template-registry-coverage.js +24 -0
  399. package/dist/gates/unit-state-notes.d.ts +40 -0
  400. package/dist/gates/unit-state-notes.d.ts.map +1 -0
  401. package/dist/gates/unit-state-notes.js +71 -0
  402. package/dist/gates/verdict-line.d.ts +18 -0
  403. package/dist/gates/verdict-line.d.ts.map +1 -0
  404. package/dist/gates/verdict-line.js +40 -0
  405. package/dist/graph/graph-reuse-lookup.d.ts +10 -0
  406. package/dist/graph/graph-reuse-lookup.d.ts.map +1 -0
  407. package/dist/graph/graph-reuse-lookup.js +41 -0
  408. package/dist/graph/index-behind-hint.d.ts +11 -0
  409. package/dist/graph/index-behind-hint.d.ts.map +1 -0
  410. package/dist/graph/index-behind-hint.js +27 -0
  411. package/dist/knowledge/knowledge-stale-gate-flags.d.ts +3 -0
  412. package/dist/knowledge/knowledge-stale-gate-flags.d.ts.map +1 -0
  413. package/dist/knowledge/knowledge-stale-gate-flags.js +1 -0
  414. package/dist/knowledge/knowledge-stale-gate-input.d.ts +3 -0
  415. package/dist/knowledge/knowledge-stale-gate-input.d.ts.map +1 -0
  416. package/dist/knowledge/knowledge-stale-gate-input.js +1 -0
  417. package/dist/knowledge/knowledge-stale-gate-result.d.ts +3 -0
  418. package/dist/knowledge/knowledge-stale-gate-result.d.ts.map +1 -0
  419. package/dist/knowledge/knowledge-stale-gate-result.js +1 -0
  420. package/dist/knowledge/knowledge-stale-gate.d.ts +10 -0
  421. package/dist/knowledge/knowledge-stale-gate.d.ts.map +1 -0
  422. package/dist/knowledge/knowledge-stale-gate.js +9 -0
  423. package/dist/main.d.ts.map +1 -1
  424. package/dist/main.js +200 -83
  425. package/dist/output/failure-hints.d.ts.map +1 -1
  426. package/dist/output/failure-hints.js +11 -9
  427. package/dist/output/rejected-entries-note.d.ts +57 -0
  428. package/dist/output/rejected-entries-note.d.ts.map +1 -0
  429. package/dist/output/rejected-entries-note.js +103 -0
  430. package/dist/output/stdout-is-pipe.d.ts +13 -0
  431. package/dist/output/stdout-is-pipe.d.ts.map +1 -0
  432. package/dist/output/stdout-is-pipe.js +21 -0
  433. package/dist/packs/stale-build-warning.d.ts +11 -0
  434. package/dist/packs/stale-build-warning.d.ts.map +1 -0
  435. package/dist/packs/stale-build-warning.js +23 -0
  436. package/dist/quality/run-quality.d.ts +123 -0
  437. package/dist/quality/run-quality.d.ts.map +1 -0
  438. package/dist/quality/run-quality.js +442 -0
  439. package/dist/schemas/json-schemas.d.ts +184 -3
  440. package/dist/schemas/json-schemas.d.ts.map +1 -1
  441. package/dist/schemas/json-schemas.js +113 -2
  442. package/dist/shrk.d.ts +3 -0
  443. package/dist/shrk.d.ts.map +1 -0
  444. package/dist/shrk.js +30 -0
  445. package/dist/surface/audience-applicability.d.ts +26 -0
  446. package/dist/surface/audience-applicability.d.ts.map +1 -0
  447. package/dist/surface/audience-applicability.js +60 -0
  448. package/dist/surface/catalog-command-safety.d.ts +18 -0
  449. package/dist/surface/catalog-command-safety.d.ts.map +1 -0
  450. package/dist/surface/catalog-command-safety.js +62 -0
  451. package/dist/surface/cli-command-resolver.d.ts +21 -0
  452. package/dist/surface/cli-command-resolver.d.ts.map +1 -0
  453. package/dist/surface/cli-command-resolver.js +87 -0
  454. package/dist/surface/command-dispatch-kind.d.ts +20 -0
  455. package/dist/surface/command-dispatch-kind.d.ts.map +1 -0
  456. package/dist/surface/command-dispatch-kind.js +20 -0
  457. package/dist/surface/command-index-entry.d.ts +40 -0
  458. package/dist/surface/command-index-entry.d.ts.map +1 -0
  459. package/dist/surface/command-index-entry.js +1 -0
  460. package/dist/surface/command-index.d.ts +77 -0
  461. package/dist/surface/command-index.d.ts.map +1 -0
  462. package/dist/surface/command-index.js +323 -0
  463. package/dist/surface/i-command-index.d.ts +22 -0
  464. package/dist/surface/i-command-index.d.ts.map +1 -0
  465. package/dist/surface/i-command-index.js +1 -0
  466. package/dist/surface/i-command-string-context.d.ts +20 -0
  467. package/dist/surface/i-command-string-context.d.ts.map +1 -0
  468. package/dist/surface/i-command-string-context.js +1 -0
  469. package/dist/surface/i-surface-denial.d.ts +13 -0
  470. package/dist/surface/i-surface-denial.d.ts.map +1 -0
  471. package/dist/surface/i-surface-denial.js +1 -0
  472. package/dist/surface/load-surface-context.d.ts +17 -1
  473. package/dist/surface/load-surface-context.d.ts.map +1 -1
  474. package/dist/surface/load-surface-context.js +48 -10
  475. package/dist/surface/not-enabled-error.d.ts +38 -4
  476. package/dist/surface/not-enabled-error.d.ts.map +1 -1
  477. package/dist/surface/not-enabled-error.js +96 -6
  478. package/dist/surface/profiles.d.ts +7 -0
  479. package/dist/surface/profiles.d.ts.map +1 -1
  480. package/dist/surface/resolve-command-string.d.ts +10 -0
  481. package/dist/surface/resolve-command-string.d.ts.map +1 -0
  482. package/dist/surface/resolve-command-string.js +572 -0
  483. package/dist/surface/surface-config-writer.d.ts +7 -2
  484. package/dist/surface/surface-config-writer.d.ts.map +1 -1
  485. package/dist/surface/surface-config-writer.js +25 -6
  486. package/dist/surface/surface-layer.d.ts +11 -0
  487. package/dist/surface/surface-layer.d.ts.map +1 -0
  488. package/dist/surface/surface-layer.js +11 -0
  489. package/dist/surface/surface-refusal-reason.d.ts +16 -0
  490. package/dist/surface/surface-refusal-reason.d.ts.map +1 -0
  491. package/dist/surface/surface-refusal-reason.js +16 -0
  492. package/dist/surface/surface-selector.d.ts +26 -0
  493. package/dist/surface/surface-selector.d.ts.map +1 -0
  494. package/dist/surface/surface-selector.js +42 -0
  495. package/dist/surface/surface-summary.d.ts +61 -18
  496. package/dist/surface/surface-summary.d.ts.map +1 -1
  497. package/dist/surface/surface-summary.js +147 -60
  498. package/dist/surface/tier.d.ts +85 -22
  499. package/dist/surface/tier.d.ts.map +1 -1
  500. package/dist/surface/tier.js +132 -30
  501. package/dist/usage/usage-log.d.ts +6 -1
  502. package/dist/usage/usage-log.d.ts.map +1 -1
  503. package/dist/usage/usage-log.js +7 -2
  504. package/dist/validation/run-validation-loop.d.ts +9 -0
  505. package/dist/validation/run-validation-loop.d.ts.map +1 -1
  506. package/dist/validation/run-validation-loop.js +14 -11
  507. package/dist/validation/typecheck-emitted.d.ts +8 -9
  508. package/dist/validation/typecheck-emitted.d.ts.map +1 -1
  509. package/dist/validation/typecheck-emitted.js +17 -97
  510. package/package.json +34 -34
@@ -1 +1 @@
1
- {"version":3,"file":"biome.command.d.ts","sourceRoot":"","sources":["../../src/commands/biome.command.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAwChC,eAAO,MAAM,oBAAoB,EAAE,eAuDlC,CAAC;AA+BF,eAAO,MAAM,kBAAkB,EAAE,eAkEhC,CAAC;AAkGF,eAAO,MAAM,iBAAiB,EAAE,eA4C/B,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,eAwC5C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,eAkC1B,CAAC"}
1
+ {"version":3,"file":"biome.command.d.ts","sourceRoot":"","sources":["../../src/commands/biome.command.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAyChC,eAAO,MAAM,oBAAoB,EAAE,eAuDlC,CAAC;AA+BF,eAAO,MAAM,kBAAkB,EAAE,eAkEhC,CAAC;AAkGF,eAAO,MAAM,iBAAiB,EAAE,eA4C/B,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,eAwC5C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,eAqD1B,CAAC"}
@@ -2,6 +2,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import * as nodePath from 'node:path';
3
3
  import { inspectSharkcraft } from '@shrkcrft/inspector';
4
4
  import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
5
+ import { PositionalMode } from "../dispatch/positional-mode.js";
5
6
  import { asJson, header } from "../output/format-output.js";
6
7
  /**
7
8
  * Biome bridge. Biome's rule grammar is narrower than ESLint's, so this
@@ -316,6 +317,25 @@ export const biomeExplainLimitationsCommand = {
316
317
  };
317
318
  export const biomeCommand = {
318
319
  name: 'biome',
320
+ // positional[0] is the bridge verb — `run` refuses anything else. Each spec
321
+ // reuses its verb handler's usage, so the flags the verb reads (`--force`,
322
+ // `--output`, `--from`, …) are documented for the post-run flag detector.
323
+ positionals: PositionalMode.None,
324
+ subverbs: [
325
+ {
326
+ name: 'scaffold',
327
+ aliases: ['config'],
328
+ description: biomeScaffoldCommand.description,
329
+ usage: biomeScaffoldCommand.usage,
330
+ },
331
+ { name: 'report', description: biomeReportCommand.description, usage: biomeReportCommand.usage },
332
+ { name: 'rules', description: biomeRulesCommand.description, usage: biomeRulesCommand.usage },
333
+ {
334
+ name: 'explain-limitations',
335
+ description: biomeExplainLimitationsCommand.description,
336
+ usage: biomeExplainLimitationsCommand.usage,
337
+ },
338
+ ],
319
339
  description: 'Biome bridge. `scaffold` emits a minimal biome.json that ignores SharkCraft generated paths; `report` converts boundary JSON to a Biome-adjacent diagnostics shape; `rules` inventories what can be bridged; `explain-limitations` documents what cannot. `config` is an alias for `scaffold`.',
320
340
  usage: 'shrk biome <scaffold|config|report|rules|explain-limitations> [...flags]',
321
341
  async run(args) {
@@ -1,7 +1,15 @@
1
- import { type ICommandHandler } from '../command-registry.js';
1
+ import { type ICommandHandler, type ParsedArgs } from '../command-registry.js';
2
2
  export declare const boundariesListCommand: ICommandHandler;
3
3
  export declare const boundariesGetCommand: ICommandHandler;
4
4
  export declare const boundariesExplainCommand: ICommandHandler;
5
+ /**
6
+ * `shrk explain <ruleId>` for a BOUNDARY rule id (round 13): the unified
7
+ * entrypoint resolved gate-plane rule ids only, so a boundary rule fell through
8
+ * to the knowledge topic search ("no matching knowledge entries"). Answers with
9
+ * `boundaries explain` when the id names a registered boundary rule; otherwise
10
+ * `undefined`, and the caller keeps its topic search.
11
+ */
12
+ export declare function tryExplainBoundaryRule(args: ParsedArgs, id: string): Promise<number | undefined>;
5
13
  export declare const boundariesInferCommand: ICommandHandler;
6
14
  /** Polyglot enforcement subcommand. */
7
15
  export declare const boundariesEnforceCommand: ICommandHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"boundaries.command.d.ts","sourceRoot":"","sources":["../../src/commands/boundaries.command.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAwB,KAAK,eAAe,EAA+B,MAAM,wBAAwB,CAAC;AAGjH,eAAO,MAAM,qBAAqB,EAAE,eAuBnC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAqClC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAmDtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAyEpC,CAAC;AAsCF,uCAAuC;AACvC,eAAO,MAAM,wBAAwB,EAAE,eAqEtC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eA0CtC,CAAC"}
1
+ {"version":3,"file":"boundaries.command.d.ts","sourceRoot":"","sources":["../../src/commands/boundaries.command.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAwB,KAAK,eAAe,EAAE,KAAK,UAAU,EAAc,MAAM,wBAAwB,CAAC;AAKjH,eAAO,MAAM,qBAAqB,EAAE,eA0BnC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAgDlC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAyGtC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAItG;AAED,eAAO,MAAM,sBAAsB,EAAE,eAyEpC,CAAC;AAsCF,uCAAuC;AACvC,eAAO,MAAM,wBAAwB,EAAE,eAqEtC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eA6CtC,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import { mkdirSync, writeFileSync } from 'node:fs';
2
2
  import * as nodePath from 'node:path';
3
- import { buildOnboardingPlan, buildPolyglotBoundaryReport, inspectSharkcraft, renderPolyglotBoundaryReportMarkdown, renderPolyglotBoundaryReportText, suggestBoundaryFixes, } from '@shrkcrft/inspector';
4
- import { evaluateBoundaries, loadTsconfigPaths, scanImports, } from '@shrkcrft/boundaries';
3
+ import { buildOnboardingPlan, buildPolyglotBoundaryReport, ContributionKind, describeBoundaryConfiguration, inspectSharkcraft, renderPolyglotBoundaryReportMarkdown, renderPolyglotBoundaryReportText, runBoundaryCheck, suggestBoundaryFixes, } from '@shrkcrft/inspector';
4
+ import { boundaryForbiddenMatch, boundaryIntendedEmptyLine, boundaryPatternOverlaps, boundaryRuleFailsOnEmpty, boundaryRuleSeverity, } from '@shrkcrft/boundaries';
5
5
  import { flagBool, flagString, resolveCwd } from "../command-registry.js";
6
6
  import { asJson, header, kv } from "../output/format-output.js";
7
+ import { writeRejectedEntriesNote } from "../output/rejected-entries-note.js";
8
+ import { ExitCode } from "../exit-codes.js";
7
9
  export const boundariesListCommand = {
8
10
  name: 'list',
9
11
  description: 'List all registered boundary rules (local + pack-contributed).',
@@ -11,18 +13,22 @@ export const boundariesListCommand = {
11
13
  async run(args) {
12
14
  const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
13
15
  const rules = inspection.boundaryRegistry.list();
16
+ // A rule its loader refused is named (round 12, 12.1); `check boundaries`
17
+ // reports it as an ERRORED rule. The exit stays 0: a list is no verdict.
18
+ const note = { next: 'shrk check boundaries' };
14
19
  if (flagBool(args, 'json')) {
15
20
  process.stdout.write(asJson(rules) + '\n');
21
+ await writeRejectedEntriesNote(inspection, [ContributionKind.Boundary], { ...note, json: true });
16
22
  return 0;
17
23
  }
18
24
  process.stdout.write(header(`Boundary rules (${rules.length})`));
19
- if (rules.length === 0) {
25
+ if (rules.length === 0)
20
26
  process.stdout.write(' (none registered)\n');
21
- return 0;
22
- }
23
27
  for (const r of rules) {
24
- process.stdout.write(` ${(r.severity ?? 'warning').toUpperCase().padEnd(8)} ${r.id.padEnd(36)} ${r.title}\n`);
28
+ // The ENFORCED severity (unset = error) — one authority with the evaluator.
29
+ process.stdout.write(` ${boundaryRuleSeverity(r).toUpperCase().padEnd(8)} ${r.id.padEnd(36)} ${r.title}\n`);
25
30
  }
31
+ await writeRejectedEntriesNote(inspection, [ContributionKind.Boundary], note);
26
32
  return 0;
27
33
  },
28
34
  };
@@ -48,16 +54,28 @@ export const boundariesGetCommand = {
48
54
  }
49
55
  process.stdout.write(header(`Boundary rule: ${rule.id}`));
50
56
  process.stdout.write(kv('title', rule.title) + '\n');
51
- process.stdout.write(kv('severity', rule.severity ?? 'warning') + '\n');
57
+ process.stdout.write(kv('severity', boundaryRuleSeverity(rule)) + '\n');
52
58
  if (rule.from && rule.from.length > 0) {
53
59
  process.stdout.write(kv('from', rule.from.join(', ')) + '\n');
54
60
  }
55
61
  if (rule.forbiddenImports && rule.forbiddenImports.length > 0) {
56
62
  process.stdout.write(kv('forbidden', rule.forbiddenImports.join(', ')) + '\n');
63
+ process.stdout.write(kv('forbiddenMatch', boundaryForbiddenMatch(rule)) + '\n');
57
64
  }
58
65
  if (rule.allowedImports && rule.allowedImports.length > 0) {
59
66
  process.stdout.write(kv('allowed', rule.allowedImports.join(', ')) + '\n');
60
67
  }
68
+ if (rule.exemptFiles && rule.exemptFiles.length > 0) {
69
+ process.stdout.write(kv('exemptFiles', rule.exemptFiles.join(', ')) + '\n');
70
+ }
71
+ if (rule.excludeTests)
72
+ process.stdout.write(kv('excludeTests', 'true') + '\n');
73
+ for (const m of rule.expectEmptyUnits ?? []) {
74
+ process.stdout.write(kv('expectEmpty marker', `${boundaryIntendedEmptyLine(m)} (state: see \`shrk check boundaries\`)`) + '\n');
75
+ }
76
+ if (rule.exceptions && rule.exceptions.length > 0) {
77
+ process.stdout.write(kv('exceptions', String(rule.exceptions.length)) + '\n');
78
+ }
61
79
  if (rule.suggestedFix) {
62
80
  process.stdout.write(kv('suggestedFix', rule.suggestedFix) + '\n');
63
81
  }
@@ -66,7 +84,7 @@ export const boundariesGetCommand = {
66
84
  };
67
85
  export const boundariesExplainCommand = {
68
86
  name: 'explain',
69
- description: 'Explain a boundary rule: where it came from (local vs pack), what it forbids, what to do about violations.',
87
+ description: 'Explain a boundary rule: where it came from (local vs pack), what it forbids, what it exempts, what to do about violations.',
70
88
  usage: 'shrk [--cwd <dir>] boundaries explain <ruleId> [--json]',
71
89
  async run(args) {
72
90
  const id = args.positional[0];
@@ -81,14 +99,29 @@ export const boundariesExplainCommand = {
81
99
  return 1;
82
100
  }
83
101
  const source = inspection.boundarySources.get(id);
102
+ // The one static answer the evaluator's coverage (`subsumedBy` /
103
+ // `shadowedBy`) and MCP `get_boundary_rule` read (round 12, R12-5.3/5.6).
104
+ const overlaps = boundaryPatternOverlaps(rule);
84
105
  const explanation = {
85
106
  id: rule.id,
86
107
  title: rule.title,
87
- severity: rule.severity ?? 'warning',
108
+ // The severity the evaluator ENFORCES (an unset one is `error`) — this
109
+ // used to print `warning` for a rule that blocks CI.
110
+ severity: boundaryRuleSeverity(rule),
88
111
  origin: source ? (source.type === 'pack' ? `pack: ${source.packageName}` : 'local') : 'unknown',
89
112
  from: rule.from ?? [],
90
113
  forbiddenImports: rule.forbiddenImports ?? [],
114
+ forbiddenMatch: boundaryForbiddenMatch(rule),
91
115
  allowedImports: rule.allowedImports ?? [],
116
+ exemptFiles: rule.exemptFiles ?? [],
117
+ excludeTests: rule.excludeTests === true,
118
+ exceptions: rule.exceptions ?? [],
119
+ failOnEmpty: boundaryRuleFailsOnEmpty(rule),
120
+ redundantForbidden: overlaps.redundantForbidden.map((o) => ({ pattern: o.pattern, coveredBy: o.by })),
121
+ shadowedAllowed: overlaps.shadowedAllowed.map((o) => ({ pattern: o.pattern, shadowedBy: o.by })),
122
+ // Round 13: the rule's expectEmpty markers — each an 'intended empty'
123
+ // line below, next to redundant and shadowed.
124
+ expectEmptyUnits: rule.expectEmptyUnits ?? [],
92
125
  suggestedFix: rule.suggestedFix,
93
126
  howToFix: 'Adjust the offending import to either (a) drop the disallowed dependency, (b) use a public interface from the allowed list, or (c) move the importer into a layer where this dependency is permitted.',
94
127
  };
@@ -98,23 +131,56 @@ export const boundariesExplainCommand = {
98
131
  }
99
132
  process.stdout.write(header(`Boundary explain: ${rule.id}`));
100
133
  process.stdout.write(kv('title', rule.title) + '\n');
101
- process.stdout.write(kv('severity', rule.severity ?? 'warning') + '\n');
134
+ process.stdout.write(kv('severity', explanation.severity) + '\n');
102
135
  process.stdout.write(kv('origin', explanation.origin) + '\n');
103
136
  if (explanation.from.length > 0) {
104
137
  process.stdout.write(kv('applies to', explanation.from.join(', ')) + '\n');
105
138
  }
106
139
  if (explanation.forbiddenImports.length > 0) {
107
- process.stdout.write(kv('forbidden', explanation.forbiddenImports.join(', ')) + '\n');
140
+ process.stdout.write(kv('forbidden', `${explanation.forbiddenImports.join(', ')} (${explanation.forbiddenMatch === 'package' ? 'package semantics: each bare pattern covers its subpaths' : 'exact: entrypoint only'})`) + '\n');
108
141
  }
109
142
  if (explanation.allowedImports.length > 0) {
110
143
  process.stdout.write(kv('allowed', explanation.allowedImports.join(', ')) + '\n');
111
144
  }
145
+ const pkgNote = explanation.forbiddenMatch === 'package';
146
+ for (const o of explanation.redundantForbidden) {
147
+ process.stdout.write(kv('redundant', `'${o.pattern}' is covered by '${o.coveredBy}'${pkgNote ? ' (package semantics)' : ''} — redundant; safe to delete`) + '\n');
148
+ }
149
+ for (const o of explanation.shadowedAllowed) {
150
+ process.stdout.write(kv('shadowed', `allowed '${o.pattern}' can never admit an import — forbidden '${o.shadowedBy}' is checked first and covers it; carve the subpath out with exceptions[{ path, target, reason }]${pkgNote ? " or set forbiddenMatch: 'exact'" : ''}`) + '\n');
151
+ }
152
+ // Round 13: each expectEmpty marker, beside redundant and shadowed. The
153
+ // assertion only — whether its target has appeared since (went live) is a
154
+ // run-time fact `shrk check boundaries` reports.
155
+ for (const m of explanation.expectEmptyUnits) {
156
+ process.stdout.write(kv('expectEmpty marker', `${boundaryIntendedEmptyLine(m)} (state: see \`shrk check boundaries\`)`) + '\n');
157
+ }
158
+ if (explanation.exemptFiles.length > 0 || explanation.excludeTests) {
159
+ process.stdout.write(kv('exempt', [...explanation.exemptFiles, ...(explanation.excludeTests ? ['(test files)'] : [])].join(', ')) + '\n');
160
+ }
161
+ for (const ex of explanation.exceptions) {
162
+ process.stdout.write(kv('exception', `${ex.path} → ${ex.target} — ${ex.reason}`) + '\n');
163
+ }
164
+ process.stdout.write(kv('failOnEmpty', explanation.failOnEmpty ? 'yes — matching no file fails the run' : 'no — matching no file is reported skipped') + '\n');
112
165
  if (rule.suggestedFix)
113
166
  process.stdout.write(`\nSuggested fix: ${rule.suggestedFix}\n`);
114
167
  process.stdout.write(`\nHow to fix: ${explanation.howToFix}\n`);
115
168
  return 0;
116
169
  },
117
170
  };
171
+ /**
172
+ * `shrk explain <ruleId>` for a BOUNDARY rule id (round 13): the unified
173
+ * entrypoint resolved gate-plane rule ids only, so a boundary rule fell through
174
+ * to the knowledge topic search ("no matching knowledge entries"). Answers with
175
+ * `boundaries explain` when the id names a registered boundary rule; otherwise
176
+ * `undefined`, and the caller keeps its topic search.
177
+ */
178
+ export async function tryExplainBoundaryRule(args, id) {
179
+ const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
180
+ if (!inspection.boundaryRegistry.has(id))
181
+ return undefined;
182
+ return boundariesExplainCommand.run({ ...args, positional: [id] });
183
+ }
118
184
  export const boundariesInferCommand = {
119
185
  name: 'infer',
120
186
  description: 'Infer candidate boundary rules from the current repo (monorepo structure, package boundaries, naming heuristics). Dry-run by default; --write-drafts writes to sharkcraft/boundary-drafts/boundaries.draft.ts. --language all|java|csharp|python|go|rust adds polyglot suggestions.',
@@ -280,18 +346,20 @@ export const boundariesSuggestCommand = {
280
346
  const inspection = await inspectSharkcraft({ cwd });
281
347
  const rules = inspection.boundaryRegistry.list();
282
348
  if (rules.length === 0) {
283
- process.stderr.write('No boundary rules configured.\n');
284
- return 0;
349
+ // Zero rules is not "nothing to suggest" — nothing was checked (round 11,
350
+ // L-1). Say where discovery looked and why nothing loaded.
351
+ const status = describeBoundaryConfiguration(inspection);
352
+ process.stderr.write(`No boundary rules loaded — nothing was checked (sharkcraft dir: ${status.sharkcraftDir ?? '(none found)'}).\n`);
353
+ for (const d of status.diagnostics)
354
+ process.stderr.write(` ! ${d}\n`);
355
+ return ExitCode.NotVerified;
285
356
  }
286
- const scan = scanImports({ projectRoot: cwd });
287
- const tsconfigPaths = loadTsconfigPaths(cwd);
288
- const evalResult = evaluateBoundaries(scan, rules, {
289
- ...(tsconfigPaths.aliases.size > 0 ? { tsconfigPaths } : {}),
290
- });
357
+ // THE boundary orchestrator the same violations `check boundaries` reports.
358
+ const result = runBoundaryCheck(inspection);
291
359
  const filter = args.positional[0];
292
360
  const filtered = filter
293
- ? evalResult.violations.filter((v) => v.ruleId === filter || v.file.includes(filter))
294
- : evalResult.violations;
361
+ ? result.violations.filter((v) => v.ruleId === filter || v.file.includes(filter))
362
+ : result.violations;
295
363
  const suggestions = suggestBoundaryFixes(inspection, filtered.map((v) => ({
296
364
  ruleId: v.ruleId,
297
365
  file: v.file,
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.command.d.ts","sourceRoot":"","sources":["../../src/commands/bundle.command.ts"],"names":[],"mappings":"AA0CA,OAAO,EAML,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AA+4BhC,eAAO,MAAM,aAAa,EAAE,eAkC3B,CAAC"}
1
+ {"version":3,"file":"bundle.command.d.ts","sourceRoot":"","sources":["../../src/commands/bundle.command.ts"],"names":[],"mappings":"AA0CA,OAAO,EAML,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAu5BhC,eAAO,MAAM,aAAa,EAAE,eA2E3B,CAAC"}
@@ -3,6 +3,7 @@ import * as nodePath from 'node:path';
3
3
  import { buildBundleDiffFromIds, buildPlanDependencyGraph, buildTaskPacket, createFeatureBundleState, decomposeTask, inspectSharkcraft, listFeatureBundles, markBundlePlanApplied, readFeatureBundle, recomputeBundleStatus, recordBundleReport, recordBundleValidation, renderBundleDiff, renderBundleValidationHtml, renderGraphDot, renderGraphMermaid, renderGraphText, renderBundleReplayWorkflow, replayAllBundles, replayBundle, renderBundleReplayBatchHtml, setBundleDependencies, setBundleNextAction, upsertBundlePlan, writeFeatureBundle, getBundleDir, BundleReplayStatus, } from '@shrkcrft/inspector';
4
4
  import { buildSavedPlan, generate, OverwriteStrategy, savePlanToFile, } from '@shrkcrft/generator';
5
5
  import { flagBool, flagString, flagVars, resolveCwd, } from "../command-registry.js";
6
+ import { PositionalMode } from "../dispatch/positional-mode.js";
6
7
  import { asJson, header, kv } from "../output/format-output.js";
7
8
  const SUBCOMMANDS = new Set([
8
9
  'create',
@@ -638,18 +639,17 @@ async function bundleValidate(args) {
638
639
  let warnings = 0;
639
640
  if (runBoundaries) {
640
641
  try {
641
- const { evaluateBoundaries, loadTsconfigPaths, scanImports } = await import('@shrkcrft/boundaries');
642
- const scan = scanImports({ projectRoot: cwd });
643
- const tsconfigPaths = loadTsconfigPaths(cwd);
644
- const evalResult = evaluateBoundaries(scan, inspection.boundaryRegistry.list(), {
645
- ...(tsconfigPaths.aliases.size > 0 ? { tsconfigPaths } : {}),
646
- });
642
+ // THE boundary orchestrator the verdict `check boundaries` settles
643
+ // (round 11 review R11-GAP-3): zero rules, an errored rule or a scope it
644
+ // could not fully examine is never a passed boundaries step.
645
+ const { runBoundaryCheck } = await import('@shrkcrft/inspector');
646
+ const evalResult = runBoundaryCheck(inspection, { strict });
647
647
  boundaryViolations = evalResult.violations.length;
648
- const fail = strict ? boundaryViolations > 0 : evalResult.counts.error > 0;
648
+ const notVerified = evalResult.verdict === 'not-verified' ? ` NOT VERIFIED: ${evalResult.shortfalls.slice(0, 2).join('; ')}` : '';
649
649
  commandsRun.push({
650
650
  command: 'boundaries',
651
- passed: !fail,
652
- note: `${boundaryViolations} violations (${evalResult.counts.error}err / ${evalResult.counts.warning}warn)`,
651
+ passed: evalResult.exitCode === 0,
652
+ note: `${boundaryViolations} violations (${evalResult.counts.error}err / ${evalResult.counts.warning}warn)${notVerified}`,
653
653
  });
654
654
  warnings += evalResult.counts.warning;
655
655
  }
@@ -661,11 +661,14 @@ async function bundleValidate(args) {
661
661
  try {
662
662
  const { buildDriftReport } = await import('@shrkcrft/inspector');
663
663
  const drift = buildDriftReport(inspection);
664
- const fail = drift.counts.error > 0 || (strict && drift.counts.warning > 0);
664
+ // THE drift verdict: a boundary scope drift could not fully examine is
665
+ // NOT VERIFIED, never a passed step.
666
+ const fail = drift.exitCode !== 0 || (strict && drift.counts.warning > 0);
665
667
  commandsRun.push({
666
668
  command: 'drift',
667
669
  passed: !fail,
668
- note: `${drift.counts.error}err / ${drift.counts.warning}warn / ${drift.counts.info}info`,
670
+ note: `${drift.counts.error}err / ${drift.counts.warning}warn / ${drift.counts.info}info` +
671
+ (drift.verdict === 'not-verified' ? ` — NOT VERIFIED: ${drift.shortfalls.slice(0, 2).join('; ')}` : ''),
669
672
  });
670
673
  warnings += drift.counts.warning;
671
674
  }
@@ -692,6 +695,8 @@ async function bundleValidate(args) {
692
695
  if (runAgent) {
693
696
  try {
694
697
  const { loadAgentContractTests, runAgentContractTest } = await import('@shrkcrft/inspector');
698
+ // Same registry + command index `shrk test agent` resolves against.
699
+ await (await import("../surface/cli-command-resolver.js")).warmCliReferenceRegistries(inspection);
695
700
  const tests = await loadAgentContractTests(inspection);
696
701
  const results = tests.map((t) => runAgentContractTest(inspection, t));
697
702
  const failed = results.filter((r) => !r.passed).length;
@@ -708,6 +713,7 @@ async function bundleValidate(args) {
708
713
  if (runContext) {
709
714
  try {
710
715
  const { loadContextTests, runContextTest } = await import('@shrkcrft/inspector');
716
+ await (await import("../surface/cli-command-resolver.js")).warmCliReferenceRegistries(inspection);
711
717
  const tests = await loadContextTests(inspection);
712
718
  const results = tests.map((t) => runContextTest(inspection, t));
713
719
  const failed = results.filter((r) => !r.passed).length;
@@ -846,6 +852,46 @@ async function bundleDecompose(args) {
846
852
  }
847
853
  export const bundleCommand = {
848
854
  name: 'bundle',
855
+ positionals: PositionalMode.None,
856
+ subverbs: [
857
+ { name: 'create', description: 'Create a feature bundle for a task.', usage: 'shrk bundle create "<task>"', positionals: PositionalMode.Free },
858
+ { name: 'list', description: 'List the feature bundles.', usage: 'shrk bundle list' },
859
+ { name: 'show', description: 'Show one bundle.', usage: 'shrk bundle show <id>', positionals: PositionalMode.Free },
860
+ { name: 'status', description: 'Which of a bundle’s plans are applied / validated.', usage: 'shrk bundle status <id>', positionals: PositionalMode.Free },
861
+ { name: 'next', description: 'The next plan to work on in a bundle.', usage: 'shrk bundle next <id>', positionals: PositionalMode.Free },
862
+ { name: 'report', description: 'A bundle report.', usage: 'shrk bundle report <id>', positionals: PositionalMode.Free },
863
+ { name: 'review', description: 'Review a bundle before applying it.', usage: 'shrk bundle review <id>', positionals: PositionalMode.Free },
864
+ { name: 'commands', description: 'The CLI commands a bundle needs, in order.', usage: 'shrk bundle commands <id>', positionals: PositionalMode.Free },
865
+ { name: 'plan', description: 'One plan of a bundle.', usage: 'shrk bundle plan <id> [<planName>]', positionals: PositionalMode.Free },
866
+ { name: 'graph', description: 'The bundle’s plan dependency graph.', usage: 'shrk bundle graph <id>', positionals: PositionalMode.Free },
867
+ {
868
+ name: 'apply-assist',
869
+ aliases: ['apply-plan'],
870
+ description: 'Apply assist: the next `shrk apply` step for a bundle.',
871
+ usage: 'shrk bundle apply-assist <id>',
872
+ positionals: PositionalMode.Free,
873
+ },
874
+ { name: 'validate', description: 'Validate a bundle.', usage: 'shrk bundle validate <id>', positionals: PositionalMode.Free },
875
+ { name: 'decompose', description: 'Decompose a task into bundle subtasks.', usage: 'shrk bundle decompose "<task>"', positionals: PositionalMode.Free },
876
+ {
877
+ name: 'record-apply',
878
+ description: 'Record that one bundle plan was applied.',
879
+ usage: 'shrk bundle record-apply <id> <planName> [--note <text>]',
880
+ positionals: PositionalMode.Free,
881
+ },
882
+ {
883
+ name: 'replay',
884
+ description: 'Replay a bundle (or --all) to detect drift; `replay scaffold github-actions` prints a CI job.',
885
+ usage: 'shrk bundle replay <id> [--strict] [--json] | shrk bundle replay --all | shrk bundle replay scaffold github-actions [--schedule weekly|daily|manual] [--with-report-site] [--output <path>] [--write] [--force]',
886
+ positionals: PositionalMode.Free,
887
+ },
888
+ {
889
+ name: 'diff',
890
+ description: 'Diff two bundles.',
891
+ usage: 'shrk bundle diff <bundleA> <bundleB> [--format text|markdown|html|json] [--output <path>]',
892
+ positionals: PositionalMode.Free,
893
+ },
894
+ ],
849
895
  description: 'Feature workflow bundles (multi-plan, dep graph, apply assist, validate).',
850
896
  usage: 'shrk bundle create|list|show|status|report|commands|plan|graph|apply-assist|validate|replay|decompose|record-apply|next|review [...args]',
851
897
  async run(args) {
@@ -1 +1 @@
1
- {"version":3,"file":"cache-align.command.d.ts","sourceRoot":"","sources":["../../src/commands/cache-align.command.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAkBhC;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,eA4B1B,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,cAAc,EAAE,eAuB5B,CAAC"}
1
+ {"version":3,"file":"cache-align.command.d.ts","sourceRoot":"","sources":["../../src/commands/cache-align.command.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAkBhC;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,eA4B1B,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,cAAc,EAAE,eAyB5B,CAAC"}
@@ -55,7 +55,9 @@ export const alignCommand = {
55
55
  export const unalignCommand = {
56
56
  name: 'unalign',
57
57
  description: 'Restore the original volatile tokens in aligned text using its `--map`.',
58
- usage: 'shrk [--cwd <dir>] unalign [<file>|-] [--stdin] --map <path>',
58
+ // `--map` defaults to .sharkcraft/cache-align/align.json (the file `align`
59
+ // writes), so it is optional — the usage used to mark it required.
60
+ usage: 'shrk [--cwd <dir>] unalign [<file>|-] [--stdin] [--map <path>]',
59
61
  run(args) {
60
62
  const cwd = resolveCwd(args);
61
63
  const mapPath = flagString(args, 'map') ?? nodePath.join(cwd, '.sharkcraft', 'cache-align', 'align.json');
@@ -1 +1 @@
1
- {"version":3,"file":"changelog-data.d.ts","sourceRoot":"","sources":["../../src/commands/changelog-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,eAAO,MAAM,sBAAsB,EAAE,SAAS,oBAAoB,EA4KjE,CAAC"}
1
+ {"version":3,"file":"changelog-data.d.ts","sourceRoot":"","sources":["../../src/commands/changelog-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,eAAO,MAAM,sBAAsB,EAAE,SAAS,oBAAoB,EAsTjE,CAAC"}