@shrkcrft/cli 0.1.0-alpha.29 → 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 +76 -0
  20. package/dist/commands/baseline.command.d.ts.map +1 -1
  21. package/dist/commands/baseline.command.js +599 -75
  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 +164 -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 +1260 -324
  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 +8 -1
  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 +20 -0
  77. package/dist/commands/docs-references.command.d.ts.map +1 -0
  78. package/dist/commands/docs-references.command.js +520 -0
  79. package/dist/commands/doctor.command.d.ts.map +1 -1
  80. package/dist/commands/doctor.command.js +60 -5
  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 +54 -0
  99. package/dist/commands/gates.command.d.ts.map +1 -1
  100. package/dist/commands/gates.command.js +1314 -64
  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 +62 -0
  104. package/dist/commands/generated.command.d.ts.map +1 -1
  105. package/dist/commands/generated.command.js +639 -156
  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 +203 -25
  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 +362 -74
  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 +67 -0
  328. package/dist/gates/gate-rule-globs.d.ts.map +1 -0
  329. package/dist/gates/gate-rule-globs.js +139 -0
  330. package/dist/gates/gate-rule-view.d.ts +25 -6
  331. package/dist/gates/gate-rule-view.d.ts.map +1 -1
  332. package/dist/gates/gate-rule-view.js +105 -77
  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 +225 -4
  370. package/dist/gates/rule-coverage.d.ts.map +1 -1
  371. package/dist/gates/rule-coverage.js +610 -43
  372. package/dist/gates/run-gate-planes.d.ts +58 -0
  373. package/dist/gates/run-gate-planes.d.ts.map +1 -0
  374. package/dist/gates/run-gate-planes.js +403 -0
  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 +204 -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,7 +1,11 @@
1
- import { type IBaselineRule, type IGeneratedArtifactRule, type IPolicyRule, type IRegistrationIdiom, type IRegistryDeclaration, type IRuleSelfTest, type IWiringRule } from '@shrkcrft/core';
2
- /** Which data-defined plane a rule belongs to. */
3
- export type GatePlane = 'wiring' | 'policy' | 'registry' | 'registration' | 'baseline' | 'generated';
4
- /** Every plane, in the order `shrk gates list` prints them. */
1
+ import { type IBaselineRule, type IDocReferenceRule, type IGeneratedArtifactRule, type IPolicyRule, type IRegistrationIdiom, type IRegistryDeclaration, type IRuleSelfTest, type IWiringRule } from '@shrkcrft/core';
2
+ import { type GatePlane } from '@shrkcrft/config';
3
+ /** Which data-defined plane a rule belongs to THE config-schema type (`@shrkcrft/config`). */
4
+ export type { GatePlane } from '@shrkcrft/config';
5
+ /**
6
+ * Every plane, in the order `shrk gates list` prints them — THE list beside
7
+ * the config schema (`GATE_PLANE_ORDER`), never a CLI copy of it.
8
+ */
5
9
  export declare const GATE_PLANES: readonly GatePlane[];
6
10
  /**
7
11
  * One data-defined rule, normalized across planes.
@@ -17,9 +21,14 @@ export interface IGateRuleView {
17
21
  readonly severity: 'error' | 'warning';
18
22
  /** True when a zero-match is a hard failure rather than a loud skip. */
19
23
  readonly failOnEmpty: boolean;
24
+ /**
25
+ * True when an EMPTY result is the rule's passing state (a fence). The
26
+ * loud-skip contract is inverted for these, and only for these.
27
+ */
28
+ readonly expectEmpty?: boolean;
20
29
  readonly selfTest?: IRuleSelfTest;
21
30
  /** The underlying rule, for the plane-specific explainer. */
22
- readonly raw: IWiringRule | IPolicyRule | IRegistryDeclaration | IRegistrationIdiom | IBaselineRule | IGeneratedArtifactRule;
31
+ readonly raw: IWiringRule | IPolicyRule | IRegistryDeclaration | IRegistrationIdiom | IBaselineRule | IGeneratedArtifactRule | IDocReferenceRule;
23
32
  }
24
33
  /** The config planes this view is built from. */
25
34
  export interface IGatePlanes {
@@ -29,7 +38,17 @@ export interface IGatePlanes {
29
38
  readonly registrationGraph?: readonly IRegistrationIdiom[];
30
39
  readonly baselines?: readonly IBaselineRule[];
31
40
  readonly generatedArtifacts?: readonly IGeneratedArtifactRule[];
41
+ readonly docReferences?: readonly IDocReferenceRule[];
32
42
  }
33
- /** Flatten every declared rule across every plane into one iterable list. */
43
+ /** Flatten every declared rule across every plane into one iterable list, in {@link GATE_PLANES} order. */
34
44
  export declare function collectGateRules(planes: IGatePlanes): IGateRuleView[];
45
+ /**
46
+ * The "` · scan: code (N chars blanked)`" suffix for an explain line.
47
+ *
48
+ * A zone is the one setting that legitimately makes a rule match LESS while
49
+ * still reading green, so every surface that reports what a rule extracted also
50
+ * reports what the zone removed to get there. Empty string when the rule scans
51
+ * raw text, so an unzoned rule's output is byte-identical to before.
52
+ */
53
+ export declare function scanNote(zone?: string, blankedChars?: number): string;
35
54
  //# sourceMappingURL=gate-rule-view.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gate-rule-view.d.ts","sourceRoot":"","sources":["../../src/gates/gate-rule-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAExB,kDAAkD;AAClD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;AAErG,+DAA+D;AAC/D,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAO3C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,EACR,WAAW,GACX,WAAW,GACX,oBAAoB,GACpB,kBAAkB,GAClB,aAAa,GACb,sBAAsB,CAAC;CAC5B;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACjE;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,EAAE,CAqErE"}
1
+ {"version":3,"file":"gate-rule-view.d.ts","sourceRoot":"","sources":["../../src/gates/gate-rule-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA2C,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE3F,gGAAgG;AAChG,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAAqB,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,EACR,WAAW,GACX,WAAW,GACX,oBAAoB,GACpB,kBAAkB,GAClB,aAAa,GACb,sBAAsB,GACtB,iBAAiB,CAAC;CACvB;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAChE,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACvD;AA4GD,2GAA2G;AAC3G,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,EAAE,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAIrE"}
@@ -1,81 +1,109 @@
1
1
  import { failsWhenEmpty, } from '@shrkcrft/core';
2
- /** Every plane, in the order `shrk gates list` prints them. */
3
- export const GATE_PLANES = [
4
- 'wiring',
5
- 'policy',
6
- 'registry',
7
- 'registration',
8
- 'baseline',
9
- 'generated',
10
- ];
11
- /** Flatten every declared rule across every plane into one iterable list. */
12
- export function collectGateRules(planes) {
13
- const out = [];
14
- for (const r of planes.wiringRules ?? []) {
15
- out.push({
16
- id: r.id,
17
- plane: 'wiring',
18
- ...(r.description ? { description: r.description } : {}),
19
- severity: r.severity ?? 'error',
20
- failOnEmpty: failsWhenEmpty(r),
21
- ...(r.selfTest ? { selfTest: r.selfTest } : {}),
22
- raw: r,
23
- });
24
- }
25
- for (const r of planes.policyRules ?? []) {
26
- out.push({
27
- id: r.id,
28
- plane: 'policy',
29
- ...(r.description ? { description: r.description } : {}),
30
- severity: r.severity ?? 'error',
31
- failOnEmpty: failsWhenEmpty(r),
32
- ...(r.selfTest ? { selfTest: r.selfTest } : {}),
33
- raw: r,
34
- });
35
- }
36
- for (const r of planes.registries ?? []) {
37
- out.push({
38
- id: r.name,
39
- plane: 'registry',
40
- ...(r.description ? { description: r.description } : {}),
41
- // A registry is an inventory, not a gate it never fails a build on its
42
- // own, so it carries no severity of its own.
2
+ import { GATE_PLANE_CONFIG_KEY, GATE_PLANE_ORDER } from '@shrkcrft/config';
3
+ /**
4
+ * Every plane, in the order `shrk gates list` prints them — THE list beside
5
+ * the config schema (`GATE_PLANE_ORDER`), never a CLI copy of it.
6
+ */
7
+ export const GATE_PLANES = GATE_PLANE_ORDER;
8
+ /**
9
+ * One view builder per plane, keyed by {@link GatePlane} so the record is
10
+ * exhaustive: a plane added to the config list fails the build here until it
11
+ * has a builder. Each reads its rules under THE config key
12
+ * (`GATE_PLANE_CONFIG_KEY`) — no plane → key name is spelled in the CLI.
13
+ */
14
+ const PLANE_VIEWS = {
15
+ wiring: (planes) => (planes[GATE_PLANE_CONFIG_KEY.wiring] ?? []).map((r) => ({
16
+ id: r.id,
17
+ plane: 'wiring',
18
+ ...(r.description ? { description: r.description } : {}),
19
+ severity: r.severity ?? 'error',
20
+ failOnEmpty: failsWhenEmpty(r),
21
+ ...(r.selfTest ? { selfTest: r.selfTest } : {}),
22
+ raw: r,
23
+ })),
24
+ policy: (planes) => (planes[GATE_PLANE_CONFIG_KEY.policy] ?? []).map((r) => ({
25
+ id: r.id,
26
+ plane: 'policy',
27
+ ...(r.description ? { description: r.description } : {}),
28
+ severity: r.severity ?? 'error',
29
+ failOnEmpty: failsWhenEmpty(r),
30
+ ...(r.selfTest ? { selfTest: r.selfTest } : {}),
31
+ raw: r,
32
+ })),
33
+ registry: (planes) => (planes[GATE_PLANE_CONFIG_KEY.registry] ?? []).map((r) => ({
34
+ id: r.name,
35
+ plane: 'registry',
36
+ ...(r.description ? { description: r.description } : {}),
37
+ // A registry is an inventory, not a gate — it never fails a build on its
38
+ // own, so it carries no severity of its own. A `selfTest` still applies:
39
+ // an inventory whose selector went stale reports an empty registry as
40
+ // fact, which is worse than a failing gate because nothing looks wrong.
41
+ // `failOnEmpty` goes through the one shared helper; with no severity the
42
+ // default stays `false` (a loud skip), and an explicit `true` promotes it.
43
+ severity: 'warning',
44
+ failOnEmpty: failsWhenEmpty({
45
+ ...(r.failOnEmpty !== undefined ? { failOnEmpty: r.failOnEmpty } : {}),
43
46
  severity: 'warning',
44
- failOnEmpty: false,
45
- raw: r,
46
- });
47
- }
48
- for (const r of planes.registrationGraph ?? []) {
49
- out.push({
50
- id: r.name,
51
- plane: 'registration',
52
- ...(r.description ? { description: r.description } : {}),
47
+ }),
48
+ ...(r.selfTest ? { selfTest: r.selfTest } : {}),
49
+ raw: r,
50
+ })),
51
+ registration: (planes) => (planes[GATE_PLANE_CONFIG_KEY.registration] ?? []).map((r) => ({
52
+ id: r.name,
53
+ plane: 'registration',
54
+ ...(r.description ? { description: r.description } : {}),
55
+ severity: 'warning',
56
+ failOnEmpty: failsWhenEmpty({
57
+ ...(r.failOnEmpty !== undefined ? { failOnEmpty: r.failOnEmpty } : {}),
53
58
  severity: 'warning',
54
- failOnEmpty: false,
55
- raw: r,
56
- });
57
- }
58
- for (const r of planes.baselines ?? []) {
59
- out.push({
60
- id: r.id,
61
- plane: 'baseline',
62
- ...(r.description ? { description: r.description } : {}),
63
- severity: r.severity ?? 'error',
64
- failOnEmpty: failsWhenEmpty(r),
65
- ...(r.selfTest ? { selfTest: r.selfTest } : {}),
66
- raw: r,
67
- });
68
- }
69
- for (const r of planes.generatedArtifacts ?? []) {
70
- out.push({
71
- id: r.id,
72
- plane: 'generated',
73
- ...(r.description ? { description: r.description } : {}),
74
- severity: r.severity ?? 'error',
75
- failOnEmpty: failsWhenEmpty(r),
76
- ...(r.selfTest ? { selfTest: r.selfTest } : {}),
77
- raw: r,
78
- });
79
- }
80
- return out;
59
+ }),
60
+ ...(r.selfTest ? { selfTest: r.selfTest } : {}),
61
+ raw: r,
62
+ })),
63
+ baseline: (planes) => (planes[GATE_PLANE_CONFIG_KEY.baseline] ?? []).map((r) => ({
64
+ id: r.id,
65
+ plane: 'baseline',
66
+ ...(r.description ? { description: r.description } : {}),
67
+ severity: r.severity ?? 'error',
68
+ failOnEmpty: failsWhenEmpty(r),
69
+ ...(r.expectEmpty === true ? { expectEmpty: true } : {}),
70
+ ...(r.selfTest ? { selfTest: r.selfTest } : {}),
71
+ raw: r,
72
+ })),
73
+ generated: (planes) => (planes[GATE_PLANE_CONFIG_KEY.generated] ?? []).map((r) => ({
74
+ id: r.id,
75
+ plane: 'generated',
76
+ ...(r.description ? { description: r.description } : {}),
77
+ severity: r.severity ?? 'error',
78
+ failOnEmpty: failsWhenEmpty(r),
79
+ ...(r.selfTest ? { selfTest: r.selfTest } : {}),
80
+ raw: r,
81
+ })),
82
+ 'doc-reference': (planes) => (planes[GATE_PLANE_CONFIG_KEY['doc-reference']] ?? []).map((r) => ({
83
+ id: r.id,
84
+ plane: 'doc-reference',
85
+ ...(r.description ? { description: r.description } : {}),
86
+ severity: r.severity ?? 'error',
87
+ failOnEmpty: failsWhenEmpty(r),
88
+ ...(r.selfTest ? { selfTest: r.selfTest } : {}),
89
+ raw: r,
90
+ })),
91
+ };
92
+ /** Flatten every declared rule across every plane into one iterable list, in {@link GATE_PLANES} order. */
93
+ export function collectGateRules(planes) {
94
+ return GATE_PLANES.flatMap((plane) => PLANE_VIEWS[plane](planes));
95
+ }
96
+ /**
97
+ * The "` · scan: code (N chars blanked)`" suffix for an explain line.
98
+ *
99
+ * A zone is the one setting that legitimately makes a rule match LESS while
100
+ * still reading green, so every surface that reports what a rule extracted also
101
+ * reports what the zone removed to get there. Empty string when the rule scans
102
+ * raw text, so an unzoned rule's output is byte-identical to before.
103
+ */
104
+ export function scanNote(zone, blankedChars) {
105
+ if (!zone || zone === 'all')
106
+ return '';
107
+ const n = blankedChars ?? 0;
108
+ return ` · scan: ${zone} (${n} char${n === 1 ? '' : 's'} blanked)`;
81
109
  }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * One dead glob inside a gate rule, as `gates coverage` reports it (the
3
+ * `deadGlobUnits` of `sharkcraft.gate-coverage/v1`): an inclusion glob that
4
+ * selects nothing, or a negation that excludes nothing.
5
+ */
6
+ export interface ICoverageDeadGlob {
7
+ /** The side-qualified label — identical to the rule's `deadGlobs` entry (`declared: src/moved/*.ts`). */
8
+ readonly selector: string;
9
+ /** The glob as written (a negation keeps its `!`). */
10
+ readonly glob: string;
11
+ readonly negation: boolean;
12
+ /**
13
+ * Why it is dead: `matched 0 files`, `matches only files the list's
14
+ * negations exclude (N)`, or `excludes nothing — none of the N file(s) the
15
+ * other globs select match it`.
16
+ */
17
+ readonly reason: string;
18
+ }
19
+ //# sourceMappingURL=i-coverage-dead-glob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-coverage-dead-glob.d.ts","sourceRoot":"","sources":["../../src/gates/i-coverage-dead-glob.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,yGAAyG;IACzG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ /**
2
+ * A LIVE negation inside a gate rule and what it excludes, as `gates coverage`
3
+ * reports it (the `negations` of `sharkcraft.gate-coverage/v1`). The narrowing
4
+ * a `!` performs is printed (`excludes: !src/**\/*.spec.ts (512 files)`), so a
5
+ * reader sees what the rule does NOT measure.
6
+ */
7
+ export interface ICoverageNegation {
8
+ /** The side-qualified negation (`declared: !src/**\/*.spec.ts`). */
9
+ readonly selector: string;
10
+ /** Files it excludes from its own list's positive set (at least 1). */
11
+ readonly excludes: number;
12
+ }
13
+ //# sourceMappingURL=i-coverage-negation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-coverage-negation.d.ts","sourceRoot":"","sources":["../../src/gates/i-coverage-negation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import type { IRegistrationQueryVerdict } from '@shrkcrft/boundaries';
2
+ /** What `settleRegistrationGraph` needs to settle one registration-graph absence query. */
3
+ export interface IRegistrationQuerySettleInput<T extends {
4
+ readonly token: string;
5
+ }> {
6
+ /** The verdict verb (`wiring unprovided` / `wiring orphans`). */
7
+ readonly verb: string;
8
+ readonly verdict: IRegistrationQueryVerdict<T>;
9
+ /** The exit the findings propose (1 over an unprovided token; orphans never fail). */
10
+ readonly proposed: number;
11
+ /** The clean sentence — printed only when the settled exit is 0. */
12
+ readonly clean: string;
13
+ /** The query's own coverage subject (`unprovided` / `orphans`) — its row carries the findings. */
14
+ readonly subject: string;
15
+ /** How many idioms the graph was built from — the run's coverage. */
16
+ readonly idioms: number;
17
+ }
18
+ //# sourceMappingURL=i-registration-query-settle-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-registration-query-settle-input.d.ts","sourceRoot":"","sources":["../../src/gates/i-registration-query-settle-input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,2FAA2F;AAC3F,MAAM,WAAW,6BAA6B,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;IACjF,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAC/C,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kGAAkG;IAClG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { IUnitLiveness } from '@shrkcrft/core';
2
+ /**
3
+ * One rule's settled selector units, as a plane verb hands them to THE shared
4
+ * unit-state renderer (`unitStateNotes`): the rule id it prints them under and
5
+ * the rule's non-live units (`unitLiveness` on every plane engine's result).
6
+ */
7
+ export interface IUnitStateNoteRow {
8
+ readonly id: string;
9
+ readonly unitLiveness?: readonly IUnitLiveness[];
10
+ /**
11
+ * The rule is already reported as matching nothing (skipped / failed empty):
12
+ * its dead units are that verdict, never a second advisory line.
13
+ */
14
+ readonly reportedEmpty?: boolean;
15
+ }
16
+ //# sourceMappingURL=i-unit-state-note-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-unit-state-note-row.d.ts","sourceRoot":"","sources":["../../src/gates/i-unit-state-note-row.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
1
+ /**
2
+ * What THE shared unit-state renderer (`unitStateNotes`) found across a plane
3
+ * verb's rules — the printed block, the per-unit lines and the counts the
4
+ * verb's clean line reads.
5
+ */
6
+ export interface IUnitStateNotes {
7
+ /** Unmarked dead units of rules NOT already reported as matching nothing (advisory). */
8
+ readonly dead: number;
9
+ /** LOCAL `expectEmpty` markers whose target appeared — ✓ withheld, fails under `--fail-on-dead-units`. */
10
+ readonly localWentLive: number;
11
+ /** PACK markers whose target appeared — INFO, never a failure, never the consumer's to remove. */
12
+ readonly packWentLive: number;
13
+ /** The block to print (empty when there is nothing to say), each line `\n`-terminated. */
14
+ readonly text: string;
15
+ /**
16
+ * The same units as bare lines (`<rule id>: <formatUnitLiveness(u)>`, causes
17
+ * left to the caller's footer) — what a surface that prints NOTES instead of
18
+ * a block (finish, quality) decorates with its own `[advisory]` / `[info]`.
19
+ */
20
+ readonly deadLines: readonly string[];
21
+ readonly localWentLiveLines: readonly string[];
22
+ readonly packWentLiveLines: readonly string[];
23
+ /**
24
+ * The clauses a clean line must carry instead of its ✓ (`2 dead selector
25
+ * unit(s)`, `1 expectEmpty unit(s) went live — remove the markers`). Pack
26
+ * went-live units never withhold the ✓ (INFO).
27
+ */
28
+ readonly stale: readonly string[];
29
+ /** Rule ids with a dead or LOCAL went-live unit — their per-rule row reads `⚠`, never `✓`. */
30
+ readonly staleIds: ReadonlySet<string>;
31
+ }
32
+ //# sourceMappingURL=i-unit-state-notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-unit-state-notes.d.ts","sourceRoot":"","sources":["../../src/gates/i-unit-state-notes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0GAA0G;IAC1G,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,kGAAkG;IAClG,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,8FAA8F;IAC9F,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACxC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import type { IRegistryDeclaration } from '@shrkcrft/core';
2
+ import { type IRegistryInventory } from '@shrkcrft/boundaries';
3
+ /**
4
+ * Answer a `registry <name> list | exists | where | duplicates` query over an
5
+ * INCOMPLETE inventory: one whose source globs matched a file the reader did
6
+ * not read (over the read cap). Returns `undefined` when the answer is
7
+ * verified anyway, so the caller answers normally.
8
+ *
9
+ * Only a POSITIVE finding survives an incomplete read. An id found among the
10
+ * files read is declared, and a duplicate found there is a duplicate. Absence
11
+ * ("no", "not declared", "no duplicates") and the listing itself may be wrong,
12
+ * because the unread file can hold the id. So those are NOT VERIFIED (2),
13
+ * whatever guard flag was passed, and are settled through the one coverage
14
+ * guard (`readScopeCoverage` → `settleVerdict`) so the exit and the printed
15
+ * verdict agree. `exists X --fail-if-taken` over an unread file is never the
16
+ * "free" 0 a duplicate guard would march on.
17
+ */
18
+ export declare function answerIncompleteInventory(inventory: IRegistryInventory, decl: IRegistryDeclaration, action: string | undefined, id: string | undefined, json: boolean): number | undefined;
19
+ //# sourceMappingURL=incomplete-registry-inventory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incomplete-registry-inventory.d.ts","sourceRoot":"","sources":["../../src/gates/incomplete-registry-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAM9B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,kBAAkB,EAC7B,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,IAAI,EAAE,OAAO,GACZ,MAAM,GAAG,SAAS,CA6CpB"}
@@ -0,0 +1,63 @@
1
+ import { describeUnread, readScopeCoverage, readScopeHasUnread, registryDuplicates, registryExists, } from '@shrkcrft/boundaries';
2
+ import { ExitCode } from "../exit-codes.js";
3
+ import { asJson } from "../output/format-output.js";
4
+ import { settleVerdict } from "./settle-verdict.js";
5
+ import { verdictLine } from "./verdict-line.js";
6
+ /**
7
+ * Answer a `registry <name> list | exists | where | duplicates` query over an
8
+ * INCOMPLETE inventory: one whose source globs matched a file the reader did
9
+ * not read (over the read cap). Returns `undefined` when the answer is
10
+ * verified anyway, so the caller answers normally.
11
+ *
12
+ * Only a POSITIVE finding survives an incomplete read. An id found among the
13
+ * files read is declared, and a duplicate found there is a duplicate. Absence
14
+ * ("no", "not declared", "no duplicates") and the listing itself may be wrong,
15
+ * because the unread file can hold the id. So those are NOT VERIFIED (2),
16
+ * whatever guard flag was passed, and are settled through the one coverage
17
+ * guard (`readScopeCoverage` → `settleVerdict`) so the exit and the printed
18
+ * verdict agree. `exists X --fail-if-taken` over an unread file is never the
19
+ * "free" 0 a duplicate guard would march on.
20
+ */
21
+ export function answerIncompleteInventory(inventory, decl, action, id, json) {
22
+ if (!readScopeHasUnread(inventory.readScope))
23
+ return undefined;
24
+ if ((action === 'exists' || action === 'where') && id !== undefined && registryExists(inventory, id)) {
25
+ return undefined;
26
+ }
27
+ if (action === 'duplicates' && registryDuplicates(inventory).length > 0)
28
+ return undefined;
29
+ const coverage = {
30
+ ...readScopeCoverage({ unit: 'ids', expected: inventory.entries.length, examined: inventory.entries.length }, inventory.readScope),
31
+ subject: `registry "${inventory.name}"`,
32
+ };
33
+ const settled = settleVerdict(ExitCode.VerifiedPass, [coverage]);
34
+ const what = describeUnread(inventory.readScope.unread);
35
+ if (json) {
36
+ process.stdout.write(asJson({
37
+ name: inventory.name,
38
+ ...(action ? { action } : {}),
39
+ ...(id !== undefined ? { id } : {}),
40
+ ids: inventory.entries.map((e) => e.id),
41
+ verified: false,
42
+ unread: inventory.readScope.unread,
43
+ exitCode: settled.exit,
44
+ verdict: settled.verdict,
45
+ shortfalls: settled.shortfalls,
46
+ }) + '\n');
47
+ return settled.exit;
48
+ }
49
+ process.stdout.write(`Registry "${inventory.name}"${decl.description ? ` — ${decl.description}` : ''}: its source globs matched ${what},\n` +
50
+ ' so the inventory is incomplete and this answer is NOT verified.\n');
51
+ if (action === 'list' || action === undefined) {
52
+ process.stdout.write(` ${inventory.entries.length} id(s) among the files read:\n`);
53
+ for (const e of inventory.entries)
54
+ process.stdout.write(` • ${e.id}\n`);
55
+ }
56
+ else if (id !== undefined) {
57
+ process.stdout.write(` "${id}" is not among the ids read; the unread file may declare it.\n`);
58
+ }
59
+ const line = verdictLine(settled, '');
60
+ if (line)
61
+ process.stdout.write(`${line}\n`);
62
+ return settled.exit;
63
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * THE role measurement of a registration idiom — re-exported. Round 13 (P4):
3
+ * the implementation moved to `@shrkcrft/boundaries`
4
+ * (`packages/boundaries/src/wiring/measure-registration-roles.ts`) so the
5
+ * registration-graph queries read the SAME authority `gates check` / `gates
6
+ * coverage` read — MCP `get_wiring_graph` cannot import the CLI. Edit it
7
+ * there; this path stays so every gates import is unchanged.
8
+ */
9
+ export { measureRegistrationRoles } from '@shrkcrft/boundaries';
10
+ //# sourceMappingURL=measure-registration-roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure-registration-roles.d.ts","sourceRoot":"","sources":["../../src/gates/measure-registration-roles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * THE role measurement of a registration idiom — re-exported. Round 13 (P4):
3
+ * the implementation moved to `@shrkcrft/boundaries`
4
+ * (`packages/boundaries/src/wiring/measure-registration-roles.ts`) so the
5
+ * registration-graph queries read the SAME authority `gates check` / `gates
6
+ * coverage` read — MCP `get_wiring_graph` cannot import the CLI. Edit it
7
+ * there; this path stays so every gates import is unchanged.
8
+ */
9
+ export { measureRegistrationRoles } from '@shrkcrft/boundaries';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * A plane payload's top-level `verdict`, derived from the SETTLED exit — so a
3
+ * `--json` payload can never say `pass` (or `warnings`) next to `exitCode: 2`.
4
+ *
5
+ * 0 → `warnings` when the engine reported non-blocking findings, else `pass`
6
+ * 1 → `errors`
7
+ * 2 → `not-verified`
8
+ * 3 → `usage-error`
9
+ *
10
+ * Spread the engine's report first and set `verdict: planeVerdictForExit(exit,
11
+ * report.verdict)` after it, so the settled word overrides the engine's.
12
+ */
13
+ export declare function planeVerdictForExit(exit: number, engineVerdict?: string): 'pass' | 'warnings' | 'errors' | 'not-verified' | 'usage-error';
14
+ //# sourceMappingURL=plane-verdict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plane-verdict.d.ts","sourceRoot":"","sources":["../../src/gates/plane-verdict.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,aAAa,CAKjE"}
@@ -0,0 +1,22 @@
1
+ import { ExitCode } from "../exit-codes.js";
2
+ /**
3
+ * A plane payload's top-level `verdict`, derived from the SETTLED exit — so a
4
+ * `--json` payload can never say `pass` (or `warnings`) next to `exitCode: 2`.
5
+ *
6
+ * 0 → `warnings` when the engine reported non-blocking findings, else `pass`
7
+ * 1 → `errors`
8
+ * 2 → `not-verified`
9
+ * 3 → `usage-error`
10
+ *
11
+ * Spread the engine's report first and set `verdict: planeVerdictForExit(exit,
12
+ * report.verdict)` after it, so the settled word overrides the engine's.
13
+ */
14
+ export function planeVerdictForExit(exit, engineVerdict) {
15
+ if (exit === ExitCode.VerifiedPass)
16
+ return engineVerdict === 'warnings' ? 'warnings' : 'pass';
17
+ if (exit === ExitCode.Failure)
18
+ return 'errors';
19
+ if (exit === ExitCode.NotVerified)
20
+ return 'not-verified';
21
+ return 'usage-error';
22
+ }
@@ -0,0 +1,12 @@
1
+ import type { IUnitStateNotes } from './i-unit-state-notes.js';
2
+ /**
3
+ * A verb's clean sentence, qualified by THE shared unit-state renderer's
4
+ * findings (round 13, K2): with a dead unit or a LOCAL went-live marker listed
5
+ * above, EVERY ✓ is withheld and the sentence says why — `No policy
6
+ * violations on the scanned surfaces, but 1 expectEmpty unit(s) went live —
7
+ * remove the markers (listed above).` The exit is unchanged (advisory);
8
+ * `verdictLine` still prints the sentence only at exit 0, followed by any
9
+ * acceptance. An empty `clean` stays empty.
10
+ */
11
+ export declare function qualifyCleanForUnits(clean: string, notes: IUnitStateNotes): string;
12
+ //# sourceMappingURL=qualify-clean-for-units.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualify-clean-for-units.d.ts","sourceRoot":"","sources":["../../src/gates/qualify-clean-for-units.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAOlF"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * A verb's clean sentence, qualified by THE shared unit-state renderer's
3
+ * findings (round 13, K2): with a dead unit or a LOCAL went-live marker listed
4
+ * above, EVERY ✓ is withheld and the sentence says why — `No policy
5
+ * violations on the scanned surfaces, but 1 expectEmpty unit(s) went live —
6
+ * remove the markers (listed above).` The exit is unchanged (advisory);
7
+ * `verdictLine` still prints the sentence only at exit 0, followed by any
8
+ * acceptance. An empty `clean` stays empty.
9
+ */
10
+ export function qualifyCleanForUnits(clean, notes) {
11
+ if (clean.length === 0 || notes.stale.length === 0)
12
+ return clean;
13
+ const lead = clean
14
+ .replace(/\s*✓/gu, '')
15
+ .replace(/ {2,}/gu, ' ')
16
+ .replace(/[.\s]+$/u, '');
17
+ return `${lead}, but ${notes.stale.join(', and ')} (listed above).`;
18
+ }
@@ -0,0 +1,34 @@
1
+ import { type IGateEnvelope } from './gate-envelope.js';
2
+ import type { IRegistrationQuerySettleInput } from './i-registration-query-settle-input.js';
3
+ /**
4
+ * Settle a registration-graph absence query (`wiring unprovided` / `wiring
5
+ * orphans`) against what the graph read AND what every idiom's roles examined.
6
+ *
7
+ * The coverage comes from ONE place, @shrkcrft/boundaries
8
+ * `registrationUnprovidedVerdict` / `registrationOrphansVerdict`: the idiom
9
+ * files the reader could not read (over the read cap), named; every absence
10
+ * such a file could refute, demoted from a finding to `unproven`; and — round
11
+ * 13 (P4) — every idiom's ROLE record from THE role authority
12
+ * (`measureRegistrationRoles`), so a declared role that matched no file is a
13
+ * shortfall here exactly as on `gates check`. finish's unprovided sub-gate and
14
+ * MCP `get_wiring_graph` read the same records, so the verb and its siblings
15
+ * cannot disagree.
16
+ *
17
+ * The settle runs through the shared gate envelope (one row per record, the
18
+ * query's own row carrying its findings): a proposed 0 over a shortfall is NOT
19
+ * VERIFIED (2), a 1 keeps its exit and gains the `(also not verified: …)`
20
+ * line, an expectEmpty acceptance is printed at 0, and a fully-examined graph
21
+ * settles exactly as proposed, with the clean line. `--json` ALWAYS carries
22
+ * `gate`, `coverage`, `exitCode`, `verdict`, `shortfalls` and `accepted` — it
23
+ * carried them only when a file was unread, so a dead declared role printed
24
+ * `{"total":0,"unprovided":[]}` at exit 0 with nothing to say it proved nothing.
25
+ */
26
+ export declare function settleRegistrationGraph<T extends {
27
+ readonly token: string;
28
+ }>(input: IRegistrationQuerySettleInput<T>): {
29
+ readonly exit: number;
30
+ readonly line: string;
31
+ readonly json: Readonly<Record<string, unknown>>;
32
+ readonly gate: IGateEnvelope;
33
+ };
34
+ //# sourceMappingURL=registration-graph-verdict.d.ts.map