@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,7 +1,11 @@
1
1
  import { resolveSourceGlobs, } from '@shrkcrft/core';
2
- import { matchesAny } from '@shrkcrft/boundaries';
2
+ import { globListSelects, wiringLabeledSources } from '@shrkcrft/boundaries';
3
3
  /**
4
- * The FOOTPRINT of a gate rule: every project-relative glob it reads.
4
+ * The FOOTPRINT of a gate rule, as the glob LISTS it reads — one per source's
5
+ * `files`, per `import-edges` `to.files`, per watched input, per generated
6
+ * writer. Kept as separate lists because a `!` entry subtracts from ITS OWN
7
+ * list only: flattened, one source's `!x` would hide a file another source
8
+ * reads (and a changeset touching x would skip a rule it does touch).
5
9
  *
6
10
  * `--changed-only` is only trustworthy if the footprint is complete. A rule
7
11
  * scoped by its declared side alone would go unevaluated when the change edits
@@ -9,39 +13,53 @@ import { matchesAny } from '@shrkcrft/boundaries';
9
13
  * rule declared over file A is the precise bug this plane exists to catch, so
10
14
  * every side, every hop, and every watched input counts.
11
15
  */
12
- export function gateRuleGlobs(view) {
13
- if (view.plane === 'policy')
14
- return view.raw.files ?? [];
16
+ export function gateRuleGlobLists(view) {
17
+ if (view.plane === 'policy') {
18
+ const files = view.raw.files ?? [];
19
+ return files.length > 0 ? [files] : [];
20
+ }
15
21
  if (view.plane === 'baseline') {
16
22
  const rule = view.raw;
17
23
  // `watchFiles` is the ONLY footprint a command compute has — without it a
18
24
  // command baseline can never be scoped, so it always runs (see below).
19
25
  return [
20
- ...gateRuleSources(view).flatMap(sourceGlobs),
21
- ...(rule.watchFiles ?? []),
22
- rule.baseline,
26
+ ...gateRuleSources(view).flatMap(sourceGlobLists),
27
+ ...(rule.watchFiles && rule.watchFiles.length > 0 ? [rule.watchFiles] : []),
28
+ // A ceiling rule has no committed artifact — its pinned value is the
29
+ // number in the config, so its footprint is its compute alone.
30
+ ...(rule.baseline ? [[rule.baseline]] : []),
23
31
  ];
24
32
  }
25
33
  if (view.plane === 'generated') {
26
34
  const rule = view.raw;
27
35
  return [
28
- ...rule.generatedGlob,
29
- ...(rule.sources ?? []).flatMap((s) => s.glob),
30
- ...(rule.handMaintained ?? []),
36
+ rule.generatedGlob,
37
+ ...(rule.sources ?? []).map((s) => s.glob),
38
+ ...(rule.handMaintained && rule.handMaintained.length > 0 ? [rule.handMaintained] : []),
31
39
  ];
32
40
  }
33
- return gateRuleSources(view).flatMap(sourceGlobs);
41
+ return gateRuleSources(view).flatMap(sourceGlobLists);
34
42
  }
35
43
  /**
36
- * Every glob one source reads: the files it scans, plus an `import-edges`
44
+ * Every glob a gate rule reads, flattened for DISPLAY only. A scope question
45
+ * ("does this change touch the rule?") goes through {@link gateRuleGlobLists}
46
+ * per list ({@link ruleTouchedBy}), never through this union.
47
+ */
48
+ export function gateRuleGlobs(view) {
49
+ return gateRuleGlobLists(view).flat();
50
+ }
51
+ /**
52
+ * The glob lists one source reads: the files it scans, plus an `import-edges`
37
53
  * source's TARGET globs.
38
54
  *
39
55
  * A fence whose footprint covered only the consumer side would go unevaluated
40
56
  * when the target subtree moved — and "cannot be proven out of scope" must
41
57
  * always resolve to staying IN scope, never to a quiet skip.
42
58
  */
43
- function sourceGlobs(src) {
44
- return [...resolveSourceGlobs(src), ...(src.to?.files ?? [])];
59
+ function sourceGlobLists(src) {
60
+ const files = resolveSourceGlobs(src);
61
+ const to = src.to?.files ?? [];
62
+ return [...(files.length > 0 ? [files] : []), ...(to.length > 0 ? [to] : [])];
45
63
  }
46
64
  /**
47
65
  * EVERY extraction source a rule reads — both wiring sides, every union sink,
@@ -54,30 +72,44 @@ function sourceGlobs(src) {
54
72
  * the guarantee the shared extractor exists to provide.
55
73
  */
56
74
  export function gateRuleSources(view) {
75
+ return gateRuleLabeledSources(view).map((s) => s.source);
76
+ }
77
+ /** A registry's sources, named `source` / `consumer` — THE labels its markers and dead units are qualified by. */
78
+ export function registryLabeledSources(decl) {
79
+ return decl.consumer
80
+ ? [
81
+ { label: 'source', source: decl.source },
82
+ { label: 'consumer', source: decl.consumer },
83
+ ]
84
+ : [{ label: 'source', source: decl.source }];
85
+ }
86
+ /** A registration idiom's roles, named `declared` / `provided` / `consumed` — the labels `measureRegistrationRoles` settles them under. */
87
+ export function registrationLabeledSources(idiom) {
88
+ return [
89
+ { label: 'declared', source: idiom.declared },
90
+ { label: 'provided', source: idiom.provided },
91
+ { label: 'consumed', source: idiom.consumed },
92
+ ];
93
+ }
94
+ /**
95
+ * {@link gateRuleSources}, each named by the side it plays (`declared`,
96
+ * `registered[1]`, `chain[0]`, `consumer`, …) — the ONE enumeration of a
97
+ * rule's sources, so a report naming a dead glob by its side cannot list a
98
+ * different set of sides than the extractor-consumer report does.
99
+ */
100
+ export function gateRuleLabeledSources(view) {
57
101
  switch (view.plane) {
58
- case 'wiring': {
59
- const rule = view.raw;
60
- return [
61
- rule.declared,
62
- ...(Array.isArray(rule.registered)
63
- ? rule.registered
64
- : rule.registered
65
- ? [rule.registered]
66
- : []),
67
- ...(rule.chain ?? []),
68
- ].filter((s) => s !== undefined);
69
- }
70
- case 'registry': {
71
- const decl = view.raw;
72
- return decl.consumer ? [decl.source, decl.consumer] : [decl.source];
73
- }
74
- case 'registration': {
75
- const idiom = view.raw;
76
- return [idiom.declared, idiom.provided, idiom.consumed];
77
- }
102
+ case 'wiring':
103
+ // THE wiring side labels (round 13) — the engine's own enumeration, so a
104
+ // unit is named by one side label here and in `check wiring`.
105
+ return wiringLabeledSources(view.raw);
106
+ case 'registry':
107
+ return registryLabeledSources(view.raw);
108
+ case 'registration':
109
+ return registrationLabeledSources(view.raw);
78
110
  case 'baseline': {
79
111
  const source = view.raw.compute.source;
80
- return source ? [source] : [];
112
+ return source ? [{ label: 'compute.source', source }] : [];
81
113
  }
82
114
  default:
83
115
  // `policy` and `generated` select files by glob, not by an extraction
@@ -86,7 +118,11 @@ export function gateRuleSources(view) {
86
118
  }
87
119
  }
88
120
  /**
89
- * Whether a rule's footprint intersects the changed set.
121
+ * Whether a rule's footprint intersects the changed set: some changed file is
122
+ * SELECTED by one of the rule's glob lists (`globListSelects` — an inclusion
123
+ * glob matches, none of that list's negations does). Exact per list, so a
124
+ * changeset touching only files the rule excludes does not select it, and one
125
+ * source's `!` can never hide another source's file.
90
126
  *
91
127
  * A rule with NO resolvable footprint (a command baseline with no
92
128
  * `watchFiles`) cannot be proven out of scope, so it stays IN scope. Guessing
@@ -94,8 +130,10 @@ export function gateRuleSources(view) {
94
130
  * the one thing that broke.
95
131
  */
96
132
  export function ruleTouchedBy(view, changed) {
97
- const globs = gateRuleGlobs(view).filter((g) => g.length > 0);
98
- if (globs.length === 0)
133
+ const lists = gateRuleGlobLists(view)
134
+ .map((l) => l.filter((g) => g.length > 0))
135
+ .filter((l) => l.length > 0);
136
+ if (lists.length === 0)
99
137
  return true;
100
- return changed.some((file) => matchesAny(file, globs));
138
+ return lists.some((l) => changed.some((file) => globListSelects(file, l)));
101
139
  }
@@ -1,7 +1,11 @@
1
1
  import { type IBaselineRule, type IDocReferenceRule, 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' | 'doc-reference';
4
- /** Every plane, in the order `shrk gates list` prints them. */
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.
@@ -36,6 +40,15 @@ export interface IGatePlanes {
36
40
  readonly generatedArtifacts?: readonly IGeneratedArtifactRule[];
37
41
  readonly docReferences?: readonly IDocReferenceRule[];
38
42
  }
39
- /** 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. */
40
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;
41
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,iBAAiB,EACtB,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,GACjB,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,cAAc,GACd,UAAU,GACV,WAAW,GACX,eAAe,CAAC;AAEpB,+DAA+D;AAC/D,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAQ3C,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;;;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;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,EAAE,CAiFrE"}
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,94 +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
- 'doc-reference',
11
- ];
12
- /** Flatten every declared rule across every plane into one iterable list. */
13
- export function collectGateRules(planes) {
14
- const out = [];
15
- for (const r of planes.wiringRules ?? []) {
16
- out.push({
17
- id: r.id,
18
- plane: 'wiring',
19
- ...(r.description ? { description: r.description } : {}),
20
- severity: r.severity ?? 'error',
21
- failOnEmpty: failsWhenEmpty(r),
22
- ...(r.selfTest ? { selfTest: r.selfTest } : {}),
23
- raw: r,
24
- });
25
- }
26
- for (const r of planes.policyRules ?? []) {
27
- out.push({
28
- id: r.id,
29
- plane: 'policy',
30
- ...(r.description ? { description: r.description } : {}),
31
- severity: r.severity ?? 'error',
32
- failOnEmpty: failsWhenEmpty(r),
33
- ...(r.selfTest ? { selfTest: r.selfTest } : {}),
34
- raw: r,
35
- });
36
- }
37
- for (const r of planes.registries ?? []) {
38
- out.push({
39
- id: r.name,
40
- plane: 'registry',
41
- ...(r.description ? { description: r.description } : {}),
42
- // A registry is an inventory, not a gate it never fails a build on its
43
- // 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 } : {}),
44
46
  severity: 'warning',
45
- failOnEmpty: false,
46
- raw: r,
47
- });
48
- }
49
- for (const r of planes.registrationGraph ?? []) {
50
- out.push({
51
- id: r.name,
52
- plane: 'registration',
53
- ...(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 } : {}),
54
58
  severity: 'warning',
55
- failOnEmpty: false,
56
- raw: r,
57
- });
58
- }
59
- for (const r of planes.baselines ?? []) {
60
- out.push({
61
- id: r.id,
62
- plane: 'baseline',
63
- ...(r.description ? { description: r.description } : {}),
64
- severity: r.severity ?? 'error',
65
- failOnEmpty: failsWhenEmpty(r),
66
- ...(r.expectEmpty === true ? { expectEmpty: true } : {}),
67
- ...(r.selfTest ? { selfTest: r.selfTest } : {}),
68
- raw: r,
69
- });
70
- }
71
- for (const r of planes.docReferences ?? []) {
72
- out.push({
73
- id: r.id,
74
- plane: 'doc-reference',
75
- ...(r.description ? { description: r.description } : {}),
76
- severity: r.severity ?? 'error',
77
- failOnEmpty: failsWhenEmpty(r),
78
- ...(r.selfTest ? { selfTest: r.selfTest } : {}),
79
- raw: r,
80
- });
81
- }
82
- for (const r of planes.generatedArtifacts ?? []) {
83
- out.push({
84
- id: r.id,
85
- plane: 'generated',
86
- ...(r.description ? { description: r.description } : {}),
87
- severity: r.severity ?? 'error',
88
- failOnEmpty: failsWhenEmpty(r),
89
- ...(r.selfTest ? { selfTest: r.selfTest } : {}),
90
- raw: r,
91
- });
92
- }
93
- 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)`;
94
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"}