@shrkcrft/inspector 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 (694) hide show
  1. package/dist/acceptance-replay.js +1 -1
  2. package/dist/agent-contract-templates.js +6 -6
  3. package/dist/agent-contract.d.ts.map +1 -1
  4. package/dist/agent-contract.js +13 -8
  5. package/dist/agent-orchestration.js +2 -2
  6. package/dist/agent-task-prep.d.ts +16 -0
  7. package/dist/agent-task-prep.d.ts.map +1 -1
  8. package/dist/agent-task-prep.js +51 -4
  9. package/dist/ai-readiness.d.ts.map +1 -1
  10. package/dist/ai-readiness.js +21 -3
  11. package/dist/architecture-map.d.ts +16 -0
  12. package/dist/architecture-map.d.ts.map +1 -1
  13. package/dist/architecture-map.js +42 -26
  14. package/dist/area-explore.d.ts +2 -2
  15. package/dist/area-explore.d.ts.map +1 -1
  16. package/dist/area-explore.js +36 -16
  17. package/dist/area-map.d.ts +56 -11
  18. package/dist/area-map.d.ts.map +1 -1
  19. package/dist/area-map.js +106 -25
  20. package/dist/asset-doctor-proposed-exit.d.ts +21 -0
  21. package/dist/asset-doctor-proposed-exit.d.ts.map +1 -0
  22. package/dist/asset-doctor-proposed-exit.js +22 -0
  23. package/dist/asset-provenance.js +1 -1
  24. package/dist/boundaries-changed-only.d.ts +24 -1
  25. package/dist/boundaries-changed-only.d.ts.map +1 -1
  26. package/dist/boundaries-changed-only.js +12 -2
  27. package/dist/boundary-check-options.model.d.ts +40 -0
  28. package/dist/boundary-check-options.model.d.ts.map +1 -0
  29. package/dist/boundary-check-options.model.js +1 -0
  30. package/dist/boundary-check-result.model.d.ts +89 -0
  31. package/dist/boundary-check-result.model.d.ts.map +1 -0
  32. package/dist/boundary-check-result.model.js +1 -0
  33. package/dist/boundary-configuration-status.d.ts +38 -0
  34. package/dist/boundary-configuration-status.d.ts.map +1 -0
  35. package/dist/boundary-configuration-status.js +118 -0
  36. package/dist/boundary-configuration-status.model.d.ts +37 -0
  37. package/dist/boundary-configuration-status.model.d.ts.map +1 -0
  38. package/dist/boundary-configuration-status.model.js +1 -0
  39. package/dist/boundary-load-issue.model.d.ts +30 -0
  40. package/dist/boundary-load-issue.model.d.ts.map +1 -0
  41. package/dist/boundary-load-issue.model.js +1 -0
  42. package/dist/boundary-rule-check.model.d.ts +44 -0
  43. package/dist/boundary-rule-check.model.d.ts.map +1 -0
  44. package/dist/boundary-rule-check.model.js +1 -0
  45. package/dist/boundary-rule-invalidation.model.d.ts +31 -0
  46. package/dist/boundary-rule-invalidation.model.d.ts.map +1 -0
  47. package/dist/boundary-rule-invalidation.model.js +1 -0
  48. package/dist/boundary-rule-set-diff.model.d.ts +75 -0
  49. package/dist/boundary-rule-set-diff.model.d.ts.map +1 -0
  50. package/dist/boundary-rule-set-diff.model.js +1 -0
  51. package/dist/boundary-rule-sources.d.ts +28 -0
  52. package/dist/boundary-rule-sources.d.ts.map +1 -0
  53. package/dist/boundary-rule-sources.js +110 -0
  54. package/dist/boundary-stale-exception-finding.model.d.ts +12 -0
  55. package/dist/boundary-stale-exception-finding.model.d.ts.map +1 -0
  56. package/dist/boundary-stale-exception-finding.model.js +1 -0
  57. package/dist/boundary-unit-liveness.d.ts +35 -0
  58. package/dist/boundary-unit-liveness.d.ts.map +1 -0
  59. package/dist/boundary-unit-liveness.js +71 -0
  60. package/dist/change-intent.d.ts +3 -0
  61. package/dist/change-intent.d.ts.map +1 -1
  62. package/dist/change-intent.js +61 -27
  63. package/dist/changes-summary.d.ts.map +1 -1
  64. package/dist/changes-summary.js +19 -9
  65. package/dist/ci-integrity-report.js +1 -1
  66. package/dist/ci-predict.d.ts.map +1 -1
  67. package/dist/ci-predict.js +38 -5
  68. package/dist/code-intelligence-doctor.d.ts +40 -0
  69. package/dist/code-intelligence-doctor.d.ts.map +1 -1
  70. package/dist/code-intelligence-doctor.js +86 -12
  71. package/dist/command-recommender.d.ts +45 -2
  72. package/dist/command-recommender.d.ts.map +1 -1
  73. package/dist/command-recommender.js +41 -263
  74. package/dist/command-resolution-status.d.ts +44 -0
  75. package/dist/command-resolution-status.d.ts.map +1 -0
  76. package/dist/command-resolution-status.js +44 -0
  77. package/dist/command-safety-level.d.ts +15 -0
  78. package/dist/command-safety-level.d.ts.map +1 -0
  79. package/dist/command-safety-level.js +43 -0
  80. package/dist/command-taxonomy.js +1 -1
  81. package/dist/compliance-evidence.js +1 -1
  82. package/dist/compliance-profiles.js +1 -1
  83. package/dist/construct-registry.d.ts +40 -0
  84. package/dist/construct-registry.d.ts.map +1 -1
  85. package/dist/construct-registry.js +186 -82
  86. package/dist/context-tuning.d.ts +4 -0
  87. package/dist/context-tuning.d.ts.map +1 -1
  88. package/dist/context-tuning.js +10 -7
  89. package/dist/contract-template-registry.d.ts +10 -0
  90. package/dist/contract-template-registry.d.ts.map +1 -1
  91. package/dist/contract-template-registry.js +59 -33
  92. package/dist/contribution-kind.d.ts +52 -0
  93. package/dist/contribution-kind.d.ts.map +1 -0
  94. package/dist/contribution-kind.js +52 -0
  95. package/dist/contribution-load-failures.d.ts +106 -0
  96. package/dist/contribution-load-failures.d.ts.map +1 -0
  97. package/dist/contribution-load-failures.js +575 -0
  98. package/dist/contributions-report.d.ts +28 -0
  99. package/dist/contributions-report.d.ts.map +1 -0
  100. package/dist/contributions-report.js +242 -0
  101. package/dist/convention-registry.d.ts +22 -0
  102. package/dist/convention-registry.d.ts.map +1 -1
  103. package/dist/convention-registry.js +79 -39
  104. package/dist/coverage-report.d.ts.map +1 -1
  105. package/dist/coverage-report.js +6 -6
  106. package/dist/custom-checks.d.ts +60 -1
  107. package/dist/custom-checks.d.ts.map +1 -1
  108. package/dist/custom-checks.js +159 -6
  109. package/dist/dashboard/dashboard-data.d.ts +6 -0
  110. package/dist/dashboard/dashboard-data.d.ts.map +1 -1
  111. package/dist/dashboard/dashboard-data.js +99 -8
  112. package/dist/dashboard/dashboard-knowledge.d.ts.map +1 -1
  113. package/dist/dashboard/dashboard-knowledge.js +14 -2
  114. package/dist/decision-records.d.ts +20 -0
  115. package/dist/decision-records.d.ts.map +1 -1
  116. package/dist/decision-records.js +68 -20
  117. package/dist/declared-cross-references.d.ts +61 -0
  118. package/dist/declared-cross-references.d.ts.map +1 -0
  119. package/dist/declared-cross-references.js +550 -0
  120. package/dist/declared-gate-plane-rules.d.ts +24 -0
  121. package/dist/declared-gate-plane-rules.d.ts.map +1 -0
  122. package/dist/declared-gate-plane-rules.js +39 -0
  123. package/dist/declared-reference-coverage.d.ts +27 -0
  124. package/dist/declared-reference-coverage.d.ts.map +1 -0
  125. package/dist/declared-reference-coverage.js +50 -0
  126. package/dist/declared-xref-status.d.ts +19 -0
  127. package/dist/declared-xref-status.d.ts.map +1 -0
  128. package/dist/declared-xref-status.js +19 -0
  129. package/dist/delegate-pack-recipes.d.ts +13 -2
  130. package/dist/delegate-pack-recipes.d.ts.map +1 -1
  131. package/dist/delegate-pack-recipes.js +45 -14
  132. package/dist/demo-package.js +2 -2
  133. package/dist/demo-script.js +2 -2
  134. package/dist/demo-workflow.js +3 -3
  135. package/dist/dev-cycle.js +1 -1
  136. package/dist/dev-session.js +1 -1
  137. package/dist/doc-references.d.ts +80 -0
  138. package/dist/doc-references.d.ts.map +1 -0
  139. package/dist/doc-references.js +269 -0
  140. package/dist/doctor-result.d.ts +8 -0
  141. package/dist/doctor-result.d.ts.map +1 -1
  142. package/dist/doctor-verdict-kind.d.ts +19 -0
  143. package/dist/doctor-verdict-kind.d.ts.map +1 -0
  144. package/dist/doctor-verdict-kind.js +19 -0
  145. package/dist/doctor-verdict.d.ts +18 -0
  146. package/dist/doctor-verdict.d.ts.map +1 -0
  147. package/dist/doctor-verdict.js +28 -0
  148. package/dist/drift.d.ts +17 -0
  149. package/dist/drift.d.ts.map +1 -1
  150. package/dist/drift.js +40 -10
  151. package/dist/entrypoint-matrix.d.ts.map +1 -1
  152. package/dist/entrypoint-matrix.js +4 -1
  153. package/dist/feedback-ingestion.d.ts +28 -2
  154. package/dist/feedback-ingestion.d.ts.map +1 -1
  155. package/dist/feedback-ingestion.js +68 -19
  156. package/dist/fix-preview.d.ts.map +1 -1
  157. package/dist/fix-preview.js +9 -5
  158. package/dist/framework-extractor-outcomes.d.ts +27 -0
  159. package/dist/framework-extractor-outcomes.d.ts.map +1 -0
  160. package/dist/framework-extractor-outcomes.js +83 -0
  161. package/dist/fuzzy-impact.d.ts.map +1 -1
  162. package/dist/fuzzy-impact.js +12 -21
  163. package/dist/healing-plan.d.ts.map +1 -1
  164. package/dist/healing-plan.js +3 -4
  165. package/dist/helper-catalog.d.ts +25 -0
  166. package/dist/helper-catalog.d.ts.map +1 -0
  167. package/dist/helper-catalog.js +91 -0
  168. package/dist/helper-registry.d.ts.map +1 -1
  169. package/dist/helper-registry.js +17 -1
  170. package/dist/helper-view.d.ts +33 -0
  171. package/dist/helper-view.d.ts.map +1 -0
  172. package/dist/helper-view.js +1 -0
  173. package/dist/i-asset-doctor-flags.d.ts +16 -0
  174. package/dist/i-asset-doctor-flags.d.ts.map +1 -0
  175. package/dist/i-asset-doctor-flags.js +1 -0
  176. package/dist/i-command-resolution.d.ts +22 -0
  177. package/dist/i-command-resolution.d.ts.map +1 -0
  178. package/dist/i-command-resolution.js +1 -0
  179. package/dist/i-command-resolve-options.d.ts +24 -0
  180. package/dist/i-command-resolve-options.d.ts.map +1 -0
  181. package/dist/i-command-resolve-options.js +1 -0
  182. package/dist/i-command-safety.d.ts +13 -0
  183. package/dist/i-command-safety.d.ts.map +1 -0
  184. package/dist/i-command-safety.js +1 -0
  185. package/dist/i-contribution-accepted-entry.d.ts +18 -0
  186. package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
  187. package/dist/i-contribution-accepted-entry.js +1 -0
  188. package/dist/i-contribution-entry-rejection.d.ts +21 -0
  189. package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
  190. package/dist/i-contribution-entry-rejection.js +1 -0
  191. package/dist/i-contribution-file-issue.d.ts +18 -0
  192. package/dist/i-contribution-file-issue.d.ts.map +1 -0
  193. package/dist/i-contribution-file-issue.js +1 -0
  194. package/dist/i-contribution-file-report.d.ts +40 -0
  195. package/dist/i-contribution-file-report.d.ts.map +1 -0
  196. package/dist/i-contribution-file-report.js +1 -0
  197. package/dist/i-contribution-file-validation.d.ts +24 -0
  198. package/dist/i-contribution-file-validation.d.ts.map +1 -0
  199. package/dist/i-contribution-file-validation.js +1 -0
  200. package/dist/i-contributions-report.d.ts +31 -0
  201. package/dist/i-contributions-report.d.ts.map +1 -0
  202. package/dist/i-contributions-report.js +1 -0
  203. package/dist/i-declared-xref-field.d.ts +25 -0
  204. package/dist/i-declared-xref-field.d.ts.map +1 -0
  205. package/dist/i-declared-xref-field.js +1 -0
  206. package/dist/i-declared-xref-issue.d.ts +25 -0
  207. package/dist/i-declared-xref-issue.d.ts.map +1 -0
  208. package/dist/i-declared-xref-issue.js +1 -0
  209. package/dist/i-declared-xref-report.d.ts +48 -0
  210. package/dist/i-declared-xref-report.d.ts.map +1 -0
  211. package/dist/i-declared-xref-report.js +1 -0
  212. package/dist/i-declared-xref-row.d.ts +29 -0
  213. package/dist/i-declared-xref-row.d.ts.map +1 -0
  214. package/dist/i-declared-xref-row.js +1 -0
  215. package/dist/i-doctor-verdict.d.ts +10 -0
  216. package/dist/i-doctor-verdict.d.ts.map +1 -0
  217. package/dist/i-doctor-verdict.js +1 -0
  218. package/dist/i-kind-outcomes.d.ts +13 -0
  219. package/dist/i-kind-outcomes.d.ts.map +1 -0
  220. package/dist/i-kind-outcomes.js +1 -0
  221. package/dist/i-pack-doctor-verdict.d.ts +15 -0
  222. package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
  223. package/dist/i-pack-doctor-verdict.js +1 -0
  224. package/dist/i-probed-id-field.d.ts +17 -0
  225. package/dist/i-probed-id-field.d.ts.map +1 -0
  226. package/dist/i-probed-id-field.js +1 -0
  227. package/dist/i-reference-kind-declaration.d.ts +38 -0
  228. package/dist/i-reference-kind-declaration.d.ts.map +1 -0
  229. package/dist/i-reference-kind-declaration.js +1 -0
  230. package/dist/i-reference-warm-options.d.ts +21 -0
  231. package/dist/i-reference-warm-options.d.ts.map +1 -0
  232. package/dist/i-reference-warm-options.js +1 -0
  233. package/dist/i-registry-outcomes.d.ts +16 -0
  234. package/dist/i-registry-outcomes.d.ts.map +1 -0
  235. package/dist/i-registry-outcomes.js +1 -0
  236. package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
  237. package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
  238. package/dist/i-scaffold-pattern-doctor-report.js +1 -0
  239. package/dist/i-search-tuning-key-probe.d.ts +30 -0
  240. package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
  241. package/dist/i-search-tuning-key-probe.js +1 -0
  242. package/dist/i-search-tuning-lint-issue.d.ts +61 -0
  243. package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
  244. package/dist/i-search-tuning-lint-issue.js +1 -0
  245. package/dist/i-search-tuning-lint-report.d.ts +38 -0
  246. package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
  247. package/dist/i-search-tuning-lint-report.js +1 -0
  248. package/dist/i-unresolvable-reference-scan.d.ts +14 -0
  249. package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
  250. package/dist/i-unresolvable-reference-scan.js +1 -0
  251. package/dist/i-unresolvable-reference.d.ts +29 -0
  252. package/dist/i-unresolvable-reference.d.ts.map +1 -0
  253. package/dist/i-unresolvable-reference.js +1 -0
  254. package/dist/i-workspace-profile-payload.d.ts +12 -0
  255. package/dist/i-workspace-profile-payload.d.ts.map +1 -0
  256. package/dist/i-workspace-profile-payload.js +1 -0
  257. package/dist/impact-analysis.d.ts +15 -0
  258. package/dist/impact-analysis.d.ts.map +1 -1
  259. package/dist/impact-analysis.js +58 -13
  260. package/dist/impact-render.d.ts.map +1 -1
  261. package/dist/impact-render.js +22 -0
  262. package/dist/import-hygiene.d.ts +35 -1
  263. package/dist/import-hygiene.d.ts.map +1 -1
  264. package/dist/import-hygiene.js +107 -13
  265. package/dist/index.d.ts +145 -0
  266. package/dist/index.d.ts.map +1 -1
  267. package/dist/index.js +176 -0
  268. package/dist/inspection-discovery.d.ts +45 -0
  269. package/dist/inspection-discovery.d.ts.map +1 -0
  270. package/dist/inspection-discovery.js +70 -0
  271. package/dist/knowledge-advisory-code.d.ts +17 -0
  272. package/dist/knowledge-advisory-code.d.ts.map +1 -0
  273. package/dist/knowledge-advisory-code.js +17 -0
  274. package/dist/knowledge-aged-entry.d.ts +10 -0
  275. package/dist/knowledge-aged-entry.d.ts.map +1 -0
  276. package/dist/knowledge-aged-entry.js +1 -0
  277. package/dist/knowledge-authoring.d.ts +24 -1
  278. package/dist/knowledge-authoring.d.ts.map +1 -1
  279. package/dist/knowledge-authoring.js +46 -7
  280. package/dist/knowledge-entry-verdict-record.d.ts +22 -0
  281. package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
  282. package/dist/knowledge-entry-verdict-record.js +1 -0
  283. package/dist/knowledge-entry-verdict.d.ts +17 -0
  284. package/dist/knowledge-entry-verdict.d.ts.map +1 -0
  285. package/dist/knowledge-entry-verdict.js +17 -0
  286. package/dist/knowledge-graph.d.ts +6 -0
  287. package/dist/knowledge-graph.d.ts.map +1 -1
  288. package/dist/knowledge-graph.js +18 -7
  289. package/dist/knowledge-kind-bucket.d.ts +19 -0
  290. package/dist/knowledge-kind-bucket.d.ts.map +1 -0
  291. package/dist/knowledge-kind-bucket.js +1 -0
  292. package/dist/knowledge-load-failure.d.ts +23 -0
  293. package/dist/knowledge-load-failure.d.ts.map +1 -0
  294. package/dist/knowledge-load-failure.js +1 -0
  295. package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
  296. package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
  297. package/dist/knowledge-reference-kind-bucket.js +1 -0
  298. package/dist/knowledge-stale-advisory.d.ts +14 -0
  299. package/dist/knowledge-stale-advisory.d.ts.map +1 -0
  300. package/dist/knowledge-stale-advisory.js +1 -0
  301. package/dist/knowledge-stale-coverage.d.ts +19 -0
  302. package/dist/knowledge-stale-coverage.d.ts.map +1 -0
  303. package/dist/knowledge-stale-coverage.js +1 -0
  304. package/dist/knowledge-stale-gate-flags.d.ts +33 -0
  305. package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
  306. package/dist/knowledge-stale-gate-flags.js +1 -0
  307. package/dist/knowledge-stale-gate-input.d.ts +46 -0
  308. package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
  309. package/dist/knowledge-stale-gate-input.js +1 -0
  310. package/dist/knowledge-stale-gate-result.d.ts +33 -0
  311. package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
  312. package/dist/knowledge-stale-gate-result.js +1 -0
  313. package/dist/knowledge-stale-gate-rule.d.ts +33 -0
  314. package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
  315. package/dist/knowledge-stale-gate-rule.js +1 -0
  316. package/dist/knowledge-stale-gate-violation.d.ts +13 -0
  317. package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
  318. package/dist/knowledge-stale-gate-violation.js +1 -0
  319. package/dist/knowledge-stale-gate.d.ts +83 -0
  320. package/dist/knowledge-stale-gate.d.ts.map +1 -0
  321. package/dist/knowledge-stale-gate.js +429 -0
  322. package/dist/knowledge-stale-quality-gate.d.ts +26 -0
  323. package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
  324. package/dist/knowledge-stale-quality-gate.js +110 -0
  325. package/dist/knowledge-stale.d.ts +122 -9
  326. package/dist/knowledge-stale.d.ts.map +1 -1
  327. package/dist/knowledge-stale.js +1002 -316
  328. package/dist/knowledge-unverifiable-reason.d.ts +12 -0
  329. package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
  330. package/dist/knowledge-unverifiable-reason.js +12 -0
  331. package/dist/loader-diagnostics.d.ts +14 -2
  332. package/dist/loader-diagnostics.d.ts.map +1 -1
  333. package/dist/match-terms.d.ts +48 -0
  334. package/dist/match-terms.d.ts.map +1 -0
  335. package/dist/match-terms.js +155 -0
  336. package/dist/migration-profile-registry.d.ts +10 -0
  337. package/dist/migration-profile-registry.d.ts.map +1 -1
  338. package/dist/migration-profile-registry.js +57 -34
  339. package/dist/migration-readiness.d.ts.map +1 -1
  340. package/dist/migration-readiness.js +1 -3
  341. package/dist/nearest-id.d.ts +14 -0
  342. package/dist/nearest-id.d.ts.map +1 -0
  343. package/dist/nearest-id.js +12 -0
  344. package/dist/pack-asset-freshness.d.ts +65 -0
  345. package/dist/pack-asset-freshness.d.ts.map +1 -0
  346. package/dist/pack-asset-freshness.js +340 -0
  347. package/dist/pack-author-ux.d.ts +24 -3
  348. package/dist/pack-author-ux.d.ts.map +1 -1
  349. package/dist/pack-author-ux.js +87 -93
  350. package/dist/pack-contributions-inventory.d.ts +79 -39
  351. package/dist/pack-contributions-inventory.d.ts.map +1 -1
  352. package/dist/pack-contributions-inventory.js +443 -286
  353. package/dist/pack-doctor-verdict.d.ts +29 -0
  354. package/dist/pack-doctor-verdict.d.ts.map +1 -0
  355. package/dist/pack-doctor-verdict.js +45 -0
  356. package/dist/pack-doctor.d.ts +74 -1
  357. package/dist/pack-doctor.d.ts.map +1 -1
  358. package/dist/pack-doctor.js +281 -1
  359. package/dist/pack-helper-plan.d.ts +24 -0
  360. package/dist/pack-helper-plan.d.ts.map +1 -0
  361. package/dist/pack-helper-plan.js +77 -0
  362. package/dist/pack-helper-registry.d.ts +14 -0
  363. package/dist/pack-helper-registry.d.ts.map +1 -1
  364. package/dist/pack-helper-registry.js +76 -37
  365. package/dist/pack-manifest-reader.d.ts +8 -0
  366. package/dist/pack-manifest-reader.d.ts.map +1 -0
  367. package/dist/pack-manifest-reader.js +79 -0
  368. package/dist/pack-release-check.d.ts +14 -1
  369. package/dist/pack-release-check.d.ts.map +1 -1
  370. package/dist/pack-release-check.js +23 -1
  371. package/dist/pack-signature-status.d.ts +18 -6
  372. package/dist/pack-signature-status.d.ts.map +1 -1
  373. package/dist/pack-signature-status.js +59 -105
  374. package/dist/pack-test-runner.d.ts +27 -5
  375. package/dist/pack-test-runner.d.ts.map +1 -1
  376. package/dist/pack-test-runner.js +91 -35
  377. package/dist/pack-typecheck.d.ts +8 -0
  378. package/dist/pack-typecheck.d.ts.map +1 -0
  379. package/dist/pack-typecheck.js +76 -0
  380. package/dist/plan-review.d.ts +2 -0
  381. package/dist/plan-review.d.ts.map +1 -1
  382. package/dist/plan-review.js +17 -5
  383. package/dist/plan-simulation.d.ts.map +1 -1
  384. package/dist/plan-simulation.js +16 -5
  385. package/dist/playbook-load-issue.d.ts +16 -0
  386. package/dist/playbook-load-issue.d.ts.map +1 -0
  387. package/dist/playbook-load-issue.js +1 -0
  388. package/dist/playbook-registry.d.ts +32 -1
  389. package/dist/playbook-registry.d.ts.map +1 -1
  390. package/dist/playbook-registry.js +144 -55
  391. package/dist/policy-declaration.d.ts +18 -0
  392. package/dist/policy-declaration.d.ts.map +1 -0
  393. package/dist/policy-declaration.js +1 -0
  394. package/dist/policy-engine.d.ts +8 -0
  395. package/dist/policy-engine.d.ts.map +1 -1
  396. package/dist/policy-engine.js +26 -9
  397. package/dist/policy-overrides.d.ts.map +1 -1
  398. package/dist/policy-overrides.js +4 -4
  399. package/dist/policy-registry.d.ts +42 -0
  400. package/dist/policy-registry.d.ts.map +1 -0
  401. package/dist/policy-registry.js +131 -0
  402. package/dist/probed-id-fields.d.ts +21 -0
  403. package/dist/probed-id-fields.d.ts.map +1 -0
  404. package/dist/probed-id-fields.js +25 -0
  405. package/dist/probed-id-source.d.ts +11 -0
  406. package/dist/probed-id-source.d.ts.map +1 -0
  407. package/dist/probed-id-source.js +11 -0
  408. package/dist/profile-registry.d.ts +25 -2
  409. package/dist/profile-registry.d.ts.map +1 -1
  410. package/dist/profile-registry.js +59 -6
  411. package/dist/quality-gate-examination.d.ts +15 -0
  412. package/dist/quality-gate-examination.d.ts.map +1 -0
  413. package/dist/quality-gate-examination.js +15 -0
  414. package/dist/quality-gate-row-status.d.ts +19 -0
  415. package/dist/quality-gate-row-status.d.ts.map +1 -0
  416. package/dist/quality-gate-row-status.js +28 -0
  417. package/dist/quality-gate-status.d.ts +16 -0
  418. package/dist/quality-gate-status.d.ts.map +1 -0
  419. package/dist/quality-gate-status.js +16 -0
  420. package/dist/quality-html.d.ts.map +1 -1
  421. package/dist/quality-html.js +14 -3
  422. package/dist/quality-report-coverage.d.ts +26 -0
  423. package/dist/quality-report-coverage.d.ts.map +1 -0
  424. package/dist/quality-report-coverage.js +48 -0
  425. package/dist/quality-report.d.ts +28 -1
  426. package/dist/quality-report.d.ts.map +1 -1
  427. package/dist/quality-report.js +263 -35
  428. package/dist/query-intent-kind.d.ts +18 -0
  429. package/dist/query-intent-kind.d.ts.map +1 -0
  430. package/dist/query-intent-kind.js +18 -0
  431. package/dist/query-intent-result.d.ts +23 -0
  432. package/dist/query-intent-result.d.ts.map +1 -0
  433. package/dist/query-intent-result.js +1 -0
  434. package/dist/query-intent.d.ts +18 -0
  435. package/dist/query-intent.d.ts.map +1 -0
  436. package/dist/query-intent.js +336 -0
  437. package/dist/query-resolver.d.ts +18 -0
  438. package/dist/query-resolver.d.ts.map +1 -1
  439. package/dist/query-resolver.js +15 -12
  440. package/dist/ranked-recommendations.d.ts +36 -0
  441. package/dist/ranked-recommendations.d.ts.map +1 -0
  442. package/dist/ranked-recommendations.js +1 -0
  443. package/dist/ranker-explainability.d.ts.map +1 -1
  444. package/dist/ranker-explainability.js +38 -10
  445. package/dist/recommend-recipe.d.ts +17 -0
  446. package/dist/recommend-recipe.d.ts.map +1 -0
  447. package/dist/recommend-recipe.js +1 -0
  448. package/dist/recommend-recipes.d.ts +9 -0
  449. package/dist/recommend-recipes.d.ts.map +1 -0
  450. package/dist/recommend-recipes.js +106 -0
  451. package/dist/recommendation-candidate.d.ts +30 -0
  452. package/dist/recommendation-candidate.d.ts.map +1 -0
  453. package/dist/recommendation-candidate.js +1 -0
  454. package/dist/recommendation-confidence.d.ts +27 -0
  455. package/dist/recommendation-confidence.d.ts.map +1 -0
  456. package/dist/recommendation-confidence.js +1 -0
  457. package/dist/recommendation-ranking-options.d.ts +24 -0
  458. package/dist/recommendation-ranking-options.d.ts.map +1 -0
  459. package/dist/recommendation-ranking-options.js +1 -0
  460. package/dist/recommendation-ranking.d.ts +50 -0
  461. package/dist/recommendation-ranking.d.ts.map +1 -0
  462. package/dist/recommendation-ranking.js +527 -0
  463. package/dist/recommendation-source.d.ts +23 -0
  464. package/dist/recommendation-source.d.ts.map +1 -0
  465. package/dist/recommendation-source.js +23 -0
  466. package/dist/recommendation-suppression.d.ts +14 -0
  467. package/dist/recommendation-suppression.d.ts.map +1 -0
  468. package/dist/recommendation-suppression.js +14 -0
  469. package/dist/reference-asset-kind.d.ts +14 -0
  470. package/dist/reference-asset-kind.d.ts.map +1 -0
  471. package/dist/reference-asset-kind.js +14 -0
  472. package/dist/reference-content-check.d.ts +32 -0
  473. package/dist/reference-content-check.d.ts.map +1 -0
  474. package/dist/reference-content-check.js +143 -0
  475. package/dist/reference-failure.d.ts +31 -0
  476. package/dist/reference-failure.d.ts.map +1 -0
  477. package/dist/reference-failure.js +31 -0
  478. package/dist/reference-id-status.d.ts +15 -0
  479. package/dist/reference-id-status.d.ts.map +1 -0
  480. package/dist/reference-id-status.js +15 -0
  481. package/dist/reference-kind-declarations.d.ts +42 -0
  482. package/dist/reference-kind-declarations.d.ts.map +1 -0
  483. package/dist/reference-kind-declarations.js +142 -0
  484. package/dist/reference-lookup.d.ts +6 -0
  485. package/dist/reference-lookup.d.ts.map +1 -1
  486. package/dist/reference-lookup.js +13 -5
  487. package/dist/reference-registry.d.ts +210 -0
  488. package/dist/reference-registry.d.ts.map +1 -0
  489. package/dist/reference-registry.js +395 -0
  490. package/dist/reference-subject.d.ts +20 -0
  491. package/dist/reference-subject.d.ts.map +1 -0
  492. package/dist/reference-subject.js +1 -0
  493. package/dist/registration-hint-discovery-status.d.ts +25 -0
  494. package/dist/registration-hint-discovery-status.d.ts.map +1 -0
  495. package/dist/registration-hint-discovery-status.js +25 -0
  496. package/dist/registration-hint-registry.d.ts +80 -0
  497. package/dist/registration-hint-registry.d.ts.map +1 -1
  498. package/dist/registration-hint-registry.js +356 -138
  499. package/dist/registry-lifecycle.d.ts +200 -19
  500. package/dist/registry-lifecycle.d.ts.map +1 -1
  501. package/dist/registry-lifecycle.js +526 -136
  502. package/dist/release-readiness.d.ts.map +1 -1
  503. package/dist/release-readiness.js +10 -7
  504. package/dist/release-smoke.d.ts.map +1 -1
  505. package/dist/release-smoke.js +11 -7
  506. package/dist/report-site.d.ts.map +1 -1
  507. package/dist/report-site.js +25 -7
  508. package/dist/repository-intelligence.d.ts.map +1 -1
  509. package/dist/repository-intelligence.js +3 -2
  510. package/dist/repository-knowledge-model.d.ts.map +1 -1
  511. package/dist/repository-knowledge-model.js +18 -5
  512. package/dist/resolve-project-config.d.ts +64 -0
  513. package/dist/resolve-project-config.d.ts.map +1 -1
  514. package/dist/resolve-project-config.js +258 -32
  515. package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
  516. package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
  517. package/dist/reuse/compute-reuse-coverage.js +198 -0
  518. package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
  519. package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
  520. package/dist/reuse/rank-reuse-candidates.js +212 -0
  521. package/dist/reuse/rank-reuse-options.d.ts +20 -0
  522. package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
  523. package/dist/reuse/rank-reuse-options.js +1 -0
  524. package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
  525. package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
  526. package/dist/reuse/rank-reuse-suggestions.js +31 -0
  527. package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
  528. package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
  529. package/dist/reuse/resolve-curated-reuse.js +115 -0
  530. package/dist/reuse/reuse-candidate.d.ts +29 -0
  531. package/dist/reuse/reuse-candidate.d.ts.map +1 -0
  532. package/dist/reuse/reuse-candidate.js +1 -0
  533. package/dist/reuse/reuse-coverage-report.d.ts +74 -0
  534. package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
  535. package/dist/reuse/reuse-coverage-report.js +1 -0
  536. package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
  537. package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
  538. package/dist/reuse/reuse-curated-coverage.js +1 -0
  539. package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
  540. package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
  541. package/dist/reuse/reuse-curated-resolution.js +1 -0
  542. package/dist/reuse/reuse-curated-status.d.ts +21 -0
  543. package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
  544. package/dist/reuse/reuse-curated-status.js +21 -0
  545. package/dist/reuse/reuse-match-detail.d.ts +15 -0
  546. package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
  547. package/dist/reuse/reuse-match-detail.js +1 -0
  548. package/dist/reuse/reuse-ranking.d.ts +37 -0
  549. package/dist/reuse/reuse-ranking.d.ts.map +1 -0
  550. package/dist/reuse/reuse-ranking.js +1 -0
  551. package/dist/reuse/reuse-suggestion.d.ts +19 -0
  552. package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
  553. package/dist/reuse/reuse-suggestion.js +1 -0
  554. package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
  555. package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
  556. package/dist/reuse/reuse-symbol-lookup.js +1 -0
  557. package/dist/reuse/reuse-tokenize.d.ts +11 -0
  558. package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
  559. package/dist/reuse/reuse-tokenize.js +26 -0
  560. package/dist/reuse/score-reuse-name.d.ts +16 -0
  561. package/dist/reuse/score-reuse-name.d.ts.map +1 -0
  562. package/dist/reuse/score-reuse-name.js +35 -0
  563. package/dist/reuse/score-reuse-primitive.d.ts +33 -0
  564. package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
  565. package/dist/reuse/score-reuse-primitive.js +92 -0
  566. package/dist/review-packet.d.ts +2 -0
  567. package/dist/review-packet.d.ts.map +1 -1
  568. package/dist/review-packet.js +13 -6
  569. package/dist/role-views.d.ts.map +1 -1
  570. package/dist/role-views.js +16 -16
  571. package/dist/routing-recommends-channels.d.ts +24 -0
  572. package/dist/routing-recommends-channels.d.ts.map +1 -0
  573. package/dist/routing-recommends-channels.js +19 -0
  574. package/dist/run-boundary-check.d.ts +118 -0
  575. package/dist/run-boundary-check.d.ts.map +1 -0
  576. package/dist/run-boundary-check.js +592 -0
  577. package/dist/safety-audit.js +1 -1
  578. package/dist/scaffold-coverage.js +1 -1
  579. package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
  580. package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
  581. package/dist/scaffold-pattern-doctor-report.js +54 -0
  582. package/dist/scaffold-patterns.d.ts +75 -1
  583. package/dist/scaffold-patterns.d.ts.map +1 -1
  584. package/dist/scaffold-patterns.js +375 -84
  585. package/dist/schema-inventory.d.ts.map +1 -1
  586. package/dist/schema-inventory.js +4 -3
  587. package/dist/search-document-id.d.ts +52 -0
  588. package/dist/search-document-id.d.ts.map +1 -0
  589. package/dist/search-document-id.js +72 -0
  590. package/dist/search-document-prefix.d.ts +7 -0
  591. package/dist/search-document-prefix.d.ts.map +1 -0
  592. package/dist/search-document-prefix.js +1 -0
  593. package/dist/search-index.d.ts.map +1 -1
  594. package/dist/search-index.js +20 -23
  595. package/dist/search-tuning-explain.d.ts +6 -0
  596. package/dist/search-tuning-explain.d.ts.map +1 -1
  597. package/dist/search-tuning-explain.js +19 -17
  598. package/dist/search-tuning-key-probes.d.ts +16 -0
  599. package/dist/search-tuning-key-probes.d.ts.map +1 -0
  600. package/dist/search-tuning-key-probes.js +65 -0
  601. package/dist/search-tuning-key-resolution.d.ts +25 -0
  602. package/dist/search-tuning-key-resolution.d.ts.map +1 -0
  603. package/dist/search-tuning-key-resolution.js +1 -0
  604. package/dist/search-tuning-key-resolver.d.ts +4 -0
  605. package/dist/search-tuning-key-resolver.d.ts.map +1 -0
  606. package/dist/search-tuning-key-resolver.js +107 -0
  607. package/dist/search-tuning-key-status.d.ts +24 -0
  608. package/dist/search-tuning-key-status.d.ts.map +1 -0
  609. package/dist/search-tuning-key-status.js +24 -0
  610. package/dist/search-tuning-lint.d.ts +9 -0
  611. package/dist/search-tuning-lint.d.ts.map +1 -0
  612. package/dist/search-tuning-lint.js +468 -0
  613. package/dist/search-tuning-registry.d.ts +43 -0
  614. package/dist/search-tuning-registry.d.ts.map +1 -1
  615. package/dist/search-tuning-registry.js +214 -49
  616. package/dist/self-audit.d.ts +12 -0
  617. package/dist/self-audit.d.ts.map +1 -1
  618. package/dist/self-audit.js +36 -10
  619. package/dist/self-config-doctor-v2.d.ts +145 -3
  620. package/dist/self-config-doctor-v2.d.ts.map +1 -1
  621. package/dist/self-config-doctor-v2.js +1329 -255
  622. package/dist/self-config-doctor.d.ts +20 -1
  623. package/dist/self-config-doctor.d.ts.map +1 -1
  624. package/dist/self-config-doctor.js +65 -309
  625. package/dist/settled-unit-states.d.ts +9 -0
  626. package/dist/settled-unit-states.d.ts.map +1 -0
  627. package/dist/settled-unit-states.js +14 -0
  628. package/dist/sharkcraft-inspector.d.ts +47 -1
  629. package/dist/sharkcraft-inspector.d.ts.map +1 -1
  630. package/dist/sharkcraft-inspector.js +278 -29
  631. package/dist/spec/spec-evidence.d.ts.map +1 -1
  632. package/dist/spec/spec-evidence.js +14 -20
  633. package/dist/split-identifier.d.ts +21 -0
  634. package/dist/split-identifier.d.ts.map +1 -0
  635. package/dist/split-identifier.js +27 -0
  636. package/dist/start-here.d.ts.map +1 -1
  637. package/dist/start-here.js +1 -2
  638. package/dist/substitute-placeholders.d.ts +8 -0
  639. package/dist/substitute-placeholders.d.ts.map +1 -0
  640. package/dist/substitute-placeholders.js +9 -0
  641. package/dist/symbol-index.d.ts +33 -0
  642. package/dist/symbol-index.d.ts.map +1 -1
  643. package/dist/symbol-index.js +241 -3
  644. package/dist/symbol-member-entry.d.ts +26 -0
  645. package/dist/symbol-member-entry.d.ts.map +1 -0
  646. package/dist/symbol-member-entry.js +1 -0
  647. package/dist/symbol-member-kind.d.ts +14 -0
  648. package/dist/symbol-member-kind.d.ts.map +1 -0
  649. package/dist/symbol-member-kind.js +14 -0
  650. package/dist/task-packet.d.ts.map +1 -1
  651. package/dist/task-packet.js +52 -9
  652. package/dist/task-ranker.d.ts +8 -0
  653. package/dist/task-ranker.d.ts.map +1 -1
  654. package/dist/task-ranker.js +25 -13
  655. package/dist/task-risk.js +1 -1
  656. package/dist/task-routing-hint-registry.d.ts +20 -1
  657. package/dist/task-routing-hint-registry.d.ts.map +1 -1
  658. package/dist/task-routing-hint-registry.js +186 -42
  659. package/dist/template-drift.d.ts.map +1 -1
  660. package/dist/template-drift.js +30 -9
  661. package/dist/template-lint.d.ts.map +1 -1
  662. package/dist/template-lint.js +160 -2
  663. package/dist/term-query.d.ts +10 -0
  664. package/dist/term-query.d.ts.map +1 -0
  665. package/dist/term-query.js +1 -0
  666. package/dist/test-definitions.d.ts +6 -3
  667. package/dist/test-definitions.d.ts.map +1 -1
  668. package/dist/test-runner.d.ts +95 -10
  669. package/dist/test-runner.d.ts.map +1 -1
  670. package/dist/test-runner.js +309 -318
  671. package/dist/tuning-query-tokens.d.ts +29 -0
  672. package/dist/tuning-query-tokens.d.ts.map +1 -0
  673. package/dist/tuning-query-tokens.js +51 -0
  674. package/dist/typecheck-files.d.ts +36 -0
  675. package/dist/typecheck-files.d.ts.map +1 -0
  676. package/dist/typecheck-files.js +158 -0
  677. package/dist/uncertainty.js +1 -1
  678. package/dist/universal-search.d.ts.map +1 -1
  679. package/dist/universal-search.js +5 -3
  680. package/dist/unregistered-exports.d.ts +19 -0
  681. package/dist/unregistered-exports.d.ts.map +1 -0
  682. package/dist/unregistered-exports.js +141 -0
  683. package/dist/unresolvable-reason.d.ts +11 -0
  684. package/dist/unresolvable-reason.d.ts.map +1 -0
  685. package/dist/unresolvable-reason.js +11 -0
  686. package/dist/upgrade-advisor.d.ts.map +1 -1
  687. package/dist/upgrade-advisor.js +16 -9
  688. package/dist/validate-contribution-file.d.ts +4 -0
  689. package/dist/validate-contribution-file.d.ts.map +1 -0
  690. package/dist/validate-contribution-file.js +228 -0
  691. package/dist/why-file.d.ts +3 -0
  692. package/dist/why-file.d.ts.map +1 -1
  693. package/dist/why-file.js +7 -3
  694. package/package.json +17 -17
@@ -1,5 +1,6 @@
1
1
  import { type IDriftReport } from './drift.js';
2
2
  import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
+ import { type IVerdictCoverage } from '@shrkcrft/core';
3
4
  export interface IQualityGateResult {
4
5
  id: string;
5
6
  label: string;
@@ -13,7 +14,15 @@ export interface IQualityGateResult {
13
14
  data?: Record<string, unknown>;
14
15
  }
15
16
  export interface IQualityReport {
16
- overall: 'pass' | 'fail' | 'warn';
17
+ /**
18
+ * `fail` — a blocking gate failed. `not-verified` — no blocking gate failed,
19
+ * but a gate could not run, examined nothing while required, or examined
20
+ * only part of its scope (core's `coverageShortfall` over {@link coverage}):
21
+ * never a pass, for MCP, the dashboard and the report site alike. `warn` —
22
+ * a non-blocking gate failed. `pass` — every gate that was asked for
23
+ * examined its whole scope and passed.
24
+ */
25
+ overall: 'pass' | 'fail' | 'warn' | 'not-verified';
17
26
  blockers: number;
18
27
  warnings: number;
19
28
  score: number;
@@ -21,6 +30,14 @@ export interface IQualityReport {
21
30
  nextRecommendations: readonly string[];
22
31
  /** Drift report attached when the drift gate ran. */
23
32
  drift?: IDriftReport;
33
+ /**
34
+ * What the report examined (unit `quality gates`), from the one
35
+ * classification `shrk quality` also reads (`examineQualityGate`).
36
+ * Always set by `buildQualityReport`.
37
+ */
38
+ coverage?: IVerdictCoverage;
39
+ /** The shortfall that made `overall` `not-verified`, when one did. */
40
+ shortfalls?: readonly string[];
24
41
  }
25
42
  export interface IQualityConfig {
26
43
  minReadiness?: number;
@@ -40,6 +57,16 @@ export interface IBuildQualityReportInput {
40
57
  * read-only path so the server never executes shell commands.
41
58
  */
42
59
  skipShell?: boolean;
60
+ /** Narrow the knowledge stale-check gate to entries referencing these files (`shrk quality --changed-only`). */
61
+ changedFiles?: readonly string[];
62
+ /**
63
+ * Set ONLY by `shrk quality`, which runs the seven data-defined gate planes
64
+ * itself (some spawn shells). Every other consumer — MCP, the dashboard, the
65
+ * report site — does not run them, so it gets a `gate-planes` row with
66
+ * `executed: false` whenever the config declares any plane rule: the report
67
+ * is then `not-verified`, never a `pass` over rules it never evaluated.
68
+ */
69
+ callerRunsGatePlanes?: boolean;
43
70
  }
44
71
  /**
45
72
  * Build a quality report from an inspection. Pure orchestration over the
@@ -1 +1 @@
1
- {"version":3,"file":"quality-report.d.ts","sourceRoot":"","sources":["../src/quality-report.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAUjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,qDAAqD;IACrD,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,qBAAqB,CAAC;IAClC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,cAAc,CAAC,CA0OzB"}
1
+ {"version":3,"file":"quality-report.d.ts","sourceRoot":"","sources":["../src/quality-report.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAcjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAS1E,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,qDAAqD;IACrD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,sEAAsE;IACtE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,qBAAqB,CAAC;IAClC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gHAAgH;IAChH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAkZzB"}
@@ -1,10 +1,19 @@
1
- import { evaluateBoundaries, loadTsconfigPaths, scanImports, } from '@shrkcrft/boundaries';
2
1
  import { buildAiReadinessReport } from "./ai-readiness.js";
2
+ import { describeBoundaryConfiguration } from "./boundary-configuration-status.js";
3
+ import { boundaryLoadIssueLabel, runBoundaryCheck } from "./run-boundary-check.js";
3
4
  import { buildCoverageReport } from "./coverage-report.js";
4
5
  import { buildDriftReport } from "./drift.js";
5
- import { buildPackDoctorReport } from "./pack-doctor.js";
6
+ import { buildPackDoctorReportAsync } from "./pack-doctor.js";
7
+ import { packDoctorVerdict } from "./pack-doctor-verdict.js";
8
+ import { declaredGatePlaneRules } from "./declared-gate-plane-rules.js";
9
+ import { knowledgeStaleQualityGate } from "./knowledge-stale-quality-gate.js";
6
10
  import { runDoctor } from "./sharkcraft-inspector.js";
11
+ import { doctorVerdict } from "./doctor-verdict.js";
7
12
  import { loadAgentContractTests, loadContextTests, runAgentContractTest, runContextTest, } from "./test-runner.js";
13
+ import { warmReferenceRegistries } from "./reference-registry.js";
14
+ import { coverageShortfall } from '@shrkcrft/core';
15
+ import { qualityReportCoverage } from "./quality-report-coverage.js";
16
+ import { buildDeclaredXrefReport, declaredXrefCoverage, declaredXrefSummaryLine, isBrokenXref, } from "./declared-cross-references.js";
8
17
  /**
9
18
  * Build a quality report from an inspection. Pure orchestration over the
10
19
  * existing inspector helpers — no IO outside what those helpers already do.
@@ -12,8 +21,12 @@ import { loadAgentContractTests, loadContextTests, runAgentContractTest, runCont
12
21
  export async function buildQualityReport(input) {
13
22
  const { inspection, config, strict = false, skipShell = false } = input;
14
23
  const gates = [];
15
- // 1. Doctor.
24
+ // 1. Doctor. A scope the doctor could not verify (a compiled pack build with
25
+ // no build record) is PARTIAL here, exactly as `shrk doctor` settles it to 2.
16
26
  const doctor = runDoctor(inspection);
27
+ // THE doctor settlement (`doctorVerdict`) — the one `shrk doctor`, `shrk
28
+ // check`, the dashboard and MCP `inspect_sharkcraft_setup` read.
29
+ const doctorShortfalls = doctorVerdict(doctor).shortfalls;
17
30
  gates.push({
18
31
  id: 'doctor',
19
32
  label: 'Project doctor',
@@ -21,13 +34,15 @@ export async function buildQualityReport(input) {
21
34
  blocking: true,
22
35
  runsShell: false,
23
36
  executed: true,
24
- notes: doctor.checks
25
- .filter((c) => c.severity === 'error')
26
- .map((c) => `${c.title}: ${c.message}`),
37
+ notes: [
38
+ ...doctor.checks.filter((c) => c.severity === 'error').map((c) => `${c.title}: ${c.message}`),
39
+ ...(doctorShortfalls.length > 0 ? [`NOT VERIFIED — ${doctorShortfalls.join('; ')}`] : []),
40
+ ],
27
41
  data: {
28
42
  errors: doctor.summary.errors,
29
43
  warnings: doctor.summary.warnings,
30
44
  ok: doctor.summary.ok,
45
+ ...(doctorShortfalls.length > 0 ? { partial: true, shortfalls: doctorShortfalls } : {}),
31
46
  },
32
47
  });
33
48
  // 2. Readiness threshold.
@@ -46,7 +61,9 @@ export async function buildQualityReport(input) {
46
61
  data: { score: readiness.score, min: readinessMin, grade: readiness.grade },
47
62
  });
48
63
  // 3. Boundaries. The boundary scan reads files from disk but does not run
49
- // shell commands; safe for MCP.
64
+ // shell commands; safe for MCP. Through the ONE boundary orchestrator
65
+ // (round 11), so this gate reports exactly what `check boundaries` does —
66
+ // an errored rule counts as an error, a partial scope is never a pass.
50
67
  const boundaries = checkBoundaries(inspection);
51
68
  gates.push({
52
69
  id: 'boundaries',
@@ -56,7 +73,12 @@ export async function buildQualityReport(input) {
56
73
  runsShell: false,
57
74
  executed: true,
58
75
  notes: boundaries.notes,
59
- data: { errors: boundaries.errors, warnings: boundaries.warnings },
76
+ data: {
77
+ errors: boundaries.errors,
78
+ warnings: boundaries.warnings,
79
+ examinedNothing: boundaries.examinedNothing === true,
80
+ ...(boundaries.partial ? { partial: true, shortfalls: boundaries.shortfalls ?? [] } : {}),
81
+ },
60
82
  });
61
83
  // 4. Coverage.
62
84
  const cov = buildCoverageReport(inspection);
@@ -103,7 +125,11 @@ export async function buildQualityReport(input) {
103
125
  gates.push({
104
126
  id: 'drift',
105
127
  label: 'Drift report',
106
- passed: true,
128
+ // A gate that threw proved NOTHING. `passed: true` here would fold an
129
+ // unmeasured verdict into the green count and the score — the exact
130
+ // silent-green the loud-skip contract exists to prevent. `executed:
131
+ // false` marks it unmeasured; the score below excludes it either way.
132
+ passed: false,
107
133
  blocking: false,
108
134
  runsShell: false,
109
135
  executed: false,
@@ -124,14 +150,21 @@ export async function buildQualityReport(input) {
124
150
  runsShell: false,
125
151
  executed: true,
126
152
  notes: failed > 0 ? [`${failed}/${results.length} context tests failed`] : [],
127
- data: { total: results.length, failed },
153
+ // `failed === 0` over ZERO tests is not a pass — it examined nothing.
154
+ // Flagged so the CLI aggregate reports the gate as skipped (a deliberate
155
+ // skip when the gate is optional, NOT verified when it is required).
156
+ data: { total: results.length, failed, examinedNothing: results.length === 0 },
128
157
  });
129
158
  }
130
159
  catch (e) {
131
160
  gates.push({
132
161
  id: 'context-tests',
133
162
  label: 'Context tests',
134
- passed: true,
163
+ // A gate that threw proved NOTHING. `passed: true` here would fold an
164
+ // unmeasured verdict into the green count and the score — the exact
165
+ // silent-green the loud-skip contract exists to prevent. `executed:
166
+ // false` marks it unmeasured; the score below excludes it either way.
167
+ passed: false,
135
168
  blocking: false,
136
169
  runsShell: false,
137
170
  executed: false,
@@ -140,9 +173,24 @@ export async function buildQualityReport(input) {
140
173
  }
141
174
  // 7. Agent tests. Likewise, pure orchestration.
142
175
  try {
176
+ // The agent-test runner reads the shared reference registry (MCP ≡ CLI);
177
+ // a warm here keeps any command resolver a CLI caller already injected.
178
+ await warmReferenceRegistries(inspection);
143
179
  const all = await loadAgentContractTests(inspection);
144
180
  const results = all.map((t) => runAgentContractTest(inspection, t));
145
- const failed = results.filter((r) => !r.passed).length;
181
+ // A FAILURE is a test whose verdict is `fail`. A `not-verified` test (an
182
+ // expectation the runner could not evaluate — e.g. an `expectedCommands`
183
+ // entry with no command index injected, the MCP path) is an unexamined
184
+ // unit, the same verdict `shrk test agent` gives it (2): never a failure,
185
+ // never a pass. With no real failure the gate is PARTIAL, which the CLI
186
+ // aggregate reports as an accidental skip (NOT VERIFIED).
187
+ const failed = results.filter((r) => r.verdict === 'fail').length;
188
+ const notVerified = results.filter((r) => r.verdict === 'not-verified');
189
+ const partial = failed === 0 && notVerified.length > 0;
190
+ const notVerifiedNote = `NOT VERIFIED — ${notVerified.length} agent test(s) could not be evaluated: ${notVerified
191
+ .slice(0, 5)
192
+ .map((r) => r.id)
193
+ .join(', ')}${notVerified.length > 5 ? ` (+${notVerified.length - 5} more)` : ''}`;
146
194
  gates.push({
147
195
  id: 'agent-tests',
148
196
  label: 'Agent contract tests',
@@ -150,15 +198,29 @@ export async function buildQualityReport(input) {
150
198
  blocking: config.requireAgentTests === true || strict,
151
199
  runsShell: false,
152
200
  executed: true,
153
- notes: failed > 0 ? [`${failed}/${results.length} agent tests failed`] : [],
154
- data: { total: results.length, failed },
201
+ notes: [
202
+ ...(failed > 0 ? [`${failed}/${results.length} agent tests failed`] : []),
203
+ ...(notVerified.length > 0 ? [notVerifiedNote] : []),
204
+ ],
205
+ // Zero agent tests examined nothing — see the context-tests note above.
206
+ data: {
207
+ total: results.length,
208
+ failed,
209
+ notVerified: notVerified.length,
210
+ examinedNothing: results.length === 0,
211
+ ...(partial ? { partial: true, shortfalls: [notVerifiedNote] } : {}),
212
+ },
155
213
  });
156
214
  }
157
215
  catch (e) {
158
216
  gates.push({
159
217
  id: 'agent-tests',
160
218
  label: 'Agent contract tests',
161
- passed: true,
219
+ // A gate that threw proved NOTHING. `passed: true` here would fold an
220
+ // unmeasured verdict into the green count and the score — the exact
221
+ // silent-green the loud-skip contract exists to prevent. `executed:
222
+ // false` marks it unmeasured; the score below excludes it either way.
223
+ passed: false,
162
224
  blocking: false,
163
225
  runsShell: false,
164
226
  executed: false,
@@ -166,10 +228,20 @@ export async function buildQualityReport(input) {
166
228
  });
167
229
  }
168
230
  // 8. Packs doctor. Signature verification reads files but does not exec.
231
+ // Settled by THE pack-doctor verdict (`packDoctorVerdict`, the one `shrk
232
+ // packs doctor` exits on): ZERO packs examined nothing — a deliberate skip
233
+ // when the gate is optional, NOT verified when required — and a compiled
234
+ // build never compared to its source is PARTIAL. Never `passed` over either.
169
235
  try {
170
- const report = buildPackDoctorReport(inspection, {
236
+ // THE async doctor `shrk packs doctor` runs: registry-backed rejections
237
+ // included, so this row cannot pass a pack the verb fails (R12-X2).
238
+ const report = await buildPackDoctorReportAsync(inspection, {
171
239
  requireSignatures: config.requirePackSignatures === true,
172
240
  });
241
+ const verdict = packDoctorVerdict(report, inspection);
242
+ const compiledShortfall = report.compiledArtifactCoverage
243
+ ? coverageShortfall(report.compiledArtifactCoverage)
244
+ : undefined;
173
245
  gates.push({
174
246
  id: 'packs',
175
247
  label: 'Packs doctor',
@@ -177,13 +249,20 @@ export async function buildQualityReport(input) {
177
249
  blocking: config.requirePackSignatures === true || strict,
178
250
  runsShell: false,
179
251
  executed: true,
180
- notes: report.issues
181
- .filter((i) => i.severity === 'error')
182
- .slice(0, 5)
183
- .map((i) => `${i.packageName}: ${i.message}`),
252
+ notes: [
253
+ ...report.issues
254
+ .filter((i) => i.severity === 'error')
255
+ .slice(0, 5)
256
+ .map((i) => `${i.packageName}: ${i.message}`),
257
+ ...(verdict.examinedNothing ? ['0 packs discovered — nothing to examine'] : []),
258
+ ...(compiledShortfall ? [`NOT VERIFIED — ${compiledShortfall}`] : []),
259
+ ],
184
260
  data: {
185
261
  errors: report.summary.errors,
186
262
  warnings: report.summary.warnings,
263
+ packsDiscovered: verdict.packsDiscovered,
264
+ ...(verdict.examinedNothing ? { examinedNothing: true } : {}),
265
+ ...(compiledShortfall !== undefined && report.passed ? { partial: true, shortfalls: [compiledShortfall] } : {}),
187
266
  },
188
267
  });
189
268
  }
@@ -191,13 +270,101 @@ export async function buildQualityReport(input) {
191
270
  gates.push({
192
271
  id: 'packs',
193
272
  label: 'Packs doctor',
194
- passed: true,
273
+ // A gate that threw proved NOTHING. `passed: true` here would fold an
274
+ // unmeasured verdict into the green count and the score — the exact
275
+ // silent-green the loud-skip contract exists to prevent. `executed:
276
+ // false` marks it unmeasured; the score below excludes it either way.
277
+ passed: false,
195
278
  blocking: false,
196
279
  runsShell: false,
197
280
  executed: false,
198
281
  notes: [`could not run pack doctor: ${e.message}`],
199
282
  });
200
283
  }
284
+ // 9. Declared cross-references (round 11, 4.2) — the collector the
285
+ // self-config doctor reads, so the bundle and the verb cannot disagree. A
286
+ // dangling id is a warning (non-blocking unless --strict); a dangling
287
+ // `supersededBy`, a supersession cycle or an unknown facet kind blocks. An id
288
+ // that could not be looked up is an unexamined unit: with no blocking error
289
+ // the gate is PARTIAL (never a pass), and `data.coverage` carries the record.
290
+ try {
291
+ const xrefs = await buildDeclaredXrefReport(inspection);
292
+ const coverage = declaredXrefCoverage(xrefs);
293
+ const c = xrefs.counts;
294
+ const nothing = c.ids === 0 && xrefs.issues.length === 0 && xrefs.examined.unreadSources.length === 0;
295
+ const shortfall = nothing ? undefined : coverageShortfall(coverage);
296
+ gates.push({
297
+ id: 'cross-references',
298
+ label: 'Declared cross-references',
299
+ passed: c.errors === 0 && ((c.warnings === 0) || shortfall !== undefined),
300
+ blocking: c.errors > 0 || (strict && !nothing),
301
+ runsShell: false,
302
+ executed: true,
303
+ notes: [
304
+ declaredXrefSummaryLine(xrefs),
305
+ ...xrefs.rows
306
+ .filter(isBrokenXref)
307
+ .slice(0, 5)
308
+ .map((r) => `${r.severity}: ${r.message}${r.file ? ` (${r.file})` : ''}`),
309
+ ...xrefs.issues.slice(0, 3).map((i) => `${i.severity}: ${i.message}`),
310
+ ...(shortfall ? [`NOT VERIFIED — ${shortfall}`] : []),
311
+ ],
312
+ data: {
313
+ ids: c.ids,
314
+ dangling: c.dangling,
315
+ wrongKind: c.wrongKind,
316
+ unverified: c.unverified,
317
+ errors: c.errors,
318
+ warnings: c.warnings,
319
+ coverage,
320
+ ...(nothing ? { examinedNothing: true } : {}),
321
+ ...(shortfall !== undefined && c.errors === 0 ? { partial: true } : {}),
322
+ },
323
+ });
324
+ }
325
+ catch (e) {
326
+ gates.push({
327
+ id: 'cross-references',
328
+ label: 'Declared cross-references',
329
+ // Could not run → proved nothing; never folded into a pass.
330
+ passed: false,
331
+ blocking: false,
332
+ runsShell: false,
333
+ executed: false,
334
+ notes: [`could not collect declared cross-references: ${e.message}`],
335
+ });
336
+ }
337
+ // 10. The knowledge stale-check — THE gate `shrk knowledge stale-check` and
338
+ // `shrk quality` settle (`knowledgeStaleQualityGate`), so this report and
339
+ // the CLI bundle cannot disagree about the corpus (round 11 review: it was
340
+ // CLI-only, and MCP read `pass` over a stale corpus `shrk quality` failed).
341
+ gates.push(await knowledgeStaleQualityGate(inspection, input.changedFiles));
342
+ // 11. The seven data-defined gate planes. `shrk quality` runs them itself;
343
+ // every other consumer does not (some spawn shells), so a config that
344
+ // declares plane rules gets a NOT-RUN row — the report is `not-verified`,
345
+ // never a `pass` over rules nobody evaluated.
346
+ if (input.callerRunsGatePlanes !== true) {
347
+ const planes = await declaredGatePlaneRules(inspection.projectRoot);
348
+ if (planes.total > 0 || planes.loadError !== undefined) {
349
+ const breakdown = Object.entries(planes.byPlane)
350
+ .map(([plane, n]) => `${plane} ${n}`)
351
+ .join(', ');
352
+ gates.push({
353
+ id: 'gate-planes',
354
+ label: 'Data-defined gate planes',
355
+ passed: false,
356
+ blocking: false,
357
+ runsShell: false,
358
+ executed: false,
359
+ notes: [
360
+ planes.loadError !== undefined
361
+ ? `could not resolve the config (${planes.loadError}), so the data-defined planes were not evaluated — run \`shrk gates check\``
362
+ : `${planes.total} plane rule(s) declared (${breakdown}) — not evaluated by this report; run \`shrk gates check\` (or \`shrk quality\`)`,
363
+ ],
364
+ data: { rules: planes.total, byPlane: planes.byPlane },
365
+ });
366
+ }
367
+ }
201
368
  // If `skipShell` were true and any gate listed runsShell=true, we'd record
202
369
  // it as skipped here. Today every gate is pure inspection — no shell. The
203
370
  // flag is kept so MCP callers can pre-declare the intent and future gates
@@ -221,7 +388,13 @@ export async function buildQualityReport(input) {
221
388
  const executed = gates.filter((g) => g.executed).length;
222
389
  const passCount = gates.filter((g) => g.passed).length;
223
390
  const score = executed > 0 ? Math.round((passCount / executed) * 100) : 100;
224
- const overall = blockers > 0 ? 'fail' : warnings > 0 ? 'warn' : 'pass';
391
+ // Settled through core's coverage rule, like every CLI verdict: a blocking
392
+ // failure is `fail`; otherwise a gate that could not run, examined nothing
393
+ // while required, or examined only part of its scope makes the report
394
+ // `not-verified` — never `pass` (or `warn`) over it.
395
+ const coverage = qualityReportCoverage(gates);
396
+ const shortfall = coverageShortfall(coverage);
397
+ const overall = blockers > 0 ? 'fail' : shortfall !== undefined ? 'not-verified' : warnings > 0 ? 'warn' : 'pass';
225
398
  const nextRecommendations = buildRecommendations(gates);
226
399
  const report = {
227
400
  overall,
@@ -230,6 +403,8 @@ export async function buildQualityReport(input) {
230
403
  score,
231
404
  gates,
232
405
  nextRecommendations,
406
+ coverage,
407
+ shortfalls: shortfall !== undefined ? [shortfall] : [],
233
408
  };
234
409
  if (drift)
235
410
  report.drift = drift;
@@ -237,21 +412,58 @@ export async function buildQualityReport(input) {
237
412
  }
238
413
  function checkBoundaries(inspection) {
239
414
  const rules = inspection.boundaryRegistry.list();
240
- if (rules.length === 0) {
241
- return { errors: 0, warnings: 0, notes: ['no boundary rules configured'] };
415
+ const loadIssues = inspection.boundaryLoadIssues ?? [];
416
+ if (rules.length === 0 && loadIssues.length === 0) {
417
+ // Zero errors over ZERO rules is not a clean boundary check — it examined
418
+ // nothing. Flagged so the CLI aggregate reports it as a skip, not a pass;
419
+ // the notes say WHY (e.g. a boundaries.ts that is not listed).
420
+ return {
421
+ errors: 0,
422
+ warnings: 0,
423
+ notes: ['no boundary rules configured', ...describeBoundaryConfiguration(inspection).diagnostics],
424
+ examinedNothing: true,
425
+ };
242
426
  }
243
427
  try {
244
- const scan = scanImports({ projectRoot: inspection.projectRoot });
245
- const tsconfigPaths = loadTsconfigPaths(inspection.projectRoot);
246
- const evalResult = evaluateBoundaries(scan, rules, {
247
- ...(tsconfigPaths.aliases.size > 0 ? { tsconfigPaths } : {}),
248
- });
428
+ const r = runBoundaryCheck(inspection);
429
+ // An errored rule, a stale exception and a failOnEmpty skip fail the gate
430
+ // exactly as they fail `check boundaries`.
431
+ const errors = r.counts.error +
432
+ r.loadIssues.length +
433
+ r.staleExceptions.length +
434
+ r.rules.filter((x) => x.failedOnEmpty === true).length;
435
+ const partial = errors === 0 && r.exitCode === 2;
249
436
  return {
250
- errors: evalResult.counts.error,
251
- warnings: evalResult.counts.warning,
252
- notes: evalResult.violations
253
- .slice(0, 5)
254
- .map((v) => `${v.severity}: ${v.file}:${v.line} → ${v.importSpecifier}`),
437
+ errors,
438
+ warnings: r.counts.warning,
439
+ notes: [
440
+ ...r.violations.slice(0, 5).map((v) => `${v.severity}: ${v.file}:${v.line} → ${v.importSpecifier}`),
441
+ ...r.loadIssues.map((i) => `error: ${boundaryLoadIssueLabel(i)} (${i.file}) — ${i.kind}: ${i.issues.join('; ')} — NOT evaluated`),
442
+ ...r.staleExceptions.map((s) => `error: ${s.file} — ${s.message}`),
443
+ ...(partial ? [`NOT VERIFIED — ${r.shortfalls.slice(0, 3).join('; ')}`] : []),
444
+ // Round 13 (lane B): dead selector units and went-live expectEmpty
445
+ // markers are ADVISORY here — listed, never an error: `check
446
+ // boundaries --fail-on-dead-units` is where they fail. Quality used to
447
+ // report `passed` with no note while `check boundaries` withheld its ✓.
448
+ ...r.deadUnits.slice(0, 5).map((d) => `advisory: dead selector unit [${d.unit}] ${d.ruleId}: ${d.selector} — ${d.reason}`),
449
+ ...(r.deadUnits.length > 5
450
+ ? [`advisory: ${r.deadUnits.length - 5} more dead selector unit(s) — \`shrk check boundaries\` lists them`]
451
+ : []),
452
+ // A PACK marker that went live is INFO (round 13 review), as `check
453
+ // boundaries` prints it in its own block — never counted as advisory.
454
+ ...r.wentLive
455
+ .slice(0, 5)
456
+ .map((u) => `${u.packageName !== undefined ? 'info' : 'advisory'}: [${u.unit}] ${u.ruleId}: ${u.selector} — ${u.reason}`),
457
+ ...(r.wentLive.length > 5
458
+ ? [`advisory: ${r.wentLive.length - 5} more went-live expectEmpty marker(s) — \`shrk check boundaries\` lists them`]
459
+ : []),
460
+ // …and every intended-empty unit the run ACCEPTED is printed, never
461
+ // silent (round 13 review) — the orchestrator's settled acceptance
462
+ // lines (present only at exit 0), worded as the gate planes' coverage
463
+ // item prints theirs.
464
+ ...r.accepted.map((a) => `accepted: ${a}`),
465
+ ],
466
+ ...(partial ? { partial: true, shortfalls: [...r.shortfalls] } : {}),
255
467
  };
256
468
  }
257
469
  catch (e) {
@@ -261,7 +473,14 @@ function checkBoundaries(inspection) {
261
473
  function buildRecommendations(gates) {
262
474
  const out = [];
263
475
  for (const g of gates) {
264
- if (g.passed)
476
+ if (g.id === 'agent-tests' && g.passed && g.data?.['partial'] === true) {
477
+ // Not a failure, not a pass: an expectation the runner could not evaluate.
478
+ out.push('Run `shrk test agent` from the CLI — it injects the command index, so every `expectedCommands` entry is evaluated.');
479
+ continue;
480
+ }
481
+ // A gate that passed over PART of its scope still gets its repro: the
482
+ // report is not-verified because of it.
483
+ if (g.passed && g.data?.['partial'] !== true)
265
484
  continue;
266
485
  switch (g.id) {
267
486
  case 'doctor':
@@ -288,6 +507,15 @@ function buildRecommendations(gates) {
288
507
  case 'packs':
289
508
  out.push('Run `shrk packs doctor --require-signatures` to inspect pack issues.');
290
509
  break;
510
+ case 'cross-references':
511
+ out.push('Run `shrk self-config xrefs --dangling-only` to list dangling cross-reference ids (`shrk self-config resolve <id>` explains one).');
512
+ break;
513
+ case 'knowledge-stale':
514
+ out.push('Run `shrk knowledge stale-check` to see the stale, missing and unverifiable knowledge references.');
515
+ break;
516
+ case 'gate-planes':
517
+ out.push('Run `shrk gates check` (or `shrk quality`) to evaluate the data-defined gate planes this report did not run.');
518
+ break;
291
519
  default:
292
520
  break;
293
521
  }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The shape of work a free-text query asks for — THE intent vocabulary
3
+ * `classifyQueryIntent` answers in. The recommender gates source-writing
4
+ * scaffolds on `Create`, pins grounding on `Plan`, and change-intent /
5
+ * prepare-agent-task consult it instead of their own verb regexes.
6
+ */
7
+ export declare enum QueryIntent {
8
+ Create = "create",
9
+ Diagnose = "diagnose",
10
+ Repair = "repair",
11
+ Refactor = "refactor",
12
+ Review = "review",
13
+ Plan = "plan",
14
+ Explain = "explain",
15
+ Release = "release",
16
+ Unknown = "unknown"
17
+ }
18
+ //# sourceMappingURL=query-intent-kind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-intent-kind.d.ts","sourceRoot":"","sources":["../src/query-intent-kind.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The shape of work a free-text query asks for — THE intent vocabulary
3
+ * `classifyQueryIntent` answers in. The recommender gates source-writing
4
+ * scaffolds on `Create`, pins grounding on `Plan`, and change-intent /
5
+ * prepare-agent-task consult it instead of their own verb regexes.
6
+ */
7
+ export var QueryIntent;
8
+ (function (QueryIntent) {
9
+ QueryIntent["Create"] = "create";
10
+ QueryIntent["Diagnose"] = "diagnose";
11
+ QueryIntent["Repair"] = "repair";
12
+ QueryIntent["Refactor"] = "refactor";
13
+ QueryIntent["Review"] = "review";
14
+ QueryIntent["Plan"] = "plan";
15
+ QueryIntent["Explain"] = "explain";
16
+ QueryIntent["Release"] = "release";
17
+ QueryIntent["Unknown"] = "unknown";
18
+ })(QueryIntent || (QueryIntent = {}));
@@ -0,0 +1,23 @@
1
+ import type { QueryIntent } from './query-intent-kind.js';
2
+ /** `classifyQueryIntent`'s answer. */
3
+ export interface IQueryIntentResult {
4
+ /** The primary intent. */
5
+ readonly intent: QueryIntent;
6
+ /**
7
+ * The create verb that makes this a create/build query, when one does —
8
+ * set even when a planning verb earlier in the query makes the primary
9
+ * intent `Plan` ("plan to add …").
10
+ */
11
+ readonly createVerb?: string;
12
+ /** A planning verb in the first four terms ("help me plan …"), when present. */
13
+ readonly planVerb?: string;
14
+ /**
15
+ * A create word that was found but does NOT make this a create query,
16
+ * because a repair/diagnosis marker is present ("fix the broken BUILD",
17
+ * "why does the NEW route fail") — names the marker.
18
+ */
19
+ readonly vetoedBy?: string;
20
+ /** The normalised terms the decision was made over. */
21
+ readonly terms: readonly string[];
22
+ }
23
+ //# sourceMappingURL=query-intent-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-intent-result.d.ts","sourceRoot":"","sources":["../src/query-intent-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import type { IQueryIntentResult } from './query-intent-result.js';
2
+ /**
3
+ * THE eligibility rule for SOURCE-WRITING offers — a scaffold, a `gen` /
4
+ * `apply` command, a suggested generation: only a create/build query admits
5
+ * them. The recommender gates its writes-source candidates on it and the task
6
+ * packet gates its suggested generation on it, so the two cannot disagree
7
+ * about one query (spec 2.3, round 11 review R11-GAP-6).
8
+ */
9
+ export declare function intentAdmitsSourceWrites(intent: IQueryIntentResult): boolean;
10
+ /**
11
+ * A diagnose / repair query ("fix the broken build", "why does the new route
12
+ * fail"): a create/scaffold pipeline, a template, or a source-writing command
13
+ * is never an answer to it — the task packet drops them.
14
+ */
15
+ export declare function intentIsRepairOrDiagnosis(intent: IQueryIntentResult): boolean;
16
+ /** Classify a free-text query. Pure and deterministic. */
17
+ export declare function classifyQueryIntent(query: string): IQueryIntentResult;
18
+ //# sourceMappingURL=query-intent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-intent.d.ts","sourceRoot":"","sources":["../src/query-intent.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AA+QnE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAE7E;AAED,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAoCrE"}