kibi-cli 1.0.1 → 2.1.0

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 (548) hide show
  1. package/dist/cli-errors.d.ts +3 -1
  2. package/dist/cli-errors.d.ts.map +1 -1
  3. package/dist/cli-errors.js +4 -1
  4. package/dist/cli-json-command.d.ts +1 -0
  5. package/dist/cli-json-command.d.ts.map +1 -1
  6. package/dist/cli-json-command.js +13 -4
  7. package/dist/cli-operation-loader.js +3 -3
  8. package/dist/cli-operation-metadata.d.ts +4 -3
  9. package/dist/cli-operation-metadata.d.ts.map +1 -1
  10. package/dist/cli-operation-metadata.js +7 -5
  11. package/dist/cli-protocol.js +1 -1
  12. package/dist/cli-register-maintenance.d.ts.map +1 -1
  13. package/dist/cli-register-maintenance.js +7 -0
  14. package/dist/cli-register-proof.d.ts +3 -0
  15. package/dist/cli-register-proof.d.ts.map +1 -0
  16. package/dist/cli-register-proof.js +127 -0
  17. package/dist/cli-register-reporting.d.ts.map +1 -1
  18. package/dist/cli-register-reporting.js +7 -0
  19. package/dist/cli.d.ts +4 -0
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +19 -10
  22. package/dist/commands/branch.d.ts +1 -0
  23. package/dist/commands/branch.d.ts.map +1 -1
  24. package/dist/commands/branch.js +8 -4
  25. package/dist/commands/check-generated.d.ts +7 -0
  26. package/dist/commands/check-generated.d.ts.map +1 -0
  27. package/dist/commands/check-generated.js +192 -0
  28. package/dist/commands/check.d.ts +14 -0
  29. package/dist/commands/check.d.ts.map +1 -1
  30. package/dist/commands/check.js +193 -46
  31. package/dist/commands/coverage.d.ts +1 -0
  32. package/dist/commands/coverage.d.ts.map +1 -1
  33. package/dist/commands/coverage.js +6 -0
  34. package/dist/commands/doctor.d.ts +22 -0
  35. package/dist/commands/doctor.d.ts.map +1 -1
  36. package/dist/commands/doctor.js +170 -23
  37. package/dist/commands/engine.d.ts +12 -0
  38. package/dist/commands/engine.d.ts.map +1 -1
  39. package/dist/commands/engine.js +42 -0
  40. package/dist/commands/github-init.d.ts +1 -0
  41. package/dist/commands/github-init.d.ts.map +1 -1
  42. package/dist/commands/github-init.js +9 -5
  43. package/dist/commands/init-helpers.d.ts.map +1 -1
  44. package/dist/commands/init-helpers.js +49 -10
  45. package/dist/commands/migrate.d.ts +4 -0
  46. package/dist/commands/migrate.d.ts.map +1 -1
  47. package/dist/commands/migrate.js +7 -7
  48. package/dist/commands/proof-explain.d.ts +10 -0
  49. package/dist/commands/proof-explain.d.ts.map +1 -0
  50. package/dist/commands/proof-explain.js +45 -0
  51. package/dist/commands/proof-impact.d.ts +7 -0
  52. package/dist/commands/proof-impact.d.ts.map +1 -0
  53. package/dist/commands/proof-impact.js +39 -0
  54. package/dist/commands/proof-migrate-legacy.d.ts +7 -0
  55. package/dist/commands/proof-migrate-legacy.d.ts.map +1 -0
  56. package/dist/commands/proof-migrate-legacy.js +45 -0
  57. package/dist/commands/proof-prune.d.ts +8 -0
  58. package/dist/commands/proof-prune.d.ts.map +1 -0
  59. package/dist/commands/proof-prune.js +53 -0
  60. package/dist/commands/prove.d.ts +37 -0
  61. package/dist/commands/prove.d.ts.map +1 -0
  62. package/dist/commands/prove.js +470 -0
  63. package/dist/commands/report.d.ts.map +1 -1
  64. package/dist/commands/report.js +18 -3
  65. package/dist/commands/sync/discovery.d.ts +3 -0
  66. package/dist/commands/sync/discovery.d.ts.map +1 -1
  67. package/dist/commands/sync/discovery.js +36 -28
  68. package/dist/commands/sync/manifest.d.ts +2 -1
  69. package/dist/commands/sync/manifest.d.ts.map +1 -1
  70. package/dist/commands/sync/manifest.js +55 -21
  71. package/dist/commands/sync/persistence.d.ts +4 -1
  72. package/dist/commands/sync/persistence.d.ts.map +1 -1
  73. package/dist/commands/sync/persistence.js +31 -14
  74. package/dist/commands/sync/staging.d.ts +1 -0
  75. package/dist/commands/sync/staging.d.ts.map +1 -1
  76. package/dist/commands/sync/staging.js +5 -2
  77. package/dist/commands/sync/untracked-targets.d.ts +24 -0
  78. package/dist/commands/sync/untracked-targets.d.ts.map +1 -0
  79. package/dist/commands/sync/untracked-targets.js +108 -0
  80. package/dist/commands/sync.d.ts +11 -1
  81. package/dist/commands/sync.d.ts.map +1 -1
  82. package/dist/commands/sync.js +74 -30
  83. package/dist/engine-daemon.d.ts +3 -1
  84. package/dist/engine-daemon.d.ts.map +1 -1
  85. package/dist/engine-daemon.js +49 -20
  86. package/dist/engine.d.ts +17 -77
  87. package/dist/engine.d.ts.map +1 -1
  88. package/dist/engine.js +331 -91
  89. package/dist/env/bootstrap.d.ts +84 -0
  90. package/dist/env/bootstrap.d.ts.map +1 -0
  91. package/dist/env/bootstrap.js +310 -0
  92. package/dist/extractors/manifest.d.ts +5 -0
  93. package/dist/extractors/manifest.d.ts.map +1 -1
  94. package/dist/extractors/manifest.js +46 -1
  95. package/dist/extractors/markdown.d.ts +7 -3
  96. package/dist/extractors/markdown.d.ts.map +1 -1
  97. package/dist/extractors/markdown.js +60 -24
  98. package/dist/extractors/playwright-cases.js +1 -1
  99. package/dist/extractors/relationships.d.ts +6 -0
  100. package/dist/extractors/relationships.d.ts.map +1 -1
  101. package/dist/extractors/relationships.js +1 -1
  102. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  103. package/dist/extractors/symbols-coordinator.d.ts +8 -0
  104. package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
  105. package/dist/extractors/symbols-coordinator.js +40 -0
  106. package/dist/extractors/symbols-ts.d.ts +9 -19
  107. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  108. package/dist/extractors/symbols-ts.js +34 -429
  109. package/dist/intent-search.d.ts +1 -0
  110. package/dist/intent-search.d.ts.map +1 -1
  111. package/dist/intent-search.js +11 -8
  112. package/dist/logic/ir.d.ts +1 -0
  113. package/dist/logic/ir.d.ts.map +1 -1
  114. package/dist/logic/ir.js +1 -1
  115. package/dist/operations/bootstrap/activation.d.ts +2 -1
  116. package/dist/operations/bootstrap/activation.d.ts.map +1 -1
  117. package/dist/operations/bootstrap/activation.js +11 -3
  118. package/dist/operations/bootstrap/generate.d.ts +2 -1
  119. package/dist/operations/bootstrap/generate.d.ts.map +1 -1
  120. package/dist/operations/bootstrap/generate.js +6 -3
  121. package/dist/operations/bootstrap/guidance.d.ts +1 -0
  122. package/dist/operations/bootstrap/guidance.d.ts.map +1 -1
  123. package/dist/operations/bootstrap/guidance.js +1 -1
  124. package/dist/operations/modeling/model-requirement.d.ts +5 -0
  125. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  126. package/dist/operations/modeling/model-requirement.js +57 -46
  127. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -1
  128. package/dist/operations/modeling/predicate-applicability.js +103 -4
  129. package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -1
  130. package/dist/operations/modeling/predicate-catalog-2.js +18 -2
  131. package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -1
  132. package/dist/operations/modeling/predicate-catalog-3.js +17 -1
  133. package/dist/operations/modeling/predicate-catalog-5.d.ts +10 -0
  134. package/dist/operations/modeling/predicate-catalog-5.d.ts.map +1 -0
  135. package/dist/operations/modeling/predicate-catalog-5.js +291 -0
  136. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
  137. package/dist/operations/modeling/predicate-catalog.js +4 -0
  138. package/dist/operations/modeling/predicate-loader.d.ts +1 -0
  139. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  140. package/dist/operations/modeling/predicate-loader.js +4 -3
  141. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  142. package/dist/operations/modeling/predicate-ranker.js +4 -1
  143. package/dist/operations/modeling/predicate-types.d.ts +1 -1
  144. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  145. package/dist/operations/modeling/predicate-usage-hints-4.d.ts +3 -0
  146. package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -0
  147. package/dist/operations/modeling/predicate-usage-hints-4.js +84 -0
  148. package/dist/operations/modeling/suggest-predicates.d.ts +4 -2
  149. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  150. package/dist/operations/modeling/suggest-predicates.js +82 -22
  151. package/dist/operations/mutation/contradictions.d.ts +2 -1
  152. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  153. package/dist/operations/mutation/contradictions.js +26 -5
  154. package/dist/operations/mutation/delete.d.ts +3 -0
  155. package/dist/operations/mutation/delete.d.ts.map +1 -1
  156. package/dist/operations/mutation/delete.js +100 -32
  157. package/dist/operations/mutation/relationships.d.ts +1 -0
  158. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  159. package/dist/operations/mutation/relationships.js +6 -4
  160. package/dist/operations/mutation/saga.d.ts +51 -0
  161. package/dist/operations/mutation/saga.d.ts.map +1 -0
  162. package/dist/operations/mutation/saga.js +67 -0
  163. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  164. package/dist/operations/mutation/serialization.js +3 -2
  165. package/dist/operations/mutation/source-authoring.d.ts +5 -1
  166. package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
  167. package/dist/operations/mutation/source-authoring.js +79 -46
  168. package/dist/operations/mutation/strict-fact.d.ts +1 -0
  169. package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
  170. package/dist/operations/mutation/strict-fact.js +8 -5
  171. package/dist/operations/mutation/symbol-compiler-lock.d.ts +5 -2
  172. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -1
  173. package/dist/operations/mutation/symbol-compiler-lock.js +65 -2
  174. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  175. package/dist/operations/mutation/symbol-granularity.js +11 -89
  176. package/dist/operations/mutation/symbol-refresh.d.ts +1 -0
  177. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  178. package/dist/operations/mutation/symbol-refresh.js +10 -8
  179. package/dist/operations/mutation/upsert.d.ts +18 -2
  180. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  181. package/dist/operations/mutation/upsert.js +86 -54
  182. package/dist/operations/mutation/validate-upsert.js +2 -2
  183. package/dist/operations/mutation/validation.d.ts.map +1 -1
  184. package/dist/operations/mutation/validation.js +46 -4
  185. package/dist/operations/mutation/warnings.d.ts +1 -0
  186. package/dist/operations/mutation/warnings.d.ts.map +1 -1
  187. package/dist/operations/mutation/warnings.js +7 -5
  188. package/dist/operations/mutation/workspace-mutation-lock.d.ts +60 -0
  189. package/dist/operations/mutation/workspace-mutation-lock.d.ts.map +1 -0
  190. package/dist/operations/mutation/workspace-mutation-lock.js +362 -0
  191. package/dist/operations/planning/apply-plan.d.ts +8 -106
  192. package/dist/operations/planning/apply-plan.d.ts.map +1 -1
  193. package/dist/operations/planning/apply-plan.js +113 -36
  194. package/dist/operations/planning/compile-intent.d.ts +51 -0
  195. package/dist/operations/planning/compile-intent.d.ts.map +1 -1
  196. package/dist/operations/planning/compile-intent.js +133 -17
  197. package/dist/operations/proof/baseline-diff.d.ts +41 -0
  198. package/dist/operations/proof/baseline-diff.d.ts.map +1 -0
  199. package/dist/operations/proof/baseline-diff.js +153 -0
  200. package/dist/operations/proof/explain.d.ts +75 -0
  201. package/dist/operations/proof/explain.d.ts.map +1 -0
  202. package/dist/operations/proof/explain.js +294 -0
  203. package/dist/operations/proof/impact.d.ts +45 -0
  204. package/dist/operations/proof/impact.d.ts.map +1 -0
  205. package/dist/operations/proof/impact.js +118 -0
  206. package/dist/operations/proof/ingest-proof.d.ts +34 -0
  207. package/dist/operations/proof/ingest-proof.d.ts.map +1 -0
  208. package/dist/operations/proof/ingest-proof.js +348 -0
  209. package/dist/operations/proof/migrate-legacy-receipts.d.ts +30 -0
  210. package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -0
  211. package/dist/operations/proof/migrate-legacy-receipts.js +92 -0
  212. package/dist/operations/proof/prune-receipts.d.ts +35 -0
  213. package/dist/operations/proof/prune-receipts.d.ts.map +1 -0
  214. package/dist/operations/proof/prune-receipts.js +91 -0
  215. package/dist/operations/proof/receipt-document.d.ts +29 -0
  216. package/dist/operations/proof/receipt-document.d.ts.map +1 -0
  217. package/dist/operations/proof/receipt-document.js +117 -0
  218. package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -1
  219. package/dist/operations/semantic-advisor/analysis-receipt.js +3 -9
  220. package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -0
  221. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  222. package/dist/operations/semantic-advisor/analyze-prose.js +64 -93
  223. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  224. package/dist/operations/semantic-advisor/clauses.js +20 -7
  225. package/dist/operations/semantic-advisor/plugin-orchestration.d.ts +63 -0
  226. package/dist/operations/semantic-advisor/plugin-orchestration.d.ts.map +1 -0
  227. package/dist/operations/semantic-advisor/plugin-orchestration.js +489 -0
  228. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts +15 -2
  229. package/dist/operations/semantic-advisor/predicate-rules-core.d.ts.map +1 -1
  230. package/dist/operations/semantic-advisor/predicate-rules-core.js +7 -140
  231. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +11 -12
  232. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -1
  233. package/dist/operations/semantic-advisor/predicate-rules-launcher.js +6 -94
  234. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts +16 -0
  235. package/dist/operations/semantic-advisor/predicate-rules-policy.d.ts.map +1 -1
  236. package/dist/operations/semantic-advisor/predicate-rules-policy.js +7 -150
  237. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts +9 -0
  238. package/dist/operations/semantic-advisor/predicate-rules-product-tail.d.ts.map +1 -1
  239. package/dist/operations/semantic-advisor/predicate-rules-product-tail.js +7 -102
  240. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts +13 -0
  241. package/dist/operations/semantic-advisor/predicate-rules-product.d.ts.map +1 -1
  242. package/dist/operations/semantic-advisor/predicate-rules-product.js +7 -133
  243. package/dist/operations/semantic-advisor/strict-count-rules.d.ts +2 -0
  244. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
  245. package/dist/operations/semantic-advisor/strict-count-rules.js +40 -25
  246. package/dist/operations/semantic-advisor/types.d.ts +1 -0
  247. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  248. package/dist/plugins/compose-ontology-packs.d.ts +51 -0
  249. package/dist/plugins/compose-ontology-packs.d.ts.map +1 -0
  250. package/dist/plugins/compose-ontology-packs.js +257 -0
  251. package/dist/plugins/compose-semantic-classifier.d.ts +42 -0
  252. package/dist/plugins/compose-semantic-classifier.d.ts.map +1 -0
  253. package/dist/plugins/compose-semantic-classifier.js +211 -0
  254. package/dist/plugins/external-allowlist.d.ts +10 -0
  255. package/dist/plugins/external-allowlist.d.ts.map +1 -0
  256. package/dist/plugins/external-allowlist.js +16 -0
  257. package/dist/plugins/index.d.ts +9 -0
  258. package/dist/plugins/index.d.ts.map +1 -0
  259. package/dist/plugins/index.js +33 -0
  260. package/dist/plugins/load-plugin.d.ts +19 -0
  261. package/dist/plugins/load-plugin.d.ts.map +1 -0
  262. package/dist/plugins/load-plugin.js +59 -0
  263. package/dist/plugins/project-config.d.ts +28 -0
  264. package/dist/plugins/project-config.d.ts.map +1 -0
  265. package/dist/plugins/project-config.js +90 -0
  266. package/dist/plugins/registry.d.ts +93 -0
  267. package/dist/plugins/registry.d.ts.map +1 -0
  268. package/dist/plugins/registry.js +338 -0
  269. package/dist/plugins/resolve-package.d.ts +47 -0
  270. package/dist/plugins/resolve-package.d.ts.map +1 -0
  271. package/dist/plugins/resolve-package.js +262 -0
  272. package/dist/plugins/source-analysis-service.d.ts +44 -0
  273. package/dist/plugins/source-analysis-service.d.ts.map +1 -0
  274. package/dist/plugins/source-analysis-service.js +232 -0
  275. package/dist/prolog/codec.d.ts +13 -1
  276. package/dist/prolog/codec.d.ts.map +1 -1
  277. package/dist/prolog/codec.js +269 -154
  278. package/dist/prolog/error-terms.d.ts +47 -0
  279. package/dist/prolog/error-terms.d.ts.map +1 -0
  280. package/dist/prolog/error-terms.js +334 -0
  281. package/dist/prolog/janitor.d.ts +50 -0
  282. package/dist/prolog/janitor.d.ts.map +1 -0
  283. package/dist/prolog/janitor.js +154 -0
  284. package/dist/prolog/store-lock.d.ts +45 -0
  285. package/dist/prolog/store-lock.d.ts.map +1 -0
  286. package/dist/prolog/store-lock.js +195 -0
  287. package/dist/prolog.d.ts +7 -0
  288. package/dist/prolog.d.ts.map +1 -1
  289. package/dist/prolog.js +55 -17
  290. package/dist/proof/evaluate.d.ts +27 -0
  291. package/dist/proof/evaluate.d.ts.map +1 -0
  292. package/dist/proof/evaluate.js +151 -0
  293. package/dist/proof/inspect.d.ts +12 -0
  294. package/dist/proof/inspect.d.ts.map +1 -0
  295. package/dist/proof/inspect.js +236 -0
  296. package/dist/proof/integrations.d.ts +35 -0
  297. package/dist/proof/integrations.d.ts.map +1 -0
  298. package/dist/proof/integrations.js +123 -0
  299. package/dist/proof/producers/junit-adapter.d.ts +26 -0
  300. package/dist/proof/producers/junit-adapter.d.ts.map +1 -0
  301. package/dist/proof/producers/junit-adapter.js +186 -0
  302. package/dist/{public → proof/producers}/playwright-case-id.d.ts +1 -1
  303. package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
  304. package/dist/{public → proof/producers}/playwright-case-id.js +1 -1
  305. package/dist/proof/producers/playwright-reporter.d.ts +27 -0
  306. package/dist/proof/producers/playwright-reporter.d.ts.map +1 -0
  307. package/dist/proof/producers/playwright-reporter.js +138 -0
  308. package/dist/proof/producers/tap-adapter.d.ts +10 -0
  309. package/dist/proof/producers/tap-adapter.d.ts.map +1 -0
  310. package/dist/proof/producers/tap-adapter.js +200 -0
  311. package/dist/proof/receipt-outcome.d.ts +2 -0
  312. package/dist/proof/receipt-outcome.d.ts.map +1 -0
  313. package/dist/proof/receipt-outcome.js +1 -0
  314. package/dist/public/diagnostic-usage.js +6 -6
  315. package/dist/public/distribution-parity.d.ts +7 -1
  316. package/dist/public/distribution-parity.d.ts.map +1 -1
  317. package/dist/public/distribution-parity.js +15 -10
  318. package/dist/public/extractors/symbols-coordinator.d.ts +1 -1
  319. package/dist/public/extractors/symbols-coordinator.d.ts.map +1 -1
  320. package/dist/public/extractors/symbols-coordinator.js +1 -1
  321. package/dist/public/impact/analyzer.d.ts +1 -1
  322. package/dist/public/impact/analyzer.d.ts.map +1 -1
  323. package/dist/public/impact/analyzer.js +6 -4
  324. package/dist/public/impact/coverage-depth-quality.d.ts +1 -0
  325. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  326. package/dist/public/impact/coverage-depth-quality.js +1 -1
  327. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  328. package/dist/public/impact/diagnostics.js +2 -2
  329. package/dist/public/impact/diff-meaning.d.ts +1 -0
  330. package/dist/public/impact/diff-meaning.d.ts.map +1 -1
  331. package/dist/public/impact/diff-meaning.js +5 -2
  332. package/dist/public/impact/full-kb-quality.d.ts +5 -2
  333. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  334. package/dist/public/impact/full-kb-quality.js +329 -64
  335. package/dist/public/operations/catalog.d.ts +450 -196
  336. package/dist/public/operations/catalog.d.ts.map +1 -1
  337. package/dist/public/operations/catalog.js +6 -4
  338. package/dist/public/operations/check-executor.d.ts.map +1 -1
  339. package/dist/public/operations/check-executor.js +4 -8
  340. package/dist/public/operations/check-helpers.d.ts +1 -1
  341. package/dist/public/operations/check-helpers.d.ts.map +1 -1
  342. package/dist/public/operations/check-helpers.js +1 -1
  343. package/dist/public/operations/contracts.d.ts +7 -0
  344. package/dist/public/operations/contracts.d.ts.map +1 -1
  345. package/dist/public/operations/contracts.js +66 -34
  346. package/dist/public/operations/discovery-entities.d.ts +15 -0
  347. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  348. package/dist/public/operations/discovery-entities.js +38 -0
  349. package/dist/public/operations/discovery-executors.d.ts +9 -9
  350. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  351. package/dist/public/operations/discovery-executors.js +39 -31
  352. package/dist/public/operations/index.d.ts +1 -1
  353. package/dist/public/operations/index.d.ts.map +1 -1
  354. package/dist/public/operations/index.js +1 -1
  355. package/dist/public/operations/migration-plan.d.ts +4 -3
  356. package/dist/public/operations/migration-plan.d.ts.map +1 -1
  357. package/dist/public/operations/migration-plan.js +23 -21
  358. package/dist/public/operations/node-ports.js +6 -6
  359. package/dist/public/operations/prolog-json.d.ts +1 -1
  360. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  361. package/dist/public/operations/prolog-json.js +7 -7
  362. package/dist/public/operations/repair-plan.d.ts +3 -3
  363. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  364. package/dist/public/operations/repair-plan.js +49 -19
  365. package/dist/public/operations/result-envelope.d.ts +1 -0
  366. package/dist/public/operations/result-envelope.d.ts.map +1 -1
  367. package/dist/public/operations/result-envelope.js +12 -10
  368. package/dist/public/operations/runtime-types.d.ts +21 -1
  369. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  370. package/dist/public/operations/specs/check-rules.generated.d.ts +5 -0
  371. package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -0
  372. package/dist/public/operations/specs/check-rules.generated.js +35 -0
  373. package/dist/public/operations/specs/check.d.ts +7 -2
  374. package/dist/public/operations/specs/check.d.ts.map +1 -1
  375. package/dist/public/operations/specs/check.js +8 -20
  376. package/dist/public/operations/specs/discovery.d.ts +3 -0
  377. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  378. package/dist/public/operations/specs/discovery.js +3 -0
  379. package/dist/public/operations/specs/mutation-schemas.d.ts +257 -163
  380. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  381. package/dist/public/operations/specs/mutation-schemas.js +15 -7
  382. package/dist/public/operations/specs/planning.d.ts +9 -0
  383. package/dist/public/operations/specs/planning.d.ts.map +1 -1
  384. package/dist/public/operations/specs/planning.js +6 -0
  385. package/dist/public/operations/specs/proof.d.ts +212 -0
  386. package/dist/public/operations/specs/proof.d.ts.map +1 -0
  387. package/dist/public/operations/specs/proof.js +30 -0
  388. package/dist/public/operations/specs/reporting.d.ts +20 -0
  389. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  390. package/dist/public/operations/specs/reporting.js +112 -12
  391. package/dist/public/operations/specs/semantic.d.ts +1 -1
  392. package/dist/public/operations/specs/semantic.d.ts.map +1 -1
  393. package/dist/public/operations/specs/semantic.js +54 -4
  394. package/dist/public/operations/specs/upsert.d.ts +257 -163
  395. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  396. package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
  397. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -1
  398. package/dist/public/operations/symbol-repair-plan.js +121 -4
  399. package/dist/public/operations/types.d.ts +6 -1
  400. package/dist/public/operations/types.d.ts.map +1 -1
  401. package/dist/public/proof-fingerprint.d.ts +54 -0
  402. package/dist/public/proof-fingerprint.d.ts.map +1 -0
  403. package/dist/public/proof-fingerprint.js +141 -0
  404. package/dist/public/proof-protocol.d.ts +354 -0
  405. package/dist/public/proof-protocol.d.ts.map +1 -0
  406. package/dist/public/proof-protocol.js +454 -0
  407. package/dist/public/proof-receipt.d.ts +279 -0
  408. package/dist/public/proof-receipt.d.ts.map +1 -0
  409. package/dist/public/proof-receipt.js +377 -0
  410. package/dist/public/schemas/entity.d.ts.map +1 -1
  411. package/dist/public/schemas/entity.js +21 -7
  412. package/dist/public/skills/kibi-freshness/SKILL.md +1 -1
  413. package/dist/public/skills/kibi-usage/SKILL.md +44 -12
  414. package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -1
  415. package/dist/public/skills/kibi-usage/resources/proof.md +150 -0
  416. package/dist/public/skills/kibi-usage/resources/workflows.md +6 -6
  417. package/dist/public/symbol-granularity.d.ts +3 -14
  418. package/dist/public/symbol-granularity.d.ts.map +1 -1
  419. package/dist/public/symbol-granularity.generated.d.ts +16 -0
  420. package/dist/public/symbol-granularity.generated.d.ts.map +1 -0
  421. package/dist/public/symbol-granularity.generated.js +53 -0
  422. package/dist/public/symbol-granularity.js +6 -47
  423. package/dist/public/telemetry-acceptance.d.ts +3 -77
  424. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  425. package/dist/public/telemetry-acceptance.js +4 -2
  426. package/dist/public/telemetry-remediation.js +1 -1
  427. package/dist/report/html-report.css +1240 -0
  428. package/dist/report/html-report.d.ts +4 -2
  429. package/dist/report/html-report.d.ts.map +1 -1
  430. package/dist/report/html-report.js +37 -300
  431. package/dist/runtime/cli-runtime.d.ts +2 -0
  432. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  433. package/dist/runtime/cli-runtime.js +32 -7
  434. package/dist/schemas/entity.schema.json +355 -215
  435. package/dist/search-ranking.d.ts +1 -0
  436. package/dist/search-ranking.d.ts.map +1 -1
  437. package/dist/search-ranking.js +3 -0
  438. package/dist/traceability/evidence-model.d.ts +28 -0
  439. package/dist/traceability/evidence-model.d.ts.map +1 -1
  440. package/dist/traceability/git-staged.d.ts +20 -0
  441. package/dist/traceability/git-staged.d.ts.map +1 -1
  442. package/dist/traceability/git-staged.js +145 -1
  443. package/dist/traceability/staged-diagnostics.d.ts +7 -0
  444. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  445. package/dist/traceability/staged-diagnostics.js +78 -7
  446. package/dist/traceability/staged-file-coverage.d.ts +33 -0
  447. package/dist/traceability/staged-file-coverage.d.ts.map +1 -0
  448. package/dist/traceability/staged-file-coverage.js +284 -0
  449. package/dist/traceability/staged-impact-contract.js +4 -4
  450. package/dist/traceability/staged-symbols-manifest.d.ts +13 -0
  451. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  452. package/dist/traceability/staged-symbols-manifest.js +138 -27
  453. package/dist/traceability/symbol-extract.d.ts +24 -2
  454. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  455. package/dist/traceability/symbol-extract.js +64 -208
  456. package/dist/traceability/temp-kb.d.ts +2 -0
  457. package/dist/traceability/temp-kb.d.ts.map +1 -1
  458. package/dist/traceability/temp-kb.js +13 -4
  459. package/dist/types/entities.d.ts +5 -3
  460. package/dist/types/entities.d.ts.map +1 -1
  461. package/dist/utils/branch-resolver.d.ts +1 -0
  462. package/dist/utils/branch-resolver.d.ts.map +1 -1
  463. package/dist/utils/branch-resolver.js +7 -4
  464. package/dist/utils/branch-store.d.ts +6 -0
  465. package/dist/utils/branch-store.d.ts.map +1 -1
  466. package/dist/utils/branch-store.js +27 -0
  467. package/dist/utils/kb-paths.d.ts +1 -1
  468. package/dist/utils/kb-paths.d.ts.map +1 -1
  469. package/dist/utils/kb-paths.js +1 -1
  470. package/dist/utils/rule-registry.d.ts +1 -11
  471. package/dist/utils/rule-registry.d.ts.map +1 -1
  472. package/dist/utils/rule-registry.generated.d.ts +102 -0
  473. package/dist/utils/rule-registry.generated.d.ts.map +1 -0
  474. package/dist/utils/rule-registry.generated.js +131 -0
  475. package/dist/utils/rule-registry.js +12 -113
  476. package/dist/utils/strict-modeling.d.ts +1 -0
  477. package/dist/utils/strict-modeling.d.ts.map +1 -1
  478. package/dist/utils/strict-modeling.js +1 -1
  479. package/package.json +20 -20
  480. package/src/public/diagnostic-usage.ts +6 -6
  481. package/src/public/distribution-parity.ts +17 -10
  482. package/src/public/extractors/symbols-coordinator.ts +1 -0
  483. package/src/public/impact/analyzer.ts +15 -12
  484. package/src/public/impact/coverage-depth-quality.ts +1 -1
  485. package/src/public/impact/diagnostics.ts +2 -1
  486. package/src/public/impact/diff-meaning.ts +11 -4
  487. package/src/public/impact/full-kb-quality.ts +463 -72
  488. package/src/public/operations/catalog.ts +10 -4
  489. package/src/public/operations/check-executor.ts +4 -8
  490. package/src/public/operations/check-helpers.ts +2 -2
  491. package/src/public/operations/contracts.ts +78 -34
  492. package/src/public/operations/discovery-entities.ts +53 -0
  493. package/src/public/operations/discovery-executors.ts +64 -48
  494. package/src/public/operations/index.ts +1 -1
  495. package/src/public/operations/migration-plan.ts +32 -25
  496. package/src/public/operations/node-ports.ts +6 -6
  497. package/src/public/operations/prolog-json.ts +13 -5
  498. package/src/public/operations/repair-plan.ts +60 -23
  499. package/src/public/operations/result-envelope.ts +15 -10
  500. package/src/public/operations/runtime-types.ts +26 -2
  501. package/src/public/operations/specs/check-rules.generated.ts +38 -0
  502. package/src/public/operations/specs/check.ts +12 -21
  503. package/src/public/operations/specs/discovery.ts +3 -0
  504. package/src/public/operations/specs/mutation-schemas.ts +22 -9
  505. package/src/public/operations/specs/planning.ts +7 -0
  506. package/src/public/operations/specs/proof.ts +43 -0
  507. package/src/public/operations/specs/reporting.ts +140 -13
  508. package/src/public/operations/specs/semantic.ts +79 -17
  509. package/src/public/operations/symbol-repair-plan.ts +166 -7
  510. package/src/public/operations/types.ts +6 -1
  511. package/src/public/proof-fingerprint.ts +216 -0
  512. package/src/public/proof-protocol-types.d.ts +96 -0
  513. package/src/public/proof-protocol.ts +589 -0
  514. package/src/public/proof-receipt.ts +499 -0
  515. package/src/public/schemas/entity.ts +26 -10
  516. package/src/public/skills/kibi-freshness/SKILL.md +1 -1
  517. package/src/public/skills/kibi-usage/SKILL.md +44 -12
  518. package/src/public/skills/kibi-usage/resources/operation-access.md +1 -1
  519. package/src/public/skills/kibi-usage/resources/proof.md +150 -0
  520. package/src/public/skills/kibi-usage/resources/workflows.md +6 -6
  521. package/src/public/symbol-granularity.generated.ts +74 -0
  522. package/src/public/symbol-granularity.ts +34 -59
  523. package/src/public/telemetry-acceptance-types.d.ts +98 -0
  524. package/src/public/telemetry-acceptance.ts +22 -100
  525. package/src/public/telemetry-remediation.ts +1 -1
  526. package/src/schemas/entity.schema.json +355 -215
  527. package/dist/cli-register-verification.d.ts +0 -3
  528. package/dist/cli-register-verification.d.ts.map +0 -1
  529. package/dist/cli-register-verification.js +0 -16
  530. package/dist/commands/verify.d.ts +0 -10
  531. package/dist/commands/verify.d.ts.map +0 -1
  532. package/dist/commands/verify.js +0 -126
  533. package/dist/operations/verification/ingest-verification.d.ts +0 -29
  534. package/dist/operations/verification/ingest-verification.d.ts.map +0 -1
  535. package/dist/operations/verification/ingest-verification.js +0 -192
  536. package/dist/public/operations/specs/verification.d.ts +0 -78
  537. package/dist/public/operations/specs/verification.d.ts.map +0 -1
  538. package/dist/public/operations/specs/verification.js +0 -62
  539. package/dist/public/playwright-case-id.d.ts.map +0 -1
  540. package/dist/public/verification-receipt.d.ts +0 -242
  541. package/dist/public/verification-receipt.d.ts.map +0 -1
  542. package/dist/public/verification-receipt.js +0 -296
  543. package/dist/verification/playwright-reporter.d.ts +0 -21
  544. package/dist/verification/playwright-reporter.d.ts.map +0 -1
  545. package/dist/verification/playwright-reporter.js +0 -114
  546. package/src/public/operations/specs/verification.ts +0 -78
  547. package/src/public/playwright-case-id.ts +0 -35
  548. package/src/public/verification-receipt.ts +0 -412
@@ -0,0 +1,499 @@
1
+ import {
2
+ type ProofFingerprintComponents,
3
+ canonicalJson,
4
+ proofContractHash,
5
+ } from "./proof-fingerprint.js";
6
+ import {
7
+ PROOF_RECEIPT_VERSION,
8
+ PROOF_RESULT_OUTCOMES,
9
+ PROOF_RUN_OUTCOMES,
10
+ type ProofContract,
11
+ } from "./proof-protocol.js";
12
+
13
+ export const PROOF_RECEIPT_MAX_AGE_SECONDS = 7 * 24 * 60 * 60;
14
+
15
+ export const PROOF_RECEIPT_OUTCOMES = [
16
+ "passed",
17
+ "failed",
18
+ "errored",
19
+ "cancelled",
20
+ "skipped",
21
+ "timed_out",
22
+ "interrupted",
23
+ ] as const;
24
+
25
+ export const PROOF_RECEIPT_SCHEMA = {
26
+ type: "object",
27
+ description:
28
+ "Kibi-derived kibi.proof-receipt.v1. Receipts are never caller-authored; kb_ingest_proof derives them from kibi.proof-run.v1 artifacts.",
29
+ required: [
30
+ "version",
31
+ "receipt_id",
32
+ "test_id",
33
+ "scope",
34
+ "outcome",
35
+ "code_snapshot",
36
+ "environment_hash",
37
+ "started_at",
38
+ "finished_at",
39
+ "artifact_digest",
40
+ "contract_hash",
41
+ "fingerprint",
42
+ "fingerprint_components",
43
+ "integration_id",
44
+ "producer",
45
+ "command_argv",
46
+ "run_outcome",
47
+ "proof_results",
48
+ ],
49
+ properties: {
50
+ version: { type: "string", const: PROOF_RECEIPT_VERSION },
51
+ receipt_id: {
52
+ type: "string",
53
+ pattern: "^PR-[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$",
54
+ },
55
+ test_id: { type: "string", minLength: 1 },
56
+ scope: { type: "string", enum: ["unit", "integration", "end_to_end"] },
57
+ outcome: { type: "string", enum: [...PROOF_RECEIPT_OUTCOMES] },
58
+ code_snapshot: { type: "string", pattern: "^[a-f0-9]{64}$" },
59
+ environment_hash: { type: "string", pattern: "^[a-f0-9]{64}$" },
60
+ started_at: { type: "string", minLength: 1 },
61
+ finished_at: { type: "string", minLength: 1 },
62
+ artifact_digest: { type: "string", pattern: "^[a-f0-9]{64}$" },
63
+ contract_hash: { type: "string", pattern: "^[a-f0-9]{64}$" },
64
+ binding_hash: { type: "string", pattern: "^[a-f0-9]{64}$" },
65
+ fingerprint: { type: "string", pattern: "^[a-f0-9]{64}$" },
66
+ fingerprint_components: {
67
+ type: "object",
68
+ required: ["contract", "integration", "command", "bindings", "producer"],
69
+ additionalProperties: false,
70
+ properties: {
71
+ contract: { type: "string", pattern: "^[a-f0-9]{64}$" },
72
+ integration: { type: "string", pattern: "^[a-f0-9]{64}$" },
73
+ command: { type: "string", pattern: "^[a-f0-9]{64}$" },
74
+ bindings: { type: "string", pattern: "^[a-f0-9]{64}$" },
75
+ producer: { type: "string", pattern: "^[a-f0-9]{64}$" },
76
+ },
77
+ },
78
+ integration_id: { type: "string", minLength: 1 },
79
+ producer: {
80
+ type: "object",
81
+ required: ["name"],
82
+ properties: {
83
+ name: { type: "string", minLength: 1 },
84
+ version: { type: "string", minLength: 1 },
85
+ },
86
+ additionalProperties: false,
87
+ },
88
+ command_argv: {
89
+ type: "array",
90
+ minItems: 1,
91
+ items: { type: "string", minLength: 1 },
92
+ },
93
+ run_outcome: { type: "string", enum: [...PROOF_RUN_OUTCOMES] },
94
+ proof_results: {
95
+ type: "array",
96
+ minItems: 0,
97
+ maxItems: 1000,
98
+ items: {
99
+ type: "object",
100
+ required: ["symbol_id", "target", "outcome", "binding", "attempts"],
101
+ properties: {
102
+ symbol_id: { type: "string", minLength: 1 },
103
+ target: { type: "string", minLength: 1 },
104
+ outcome: { type: "string", enum: [...PROOF_RESULT_OUTCOMES] },
105
+ binding: { type: "string", enum: ["native_case", "aggregate_run"] },
106
+ native_id: { type: "string", minLength: 1 },
107
+ attempts: {
108
+ oneOf: [
109
+ {
110
+ type: "object",
111
+ required: ["status", "entries"],
112
+ properties: {
113
+ status: { type: "string", const: "complete" },
114
+ entries: {
115
+ type: "array",
116
+ minItems: 1,
117
+ items: {
118
+ type: "object",
119
+ required: ["outcome"],
120
+ properties: {
121
+ outcome: {
122
+ type: "string",
123
+ enum: [...PROOF_RESULT_OUTCOMES],
124
+ },
125
+ duration_ms: { type: "number", minimum: 0 },
126
+ },
127
+ additionalProperties: false,
128
+ },
129
+ },
130
+ },
131
+ additionalProperties: false,
132
+ },
133
+ {
134
+ type: "object",
135
+ required: ["status"],
136
+ properties: {
137
+ status: { type: "string", const: "unavailable" },
138
+ },
139
+ additionalProperties: false,
140
+ },
141
+ ],
142
+ },
143
+ },
144
+ additionalProperties: false,
145
+ },
146
+ },
147
+ gaps: {
148
+ type: "array",
149
+ items: {
150
+ type: "object",
151
+ required: ["symbol_id", "target", "reason"],
152
+ properties: {
153
+ symbol_id: { type: "string", minLength: 1 },
154
+ target: { type: "string", minLength: 1 },
155
+ reason: { type: "string", minLength: 1 },
156
+ },
157
+ additionalProperties: false,
158
+ },
159
+ },
160
+ },
161
+ additionalProperties: false,
162
+ } as const;
163
+
164
+ export type ProofReceipt = Readonly<{
165
+ version: typeof PROOF_RECEIPT_VERSION;
166
+ receipt_id: string;
167
+ test_id: string;
168
+ scope: "unit" | "integration" | "end_to_end";
169
+ outcome: (typeof PROOF_RECEIPT_OUTCOMES)[number];
170
+ code_snapshot: string;
171
+ environment_hash: string;
172
+ started_at: string;
173
+ finished_at: string;
174
+ artifact_digest: string;
175
+ contract_hash: string;
176
+ fingerprint: string;
177
+ fingerprint_components: ProofFingerprintComponents;
178
+ integration_id: string;
179
+ producer: { readonly name: string; readonly version?: string };
180
+ command_argv: readonly string[];
181
+ run_outcome: (typeof PROOF_RUN_OUTCOMES)[number];
182
+ proof_results: readonly {
183
+ readonly symbol_id: string;
184
+ readonly target: string;
185
+ readonly outcome: (typeof PROOF_RESULT_OUTCOMES)[number];
186
+ readonly binding: "native_case" | "aggregate_run";
187
+ readonly native_id?: string;
188
+ readonly attempts:
189
+ | {
190
+ readonly status: "complete";
191
+ readonly entries: readonly {
192
+ readonly outcome: string;
193
+ readonly duration_ms?: number;
194
+ }[];
195
+ }
196
+ | { readonly status: "unavailable" };
197
+ }[];
198
+ gaps?: readonly {
199
+ readonly symbol_id: string;
200
+ readonly target: string;
201
+ readonly reason: string;
202
+ }[];
203
+ }>;
204
+
205
+ export function finishedAtPrecedesStartedAt(
206
+ startedAt: number | null,
207
+ finishedAt: number | null,
208
+ ): boolean {
209
+ return startedAt !== null && finishedAt !== null && finishedAt < startedAt;
210
+ }
211
+
212
+ function timestamp(value: unknown): number | null {
213
+ if (typeof value !== "string") return null;
214
+ if (
215
+ !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(
216
+ value,
217
+ )
218
+ ) {
219
+ return null;
220
+ }
221
+ const parsed = Date.parse(value);
222
+ return Number.isFinite(parsed) ? parsed : null;
223
+ }
224
+
225
+ function nonEmptyString(value: unknown): boolean {
226
+ return typeof value === "string" && value.trim().length > 0;
227
+ }
228
+
229
+ function hex64(value: unknown): boolean {
230
+ return typeof value === "string" && /^[a-f0-9]{64}$/.test(value);
231
+ }
232
+
233
+ function isRecord(value: unknown): value is Record<string, unknown> {
234
+ return value !== null && typeof value === "object" && !Array.isArray(value);
235
+ }
236
+
237
+ function validAttempts(value: unknown): boolean {
238
+ const row = isRecord(value) ? value : null;
239
+ if (!row) return false;
240
+ if (row.status === "unavailable") return row.entries === undefined;
241
+ if (row.status !== "complete") return false;
242
+ if (!Array.isArray(row.entries) || row.entries.length === 0) return false;
243
+ return row.entries.every((entry) => {
244
+ const attempt = isRecord(entry) ? entry : null;
245
+ return (
246
+ attempt !== null &&
247
+ nonEmptyString(attempt.outcome) &&
248
+ (PROOF_RESULT_OUTCOMES as readonly string[]).includes(
249
+ String(attempt.outcome),
250
+ ) &&
251
+ (attempt.duration_ms === undefined ||
252
+ (Number.isInteger(attempt.duration_ms) &&
253
+ Number(attempt.duration_ms) >= 0))
254
+ );
255
+ });
256
+ }
257
+
258
+ function validReceiptProofResult(value: unknown): boolean {
259
+ const row = isRecord(value) ? value : null;
260
+ if (!row) return false;
261
+ return (
262
+ nonEmptyString(row.symbol_id) &&
263
+ nonEmptyString(row.target) &&
264
+ (PROOF_RESULT_OUTCOMES as readonly string[]).includes(
265
+ String(row.outcome),
266
+ ) &&
267
+ (["native_case", "aggregate_run"] as readonly string[]).includes(
268
+ String(row.binding),
269
+ ) &&
270
+ (row.native_id === undefined || nonEmptyString(row.native_id)) &&
271
+ validAttempts(row.attempts)
272
+ );
273
+ }
274
+
275
+ function validFingerprintComponents(value: unknown): boolean {
276
+ const row = isRecord(value) ? value : null;
277
+ if (!row) return false;
278
+ return (
279
+ hex64(row.contract) &&
280
+ hex64(row.integration) &&
281
+ hex64(row.command) &&
282
+ hex64(row.bindings) &&
283
+ hex64(row.producer)
284
+ );
285
+ }
286
+
287
+ /** Structural validation of one kibi.proof-receipt.v1 entry. */
288
+ export function validProofReceiptShape(
289
+ testId: string,
290
+ receipt: unknown,
291
+ ): boolean {
292
+ const row = isRecord(receipt) ? receipt : null;
293
+ if (!row) return false;
294
+ if (row.version !== PROOF_RECEIPT_VERSION) return false;
295
+ if (
296
+ typeof row.receipt_id !== "string" ||
297
+ !/^PR-[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$/.test(row.receipt_id)
298
+ )
299
+ return false;
300
+ if (row.test_id !== testId) return false;
301
+ if (
302
+ !(["unit", "integration", "end_to_end"] as readonly string[]).includes(
303
+ String(row.scope),
304
+ )
305
+ )
306
+ return false;
307
+ if (
308
+ !(PROOF_RECEIPT_OUTCOMES as readonly string[]).includes(String(row.outcome))
309
+ )
310
+ return false;
311
+ if (!hex64(row.code_snapshot) || !hex64(row.environment_hash)) return false;
312
+ if (!hex64(row.artifact_digest)) return false;
313
+ if (!hex64(row.contract_hash) || !hex64(row.fingerprint)) return false;
314
+ if (
315
+ row.binding_hash !== undefined &&
316
+ (typeof row.binding_hash !== "string" || !hex64(row.binding_hash))
317
+ ) {
318
+ return false;
319
+ }
320
+ if (!validFingerprintComponents(row.fingerprint_components)) return false;
321
+ if (!nonEmptyString(row.integration_id)) return false;
322
+ const producer = isRecord(row.producer) ? row.producer : null;
323
+ if (!producer || !nonEmptyString(producer.name)) return false;
324
+ if (producer.version !== undefined && !nonEmptyString(producer.version))
325
+ return false;
326
+ if (
327
+ !Array.isArray(row.command_argv) ||
328
+ row.command_argv.length === 0 ||
329
+ !row.command_argv.every((argument) => nonEmptyString(argument))
330
+ )
331
+ return false;
332
+ if (
333
+ !(PROOF_RUN_OUTCOMES as readonly string[]).includes(String(row.run_outcome))
334
+ )
335
+ return false;
336
+ if (
337
+ !Array.isArray(row.proof_results) ||
338
+ !row.proof_results.every(validReceiptProofResult)
339
+ )
340
+ return false;
341
+ if (row.gaps !== undefined) {
342
+ if (!Array.isArray(row.gaps)) return false;
343
+ if (
344
+ !row.gaps.every(
345
+ (gap) =>
346
+ isRecord(gap) &&
347
+ nonEmptyString(gap.symbol_id) &&
348
+ nonEmptyString(gap.target) &&
349
+ nonEmptyString(gap.reason),
350
+ )
351
+ )
352
+ return false;
353
+ }
354
+ const startedAt = timestamp(row.started_at);
355
+ const finishedAt = timestamp(row.finished_at);
356
+ if (startedAt === null || finishedAt === null) return false;
357
+ return !finishedAtPrecedesStartedAt(startedAt, finishedAt);
358
+ }
359
+
360
+ /**
361
+ * Full-history validation for proof_receipts: unique ids, per-test binding,
362
+ * supported scope, ordered timestamps, and structurally valid v1 entries.
363
+ */
364
+ export function proofReceiptHistoryErrors(
365
+ testId: string,
366
+ verificationScope: unknown,
367
+ receipts: readonly Readonly<Record<string, unknown>>[],
368
+ ): readonly string[] {
369
+ const errors: string[] = [];
370
+ if (receipts.length > 0 && typeof verificationScope !== "string") {
371
+ errors.push(
372
+ "verification_scope is required when proof_receipts are present",
373
+ );
374
+ }
375
+ const receiptIds = new Set<string>();
376
+ for (const [index, receipt] of receipts.entries()) {
377
+ const prefix = `proof_receipts[${index}]`;
378
+ const receiptId = receipt.receipt_id;
379
+ if (typeof receiptId === "string") {
380
+ if (receiptIds.has(receiptId)) {
381
+ errors.push(`${prefix}.receipt_id duplicates '${receiptId}'`);
382
+ }
383
+ receiptIds.add(receiptId);
384
+ }
385
+ if (receipt.test_id !== testId) {
386
+ errors.push(`${prefix}.test_id must equal '${testId}'`);
387
+ }
388
+ if (!validProofReceiptShape(testId, receipt)) {
389
+ errors.push(
390
+ `${prefix} must be a structurally valid kibi.proof-receipt.v1 bound to '${testId}'`,
391
+ );
392
+ continue;
393
+ }
394
+ const finishedAt = timestamp(receipt.finished_at);
395
+ if (
396
+ finishedAt !== null &&
397
+ index > 0 &&
398
+ timestamp(receipts[index - 1]?.finished_at) !== null &&
399
+ finishedAt <= (timestamp(receipts[index - 1]?.finished_at) as number)
400
+ ) {
401
+ errors.push(
402
+ `${prefix}.finished_at must be strictly later than the previous receipt`,
403
+ );
404
+ }
405
+ }
406
+ return errors;
407
+ }
408
+
409
+ /** The current receipt must match the live scope, contract hash, and fingerprint. */
410
+ export function proofReceiptCurrentBindingErrors(
411
+ testId: string,
412
+ verificationScope: unknown,
413
+ receipt: Readonly<Record<string, unknown>>,
414
+ contract?: ProofContract,
415
+ fingerprint?: string,
416
+ ): readonly string[] {
417
+ const errors: string[] = [];
418
+ if (receipt.test_id !== testId) {
419
+ errors.push(`proof receipt test_id must equal '${testId}'`);
420
+ }
421
+ if (typeof verificationScope !== "string") {
422
+ errors.push("verification_scope is required for current receipt evidence");
423
+ } else if (receipt.scope !== verificationScope) {
424
+ errors.push(
425
+ `proof receipt scope must equal the current verification_scope '${verificationScope}'`,
426
+ );
427
+ }
428
+ if (contract !== undefined) {
429
+ if (typeof receipt.contract_hash === "string") {
430
+ const expectedHash = proofContractHash(contract);
431
+ if (receipt.contract_hash !== expectedHash) {
432
+ errors.push(
433
+ "proof receipt contract_hash does not match the current proof_contract",
434
+ );
435
+ }
436
+ }
437
+ if (
438
+ fingerprint !== undefined &&
439
+ typeof receipt.fingerprint === "string" &&
440
+ receipt.fingerprint !== fingerprint
441
+ ) {
442
+ errors.push(
443
+ "proof receipt fingerprint does not match the current effective execution fingerprint",
444
+ );
445
+ }
446
+ }
447
+ return errors;
448
+ }
449
+
450
+ /**
451
+ * Hard schema cap on stored receipts per test. Ingest appends past this cap by
452
+ * rotating: drop exactly the oldest receipts so the newest evidence stays
453
+ * bound to the test without ever exceeding the cap.
454
+ */
455
+ export const MAX_PROOF_RECEIPTS = 50;
456
+
457
+ function isCapRotation(
458
+ previous: readonly Readonly<Record<string, unknown>>[],
459
+ next: readonly Readonly<Record<string, unknown>>[],
460
+ ): boolean {
461
+ if (next.length !== MAX_PROOF_RECEIPTS) return false;
462
+ if (previous.length < MAX_PROOF_RECEIPTS) return false;
463
+ const preserved = MAX_PROOF_RECEIPTS - 1;
464
+ for (let index = 0; index < preserved; index++) {
465
+ if (
466
+ canonicalJson(previous[previous.length - preserved + index]) !==
467
+ canonicalJson(next[index])
468
+ ) {
469
+ return false;
470
+ }
471
+ }
472
+ return true;
473
+ }
474
+
475
+ export function appendOnlyProofReceiptHistoryErrors(
476
+ previous: readonly Readonly<Record<string, unknown>>[],
477
+ next: readonly Readonly<Record<string, unknown>>[] | undefined,
478
+ ): readonly string[] {
479
+ if (previous.length === 0) return [];
480
+ if (next === undefined) {
481
+ return [
482
+ "proof_receipts is append-only and cannot be removed from an existing test",
483
+ ];
484
+ }
485
+ if (isCapRotation(previous, next)) return [];
486
+ if (next.length < previous.length) {
487
+ return [
488
+ `proof_receipts is append-only: expected at least ${previous.length} historical receipt(s), received ${next.length}`,
489
+ ];
490
+ }
491
+ for (const [index, receipt] of previous.entries()) {
492
+ if (canonicalJson(next[index]) !== canonicalJson(receipt)) {
493
+ return [
494
+ `proof_receipts is append-only: historical receipt at index ${index} was changed, removed, or reordered`,
495
+ ];
496
+ }
497
+ }
498
+ return [];
499
+ }
@@ -16,12 +16,13 @@
16
16
  along with this program. If not, see <https://www.gnu.org/licenses/>.
17
17
  */
18
18
 
19
+ import {
20
+ PROOF_BINDINGS_SCHEMA,
21
+ PROOF_CONTRACT_SCHEMA,
22
+ } from "../proof-protocol.js";
23
+ import { PROOF_RECEIPT_SCHEMA } from "../proof-receipt.js";
19
24
  // Typed fact field enums per proposal
20
25
  import { SYMBOL_ROLES, type SymbolRole } from "../symbol-granularity.js";
21
- import {
22
- VERIFICATION_CONTRACT_SCHEMA,
23
- VERIFICATION_RECEIPT_SCHEMA,
24
- } from "../verification-receipt.js";
25
26
 
26
27
  type FactKind =
27
28
  | "subject"
@@ -359,6 +360,17 @@ const entitySchema: Record<string, unknown> = {
359
360
  severity: { type: "string" },
360
361
  links: { type: "array", items: { type: "string" } },
361
362
  text_ref: { type: "string" },
363
+ proof_exempt: {
364
+ type: "boolean",
365
+ description:
366
+ "Requirement-only. Marks a current requirement as intentionally outside E2E-proof scope; requires proof_exempt_reason.",
367
+ },
368
+ proof_exempt_reason: {
369
+ type: "string",
370
+ minLength: 1,
371
+ description:
372
+ "Requirement-only. Required when proof_exempt is true; surfaces as the applicability reason in coverage rows.",
373
+ },
362
374
  semantic_text: {
363
375
  type: "string",
364
376
  description:
@@ -457,10 +469,11 @@ const entitySchema: Record<string, unknown> = {
457
469
  type: "string",
458
470
  enum: ["internal", "consumer"] satisfies VerificationPerspective[],
459
471
  },
460
- verification_contract: VERIFICATION_CONTRACT_SCHEMA,
461
- verification_receipts: {
472
+ proof_contract: PROOF_CONTRACT_SCHEMA,
473
+ proof_bindings: PROOF_BINDINGS_SCHEMA,
474
+ proof_receipts: {
462
475
  type: "array",
463
- items: VERIFICATION_RECEIPT_SCHEMA,
476
+ items: PROOF_RECEIPT_SCHEMA,
464
477
  },
465
478
  type: {
466
479
  type: "string",
@@ -601,14 +614,15 @@ const entitySchema: Record<string, unknown> = {
601
614
  anyOf: [
602
615
  { required: ["verification_scope"] },
603
616
  { required: ["verification_perspective"] },
604
- { required: ["verification_contract"] },
605
- { required: ["verification_receipts"] },
617
+ { required: ["proof_contract"] },
618
+ { required: ["proof_bindings"] },
619
+ { required: ["proof_receipts"] },
606
620
  ],
607
621
  },
608
622
  },
609
623
  },
610
624
  {
611
- if: { required: ["verification_receipts"] },
625
+ if: { required: ["proof_receipts"] },
612
626
  // biome-ignore lint/suspicious/noThenProperty: JSON Schema conditional keyword.
613
627
  then: { required: ["verification_scope"] },
614
628
  },
@@ -625,6 +639,8 @@ const entitySchema: Record<string, unknown> = {
625
639
  { required: ["semantic_inventory_version"] },
626
640
  { required: ["semantic_source_field"] },
627
641
  { required: ["semantic_source_hash"] },
642
+ { required: ["proof_exempt"] },
643
+ { required: ["proof_exempt_reason"] },
628
644
  ],
629
645
  },
630
646
  },
@@ -39,7 +39,7 @@ echo '{}' | npx --no-install kibi status --input -
39
39
  matching `branch.json`; a `legacy_compat` attachment is read-only until an
40
40
  explicit old/new migration is approved.
41
41
  - Inspect bounded `staleReasons` (indexed source missing/newer or documentation
42
- source newer) and `verificationSnapshotChanges`. Kibi deliberately reports
42
+ source newer) and `proofSnapshotChanges`. Kibi deliberately reports
43
43
  editor/config paths such as editor dot-directories; do not silently ignore them.
44
44
  - Use `kb_query`, or `query --input`, with `sourceFile` and text references for source-linked discovery.
45
45
  - Re-run `kb_search`, or `search --input`, after sync gaps or stale context are detected.
@@ -2,7 +2,7 @@
2
2
  id: kibi-usage
3
3
  name: Kibi Usage
4
4
  description: Use Kibi's source-first, exact-Git, migration-aware, proof-aware operations safely across MCP or the trusted local CLI, including partial completion repair.
5
- version: 2.1.0
5
+ version: 2.1.3
6
6
  kibiCompatibility: ">=1.0.0"
7
7
  tags:
8
8
  - kibi
@@ -19,6 +19,7 @@ resources:
19
19
  - resources/relationship-directions.md
20
20
  - resources/fact-lanes.md
21
21
  - resources/workflows.md
22
+ - resources/proof.md
22
23
  - resources/ui-requirements.md
23
24
  - resources/logic-ir.md
24
25
  - resources/kb-improvement.md
@@ -67,13 +68,30 @@ mutability, and Prolog requirements of each operation.
67
68
  Kibi never Git-stages or commits those files. Do not read or edit `.kb`
68
69
  directly.
69
70
  5. Finish with targeted and final `kb_check`, then read status/coverage and
70
- state freshness, verification, proof, and limitations separately.
71
+ report the five independent closeout fields (not one inferred success flag).
71
72
 
72
73
  Run `kb_check` with specific rules during iteration and the unfiltered final
73
74
  check. Never fire `kb_upsert` calls in parallel; create or confirm endpoint
74
75
  entities before linking them. The canonical MCP names are `kb_search`,
75
76
  `kb_query`, `kb_upsert`, and `kb_check`.
76
77
 
78
+ For a task that explicitly supplies a malformed concrete mutation payload, locate and read that public request artifact before choosing an entity, preserving its exact entity ID, type, requested changes, and every intended relationship and endpoint. Do not substitute a seeded or convenient entity for the requested target. Start with kb_search, then exact-filter those targets with kb_query, and run kb_validate_upsert on that same payload; validation is not completion. Correct only diagnosed pre-commit errors and revalidate the corrected payload. Once authorized, apply the identical corrected and authorized payload with kb_upsert. If it returns committed_with_repairs, treat the mutation as committed, follow only the required repair actions, and neither retry it nor trigger unrelated semantic backfill for a schema-only repair. Exact-read every changed entity and relationship endpoint with kb_query, then finish with an unfiltered kb_check followed by a final kb_status.
79
+
80
+ ## Closeout fields
81
+
82
+ End every task with these five independent fields:
83
+
84
+ ```text
85
+ taskOutcome: complete | interim | blocked
86
+ kbState: clean_fresh | stale | dirty | legacy_compat | not_evaluated
87
+ verificationState: fresh | dirty | unavailable | not_evaluated
88
+ proofState: proven | mixed | unresolved | not_evaluated
89
+ limitationDisposition: none | accepted | unaccepted | not_applicable
90
+ ```
91
+
92
+ `taskOutcome` is whether the requested work finished. The other fields are
93
+ observed system state. A clean check can coexist with unresolved proof.
94
+
77
95
  ## Exact Git attachment
78
96
 
79
97
  The active ref is the exact KB identity. `KIBI_BRANCH` is used verbatim; Git's
@@ -114,22 +132,36 @@ safe normative claims; use `observation` or `meta` for bug/workaround notes and
114
132
  `flag` only for actual runtime/config gates. Requirements require scenarios,
115
133
  tests, symbol ownership, and fresh proof-bearing receipts before claiming proof.
116
134
  For an existing product KB that needs semantic backfill, read
117
- `resources/kb-improvement.md`.
135
+ `resources/kb-improvement.md`, and `resources/proof.md` for the proof workflow.
136
+ When a proof ratchet fails, follow Debugging proof regressions in
137
+ `resources/proof.md`: use `kibi proof explain` and compare current proof state
138
+ to committed `proof/baseline.json` with `kibi proof impact`.
118
139
 
119
140
  ## Predicate Ontology Decision Tree
120
141
 
121
- Call `kb_semantic_advisor`, `kb_model_requirement`, or `kb_suggest_predicates`
122
- before encoding a normative clause. Use `fact_kind: predicate` with
123
- `requires_predicate` when a suitable schema exists; use `fact_kind: observation`
124
- for an ontology gap. Keep the `REQ -> TEST` chain and use `verified_by` for
125
- proof-bearing links. Relationship direction is fixed, and every `from` in a
126
- relationship batch must equal the upserted entity ID.
142
+ Call `kb_semantic_advisor` on the complete prose before encoding a clause.
143
+ Set requirement `logic_claims` to exactly the assertive `claim_key` values.
144
+ For each relational clause, call `kb_suggest_predicates` with that clause and
145
+ `existingLogicClaims`. If lexical rank is a false positive, retry with the
146
+ reviewed `schemaId`. If `binding_status` is `incomplete`, supply
147
+ `argumentBindings` and retry. Persist `fact_kind: predicate` with the same
148
+ `claim_key` / `claim_text`, then link `REQ -> fact` with `requires_predicate`.
149
+ Use `kb_model_requirement` for strict scalar clauses. Use
150
+ `fact_kind: observation` only for a true ontology gap. The manifest is not
151
+ grounding: run `logic-coverage` so each key binds to one ground fact.
152
+ Relationship direction is fixed, and every `from` in a relationship batch
153
+ must equal the upserted entity ID.
154
+
155
+ For conditional relational claims, after the initial `kb_suggest_predicates` and before any `kb_upsert`—including one needed for a missing schema—call read-only `kb_model_requirement` to preview suitable scalar or typed-rule modeling. Treat the preview as advisory: do not apply an irrelevant result or create unrequested facts, and retain an approved ground-predicate plan when it captures the whole claim. Preserve supplied arity, ordered argument roles, polarity, bound values, and one claim key per actual assertion; never split arguments across clauses or schemas or alter values to force uniqueness.
127
156
 
128
157
  ## Symbol-First Traceability
129
158
 
130
- Represent implementation ownership with a `symbol` entity and an `implements`
131
- relationship from the symbol to the requirement. Do not rely on legacy
132
- `// implements REQ-xxx` comments as the traceability record.
159
+ Represent implementation ownership with a `symbol` entity that has
160
+ `sourceFile`, `implements` to the requirement, and `covered_by` to the test.
161
+ Prolog `symbol-coverage` also requires the test to `validates` the requirement
162
+ (or the requirement `verified_by` the test). `covered_by` alone is not
163
+ enough. Do not rely on legacy `// implements REQ-xxx` comments as the
164
+ traceability record.
133
165
 
134
166
  ## Complete Logical Coverage
135
167
 
@@ -26,7 +26,7 @@ per operation. Effects are authoritative for mutability and adapter annotations.
26
26
  | `kb_sparql_remote` | `sparql-remote` | --input JSON | read | no | network-read | peer; capability-selected | kibi.kb_sparql_remote.v1 | no | safe | yes | yes |
27
27
  | `kb_compile_intent` | `compile-intent` | --input JSON | read | yes | kb-read, workspace-read | peer; capability-selected | kibi.kb_compile_intent.v1 | no | safe | no | yes |
28
28
  | `kb_apply_plan` | `apply-plan` | --input JSON | write | yes | kb-read, kb-write, workspace-read, workspace-write | peer; capability-selected | kibi.kb_apply_plan.v1 | yes | unsafe | no | yes |
29
- | `kb_ingest_verification` | `ingest-verification` | --input JSON | write | yes | kb-read, kb-write, workspace-read | peer; capability-selected | kibi.kb_ingest_verification.v1 | yes | unsafe | no | yes |
29
+ | `kb_ingest_proof` | `ingest-proof` | --input JSON | write | yes | kb-read, kb-write, workspace-read | peer; capability-selected | kibi.kb_ingest_proof.v1 | yes | unsafe | no | yes |
30
30
 
31
31
  ## JSON execution recipe
32
32