@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,5 +1,6 @@
1
1
  import type { ISurfaceConfig } from '@shrkcrft/config';
2
2
  import { CommandTier, type ICommandCatalogEntry } from '../commands/command-catalog.js';
3
+ import type { ISurfaceDenial } from './i-surface-denial.js';
3
4
  /**
4
5
  * Bootstrap commands. Always tier=Core regardless of any other
5
6
  * derivation rule. Listed here (and only here) so the rule is mechanical:
@@ -14,6 +15,11 @@ import { CommandTier, type ICommandCatalogEntry } from '../commands/command-cata
14
15
  * recommend`.
15
16
  */
16
17
  export declare const BOOTSTRAP_COMMANDS: readonly string[];
18
+ /**
19
+ * The detail of a tool-maintenance command resolved outside SharkCraft's own
20
+ * repository (round 11 §5.1).
21
+ */
22
+ export declare const TOOL_MAINTENANCE_DETAIL = "maintains SharkCraft itself; does not apply to this repository";
17
23
  /**
18
24
  * Source explanations for tier classification. Returned by the
19
25
  * resolver so `shrk surface explain <name>` can describe why a
@@ -25,7 +31,21 @@ export declare enum TierSource {
25
31
  PackContribution = "pack-contribution",
26
32
  Override = "override",
27
33
  Hidden = "hidden-flag",
28
- Default = "default"
34
+ Default = "default",
35
+ /**
36
+ * A registered, dispatchable command with no catalog row. Extended (it runs),
37
+ * flagged so `commands doctor` / `surface list` point at the missing row.
38
+ */
39
+ Uncatalogued = "uncatalogued",
40
+ /**
41
+ * A command that maintains SharkCraft itself (catalog audience
42
+ * `tool-maintenance`), resolved OUTSIDE SharkCraft's own repository:
43
+ * experimental (gated, hidden from `--help`) unless `surface.enabled` names
44
+ * it. Invoking it exits 78 through the surface gate — never a check failure.
45
+ */
46
+ ToolMaintenance = "tool-maintenance",
47
+ /** Denied by a `surface.disabled` selector (project config or profile). */
48
+ Disabled = "disabled"
29
49
  }
30
50
  export interface ITierResolution {
31
51
  /** Resolved tier (post-derivation, post-config). */
@@ -36,14 +56,32 @@ export interface ITierResolution {
36
56
  detail?: string;
37
57
  /** True if the user's surface config flipped the default. */
38
58
  configApplied?: boolean;
59
+ /** The `surface.disabled` selector (and its layer) that denies the command — source `disabled` only. */
60
+ deniedBy?: ISurfaceDenial;
39
61
  }
40
62
  export interface ITierResolverContext {
41
63
  /** Catalog command names ({@link ICommandCatalogEntry.command}) referenced by spine pipelines. */
42
64
  spineCommands: ReadonlySet<string>;
43
65
  /** Catalog command names contributed by loaded packs (pack-contributed commands). */
44
66
  packContributions: ReadonlyMap<string, string>;
45
- /** User's `sharkcraft.config.ts surface{}` block (may be undefined for a fresh repo). */
67
+ /**
68
+ * The EFFECTIVE `surface{}` block: the active profile's lists merged with the
69
+ * project config's (may be undefined for a fresh repo).
70
+ */
46
71
  surfaceConfig: ISurfaceConfig | undefined;
72
+ /**
73
+ * True only inside SharkCraft's OWN repository — `detectSharkcraftRepo`, the
74
+ * one host authority. Everywhere else a tool-maintenance command resolves
75
+ * experimental with source {@link TierSource.ToolMaintenance}.
76
+ */
77
+ isToolRepo: boolean;
78
+ /**
79
+ * The project config's OWN `surface.enabled` / `surface.disabled`, before the
80
+ * profile merge. The resolver needs the layer for exactly one rule: an
81
+ * explicit config `enabled` overrides a PROFILE's deny, never a config deny.
82
+ * Absent = `surfaceConfig` IS the project config (no profile layer).
83
+ */
84
+ explicitSurface?: Pick<ISurfaceConfig, 'enabled' | 'disabled'>;
47
85
  }
48
86
  /**
49
87
  * Mechanically derive a command's tier.
@@ -52,36 +90,61 @@ export interface ITierResolverContext {
52
90
  *
53
91
  * 1. Bootstrap set → Core.
54
92
  * 2. Spine pipeline reference → Core.
55
- * 3. Pack contribution → Experimental (unless in surface.enabled).
56
- * 4. Explicit catalog `tier` override that value (cannot demote Core).
57
- * 5. Catalog overlay `hidden` verdict Experimental.
58
- * 6. Otherwise Extended.
93
+ * 3. A `surface.disabled` selector → Experimental, source `disabled`
94
+ * (never a bootstrap command or one of its subverbs; an explicit config
95
+ * `enabled` overrides a PROFILE's deny, never a config deny).
96
+ * 4. A tool-maintenance command outside SharkCraft's own repository
97
+ * Experimental, source `tool-maintenance` (unless in surface.enabled).
98
+ * 5. Pack contribution → Experimental (unless in surface.enabled).
99
+ * 6. Explicit catalog `tier` override → that value (cannot demote Core).
100
+ * 7. Catalog overlay `hidden` verdict → Experimental.
101
+ * 8. Otherwise → Extended.
59
102
  *
60
- * After derivation, the user's `surface.enabled` / `surface.hidden`
61
- * config can flip a single dimension:
103
+ * Every `enabled` / `hidden` / `disabled` entry is a selector — an exact path
104
+ * (or alias spelling) or `<group> *` — matched by the ONE matcher
105
+ * (`surface-selector.ts`).
62
106
  *
63
- * - `surface.enabled` contains the command promote Experimental
64
- * to Extended (callable, visible in `surface list` only `--help`
65
- * visibility is governed by the catalog's own defaultShowInHelp).
66
- * - `surface.hidden` contains the command AND tier is Extended →
67
- * remains Extended-tier but hidden from `--help`. The visibility
68
- * flip is read by the help renderer, not by the tier resolver
69
- * directly.
107
+ * After derivation, `surface.hidden` flips `--help` visibility of an Extended
108
+ * command (read by the summary); it never changes callability.
70
109
  *
71
110
  * Core commands cannot be hidden or disabled. Attempts to do so are
72
111
  * surfaced as warnings by `shrk doctor` and `shrk surface list --json`.
73
112
  */
74
113
  export declare function resolveTier(entry: ICommandCatalogEntry, context: ITierResolverContext): ITierResolution;
114
+ /**
115
+ * Tier of a command-index path. `entry` is the path's base catalog row, or
116
+ * `undefined` for a registered command the catalog does not document — which
117
+ * still gets the bootstrap / spine / deny / pack derivation, and otherwise
118
+ * resolves Extended with {@link TierSource.Uncatalogued}. `aliases` are the
119
+ * path's alias spellings: a selector naming an alias names the command.
120
+ */
121
+ export declare function resolveTierForPath(path: string, entry: ICommandCatalogEntry | undefined, context: ITierResolverContext, aliases?: readonly string[]): ITierResolution;
122
+ /**
123
+ * A bootstrap command or one of its subverbs (`surface allow`, `doctor
124
+ * suppress`). A deny selector never applies to one: `surface deny 'surface *'`
125
+ * must not lock the user out of the verb that undoes it.
126
+ */
127
+ export declare function isBootstrapFamily(name: string): boolean;
128
+ /**
129
+ * THE deny decision: the `surface.disabled` selector that denies a command
130
+ * named by any of `names` (its path plus alias spellings), with the layer that
131
+ * declared it — or `undefined` when nothing denies it.
132
+ *
133
+ * - a config deny always wins (even over a config `enabled` — the summary
134
+ * warns `enable-disable-conflict`);
135
+ * - a deny only the active PROFILE declares is overridden by an explicit
136
+ * config `enabled` match ("config wins over the profile").
137
+ */
138
+ export declare function surfaceDenial(names: readonly string[], context: ITierResolverContext): ISurfaceDenial | undefined;
75
139
  /**
76
140
  * Is the command callable from the CLI / MCP in the current
77
141
  * surface configuration?
78
142
  *
79
143
  * - Core: always callable.
80
144
  * - Extended: always callable.
81
- * - Experimental: callable only if in `surface.enabled`.
82
- *
83
- * The resolver's promotion of Experimental → Extended already accounts
84
- * for `enabled[]`, so this is a simple tier check.
145
+ * - Experimental: callable only if in `surface.enabled` (the resolver has
146
+ * already promoted an enabled command to Extended — and never promotes a
147
+ * denied one).
85
148
  */
86
149
  export declare function isCallable(resolution: ITierResolution): boolean;
87
150
  /**
@@ -92,9 +155,9 @@ export declare function isCallable(resolution: ITierResolution): boolean;
92
155
  * checks the config and consults `defaultShowInHelp(entry)`).
93
156
  * - Experimental: never visible in `--help`; only in `surface list`.
94
157
  *
95
- * The caller still consults `defaultShowInHelp(entry)` for the
96
- * underlying surface/lifecycle gating; this function answers "does
97
- * the tier permit visibility at all?".
158
+ * The caller still consults the catalog's help rule for the underlying
159
+ * surface/lifecycle gating; this function answers "does the tier permit
160
+ * visibility at all?".
98
161
  */
99
162
  export declare function isVisibleInDefaultHelp(resolution: ITierResolution, hiddenByConfig: boolean): boolean;
100
163
  //# sourceMappingURL=tier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tier.d.ts","sourceRoot":"","sources":["../../src/surface/tier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,WAAW,EACX,KAAK,oBAAoB,EAC1B,MAAM,gCAAgC,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAW9C,CAAC;AAEH;;;;GAIG;AACH,oBAAY,UAAU;IACpB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,gBAAgB,sBAAsB;IACtC,QAAQ,aAAa;IACrB,MAAM,gBAAgB;IACtB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,IAAI,EAAE,WAAW,CAAC;IAClB,sCAAsC;IACtC,MAAM,EAAE,UAAU,CAAC;IACnB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,kGAAkG;IAClG,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,qFAAqF;IACrF,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,yFAAyF;IACzF,aAAa,EAAE,cAAc,GAAG,SAAS,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,oBAAoB,GAC5B,eAAe,CA4EjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAK/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,eAAe,EAC3B,cAAc,EAAE,OAAO,GACtB,OAAO,CAKT"}
1
+ {"version":3,"file":"tier.d.ts","sourceRoot":"","sources":["../../src/surface/tier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,WAAW,EAEX,KAAK,oBAAoB,EAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAW9C,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB,mEAAmE,CAAC;AAExG;;;;GAIG;AACH,oBAAY,UAAU;IACpB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,gBAAgB,sBAAsB;IACtC,QAAQ,aAAa;IACrB,MAAM,gBAAgB;IACtB,OAAO,YAAY;IACnB;;;OAGG;IACH,YAAY,iBAAiB;IAC7B;;;;;OAKG;IACH,eAAe,qBAAqB;IACpC,2EAA2E;IAC3E,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,IAAI,EAAE,WAAW,CAAC;IAClB,sCAAsC;IACtC,MAAM,EAAE,UAAU,CAAC;IACnB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wGAAwG;IACxG,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,kGAAkG;IAClG,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,qFAAqF;IACrF,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C;;;OAGG;IACH,aAAa,EAAE,cAAc,GAAG,SAAS,CAAC;IAC1C;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;CAChE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,oBAAoB,GAC5B,eAAe,CAEjB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,oBAAoB,GAAG,SAAS,EACvC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,GAAE,SAAS,MAAM,EAAO,GAC9B,eAAe,CAEjB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE,oBAAoB,GAC5B,cAAc,GAAG,SAAS,CAQ5B;AAiID;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAK/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,eAAe,EAC3B,cAAc,EAAE,OAAO,GACtB,OAAO,CAKT"}
@@ -1,4 +1,6 @@
1
- import { CommandTier, } from "../commands/command-catalog.js";
1
+ import { CommandTier, isToolMaintenance, } from "../commands/command-catalog.js";
2
+ import { SurfaceLayer } from "./surface-layer.js";
3
+ import { firstMatchingSelector } from "./surface-selector.js";
2
4
  /**
3
5
  * Bootstrap commands. Always tier=Core regardless of any other
4
6
  * derivation rule. Listed here (and only here) so the rule is mechanical:
@@ -24,6 +26,11 @@ export const BOOTSTRAP_COMMANDS = Object.freeze([
24
26
  // completeness so `surface list` surfaces it.
25
27
  '--about',
26
28
  ]);
29
+ /**
30
+ * The detail of a tool-maintenance command resolved outside SharkCraft's own
31
+ * repository (round 11 §5.1).
32
+ */
33
+ export const TOOL_MAINTENANCE_DETAIL = 'maintains SharkCraft itself; does not apply to this repository';
27
34
  /**
28
35
  * Source explanations for tier classification. Returned by the
29
36
  * resolver so `shrk surface explain <name>` can describe why a
@@ -37,6 +44,20 @@ export var TierSource;
37
44
  TierSource["Override"] = "override";
38
45
  TierSource["Hidden"] = "hidden-flag";
39
46
  TierSource["Default"] = "default";
47
+ /**
48
+ * A registered, dispatchable command with no catalog row. Extended (it runs),
49
+ * flagged so `commands doctor` / `surface list` point at the missing row.
50
+ */
51
+ TierSource["Uncatalogued"] = "uncatalogued";
52
+ /**
53
+ * A command that maintains SharkCraft itself (catalog audience
54
+ * `tool-maintenance`), resolved OUTSIDE SharkCraft's own repository:
55
+ * experimental (gated, hidden from `--help`) unless `surface.enabled` names
56
+ * it. Invoking it exits 78 through the surface gate — never a check failure.
57
+ */
58
+ TierSource["ToolMaintenance"] = "tool-maintenance";
59
+ /** Denied by a `surface.disabled` selector (project config or profile). */
60
+ TierSource["Disabled"] = "disabled";
40
61
  })(TierSource || (TierSource = {}));
41
62
  /**
42
63
  * Mechanically derive a command's tier.
@@ -45,27 +66,70 @@ export var TierSource;
45
66
  *
46
67
  * 1. Bootstrap set → Core.
47
68
  * 2. Spine pipeline reference → Core.
48
- * 3. Pack contribution → Experimental (unless in surface.enabled).
49
- * 4. Explicit catalog `tier` override that value (cannot demote Core).
50
- * 5. Catalog overlay `hidden` verdict Experimental.
51
- * 6. Otherwise Extended.
69
+ * 3. A `surface.disabled` selector → Experimental, source `disabled`
70
+ * (never a bootstrap command or one of its subverbs; an explicit config
71
+ * `enabled` overrides a PROFILE's deny, never a config deny).
72
+ * 4. A tool-maintenance command outside SharkCraft's own repository
73
+ * Experimental, source `tool-maintenance` (unless in surface.enabled).
74
+ * 5. Pack contribution → Experimental (unless in surface.enabled).
75
+ * 6. Explicit catalog `tier` override → that value (cannot demote Core).
76
+ * 7. Catalog overlay `hidden` verdict → Experimental.
77
+ * 8. Otherwise → Extended.
52
78
  *
53
- * After derivation, the user's `surface.enabled` / `surface.hidden`
54
- * config can flip a single dimension:
79
+ * Every `enabled` / `hidden` / `disabled` entry is a selector — an exact path
80
+ * (or alias spelling) or `<group> *` — matched by the ONE matcher
81
+ * (`surface-selector.ts`).
55
82
  *
56
- * - `surface.enabled` contains the command promote Experimental
57
- * to Extended (callable, visible in `surface list` only `--help`
58
- * visibility is governed by the catalog's own defaultShowInHelp).
59
- * - `surface.hidden` contains the command AND tier is Extended →
60
- * remains Extended-tier but hidden from `--help`. The visibility
61
- * flip is read by the help renderer, not by the tier resolver
62
- * directly.
83
+ * After derivation, `surface.hidden` flips `--help` visibility of an Extended
84
+ * command (read by the summary); it never changes callability.
63
85
  *
64
86
  * Core commands cannot be hidden or disabled. Attempts to do so are
65
87
  * surfaced as warnings by `shrk doctor` and `shrk surface list --json`.
66
88
  */
67
89
  export function resolveTier(entry, context) {
68
- const name = entry.command;
90
+ return deriveTier(entry.command, entry, context, []);
91
+ }
92
+ /**
93
+ * Tier of a command-index path. `entry` is the path's base catalog row, or
94
+ * `undefined` for a registered command the catalog does not document — which
95
+ * still gets the bootstrap / spine / deny / pack derivation, and otherwise
96
+ * resolves Extended with {@link TierSource.Uncatalogued}. `aliases` are the
97
+ * path's alias spellings: a selector naming an alias names the command.
98
+ */
99
+ export function resolveTierForPath(path, entry, context, aliases = []) {
100
+ return deriveTier(path, entry, context, aliases);
101
+ }
102
+ /**
103
+ * A bootstrap command or one of its subverbs (`surface allow`, `doctor
104
+ * suppress`). A deny selector never applies to one: `surface deny 'surface *'`
105
+ * must not lock the user out of the verb that undoes it.
106
+ */
107
+ export function isBootstrapFamily(name) {
108
+ return BOOTSTRAP_COMMANDS.some((b) => name === b || name.startsWith(`${b} `));
109
+ }
110
+ /**
111
+ * THE deny decision: the `surface.disabled` selector that denies a command
112
+ * named by any of `names` (its path plus alias spellings), with the layer that
113
+ * declared it — or `undefined` when nothing denies it.
114
+ *
115
+ * - a config deny always wins (even over a config `enabled` — the summary
116
+ * warns `enable-disable-conflict`);
117
+ * - a deny only the active PROFILE declares is overridden by an explicit
118
+ * config `enabled` match ("config wins over the profile").
119
+ */
120
+ export function surfaceDenial(names, context) {
121
+ const explicit = context.explicitSurface ?? context.surfaceConfig;
122
+ const configSelector = firstMatchingSelector(explicit?.disabled, names);
123
+ if (configSelector !== undefined)
124
+ return { selector: configSelector, origin: SurfaceLayer.Config };
125
+ const mergedSelector = firstMatchingSelector(context.surfaceConfig?.disabled, names);
126
+ if (mergedSelector === undefined)
127
+ return undefined;
128
+ if (firstMatchingSelector(explicit?.enabled, names) !== undefined)
129
+ return undefined;
130
+ return { selector: mergedSelector, origin: SurfaceLayer.Profile };
131
+ }
132
+ function deriveTier(name, entry, context, aliases) {
69
133
  // 1. Bootstrap set always wins.
70
134
  if (BOOTSTRAP_COMMANDS.includes(name)) {
71
135
  return {
@@ -82,10 +146,33 @@ export function resolveTier(entry, context) {
82
146
  detail: 'referenced from a spine pipeline',
83
147
  };
84
148
  }
85
- // 3. Pack contributions default to Experimental, unless explicitly enabled.
149
+ const names = [name, ...aliases];
150
+ // 3. A deny selector. Not callable, whatever the other derivations say.
151
+ const deniedBy = isBootstrapFamily(name) ? undefined : surfaceDenial(names, context);
152
+ if (deniedBy) {
153
+ return {
154
+ tier: CommandTier.Experimental,
155
+ source: TierSource.Disabled,
156
+ detail: deniedBy.origin === SurfaceLayer.Config
157
+ ? `disabled by surface.disabled ('${deniedBy.selector}')`
158
+ : `disabled by the ${profileLabel(context)} surface profile ('${deniedBy.selector}')`,
159
+ configApplied: true,
160
+ deniedBy,
161
+ };
162
+ }
163
+ const enabled = firstMatchingSelector(context.surfaceConfig?.enabled, names) !== undefined;
164
+ // 4. A command that maintains SharkCraft itself, outside SharkCraft's repo.
165
+ if (entry && isToolMaintenance(entry) && !context.isToolRepo) {
166
+ return {
167
+ tier: enabled ? CommandTier.Extended : CommandTier.Experimental,
168
+ source: TierSource.ToolMaintenance,
169
+ detail: enabled ? `${TOOL_MAINTENANCE_DETAIL} — enabled in surface.enabled` : TOOL_MAINTENANCE_DETAIL,
170
+ ...(enabled ? { configApplied: true } : {}),
171
+ };
172
+ }
173
+ // 5. Pack contributions default to Experimental, unless explicitly enabled.
86
174
  const pack = context.packContributions.get(name);
87
175
  if (pack !== undefined) {
88
- const enabled = (context.surfaceConfig?.enabled ?? []).includes(name);
89
176
  return {
90
177
  tier: enabled ? CommandTier.Extended : CommandTier.Experimental,
91
178
  source: TierSource.PackContribution,
@@ -95,11 +182,23 @@ export function resolveTier(entry, context) {
95
182
  configApplied: enabled,
96
183
  };
97
184
  }
98
- // 4. Explicit override on the catalog entry.
185
+ // No catalog row: the derivations above are all that apply.
186
+ if (!entry) {
187
+ return {
188
+ tier: CommandTier.Extended,
189
+ source: TierSource.Uncatalogued,
190
+ // `commands doctor` maintains SharkCraft itself (exit 78 elsewhere): only
191
+ // inside the tool repository is it the remedy. Outside, the missing row
192
+ // is SharkCraft's catalog gap — nothing this repository can fix.
193
+ detail: context.isToolRepo
194
+ ? 'registered but has no catalog row — run `shrk commands doctor`'
195
+ : "registered but missing from SharkCraft's command catalog — a SharkCraft catalog gap, not a problem in this repository",
196
+ };
197
+ }
198
+ // 6. Explicit override on the catalog entry.
99
199
  if (entry.tier !== undefined) {
100
200
  // Cannot demote Core. The override applies for Extended/Experimental only.
101
201
  if (entry.tier === CommandTier.Experimental) {
102
- const enabled = (context.surfaceConfig?.enabled ?? []).includes(name);
103
202
  return {
104
203
  tier: enabled ? CommandTier.Extended : CommandTier.Experimental,
105
204
  source: TierSource.Override,
@@ -113,14 +212,13 @@ export function resolveTier(entry, context) {
113
212
  detail: `catalog override (tier=${entry.tier})`,
114
213
  };
115
214
  }
116
- // 5. Catalog overlay `hidden` verdict implies Experimental.
215
+ // 7. Catalog overlay `hidden` verdict implies Experimental.
117
216
  // We can't import the overlay here without a circular dep risk; the
118
217
  // caller passes a precomputed view via context. For now, we rely on
119
218
  // the catalog's surface=Internal/Legacy combined with showInDefaultHelp.
120
219
  // If the entry is marked showInDefaultHelp: false explicitly, that's a
121
220
  // weaker signal than the overlay but still pushes toward Experimental.
122
221
  if (entry.showInDefaultHelp === false) {
123
- const enabled = (context.surfaceConfig?.enabled ?? []).includes(name);
124
222
  return {
125
223
  tier: enabled ? CommandTier.Extended : CommandTier.Experimental,
126
224
  source: TierSource.Hidden,
@@ -128,23 +226,27 @@ export function resolveTier(entry, context) {
128
226
  configApplied: enabled,
129
227
  };
130
228
  }
131
- // 6. Default — Extended.
229
+ // 8. Default — Extended. No `detail`: it was the same placeholder sentence on
230
+ // every one of ~436 rows, so the listing could not say what anything does.
231
+ // `surface explain` renders the source instead.
132
232
  return {
133
233
  tier: CommandTier.Extended,
134
234
  source: TierSource.Default,
135
- detail: 'default for catalog entries not in spine and not pack-contributed',
136
235
  };
137
236
  }
237
+ function profileLabel(context) {
238
+ const id = context.surfaceConfig?.profile;
239
+ return id ? `'${id}'` : 'active';
240
+ }
138
241
  /**
139
242
  * Is the command callable from the CLI / MCP in the current
140
243
  * surface configuration?
141
244
  *
142
245
  * - Core: always callable.
143
246
  * - Extended: always callable.
144
- * - Experimental: callable only if in `surface.enabled`.
145
- *
146
- * The resolver's promotion of Experimental → Extended already accounts
147
- * for `enabled[]`, so this is a simple tier check.
247
+ * - Experimental: callable only if in `surface.enabled` (the resolver has
248
+ * already promoted an enabled command to Extended — and never promotes a
249
+ * denied one).
148
250
  */
149
251
  export function isCallable(resolution) {
150
252
  return (resolution.tier === CommandTier.Core ||
@@ -158,9 +260,9 @@ export function isCallable(resolution) {
158
260
  * checks the config and consults `defaultShowInHelp(entry)`).
159
261
  * - Experimental: never visible in `--help`; only in `surface list`.
160
262
  *
161
- * The caller still consults `defaultShowInHelp(entry)` for the
162
- * underlying surface/lifecycle gating; this function answers "does
163
- * the tier permit visibility at all?".
263
+ * The caller still consults the catalog's help rule for the underlying
264
+ * surface/lifecycle gating; this function answers "does the tier permit
265
+ * visibility at all?".
164
266
  */
165
267
  export function isVisibleInDefaultHelp(resolution, hiddenByConfig) {
166
268
  if (resolution.tier === CommandTier.Core)
@@ -49,6 +49,11 @@ export declare function sanitizeFlagNames(rawArgv: readonly string[]): string[];
49
49
  /**
50
50
  * Extract the leading command path (top-level + first
51
51
  * subcommand if present, no flags) from raw argv.
52
+ *
53
+ * `maxTokens` defaults to 2, which is what the usage log records. The
54
+ * verdict-verb check passes `VERDICT_PATH_TOKENS` (3) so a three-token verdict
55
+ * verb (`docs references check`) can be told apart from its informational
56
+ * siblings (`docs references list`).
52
57
  */
53
- export declare function extractCommandPath(rawArgv: readonly string[]): string;
58
+ export declare function extractCommandPath(rawArgv: readonly string[], maxTokens?: number): string;
54
59
  //# sourceMappingURL=usage-log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage-log.d.ts","sourceRoot":"","sources":["../../src/usage/usage-log.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,sBAAsB,QAAmB,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,OAAO,gBAAgB,CAAC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAqB3D;AAcD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAkBtE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAQrE"}
1
+ {"version":3,"file":"usage-log.d.ts","sourceRoot":"","sources":["../../src/usage/usage-log.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,gBAAgB,wBAAwB,CAAC;AACtD,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,sBAAsB,QAAmB,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,OAAO,gBAAgB,CAAC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAqB3D;AAcD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAkBtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,SAAI,GAAG,MAAM,CAQpF"}
@@ -91,13 +91,18 @@ export function sanitizeFlagNames(rawArgv) {
91
91
  /**
92
92
  * Extract the leading command path (top-level + first
93
93
  * subcommand if present, no flags) from raw argv.
94
+ *
95
+ * `maxTokens` defaults to 2, which is what the usage log records. The
96
+ * verdict-verb check passes `VERDICT_PATH_TOKENS` (3) so a three-token verdict
97
+ * verb (`docs references check`) can be told apart from its informational
98
+ * siblings (`docs references list`).
94
99
  */
95
- export function extractCommandPath(rawArgv) {
100
+ export function extractCommandPath(rawArgv, maxTokens = 2) {
96
101
  const tokens = [];
97
102
  for (const t of rawArgv) {
98
103
  if (t.startsWith('-'))
99
104
  break;
100
- if (tokens.length >= 2)
105
+ if (tokens.length >= maxTokens)
101
106
  break;
102
107
  tokens.push(t);
103
108
  }
@@ -26,6 +26,15 @@ export interface IRunValidationLoopResult {
26
26
  commandsRun: IValidationCommandResult[];
27
27
  commandsFailed: string[];
28
28
  boundaryViolations: number;
29
+ /**
30
+ * THE boundary verdict (`runBoundaryCheck`, what `check boundaries`
31
+ * reports): `not-verified` when zero rules loaded or part of a rule's scope
32
+ * was never examined — never a silent `boundaryViolations: 0`. Absent when
33
+ * the scan itself could not run.
34
+ */
35
+ boundaryVerdict?: 'pass' | 'fail' | 'not-verified' | 'usage-error';
36
+ /** Why the boundary verdict is not a clean pass, when it is not. */
37
+ boundaryShortfalls?: readonly string[];
29
38
  reportPath?: string;
30
39
  }
31
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"run-validation-loop.d.ts","sourceRoot":"","sources":["../../src/validation/run-validation-loop.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,2EAA2E;IAC3E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,wBAAwB,EAAE,CAAC;IACxC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CAyGnC"}
1
+ {"version":3,"file":"run-validation-loop.d.ts","sourceRoot":"","sources":["../../src/validation/run-validation-loop.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,2EAA2E;IAC3E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,wBAAwB,EAAE,CAAC;IACxC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;IACnE,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CA2GnC"}
@@ -75,19 +75,22 @@ export async function runValidationLoop(options) {
75
75
  out.passed = false;
76
76
  }
77
77
  }
78
- // Boundary scan as a non-fatal warning (mirrors `shrk apply --validate`).
78
+ // Boundary scan as a non-fatal warning (mirrors `shrk apply --validate`)
79
+ // through THE boundary orchestrator (round 11 review R11-GAP-3). It used to
80
+ // evaluate without the tsconfig alias map, skip unread files, and report
81
+ // `boundaryViolations: 0` over zero rules; zero rules or an unexamined scope
82
+ // is now `boundaryVerdict: not-verified` (a warning), an errored rule fails.
79
83
  try {
80
- const { inspectSharkcraft } = await import('@shrkcrft/inspector');
81
- const { evaluateBoundaries, scanImports } = await import('@shrkcrft/boundaries');
84
+ const { inspectSharkcraft, runBoundaryCheck } = await import('@shrkcrft/inspector');
82
85
  const inspection = await inspectSharkcraft({ cwd: options.cwd });
83
- if (inspection.boundaryRegistry.size() > 0) {
84
- const scan = scanImports({ projectRoot: options.cwd });
85
- const evalResult = evaluateBoundaries(scan, inspection.boundaryRegistry.list());
86
- out.boundaryViolations = evalResult.violations.length;
87
- out.warnings += evalResult.counts.warning;
88
- if (evalResult.counts.error > 0)
89
- out.passed = false;
90
- }
86
+ const evalResult = runBoundaryCheck(inspection);
87
+ out.boundaryViolations = evalResult.violations.length;
88
+ out.boundaryVerdict = evalResult.verdict;
89
+ if (evalResult.shortfalls.length > 0)
90
+ out.boundaryShortfalls = evalResult.shortfalls;
91
+ out.warnings += evalResult.counts.warning + (evalResult.verdict === 'not-verified' ? 1 : 0);
92
+ if (evalResult.counts.error > 0 || evalResult.loadIssues.length > 0)
93
+ out.passed = false;
91
94
  }
92
95
  catch {
93
96
  // boundary scan is best-effort.
@@ -21,16 +21,15 @@ export interface IEmittedTypecheckResult {
21
21
  }
22
22
  /**
23
23
  * Typecheck a set of EMITTED (not-yet-written) files against the project's
24
- * detected tsconfig, without touching disk. Builds a `ts.Program` whose root
25
- * names are the emitted files, over a compiler host that overlays the rendered
26
- * bodies for those paths and reads everything else (imports, lib) from disk — so
27
- * a scaffold that references a real project symbol resolves, and a template bug
28
- * (bad syntax, a dangling import, a type mismatch) surfaces BEFORE apply instead
29
- * of at the human's next build.
24
+ * detected tsconfig, without touching disk a scaffold that references a real
25
+ * project symbol resolves, and a template bug (bad syntax, a dangling import, a
26
+ * type mismatch) surfaces BEFORE apply instead of at the human's next build.
30
27
  *
31
- * Only diagnostics located IN the emitted files are reported; pre-existing
32
- * errors elsewhere in the project are ignored (this is a generation gate, not a
33
- * whole-repo typecheck).
28
+ * A thin wrapper over the ONE in-process TypeScript check,
29
+ * `typecheckFiles` (`@shrkcrft/inspector`): the emitted bodies are passed as
30
+ * an overlay and only diagnostics IN the emitted files are reported —
31
+ * pre-existing errors elsewhere in the project are ignored (this is a
32
+ * generation gate, not a whole-repo typecheck).
34
33
  */
35
34
  export declare function typecheckEmittedFiles(projectRoot: string, files: readonly IEmittedFile[]): IEmittedTypecheckResult;
36
35
  //# sourceMappingURL=typecheck-emitted.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typecheck-emitted.d.ts","sourceRoot":"","sources":["../../src/validation/typecheck-emitted.ts"],"names":[],"mappings":"AAIA,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC1C,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,YAAY,EAAE,GAC7B,uBAAuB,CAmFzB"}
1
+ {"version":3,"file":"typecheck-emitted.d.ts","sourceRoot":"","sources":["../../src/validation/typecheck-emitted.ts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC1C,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,YAAY,EAAE,GAC7B,uBAAuB,CAczB"}