@shrkcrft/inspector 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 (693) 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 +6 -0
  69. package/dist/code-intelligence-doctor.d.ts.map +1 -1
  70. package/dist/code-intelligence-doctor.js +22 -7
  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 +23 -2
  138. package/dist/doc-references.d.ts.map +1 -1
  139. package/dist/doc-references.js +96 -17
  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.js +1 -1
  162. package/dist/healing-plan.d.ts.map +1 -1
  163. package/dist/healing-plan.js +3 -4
  164. package/dist/helper-catalog.d.ts +25 -0
  165. package/dist/helper-catalog.d.ts.map +1 -0
  166. package/dist/helper-catalog.js +91 -0
  167. package/dist/helper-registry.d.ts.map +1 -1
  168. package/dist/helper-registry.js +17 -1
  169. package/dist/helper-view.d.ts +33 -0
  170. package/dist/helper-view.d.ts.map +1 -0
  171. package/dist/helper-view.js +1 -0
  172. package/dist/i-asset-doctor-flags.d.ts +16 -0
  173. package/dist/i-asset-doctor-flags.d.ts.map +1 -0
  174. package/dist/i-asset-doctor-flags.js +1 -0
  175. package/dist/i-command-resolution.d.ts +22 -0
  176. package/dist/i-command-resolution.d.ts.map +1 -0
  177. package/dist/i-command-resolution.js +1 -0
  178. package/dist/i-command-resolve-options.d.ts +24 -0
  179. package/dist/i-command-resolve-options.d.ts.map +1 -0
  180. package/dist/i-command-resolve-options.js +1 -0
  181. package/dist/i-command-safety.d.ts +13 -0
  182. package/dist/i-command-safety.d.ts.map +1 -0
  183. package/dist/i-command-safety.js +1 -0
  184. package/dist/i-contribution-accepted-entry.d.ts +18 -0
  185. package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
  186. package/dist/i-contribution-accepted-entry.js +1 -0
  187. package/dist/i-contribution-entry-rejection.d.ts +21 -0
  188. package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
  189. package/dist/i-contribution-entry-rejection.js +1 -0
  190. package/dist/i-contribution-file-issue.d.ts +18 -0
  191. package/dist/i-contribution-file-issue.d.ts.map +1 -0
  192. package/dist/i-contribution-file-issue.js +1 -0
  193. package/dist/i-contribution-file-report.d.ts +40 -0
  194. package/dist/i-contribution-file-report.d.ts.map +1 -0
  195. package/dist/i-contribution-file-report.js +1 -0
  196. package/dist/i-contribution-file-validation.d.ts +24 -0
  197. package/dist/i-contribution-file-validation.d.ts.map +1 -0
  198. package/dist/i-contribution-file-validation.js +1 -0
  199. package/dist/i-contributions-report.d.ts +31 -0
  200. package/dist/i-contributions-report.d.ts.map +1 -0
  201. package/dist/i-contributions-report.js +1 -0
  202. package/dist/i-declared-xref-field.d.ts +25 -0
  203. package/dist/i-declared-xref-field.d.ts.map +1 -0
  204. package/dist/i-declared-xref-field.js +1 -0
  205. package/dist/i-declared-xref-issue.d.ts +25 -0
  206. package/dist/i-declared-xref-issue.d.ts.map +1 -0
  207. package/dist/i-declared-xref-issue.js +1 -0
  208. package/dist/i-declared-xref-report.d.ts +48 -0
  209. package/dist/i-declared-xref-report.d.ts.map +1 -0
  210. package/dist/i-declared-xref-report.js +1 -0
  211. package/dist/i-declared-xref-row.d.ts +29 -0
  212. package/dist/i-declared-xref-row.d.ts.map +1 -0
  213. package/dist/i-declared-xref-row.js +1 -0
  214. package/dist/i-doctor-verdict.d.ts +10 -0
  215. package/dist/i-doctor-verdict.d.ts.map +1 -0
  216. package/dist/i-doctor-verdict.js +1 -0
  217. package/dist/i-kind-outcomes.d.ts +13 -0
  218. package/dist/i-kind-outcomes.d.ts.map +1 -0
  219. package/dist/i-kind-outcomes.js +1 -0
  220. package/dist/i-pack-doctor-verdict.d.ts +15 -0
  221. package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
  222. package/dist/i-pack-doctor-verdict.js +1 -0
  223. package/dist/i-probed-id-field.d.ts +17 -0
  224. package/dist/i-probed-id-field.d.ts.map +1 -0
  225. package/dist/i-probed-id-field.js +1 -0
  226. package/dist/i-reference-kind-declaration.d.ts +38 -0
  227. package/dist/i-reference-kind-declaration.d.ts.map +1 -0
  228. package/dist/i-reference-kind-declaration.js +1 -0
  229. package/dist/i-reference-warm-options.d.ts +21 -0
  230. package/dist/i-reference-warm-options.d.ts.map +1 -0
  231. package/dist/i-reference-warm-options.js +1 -0
  232. package/dist/i-registry-outcomes.d.ts +16 -0
  233. package/dist/i-registry-outcomes.d.ts.map +1 -0
  234. package/dist/i-registry-outcomes.js +1 -0
  235. package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
  236. package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
  237. package/dist/i-scaffold-pattern-doctor-report.js +1 -0
  238. package/dist/i-search-tuning-key-probe.d.ts +30 -0
  239. package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
  240. package/dist/i-search-tuning-key-probe.js +1 -0
  241. package/dist/i-search-tuning-lint-issue.d.ts +61 -0
  242. package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
  243. package/dist/i-search-tuning-lint-issue.js +1 -0
  244. package/dist/i-search-tuning-lint-report.d.ts +38 -0
  245. package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
  246. package/dist/i-search-tuning-lint-report.js +1 -0
  247. package/dist/i-unresolvable-reference-scan.d.ts +14 -0
  248. package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
  249. package/dist/i-unresolvable-reference-scan.js +1 -0
  250. package/dist/i-unresolvable-reference.d.ts +29 -0
  251. package/dist/i-unresolvable-reference.d.ts.map +1 -0
  252. package/dist/i-unresolvable-reference.js +1 -0
  253. package/dist/i-workspace-profile-payload.d.ts +12 -0
  254. package/dist/i-workspace-profile-payload.d.ts.map +1 -0
  255. package/dist/i-workspace-profile-payload.js +1 -0
  256. package/dist/impact-analysis.d.ts +15 -0
  257. package/dist/impact-analysis.d.ts.map +1 -1
  258. package/dist/impact-analysis.js +58 -13
  259. package/dist/impact-render.d.ts.map +1 -1
  260. package/dist/impact-render.js +22 -0
  261. package/dist/import-hygiene.d.ts +35 -1
  262. package/dist/import-hygiene.d.ts.map +1 -1
  263. package/dist/import-hygiene.js +107 -13
  264. package/dist/index.d.ts +141 -0
  265. package/dist/index.d.ts.map +1 -1
  266. package/dist/index.js +172 -0
  267. package/dist/inspection-discovery.d.ts +45 -0
  268. package/dist/inspection-discovery.d.ts.map +1 -0
  269. package/dist/inspection-discovery.js +70 -0
  270. package/dist/knowledge-advisory-code.d.ts +17 -0
  271. package/dist/knowledge-advisory-code.d.ts.map +1 -0
  272. package/dist/knowledge-advisory-code.js +17 -0
  273. package/dist/knowledge-aged-entry.d.ts +10 -0
  274. package/dist/knowledge-aged-entry.d.ts.map +1 -0
  275. package/dist/knowledge-aged-entry.js +1 -0
  276. package/dist/knowledge-authoring.d.ts +24 -1
  277. package/dist/knowledge-authoring.d.ts.map +1 -1
  278. package/dist/knowledge-authoring.js +46 -7
  279. package/dist/knowledge-entry-verdict-record.d.ts +22 -0
  280. package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
  281. package/dist/knowledge-entry-verdict-record.js +1 -0
  282. package/dist/knowledge-entry-verdict.d.ts +17 -0
  283. package/dist/knowledge-entry-verdict.d.ts.map +1 -0
  284. package/dist/knowledge-entry-verdict.js +17 -0
  285. package/dist/knowledge-graph.d.ts +6 -0
  286. package/dist/knowledge-graph.d.ts.map +1 -1
  287. package/dist/knowledge-graph.js +18 -7
  288. package/dist/knowledge-kind-bucket.d.ts +19 -0
  289. package/dist/knowledge-kind-bucket.d.ts.map +1 -0
  290. package/dist/knowledge-kind-bucket.js +1 -0
  291. package/dist/knowledge-load-failure.d.ts +23 -0
  292. package/dist/knowledge-load-failure.d.ts.map +1 -0
  293. package/dist/knowledge-load-failure.js +1 -0
  294. package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
  295. package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
  296. package/dist/knowledge-reference-kind-bucket.js +1 -0
  297. package/dist/knowledge-stale-advisory.d.ts +14 -0
  298. package/dist/knowledge-stale-advisory.d.ts.map +1 -0
  299. package/dist/knowledge-stale-advisory.js +1 -0
  300. package/dist/knowledge-stale-coverage.d.ts +19 -0
  301. package/dist/knowledge-stale-coverage.d.ts.map +1 -0
  302. package/dist/knowledge-stale-coverage.js +1 -0
  303. package/dist/knowledge-stale-gate-flags.d.ts +33 -0
  304. package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
  305. package/dist/knowledge-stale-gate-flags.js +1 -0
  306. package/dist/knowledge-stale-gate-input.d.ts +46 -0
  307. package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
  308. package/dist/knowledge-stale-gate-input.js +1 -0
  309. package/dist/knowledge-stale-gate-result.d.ts +33 -0
  310. package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
  311. package/dist/knowledge-stale-gate-result.js +1 -0
  312. package/dist/knowledge-stale-gate-rule.d.ts +33 -0
  313. package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
  314. package/dist/knowledge-stale-gate-rule.js +1 -0
  315. package/dist/knowledge-stale-gate-violation.d.ts +13 -0
  316. package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
  317. package/dist/knowledge-stale-gate-violation.js +1 -0
  318. package/dist/knowledge-stale-gate.d.ts +83 -0
  319. package/dist/knowledge-stale-gate.d.ts.map +1 -0
  320. package/dist/knowledge-stale-gate.js +429 -0
  321. package/dist/knowledge-stale-quality-gate.d.ts +26 -0
  322. package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
  323. package/dist/knowledge-stale-quality-gate.js +110 -0
  324. package/dist/knowledge-stale.d.ts +122 -9
  325. package/dist/knowledge-stale.d.ts.map +1 -1
  326. package/dist/knowledge-stale.js +996 -291
  327. package/dist/knowledge-unverifiable-reason.d.ts +12 -0
  328. package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
  329. package/dist/knowledge-unverifiable-reason.js +12 -0
  330. package/dist/loader-diagnostics.d.ts +14 -2
  331. package/dist/loader-diagnostics.d.ts.map +1 -1
  332. package/dist/match-terms.d.ts +48 -0
  333. package/dist/match-terms.d.ts.map +1 -0
  334. package/dist/match-terms.js +155 -0
  335. package/dist/migration-profile-registry.d.ts +10 -0
  336. package/dist/migration-profile-registry.d.ts.map +1 -1
  337. package/dist/migration-profile-registry.js +57 -34
  338. package/dist/migration-readiness.d.ts.map +1 -1
  339. package/dist/migration-readiness.js +1 -3
  340. package/dist/nearest-id.d.ts +10 -26
  341. package/dist/nearest-id.d.ts.map +1 -1
  342. package/dist/nearest-id.js +9 -59
  343. package/dist/pack-asset-freshness.d.ts +65 -0
  344. package/dist/pack-asset-freshness.d.ts.map +1 -0
  345. package/dist/pack-asset-freshness.js +340 -0
  346. package/dist/pack-author-ux.d.ts +24 -3
  347. package/dist/pack-author-ux.d.ts.map +1 -1
  348. package/dist/pack-author-ux.js +87 -93
  349. package/dist/pack-contributions-inventory.d.ts +79 -39
  350. package/dist/pack-contributions-inventory.d.ts.map +1 -1
  351. package/dist/pack-contributions-inventory.js +443 -286
  352. package/dist/pack-doctor-verdict.d.ts +29 -0
  353. package/dist/pack-doctor-verdict.d.ts.map +1 -0
  354. package/dist/pack-doctor-verdict.js +45 -0
  355. package/dist/pack-doctor.d.ts +74 -1
  356. package/dist/pack-doctor.d.ts.map +1 -1
  357. package/dist/pack-doctor.js +281 -1
  358. package/dist/pack-helper-plan.d.ts +24 -0
  359. package/dist/pack-helper-plan.d.ts.map +1 -0
  360. package/dist/pack-helper-plan.js +77 -0
  361. package/dist/pack-helper-registry.d.ts +14 -0
  362. package/dist/pack-helper-registry.d.ts.map +1 -1
  363. package/dist/pack-helper-registry.js +76 -37
  364. package/dist/pack-manifest-reader.d.ts +8 -0
  365. package/dist/pack-manifest-reader.d.ts.map +1 -0
  366. package/dist/pack-manifest-reader.js +79 -0
  367. package/dist/pack-release-check.d.ts +14 -1
  368. package/dist/pack-release-check.d.ts.map +1 -1
  369. package/dist/pack-release-check.js +23 -1
  370. package/dist/pack-signature-status.d.ts +18 -6
  371. package/dist/pack-signature-status.d.ts.map +1 -1
  372. package/dist/pack-signature-status.js +59 -105
  373. package/dist/pack-test-runner.d.ts +27 -5
  374. package/dist/pack-test-runner.d.ts.map +1 -1
  375. package/dist/pack-test-runner.js +91 -35
  376. package/dist/pack-typecheck.d.ts +8 -0
  377. package/dist/pack-typecheck.d.ts.map +1 -0
  378. package/dist/pack-typecheck.js +76 -0
  379. package/dist/plan-review.d.ts +2 -0
  380. package/dist/plan-review.d.ts.map +1 -1
  381. package/dist/plan-review.js +17 -5
  382. package/dist/plan-simulation.d.ts.map +1 -1
  383. package/dist/plan-simulation.js +16 -5
  384. package/dist/playbook-load-issue.d.ts +16 -0
  385. package/dist/playbook-load-issue.d.ts.map +1 -0
  386. package/dist/playbook-load-issue.js +1 -0
  387. package/dist/playbook-registry.d.ts +32 -1
  388. package/dist/playbook-registry.d.ts.map +1 -1
  389. package/dist/playbook-registry.js +144 -55
  390. package/dist/policy-declaration.d.ts +18 -0
  391. package/dist/policy-declaration.d.ts.map +1 -0
  392. package/dist/policy-declaration.js +1 -0
  393. package/dist/policy-engine.d.ts +8 -0
  394. package/dist/policy-engine.d.ts.map +1 -1
  395. package/dist/policy-engine.js +26 -9
  396. package/dist/policy-overrides.d.ts.map +1 -1
  397. package/dist/policy-overrides.js +4 -4
  398. package/dist/policy-registry.d.ts +27 -0
  399. package/dist/policy-registry.d.ts.map +1 -1
  400. package/dist/policy-registry.js +87 -20
  401. package/dist/probed-id-fields.d.ts +21 -0
  402. package/dist/probed-id-fields.d.ts.map +1 -0
  403. package/dist/probed-id-fields.js +25 -0
  404. package/dist/probed-id-source.d.ts +11 -0
  405. package/dist/probed-id-source.d.ts.map +1 -0
  406. package/dist/probed-id-source.js +11 -0
  407. package/dist/profile-registry.d.ts +25 -2
  408. package/dist/profile-registry.d.ts.map +1 -1
  409. package/dist/profile-registry.js +59 -6
  410. package/dist/quality-gate-examination.d.ts +15 -0
  411. package/dist/quality-gate-examination.d.ts.map +1 -0
  412. package/dist/quality-gate-examination.js +15 -0
  413. package/dist/quality-gate-row-status.d.ts +19 -0
  414. package/dist/quality-gate-row-status.d.ts.map +1 -0
  415. package/dist/quality-gate-row-status.js +28 -0
  416. package/dist/quality-gate-status.d.ts +16 -0
  417. package/dist/quality-gate-status.d.ts.map +1 -0
  418. package/dist/quality-gate-status.js +16 -0
  419. package/dist/quality-html.d.ts.map +1 -1
  420. package/dist/quality-html.js +14 -3
  421. package/dist/quality-report-coverage.d.ts +26 -0
  422. package/dist/quality-report-coverage.d.ts.map +1 -0
  423. package/dist/quality-report-coverage.js +48 -0
  424. package/dist/quality-report.d.ts +28 -1
  425. package/dist/quality-report.d.ts.map +1 -1
  426. package/dist/quality-report.js +263 -35
  427. package/dist/query-intent-kind.d.ts +18 -0
  428. package/dist/query-intent-kind.d.ts.map +1 -0
  429. package/dist/query-intent-kind.js +18 -0
  430. package/dist/query-intent-result.d.ts +23 -0
  431. package/dist/query-intent-result.d.ts.map +1 -0
  432. package/dist/query-intent-result.js +1 -0
  433. package/dist/query-intent.d.ts +18 -0
  434. package/dist/query-intent.d.ts.map +1 -0
  435. package/dist/query-intent.js +336 -0
  436. package/dist/query-resolver.d.ts +18 -0
  437. package/dist/query-resolver.d.ts.map +1 -1
  438. package/dist/query-resolver.js +7 -4
  439. package/dist/ranked-recommendations.d.ts +36 -0
  440. package/dist/ranked-recommendations.d.ts.map +1 -0
  441. package/dist/ranked-recommendations.js +1 -0
  442. package/dist/ranker-explainability.d.ts.map +1 -1
  443. package/dist/ranker-explainability.js +38 -10
  444. package/dist/recommend-recipe.d.ts +17 -0
  445. package/dist/recommend-recipe.d.ts.map +1 -0
  446. package/dist/recommend-recipe.js +1 -0
  447. package/dist/recommend-recipes.d.ts +9 -0
  448. package/dist/recommend-recipes.d.ts.map +1 -0
  449. package/dist/recommend-recipes.js +106 -0
  450. package/dist/recommendation-candidate.d.ts +30 -0
  451. package/dist/recommendation-candidate.d.ts.map +1 -0
  452. package/dist/recommendation-candidate.js +1 -0
  453. package/dist/recommendation-confidence.d.ts +27 -0
  454. package/dist/recommendation-confidence.d.ts.map +1 -0
  455. package/dist/recommendation-confidence.js +1 -0
  456. package/dist/recommendation-ranking-options.d.ts +24 -0
  457. package/dist/recommendation-ranking-options.d.ts.map +1 -0
  458. package/dist/recommendation-ranking-options.js +1 -0
  459. package/dist/recommendation-ranking.d.ts +50 -0
  460. package/dist/recommendation-ranking.d.ts.map +1 -0
  461. package/dist/recommendation-ranking.js +527 -0
  462. package/dist/recommendation-source.d.ts +23 -0
  463. package/dist/recommendation-source.d.ts.map +1 -0
  464. package/dist/recommendation-source.js +23 -0
  465. package/dist/recommendation-suppression.d.ts +14 -0
  466. package/dist/recommendation-suppression.d.ts.map +1 -0
  467. package/dist/recommendation-suppression.js +14 -0
  468. package/dist/reference-asset-kind.d.ts +14 -0
  469. package/dist/reference-asset-kind.d.ts.map +1 -0
  470. package/dist/reference-asset-kind.js +14 -0
  471. package/dist/reference-content-check.d.ts +32 -0
  472. package/dist/reference-content-check.d.ts.map +1 -0
  473. package/dist/reference-content-check.js +143 -0
  474. package/dist/reference-failure.d.ts +31 -0
  475. package/dist/reference-failure.d.ts.map +1 -0
  476. package/dist/reference-failure.js +31 -0
  477. package/dist/reference-id-status.d.ts +15 -0
  478. package/dist/reference-id-status.d.ts.map +1 -0
  479. package/dist/reference-id-status.js +15 -0
  480. package/dist/reference-kind-declarations.d.ts +42 -0
  481. package/dist/reference-kind-declarations.d.ts.map +1 -0
  482. package/dist/reference-kind-declarations.js +142 -0
  483. package/dist/reference-lookup.d.ts +6 -0
  484. package/dist/reference-lookup.d.ts.map +1 -1
  485. package/dist/reference-lookup.js +13 -5
  486. package/dist/reference-registry.d.ts +109 -11
  487. package/dist/reference-registry.d.ts.map +1 -1
  488. package/dist/reference-registry.js +186 -30
  489. package/dist/reference-subject.d.ts +20 -0
  490. package/dist/reference-subject.d.ts.map +1 -0
  491. package/dist/reference-subject.js +1 -0
  492. package/dist/registration-hint-discovery-status.d.ts +25 -0
  493. package/dist/registration-hint-discovery-status.d.ts.map +1 -0
  494. package/dist/registration-hint-discovery-status.js +25 -0
  495. package/dist/registration-hint-registry.d.ts +80 -0
  496. package/dist/registration-hint-registry.d.ts.map +1 -1
  497. package/dist/registration-hint-registry.js +356 -138
  498. package/dist/registry-lifecycle.d.ts +200 -19
  499. package/dist/registry-lifecycle.d.ts.map +1 -1
  500. package/dist/registry-lifecycle.js +526 -136
  501. package/dist/release-readiness.d.ts.map +1 -1
  502. package/dist/release-readiness.js +10 -7
  503. package/dist/release-smoke.d.ts.map +1 -1
  504. package/dist/release-smoke.js +11 -7
  505. package/dist/report-site.d.ts.map +1 -1
  506. package/dist/report-site.js +25 -7
  507. package/dist/repository-intelligence.d.ts.map +1 -1
  508. package/dist/repository-intelligence.js +3 -2
  509. package/dist/repository-knowledge-model.d.ts.map +1 -1
  510. package/dist/repository-knowledge-model.js +18 -5
  511. package/dist/resolve-project-config.d.ts +64 -0
  512. package/dist/resolve-project-config.d.ts.map +1 -1
  513. package/dist/resolve-project-config.js +240 -32
  514. package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
  515. package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
  516. package/dist/reuse/compute-reuse-coverage.js +198 -0
  517. package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
  518. package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
  519. package/dist/reuse/rank-reuse-candidates.js +212 -0
  520. package/dist/reuse/rank-reuse-options.d.ts +20 -0
  521. package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
  522. package/dist/reuse/rank-reuse-options.js +1 -0
  523. package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
  524. package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
  525. package/dist/reuse/rank-reuse-suggestions.js +31 -0
  526. package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
  527. package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
  528. package/dist/reuse/resolve-curated-reuse.js +115 -0
  529. package/dist/reuse/reuse-candidate.d.ts +29 -0
  530. package/dist/reuse/reuse-candidate.d.ts.map +1 -0
  531. package/dist/reuse/reuse-candidate.js +1 -0
  532. package/dist/reuse/reuse-coverage-report.d.ts +74 -0
  533. package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
  534. package/dist/reuse/reuse-coverage-report.js +1 -0
  535. package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
  536. package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
  537. package/dist/reuse/reuse-curated-coverage.js +1 -0
  538. package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
  539. package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
  540. package/dist/reuse/reuse-curated-resolution.js +1 -0
  541. package/dist/reuse/reuse-curated-status.d.ts +21 -0
  542. package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
  543. package/dist/reuse/reuse-curated-status.js +21 -0
  544. package/dist/reuse/reuse-match-detail.d.ts +15 -0
  545. package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
  546. package/dist/reuse/reuse-match-detail.js +1 -0
  547. package/dist/reuse/reuse-ranking.d.ts +37 -0
  548. package/dist/reuse/reuse-ranking.d.ts.map +1 -0
  549. package/dist/reuse/reuse-ranking.js +1 -0
  550. package/dist/reuse/reuse-suggestion.d.ts +19 -0
  551. package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
  552. package/dist/reuse/reuse-suggestion.js +1 -0
  553. package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
  554. package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
  555. package/dist/reuse/reuse-symbol-lookup.js +1 -0
  556. package/dist/reuse/reuse-tokenize.d.ts +11 -0
  557. package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
  558. package/dist/reuse/reuse-tokenize.js +26 -0
  559. package/dist/reuse/score-reuse-name.d.ts +16 -0
  560. package/dist/reuse/score-reuse-name.d.ts.map +1 -0
  561. package/dist/reuse/score-reuse-name.js +35 -0
  562. package/dist/reuse/score-reuse-primitive.d.ts +33 -0
  563. package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
  564. package/dist/reuse/score-reuse-primitive.js +92 -0
  565. package/dist/review-packet.d.ts +2 -0
  566. package/dist/review-packet.d.ts.map +1 -1
  567. package/dist/review-packet.js +13 -6
  568. package/dist/role-views.d.ts.map +1 -1
  569. package/dist/role-views.js +16 -16
  570. package/dist/routing-recommends-channels.d.ts +24 -0
  571. package/dist/routing-recommends-channels.d.ts.map +1 -0
  572. package/dist/routing-recommends-channels.js +19 -0
  573. package/dist/run-boundary-check.d.ts +118 -0
  574. package/dist/run-boundary-check.d.ts.map +1 -0
  575. package/dist/run-boundary-check.js +592 -0
  576. package/dist/safety-audit.js +1 -1
  577. package/dist/scaffold-coverage.js +1 -1
  578. package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
  579. package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
  580. package/dist/scaffold-pattern-doctor-report.js +54 -0
  581. package/dist/scaffold-patterns.d.ts +75 -1
  582. package/dist/scaffold-patterns.d.ts.map +1 -1
  583. package/dist/scaffold-patterns.js +375 -84
  584. package/dist/schema-inventory.d.ts.map +1 -1
  585. package/dist/schema-inventory.js +4 -3
  586. package/dist/search-document-id.d.ts +52 -0
  587. package/dist/search-document-id.d.ts.map +1 -0
  588. package/dist/search-document-id.js +72 -0
  589. package/dist/search-document-prefix.d.ts +7 -0
  590. package/dist/search-document-prefix.d.ts.map +1 -0
  591. package/dist/search-document-prefix.js +1 -0
  592. package/dist/search-index.d.ts.map +1 -1
  593. package/dist/search-index.js +20 -23
  594. package/dist/search-tuning-explain.d.ts +6 -0
  595. package/dist/search-tuning-explain.d.ts.map +1 -1
  596. package/dist/search-tuning-explain.js +19 -17
  597. package/dist/search-tuning-key-probes.d.ts +16 -0
  598. package/dist/search-tuning-key-probes.d.ts.map +1 -0
  599. package/dist/search-tuning-key-probes.js +65 -0
  600. package/dist/search-tuning-key-resolution.d.ts +25 -0
  601. package/dist/search-tuning-key-resolution.d.ts.map +1 -0
  602. package/dist/search-tuning-key-resolution.js +1 -0
  603. package/dist/search-tuning-key-resolver.d.ts +4 -0
  604. package/dist/search-tuning-key-resolver.d.ts.map +1 -0
  605. package/dist/search-tuning-key-resolver.js +107 -0
  606. package/dist/search-tuning-key-status.d.ts +24 -0
  607. package/dist/search-tuning-key-status.d.ts.map +1 -0
  608. package/dist/search-tuning-key-status.js +24 -0
  609. package/dist/search-tuning-lint.d.ts +9 -0
  610. package/dist/search-tuning-lint.d.ts.map +1 -0
  611. package/dist/search-tuning-lint.js +468 -0
  612. package/dist/search-tuning-registry.d.ts +43 -0
  613. package/dist/search-tuning-registry.d.ts.map +1 -1
  614. package/dist/search-tuning-registry.js +214 -49
  615. package/dist/self-audit.d.ts +12 -0
  616. package/dist/self-audit.d.ts.map +1 -1
  617. package/dist/self-audit.js +36 -10
  618. package/dist/self-config-doctor-v2.d.ts +145 -3
  619. package/dist/self-config-doctor-v2.d.ts.map +1 -1
  620. package/dist/self-config-doctor-v2.js +1304 -181
  621. package/dist/self-config-doctor.d.ts +20 -1
  622. package/dist/self-config-doctor.d.ts.map +1 -1
  623. package/dist/self-config-doctor.js +53 -280
  624. package/dist/settled-unit-states.d.ts +9 -0
  625. package/dist/settled-unit-states.d.ts.map +1 -0
  626. package/dist/settled-unit-states.js +14 -0
  627. package/dist/sharkcraft-inspector.d.ts +34 -0
  628. package/dist/sharkcraft-inspector.d.ts.map +1 -1
  629. package/dist/sharkcraft-inspector.js +273 -26
  630. package/dist/spec/spec-evidence.d.ts.map +1 -1
  631. package/dist/spec/spec-evidence.js +14 -20
  632. package/dist/split-identifier.d.ts +21 -0
  633. package/dist/split-identifier.d.ts.map +1 -0
  634. package/dist/split-identifier.js +27 -0
  635. package/dist/start-here.d.ts.map +1 -1
  636. package/dist/start-here.js +1 -2
  637. package/dist/substitute-placeholders.d.ts +8 -0
  638. package/dist/substitute-placeholders.d.ts.map +1 -0
  639. package/dist/substitute-placeholders.js +9 -0
  640. package/dist/symbol-index.d.ts +33 -0
  641. package/dist/symbol-index.d.ts.map +1 -1
  642. package/dist/symbol-index.js +241 -3
  643. package/dist/symbol-member-entry.d.ts +26 -0
  644. package/dist/symbol-member-entry.d.ts.map +1 -0
  645. package/dist/symbol-member-entry.js +1 -0
  646. package/dist/symbol-member-kind.d.ts +14 -0
  647. package/dist/symbol-member-kind.d.ts.map +1 -0
  648. package/dist/symbol-member-kind.js +14 -0
  649. package/dist/task-packet.d.ts.map +1 -1
  650. package/dist/task-packet.js +52 -9
  651. package/dist/task-ranker.d.ts +8 -0
  652. package/dist/task-ranker.d.ts.map +1 -1
  653. package/dist/task-ranker.js +25 -13
  654. package/dist/task-risk.js +1 -1
  655. package/dist/task-routing-hint-registry.d.ts +20 -1
  656. package/dist/task-routing-hint-registry.d.ts.map +1 -1
  657. package/dist/task-routing-hint-registry.js +186 -42
  658. package/dist/template-drift.d.ts.map +1 -1
  659. package/dist/template-drift.js +30 -9
  660. package/dist/template-lint.d.ts.map +1 -1
  661. package/dist/template-lint.js +160 -2
  662. package/dist/term-query.d.ts +10 -0
  663. package/dist/term-query.d.ts.map +1 -0
  664. package/dist/term-query.js +1 -0
  665. package/dist/test-definitions.d.ts +6 -3
  666. package/dist/test-definitions.d.ts.map +1 -1
  667. package/dist/test-runner.d.ts +95 -10
  668. package/dist/test-runner.d.ts.map +1 -1
  669. package/dist/test-runner.js +309 -308
  670. package/dist/tuning-query-tokens.d.ts +29 -0
  671. package/dist/tuning-query-tokens.d.ts.map +1 -0
  672. package/dist/tuning-query-tokens.js +51 -0
  673. package/dist/typecheck-files.d.ts +36 -0
  674. package/dist/typecheck-files.d.ts.map +1 -0
  675. package/dist/typecheck-files.js +158 -0
  676. package/dist/uncertainty.js +1 -1
  677. package/dist/universal-search.d.ts.map +1 -1
  678. package/dist/universal-search.js +5 -3
  679. package/dist/unregistered-exports.d.ts +19 -0
  680. package/dist/unregistered-exports.d.ts.map +1 -0
  681. package/dist/unregistered-exports.js +141 -0
  682. package/dist/unresolvable-reason.d.ts +11 -0
  683. package/dist/unresolvable-reason.d.ts.map +1 -0
  684. package/dist/unresolvable-reason.js +11 -0
  685. package/dist/upgrade-advisor.d.ts.map +1 -1
  686. package/dist/upgrade-advisor.js +16 -9
  687. package/dist/validate-contribution-file.d.ts +4 -0
  688. package/dist/validate-contribution-file.d.ts.map +1 -0
  689. package/dist/validate-contribution-file.js +228 -0
  690. package/dist/why-file.d.ts +3 -0
  691. package/dist/why-file.d.ts.map +1 -1
  692. package/dist/why-file.js +7 -3
  693. package/package.json +17 -17
@@ -0,0 +1,118 @@
1
+ import { existsSync } from 'node:fs';
2
+ import * as nodePath from 'node:path';
3
+ /** The conventional local rule file — loaded ONLY when listed in `boundaryFiles`. */
4
+ export const DEFAULT_LOCAL_BOUNDARY_FILE = 'boundaries.ts';
5
+ /**
6
+ * Classify the local `boundaryFiles` entries — THE code path both the
7
+ * inspector's load loop and {@link describeBoundaryConfiguration} use, so the
8
+ * loader and the diagnostics cannot disagree about which files exist.
9
+ *
10
+ * `unlistedDefault` is set when `sharkcraft/boundaries.ts` exists but no entry
11
+ * points at it: the file an author naturally creates loads nothing until it is
12
+ * listed. It is reported, never auto-loaded — auto-loading would start
13
+ * enforcing rules silently (new exit 1s).
14
+ */
15
+ export function classifyLocalBoundaryFiles(sharkcraftDir, boundaryFiles) {
16
+ const listed = boundaryFiles.map((rel) => {
17
+ const abs = nodePath.join(sharkcraftDir, rel);
18
+ return { rel, abs, exists: existsSync(abs) };
19
+ });
20
+ const defaultAbs = nodePath.join(sharkcraftDir, DEFAULT_LOCAL_BOUNDARY_FILE);
21
+ const isListed = listed.some((l) => nodePath.resolve(l.abs) === nodePath.resolve(defaultAbs));
22
+ return { listed, ...(existsSync(defaultAbs) && !isListed ? { unlistedDefault: defaultAbs } : {}) };
23
+ }
24
+ /** A path relative to the project root (`/`-separated), or the absolute path when outside it. */
25
+ export function boundaryFileLabel(projectRoot, abs) {
26
+ const rel = nodePath.relative(projectRoot, abs);
27
+ if (rel === '' || rel.startsWith('..') || nodePath.isAbsolute(rel))
28
+ return abs;
29
+ return rel.split(nodePath.sep).join('/');
30
+ }
31
+ /**
32
+ * The structured load issues one loaded rule file carries — used by the
33
+ * inspector (local + pack files) and `check boundaries --rule-file`, so every
34
+ * origin reports a dropped rule the same way.
35
+ */
36
+ export function boundaryLoadIssuesFromFile(loaded, projectRoot, origin, packageName) {
37
+ const file = boundaryFileLabel(projectRoot, loaded.source);
38
+ const base = { file, origin, ...(packageName ? { packageName } : {}) };
39
+ const out = [];
40
+ if (loaded.missing) {
41
+ out.push({ ...base, kind: 'missing-file', issues: ['the rule file does not exist'] });
42
+ }
43
+ if (loaded.loadError !== undefined) {
44
+ out.push({ ...base, kind: 'load-error', issues: [loaded.loadError] });
45
+ }
46
+ for (const inv of loaded.invalid) {
47
+ out.push({
48
+ ...base,
49
+ kind: 'invalid-rule',
50
+ ...(inv.ruleId !== undefined ? { ruleId: inv.ruleId } : {}),
51
+ index: inv.index,
52
+ issues: inv.issues.map((i) => `${i.field}: ${i.message}`),
53
+ });
54
+ }
55
+ return out;
56
+ }
57
+ /**
58
+ * Are boundary rules configured, and if not, why? The one answer every
59
+ * boundary surface renders (round 11, L-1).
60
+ */
61
+ export function describeBoundaryConfiguration(inspection) {
62
+ const ruleCount = inspection.boundaryRegistry.size();
63
+ const sharkcraftDir = inspection.sharkcraftDir;
64
+ const listedLocalFiles = inspection.config?.boundaryFiles ?? [];
65
+ const classified = sharkcraftDir
66
+ ? classifyLocalBoundaryFiles(sharkcraftDir, listedLocalFiles)
67
+ : { listed: [] };
68
+ const missingListed = classified.listed.filter((l) => !l.exists);
69
+ const packBoundaryFiles = [];
70
+ for (const pack of inspection.packs.validPacks) {
71
+ for (const rel of pack.manifest?.contributions?.boundaryFiles ?? []) {
72
+ packBoundaryFiles.push({ packageName: pack.packageName, file: nodePath.resolve(pack.packageRoot, rel) });
73
+ }
74
+ }
75
+ const loadIssues = inspection.boundaryLoadIssues ?? [];
76
+ const configInvalid = inspection.configLoadError !== undefined;
77
+ const label = (abs) => boundaryFileLabel(inspection.projectRoot, abs);
78
+ const diagnostics = [];
79
+ if (configInvalid) {
80
+ diagnostics.push(`sharkcraft.config.ts failed to load (${inspection.configLoadError?.message ?? 'unknown error'}) — boundaryFiles could not be read; run \`shrk doctor\` (config-invalid).`);
81
+ }
82
+ for (const m of missingListed) {
83
+ diagnostics.push(`boundaryFiles lists "${m.rel}" but ${label(m.abs)} does not exist — no rules load from it.`);
84
+ }
85
+ if (classified.unlistedDefault) {
86
+ diagnostics.push(`${label(classified.unlistedDefault)} exists but is not listed in boundaryFiles — its rules are NOT loaded. Add \`boundaryFiles: ['${DEFAULT_LOCAL_BOUNDARY_FILE}']\` to sharkcraft.config.ts.`);
87
+ }
88
+ if (loadIssues.length > 0) {
89
+ diagnostics.push(`${loadIssues.length} boundary rule(s) / rule file(s) failed to load — each is reported as an errored rule.`);
90
+ }
91
+ if (ruleCount === 0 && !configInvalid && missingListed.length === 0 && !classified.unlistedDefault) {
92
+ if (!sharkcraftDir) {
93
+ diagnostics.push(`No sharkcraft/ directory found under ${inspection.projectRoot} — no boundary rules can be loaded.`);
94
+ }
95
+ else if (listedLocalFiles.length === 0 && packBoundaryFiles.length === 0) {
96
+ diagnostics.push(`No boundary rules loaded: ${inspection.configFile ? 'sharkcraft.config.ts lists no boundaryFiles' : 'no sharkcraft.config.ts was found'} and no pack contributes any. Create ${label(nodePath.join(sharkcraftDir, DEFAULT_LOCAL_BOUNDARY_FILE))} and list it: \`boundaryFiles: ['${DEFAULT_LOCAL_BOUNDARY_FILE}']\`.`);
97
+ }
98
+ else if (loadIssues.length === 0) {
99
+ // Only when nothing failed: a listed file that THREW, or whose every rule
100
+ // failed validation, did not "load" — its load issues (above, and one
101
+ // errored rule each) are the honest account.
102
+ diagnostics.push('The listed boundary rule files loaded, but define no rules.');
103
+ }
104
+ }
105
+ return {
106
+ ruleCount,
107
+ configured: ruleCount > 0,
108
+ sharkcraftDir,
109
+ configFile: inspection.configFile,
110
+ configInvalid,
111
+ listedLocalFiles,
112
+ missingListedFiles: missingListed.map((m) => m.abs),
113
+ ...(classified.unlistedDefault ? { unlistedDefaultFile: classified.unlistedDefault } : {}),
114
+ packBoundaryFiles,
115
+ loadIssues: loadIssues.length,
116
+ diagnostics,
117
+ };
118
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The ONE answer to "are boundary rules configured, and if not, why?"
3
+ * (round 11, L-1).
4
+ *
5
+ * Five surfaces answered this differently — `check boundaries` said "no rules
6
+ * configured" and exited 0 while telling the author to create a file that
7
+ * already existed (it was simply not listed in `boundaryFiles`), quality said
8
+ * `passed`, finish said `skipped`, MCP returned a count and no verdict. Every
9
+ * surface now renders these diagnostics.
10
+ */
11
+ export interface IBoundaryConfigurationStatus {
12
+ /** Rules in the registry (local + pack). */
13
+ readonly ruleCount: number;
14
+ /** `ruleCount > 0`. */
15
+ readonly configured: boolean;
16
+ /** Where the sharkcraft directory resolved — printed so a wrong root is visible. */
17
+ readonly sharkcraftDir: string | null;
18
+ readonly configFile: string | null;
19
+ /** The config exists but failed to load — no `boundaryFiles` could be read. */
20
+ readonly configInvalid: boolean;
21
+ /** `boundaryFiles` entries as written (relative to the sharkcraft dir). */
22
+ readonly listedLocalFiles: readonly string[];
23
+ /** Listed entries whose file does not exist (absolute paths). */
24
+ readonly missingListedFiles: readonly string[];
25
+ /** `sharkcraft/boundaries.ts` exists but is NOT listed, so it loads nothing (absolute path). */
26
+ readonly unlistedDefaultFile?: string;
27
+ /** Boundary files contributed by packs. */
28
+ readonly packBoundaryFiles: readonly {
29
+ readonly packageName: string;
30
+ readonly file: string;
31
+ }[];
32
+ /** Rules / files that failed to load (see `IBoundaryLoadIssue`). */
33
+ readonly loadIssues: number;
34
+ /** Human sentences explaining the state, most actionable first. */
35
+ readonly diagnostics: readonly string[];
36
+ }
37
+ //# sourceMappingURL=boundary-configuration-status.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-configuration-status.model.d.ts","sourceRoot":"","sources":["../src/boundary-configuration-status.model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,4BAA4B;IAC3C,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uBAAuB;IACvB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,oFAAoF;IACpF,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,iEAAiE;IACjE,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,gGAAgG;IAChG,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,2CAA2C;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,SAAS;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/F,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ /**
2
+ * A boundary rule (or a whole rule file) that was configured but could not be
3
+ * evaluated — round 11, 1.3#boundary-invalid-rule.
4
+ *
5
+ * The loader used to turn each of these into a warning string that no boundary
6
+ * surface rendered, so `check boundaries` reported green over a fence that had
7
+ * just vanished. As structured records they become ERRORED rules on every
8
+ * surface (`check boundaries`, finish, both MCP tools): never evaluated, never
9
+ * silent, exit 1.
10
+ */
11
+ export interface IBoundaryLoadIssue {
12
+ /** The rule file — project-relative when inside the project, else absolute. */
13
+ readonly file: string;
14
+ /**
15
+ * - `invalid-rule` — one rule failed validation and was dropped;
16
+ * - `load-error` — the file threw on import, timed out, or exported no rule array;
17
+ * - `missing-file` — `boundaryFiles` lists a file that does not exist.
18
+ */
19
+ readonly kind: 'invalid-rule' | 'load-error' | 'missing-file';
20
+ readonly origin: 'local' | 'pack' | 'rule-file';
21
+ /** The contributing pack, for `origin: 'pack'`. */
22
+ readonly packageName?: string;
23
+ /** The rule's id, when an invalid rule had a string one. */
24
+ readonly ruleId?: string;
25
+ /** Position in the file's rule array, for `invalid-rule`. */
26
+ readonly index?: number;
27
+ /** One line per problem (`title: title required`, or the loader's message). */
28
+ readonly issues: readonly string[];
29
+ }
30
+ //# sourceMappingURL=boundary-load-issue.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-load-issue.model.d.ts","sourceRoot":"","sources":["../src/boundary-load-issue.model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,GAAG,cAAc,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;IAChD,mDAAmD;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ import type { IVerdictCoverage } from '@shrkcrft/core';
2
+ import type { BoundarySeverity, IBoundaryRuleCoverage, IBoundaryViolation, IUnreadFile } from '@shrkcrft/boundaries';
3
+ import type { IBoundaryStaleExceptionFinding } from './boundary-stale-exception-finding.model.js';
4
+ /** One SELECTED rule's result in a boundary check. */
5
+ export interface IBoundaryRuleCheck {
6
+ readonly ruleId: string;
7
+ readonly title: string;
8
+ readonly severity: BoundarySeverity;
9
+ /**
10
+ * The verdict word, over the REPORTED scope: `failed` when it has reported
11
+ * violations or stale exceptions, OR when it governed nothing and fails on
12
+ * empty (`failedOnEmpty` — the wiring plane's mapping, so the gate envelope
13
+ * counts it in `failed`); `skipped` when it governed nothing otherwise.
14
+ * Whether the rule EXAMINED anything is `detail.status` (the engine's word) —
15
+ * "evaluated" / "checked nothing" counts read that, never this.
16
+ */
17
+ readonly status: 'passed' | 'failed' | 'skipped';
18
+ readonly skipReason?: string;
19
+ /** A skip that fails the run (`failOnEmpty`). */
20
+ readonly failedOnEmpty?: boolean;
21
+ /** The changeset touched this rule's definition: every violation it produces is reported. */
22
+ readonly escalated?: boolean;
23
+ /**
24
+ * The engine's verdict coverage (scope globs) — read, never recomputed —
25
+ * folded through `readScopeCoverage` when a governed file in the rule's
26
+ * reported scope could not be read ({@link unread}): then `examined R of
27
+ * R+U files`, naming each unread path, so the rule settles PARTIAL (2).
28
+ */
29
+ readonly coverage: IVerdictCoverage;
30
+ /**
31
+ * Governed files in this rule's REPORTED scope the scan could not read. A
32
+ * rule whose zero governed files is caused by one of these matched a file
33
+ * it could not examine: it is never `failedOnEmpty`, never "checked
34
+ * nothing", and never a pass (see `boundaryRuleCheckedNothing`).
35
+ */
36
+ readonly unread?: readonly IUnreadFile[];
37
+ /** What each unit of the rule matched. */
38
+ readonly detail: IBoundaryRuleCoverage;
39
+ /** This rule's REPORTED violations. */
40
+ readonly violations: readonly IBoundaryViolation[];
41
+ /** This rule's REPORTED stale exceptions — each fails the rule. */
42
+ readonly staleExceptions: readonly IBoundaryStaleExceptionFinding[];
43
+ }
44
+ //# sourceMappingURL=boundary-rule-check.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-rule-check.model.d.ts","sourceRoot":"","sources":["../src/boundary-rule-check.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACrH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAElG,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,6FAA6F;IAC7F,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,mEAAmE;IACnE,QAAQ,CAAC,eAAe,EAAE,SAAS,8BAA8B,EAAE,CAAC;CACrE"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Which boundary rules a changeset INVALIDATED — round 11, 6.3 / closing#d.
3
+ *
4
+ * A `--changed-only` run filters violations to the changed files, which by
5
+ * construction cannot see a change to the rules themselves: tightening a rule
6
+ * creates violations only in files nobody touched. When the changeset touches
7
+ * a rule's definition (or the config, or the alias map every rule is evaluated
8
+ * under), those rules are ESCALATED — every violation they produce is reported,
9
+ * whatever its file. Stateless on purpose: the diff itself is the signal, so it
10
+ * works on a fresh CI checkout where a persisted rule-set hash has no previous
11
+ * value.
12
+ */
13
+ export interface IBoundaryRuleInvalidation {
14
+ /** Rules whose violations are all new to this changeset. */
15
+ readonly escalatedRuleIds: readonly string[];
16
+ /** Why, one entry per changed file that triggered escalation. */
17
+ readonly reasons: readonly {
18
+ /** Project-relative path of the changed file. */
19
+ readonly file: string;
20
+ /**
21
+ * - `rule-source` — a file that defines boundary rules (escalates those rules);
22
+ * - `config` — sharkcraft.config.ts (escalates every rule);
23
+ * - `tsconfig` — tsconfig.json / tsconfig.base.json, the alias map (every rule);
24
+ * - `manifest` — a root package.json / lockfile, or a file inside a pack (that pack's rules);
25
+ * - `rule-file` — a `--rule-file` candidate (every candidate rule is new by definition).
26
+ */
27
+ readonly kind: 'rule-source' | 'config' | 'tsconfig' | 'manifest' | 'rule-file';
28
+ readonly ruleIds: readonly string[];
29
+ }[];
30
+ }
31
+ //# sourceMappingURL=boundary-rule-invalidation.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-rule-invalidation.model.d.ts","sourceRoot":"","sources":["../src/boundary-rule-invalidation.model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,yBAAyB;IACxC,4DAA4D;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,SAAS;QACzB,iDAAiD;QACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB;;;;;;WAMG;QACH,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;QAChF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;KACrC,EAAE,CAAC;CACL"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,75 @@
1
+ import type { IBoundaryRuleCoverage, IBoundaryUnitFinding, IBoundaryViolation } from '@shrkcrft/boundaries';
2
+ import type { IBoundaryLoadIssue } from './boundary-load-issue.model.js';
3
+ /** One import edge, keyed without its rule — so a renamed rule is not churn. */
4
+ interface IBoundaryFlaggedEdge {
5
+ readonly file: string;
6
+ readonly line: number;
7
+ readonly importSpecifier: string;
8
+ }
9
+ /**
10
+ * What a candidate rule set WOULD flag relative to the active one (round 11,
11
+ * 3.3#3, `check boundaries --diff-against <file>`). Both sides are evaluated by
12
+ * the gate's own engine against ONE scan, so the delta is purely a rule delta —
13
+ * a dry-run that is not the gate's engine would be a second engine.
14
+ */
15
+ export interface IBoundaryRuleSetDiff {
16
+ readonly schema: 'sharkcraft.boundary-rule-diff/v1';
17
+ readonly candidateFile: string;
18
+ /** Candidate rule ids not in the active set. */
19
+ readonly rulesAdded: readonly string[];
20
+ /** Candidate rule ids that replace an active rule of the same id. */
21
+ readonly rulesReplaced: readonly string[];
22
+ readonly added: readonly IBoundaryViolation[];
23
+ readonly removed: readonly IBoundaryViolation[];
24
+ readonly unchanged: number;
25
+ readonly perRule: readonly {
26
+ readonly ruleId: string;
27
+ readonly added: number;
28
+ readonly removed: number;
29
+ readonly unchanged: number;
30
+ }[];
31
+ readonly edgeLevel: {
32
+ readonly newlyFlagged: readonly IBoundaryFlaggedEdge[];
33
+ readonly noLongerFlagged: readonly IBoundaryFlaggedEdge[];
34
+ };
35
+ readonly before: {
36
+ readonly rules: number;
37
+ readonly counts: {
38
+ readonly error: number;
39
+ readonly warning: number;
40
+ readonly info: number;
41
+ };
42
+ };
43
+ readonly after: {
44
+ readonly rules: number;
45
+ readonly counts: {
46
+ readonly error: number;
47
+ readonly warning: number;
48
+ readonly info: number;
49
+ };
50
+ };
51
+ /**
52
+ * The candidate rules' coverage in the proposed evaluation — a dead candidate
53
+ * scope is flagged here. Round 13 (P2): each record went through THE unread
54
+ * re-settle `check boundaries` uses (`boundaryUnitLiveness`) and its read
55
+ * scope (`readScopeCoverage`), so an unreadable governed file is never a pass
56
+ * here and a dead unit it could refute is Unproven, not reported.
57
+ */
58
+ readonly candidateCoverage: readonly IBoundaryRuleCoverage[];
59
+ /** The candidate rules' expectEmpty units whose target does not exist — accepted (round 13). */
60
+ readonly intendedEmpty: readonly IBoundaryUnitFinding[];
61
+ /** The candidate rules' expectEmpty units whose target now exists — stale markers (round 13). */
62
+ readonly wentLive: readonly IBoundaryUnitFinding[];
63
+ /** The candidate units `--fail-on-dead-units` fails (core `selectorUnitFails`); each makes the proposal 1. */
64
+ readonly failingUnits: readonly IBoundaryUnitFinding[];
65
+ readonly loadIssues: readonly IBoundaryLoadIssue[];
66
+ /**
67
+ * 1 when the proposal ADDS an error-severity violation, a candidate rule
68
+ * failed to load, a candidate fails on empty, or a candidate unit fails under
69
+ * `--fail-on-dead-units`; else 0; 3 for an unknown `--rule`.
70
+ */
71
+ readonly proposedExit: number;
72
+ readonly unknownRuleId?: string;
73
+ }
74
+ export {};
75
+ //# sourceMappingURL=boundary-rule-set-diff.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-rule-set-diff.model.d.ts","sourceRoot":"","sources":["../src/boundary-rule-set-diff.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC5G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,gFAAgF;AAChF,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,kCAAkC,CAAC;IACpD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,gDAAgD;IAChD,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,qEAAqE;IACrE,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS;QACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,EAAE,CAAC;IACJ,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,YAAY,EAAE,SAAS,oBAAoB,EAAE,CAAC;QACvD,QAAQ,CAAC,eAAe,EAAE,SAAS,oBAAoB,EAAE,CAAC;KAC3D,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAC1I,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACzI;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC7D,gGAAgG;IAChG,QAAQ,CAAC,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACxD,iGAAiG;IACjG,QAAQ,CAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,8GAA8G;IAC9G,QAAQ,CAAC,YAAY,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ import type { IBoundaryRuleInvalidation } from './boundary-rule-invalidation.model.js';
2
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
+ /**
4
+ * The files that DEFINE boundary rules (round 11, closing#d / 6.3) — one list,
5
+ * so the changed-scope filter, finish and the imports gate agree on what a
6
+ * "rule source" is:
7
+ *
8
+ * - the sharkcraft config (it lists `boundaryFiles`);
9
+ * - every local `boundaryFiles` entry, resolved under the sharkcraft dir
10
+ * (listed, whether or not it exists — a deleted rule file is a rule edit);
11
+ * - every pack-contributed boundary file.
12
+ *
13
+ * Project-relative, `/`-separated, sorted.
14
+ */
15
+ export declare function boundaryRuleSourceFiles(inspection: ISharkcraftInspection): string[];
16
+ /**
17
+ * Which rules a changeset invalidated — see {@link IBoundaryRuleInvalidation}.
18
+ *
19
+ * - a changed rule-source file escalates the rules it defines;
20
+ * - a changed sharkcraft config or root tsconfig (the alias map) escalates
21
+ * EVERY rule;
22
+ * - a changed root package.json / lockfile, or any file inside a pack's root,
23
+ * escalates the pack-contributed rules it could have changed.
24
+ *
25
+ * `ruleIds` narrows the rule set considered (default: the whole registry).
26
+ */
27
+ export declare function resolveBoundaryRuleInvalidation(changedFiles: readonly string[], inspection: ISharkcraftInspection, ruleIds?: readonly string[]): IBoundaryRuleInvalidation;
28
+ //# sourceMappingURL=boundary-rule-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-rule-sources.d.ts","sourceRoot":"","sources":["../src/boundary-rule-sources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAkBnF;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,UAAU,EAAE,qBAAqB,EACjC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAC1B,yBAAyB,CA2C3B"}
@@ -0,0 +1,110 @@
1
+ import * as nodePath from 'node:path';
2
+ import { boundaryFileLabel, classifyLocalBoundaryFiles } from "./boundary-configuration-status.js";
3
+ /**
4
+ * The files that DEFINE boundary rules (round 11, closing#d / 6.3) — one list,
5
+ * so the changed-scope filter, finish and the imports gate agree on what a
6
+ * "rule source" is:
7
+ *
8
+ * - the sharkcraft config (it lists `boundaryFiles`);
9
+ * - every local `boundaryFiles` entry, resolved under the sharkcraft dir
10
+ * (listed, whether or not it exists — a deleted rule file is a rule edit);
11
+ * - every pack-contributed boundary file.
12
+ *
13
+ * Project-relative, `/`-separated, sorted.
14
+ */
15
+ export function boundaryRuleSourceFiles(inspection) {
16
+ const label = (abs) => boundaryFileLabel(inspection.projectRoot, abs);
17
+ const out = new Set();
18
+ if (inspection.configFile)
19
+ out.add(label(inspection.configFile));
20
+ if (inspection.sharkcraftDir) {
21
+ for (const l of classifyLocalBoundaryFiles(inspection.sharkcraftDir, inspection.config?.boundaryFiles ?? []).listed) {
22
+ out.add(label(l.abs));
23
+ }
24
+ }
25
+ for (const pack of inspection.packs.validPacks) {
26
+ for (const rel of pack.manifest?.contributions?.boundaryFiles ?? []) {
27
+ out.add(label(nodePath.resolve(pack.packageRoot, rel)));
28
+ }
29
+ }
30
+ for (const src of inspection.boundarySources.values()) {
31
+ if (src.file)
32
+ out.add(label(src.file));
33
+ }
34
+ return [...out].sort();
35
+ }
36
+ const TSCONFIG_FILES = new Set(['tsconfig.json', 'tsconfig.base.json']);
37
+ const ROOT_MANIFEST_FILES = new Set([
38
+ 'package.json',
39
+ 'bun.lock',
40
+ 'bun.lockb',
41
+ 'package-lock.json',
42
+ 'npm-shrinkwrap.json',
43
+ 'yarn.lock',
44
+ 'pnpm-lock.yaml',
45
+ ]);
46
+ function normalizeChanged(f) {
47
+ return f.split(/[\\/]/).join('/').replace(/^\.\//, '');
48
+ }
49
+ /**
50
+ * Which rules a changeset invalidated — see {@link IBoundaryRuleInvalidation}.
51
+ *
52
+ * - a changed rule-source file escalates the rules it defines;
53
+ * - a changed sharkcraft config or root tsconfig (the alias map) escalates
54
+ * EVERY rule;
55
+ * - a changed root package.json / lockfile, or any file inside a pack's root,
56
+ * escalates the pack-contributed rules it could have changed.
57
+ *
58
+ * `ruleIds` narrows the rule set considered (default: the whole registry).
59
+ */
60
+ export function resolveBoundaryRuleInvalidation(changedFiles, inspection, ruleIds) {
61
+ const all = ruleIds ?? inspection.boundaryRegistry.list().map((r) => r.id);
62
+ const label = (abs) => boundaryFileLabel(inspection.projectRoot, abs);
63
+ const changed = new Set(changedFiles.map(normalizeChanged));
64
+ const escalated = new Set();
65
+ const reasons = [];
66
+ const add = (file, kind, ids) => {
67
+ if (ids.length === 0)
68
+ return;
69
+ reasons.push({ file, kind, ruleIds: [...ids] });
70
+ for (const id of ids)
71
+ escalated.add(id);
72
+ };
73
+ const bySource = new Map();
74
+ for (const id of all) {
75
+ const src = inspection.boundarySources.get(id);
76
+ if (!src?.file)
77
+ continue;
78
+ const file = label(src.file);
79
+ const list = bySource.get(file);
80
+ if (list)
81
+ list.push(id);
82
+ else
83
+ bySource.set(file, [id]);
84
+ }
85
+ for (const [file, ids] of bySource)
86
+ if (changed.has(file))
87
+ add(file, 'rule-source', ids);
88
+ if (inspection.configFile) {
89
+ const cfg = label(inspection.configFile);
90
+ if (changed.has(cfg))
91
+ add(cfg, 'config', all);
92
+ }
93
+ for (const f of changed)
94
+ if (TSCONFIG_FILES.has(f))
95
+ add(f, 'tsconfig', all);
96
+ const packRuleIds = all.filter((id) => inspection.boundarySources.get(id)?.type === 'pack');
97
+ for (const f of changed)
98
+ if (ROOT_MANIFEST_FILES.has(f))
99
+ add(f, 'manifest', packRuleIds);
100
+ for (const pack of inspection.packs.validPacks) {
101
+ const root = label(pack.packageRoot);
102
+ if (nodePath.isAbsolute(root))
103
+ continue; // outside the project — never in a changeset
104
+ const touched = [...changed].find((f) => f.startsWith(`${root}/`) && !bySource.has(f));
105
+ if (!touched)
106
+ continue;
107
+ add(touched, 'manifest', all.filter((id) => inspection.boundarySources.get(id)?.packageName === pack.packageName));
108
+ }
109
+ return { escalatedRuleIds: all.filter((id) => escalated.has(id)), reasons };
110
+ }
@@ -0,0 +1,12 @@
1
+ import type { IBoundaryStaleException } from '@shrkcrft/boundaries';
2
+ /**
3
+ * A stale exception, located at the rule file that declares it — so it flows
4
+ * through the changed-scope filter like a violation keyed on the rule source:
5
+ * it fails a changeset that edits the rule file (or escalates it), and is
6
+ * legacy otherwise.
7
+ */
8
+ export interface IBoundaryStaleExceptionFinding extends IBoundaryStaleException {
9
+ /** Project-relative path of the rule's source file. */
10
+ readonly file: string;
11
+ }
12
+ //# sourceMappingURL=boundary-stale-exception-finding.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-stale-exception-finding.model.d.ts","sourceRoot":"","sources":["../src/boundary-stale-exception-finding.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC7E,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ import { type IBoundaryRule, type IBoundaryRuleCoverage, type IUnreadFile } from '@shrkcrft/boundaries';
2
+ /**
3
+ * THE unread re-settle of one boundary rule (round 13; V1-U1, prerequisite P2)
4
+ * — `check boundaries` AND `check boundaries --diff-against` both call it, so an
5
+ * unreadable governed file weighs the same on the gate and on the authoring
6
+ * path. It replaces `withProvableDeadUnits`, which silently DROPPED a claim;
7
+ * the diff path had no such step at all.
8
+ *
9
+ * A "matches nothing" / "does not exist yet" fact is a whole-tree claim made
10
+ * from what was READ. Every negative fact an unread entry could refute is
11
+ * withdrawn (made unknown), and the rule is re-settled through the one boundary
12
+ * settle (`settleBoundaryRule`, `@shrkcrft/boundaries`): such a unit reads
13
+ * Unproven — no dead line, no `accepted by expectEmpty`, a gap in its rule's
14
+ * coverage. What is refutable:
15
+ *
16
+ * - a `forbiddenImports` / `allowedImports` claim ("matches no import
17
+ * anywhere") — by any unread entry the rule's `from` globs match;
18
+ * - a `from` / exemption glob claim ("matched 0 files") — by an unread entry
19
+ * that glob matches;
20
+ * - a unit dead by its SHAPE (`cause`) — never: it is proved from the rule alone.
21
+ *
22
+ * A positive fact (a match seen) is kept. The rule's emptiness is re-settled
23
+ * with `readGap`: a rule whose governed files went unread is partial, never
24
+ * "matched nothing" and never failOnEmpty's 1. Unchanged (same object) when
25
+ * nothing is withdrawn and no governed file is unread.
26
+ */
27
+ export declare function boundaryUnitLiveness(detail: IBoundaryRuleCoverage, rule: IBoundaryRule, context: {
28
+ /** Every entry the scan could not read (files, and directories it could not list). */
29
+ readonly unread: readonly IUnreadFile[];
30
+ /** A governed file in the rule's REPORTED scope was not read (the orchestrator's `readGap`). */
31
+ readonly readGap: boolean;
32
+ readonly filesScanned: number;
33
+ readonly fileUniverse: 'scan' | 'edges';
34
+ }): IBoundaryRuleCoverage;
35
+ //# sourceMappingURL=boundary-unit-liveness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-unit-liveness.d.ts","sourceRoot":"","sources":["../src/boundary-unit-liveness.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAG9B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE;IACP,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,gGAAgG;IAChG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;CACzC,GACA,qBAAqB,CAyCvB"}