kibi-cli 1.0.1 → 2.0.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 (450) 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 +103 -0
  17. package/dist/cli-register-reporting.d.ts.map +1 -1
  18. package/dist/cli-register-reporting.js +1 -0
  19. package/dist/cli.d.ts +4 -0
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +17 -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.d.ts +14 -0
  26. package/dist/commands/check.d.ts.map +1 -1
  27. package/dist/commands/check.js +190 -44
  28. package/dist/commands/coverage.d.ts +1 -0
  29. package/dist/commands/coverage.d.ts.map +1 -1
  30. package/dist/commands/coverage.js +6 -0
  31. package/dist/commands/doctor.d.ts +22 -0
  32. package/dist/commands/doctor.d.ts.map +1 -1
  33. package/dist/commands/doctor.js +48 -22
  34. package/dist/commands/engine.d.ts +12 -0
  35. package/dist/commands/engine.d.ts.map +1 -1
  36. package/dist/commands/engine.js +40 -0
  37. package/dist/commands/github-init.d.ts +1 -0
  38. package/dist/commands/github-init.d.ts.map +1 -1
  39. package/dist/commands/github-init.js +9 -5
  40. package/dist/commands/init-helpers.d.ts.map +1 -1
  41. package/dist/commands/init-helpers.js +38 -5
  42. package/dist/commands/migrate.d.ts +4 -0
  43. package/dist/commands/migrate.d.ts.map +1 -1
  44. package/dist/commands/migrate.js +7 -7
  45. package/dist/commands/proof-migrate-legacy.d.ts +7 -0
  46. package/dist/commands/proof-migrate-legacy.d.ts.map +1 -0
  47. package/dist/commands/proof-migrate-legacy.js +45 -0
  48. package/dist/commands/proof-prune.d.ts +8 -0
  49. package/dist/commands/proof-prune.d.ts.map +1 -0
  50. package/dist/commands/proof-prune.js +53 -0
  51. package/dist/commands/prove.d.ts +37 -0
  52. package/dist/commands/prove.d.ts.map +1 -0
  53. package/dist/commands/prove.js +470 -0
  54. package/dist/commands/report.js +1 -1
  55. package/dist/commands/sync/discovery.d.ts +3 -0
  56. package/dist/commands/sync/discovery.d.ts.map +1 -1
  57. package/dist/commands/sync/discovery.js +36 -28
  58. package/dist/commands/sync/manifest.d.ts +1 -1
  59. package/dist/commands/sync/manifest.d.ts.map +1 -1
  60. package/dist/commands/sync/manifest.js +53 -21
  61. package/dist/commands/sync/persistence.d.ts +4 -1
  62. package/dist/commands/sync/persistence.d.ts.map +1 -1
  63. package/dist/commands/sync/persistence.js +25 -14
  64. package/dist/commands/sync/staging.d.ts +1 -0
  65. package/dist/commands/sync/staging.d.ts.map +1 -1
  66. package/dist/commands/sync/staging.js +5 -2
  67. package/dist/commands/sync/untracked-targets.d.ts +24 -0
  68. package/dist/commands/sync/untracked-targets.d.ts.map +1 -0
  69. package/dist/commands/sync/untracked-targets.js +108 -0
  70. package/dist/commands/sync.d.ts +11 -1
  71. package/dist/commands/sync.d.ts.map +1 -1
  72. package/dist/commands/sync.js +74 -30
  73. package/dist/engine-daemon.d.ts +3 -1
  74. package/dist/engine-daemon.d.ts.map +1 -1
  75. package/dist/engine-daemon.js +49 -20
  76. package/dist/engine.d.ts +14 -76
  77. package/dist/engine.d.ts.map +1 -1
  78. package/dist/engine.js +197 -30
  79. package/dist/extractors/manifest.d.ts +5 -0
  80. package/dist/extractors/manifest.d.ts.map +1 -1
  81. package/dist/extractors/manifest.js +46 -1
  82. package/dist/extractors/markdown.d.ts +5 -3
  83. package/dist/extractors/markdown.d.ts.map +1 -1
  84. package/dist/extractors/markdown.js +41 -24
  85. package/dist/extractors/playwright-cases.js +1 -1
  86. package/dist/extractors/relationships.d.ts +6 -0
  87. package/dist/extractors/relationships.d.ts.map +1 -1
  88. package/dist/extractors/relationships.js +1 -1
  89. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  90. package/dist/extractors/symbols-ts.d.ts +1 -0
  91. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  92. package/dist/extractors/symbols-ts.js +142 -67
  93. package/dist/intent-search.d.ts +1 -0
  94. package/dist/intent-search.d.ts.map +1 -1
  95. package/dist/intent-search.js +7 -3
  96. package/dist/logic/ir.d.ts +1 -0
  97. package/dist/logic/ir.d.ts.map +1 -1
  98. package/dist/logic/ir.js +1 -1
  99. package/dist/operations/bootstrap/activation.d.ts +2 -1
  100. package/dist/operations/bootstrap/activation.d.ts.map +1 -1
  101. package/dist/operations/bootstrap/activation.js +11 -3
  102. package/dist/operations/bootstrap/generate.d.ts +2 -1
  103. package/dist/operations/bootstrap/generate.d.ts.map +1 -1
  104. package/dist/operations/bootstrap/generate.js +6 -3
  105. package/dist/operations/bootstrap/guidance.d.ts +1 -0
  106. package/dist/operations/bootstrap/guidance.d.ts.map +1 -1
  107. package/dist/operations/bootstrap/guidance.js +1 -1
  108. package/dist/operations/modeling/model-requirement.d.ts +5 -0
  109. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  110. package/dist/operations/modeling/model-requirement.js +53 -46
  111. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -1
  112. package/dist/operations/modeling/predicate-applicability.js +103 -4
  113. package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -1
  114. package/dist/operations/modeling/predicate-catalog-2.js +18 -2
  115. package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -1
  116. package/dist/operations/modeling/predicate-catalog-3.js +17 -1
  117. package/dist/operations/modeling/predicate-catalog-5.d.ts +10 -0
  118. package/dist/operations/modeling/predicate-catalog-5.d.ts.map +1 -0
  119. package/dist/operations/modeling/predicate-catalog-5.js +291 -0
  120. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
  121. package/dist/operations/modeling/predicate-catalog.js +4 -0
  122. package/dist/operations/modeling/predicate-loader.d.ts +1 -0
  123. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  124. package/dist/operations/modeling/predicate-loader.js +4 -3
  125. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  126. package/dist/operations/modeling/predicate-ranker.js +4 -1
  127. package/dist/operations/modeling/predicate-types.d.ts +1 -1
  128. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  129. package/dist/operations/modeling/predicate-usage-hints-4.d.ts +3 -0
  130. package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -0
  131. package/dist/operations/modeling/predicate-usage-hints-4.js +84 -0
  132. package/dist/operations/modeling/suggest-predicates.d.ts +3 -1
  133. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  134. package/dist/operations/modeling/suggest-predicates.js +52 -19
  135. package/dist/operations/mutation/contradictions.d.ts +2 -1
  136. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  137. package/dist/operations/mutation/contradictions.js +26 -5
  138. package/dist/operations/mutation/delete.d.ts +3 -0
  139. package/dist/operations/mutation/delete.d.ts.map +1 -1
  140. package/dist/operations/mutation/delete.js +100 -32
  141. package/dist/operations/mutation/relationships.d.ts +1 -0
  142. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  143. package/dist/operations/mutation/relationships.js +6 -4
  144. package/dist/operations/mutation/saga.d.ts +51 -0
  145. package/dist/operations/mutation/saga.d.ts.map +1 -0
  146. package/dist/operations/mutation/saga.js +67 -0
  147. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  148. package/dist/operations/mutation/serialization.js +3 -2
  149. package/dist/operations/mutation/source-authoring.d.ts +5 -1
  150. package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
  151. package/dist/operations/mutation/source-authoring.js +79 -46
  152. package/dist/operations/mutation/strict-fact.d.ts +1 -0
  153. package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
  154. package/dist/operations/mutation/strict-fact.js +8 -5
  155. package/dist/operations/mutation/symbol-compiler-lock.d.ts +5 -2
  156. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -1
  157. package/dist/operations/mutation/symbol-compiler-lock.js +65 -2
  158. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  159. package/dist/operations/mutation/symbol-granularity.js +2 -2
  160. package/dist/operations/mutation/symbol-refresh.d.ts +1 -0
  161. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  162. package/dist/operations/mutation/symbol-refresh.js +10 -8
  163. package/dist/operations/mutation/upsert.d.ts +18 -2
  164. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  165. package/dist/operations/mutation/upsert.js +86 -54
  166. package/dist/operations/mutation/validate-upsert.js +2 -2
  167. package/dist/operations/mutation/validation.d.ts.map +1 -1
  168. package/dist/operations/mutation/validation.js +46 -4
  169. package/dist/operations/mutation/warnings.d.ts +1 -0
  170. package/dist/operations/mutation/warnings.d.ts.map +1 -1
  171. package/dist/operations/mutation/warnings.js +7 -5
  172. package/dist/operations/mutation/workspace-mutation-lock.d.ts +60 -0
  173. package/dist/operations/mutation/workspace-mutation-lock.d.ts.map +1 -0
  174. package/dist/operations/mutation/workspace-mutation-lock.js +362 -0
  175. package/dist/operations/planning/apply-plan.d.ts +8 -106
  176. package/dist/operations/planning/apply-plan.d.ts.map +1 -1
  177. package/dist/operations/planning/apply-plan.js +113 -36
  178. package/dist/operations/planning/compile-intent.d.ts +2 -0
  179. package/dist/operations/planning/compile-intent.d.ts.map +1 -1
  180. package/dist/operations/planning/compile-intent.js +70 -14
  181. package/dist/operations/proof/ingest-proof.d.ts +34 -0
  182. package/dist/operations/proof/ingest-proof.d.ts.map +1 -0
  183. package/dist/operations/proof/ingest-proof.js +307 -0
  184. package/dist/operations/proof/migrate-legacy-receipts.d.ts +30 -0
  185. package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -0
  186. package/dist/operations/proof/migrate-legacy-receipts.js +88 -0
  187. package/dist/operations/proof/prune-receipts.d.ts +35 -0
  188. package/dist/operations/proof/prune-receipts.d.ts.map +1 -0
  189. package/dist/operations/proof/prune-receipts.js +91 -0
  190. package/dist/operations/proof/receipt-document.d.ts +29 -0
  191. package/dist/operations/proof/receipt-document.d.ts.map +1 -0
  192. package/dist/operations/proof/receipt-document.js +117 -0
  193. package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -0
  194. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  195. package/dist/operations/semantic-advisor/analyze-prose.js +46 -26
  196. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  197. package/dist/operations/semantic-advisor/clauses.js +20 -7
  198. package/dist/operations/semantic-advisor/strict-count-rules.d.ts +2 -0
  199. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
  200. package/dist/operations/semantic-advisor/strict-count-rules.js +40 -25
  201. package/dist/prolog/codec.d.ts +13 -1
  202. package/dist/prolog/codec.d.ts.map +1 -1
  203. package/dist/prolog/codec.js +269 -154
  204. package/dist/prolog/error-terms.d.ts +47 -0
  205. package/dist/prolog/error-terms.d.ts.map +1 -0
  206. package/dist/prolog/error-terms.js +334 -0
  207. package/dist/prolog/janitor.d.ts +50 -0
  208. package/dist/prolog/janitor.d.ts.map +1 -0
  209. package/dist/prolog/janitor.js +154 -0
  210. package/dist/prolog/store-lock.d.ts +45 -0
  211. package/dist/prolog/store-lock.d.ts.map +1 -0
  212. package/dist/prolog/store-lock.js +195 -0
  213. package/dist/prolog.d.ts +7 -0
  214. package/dist/prolog.d.ts.map +1 -1
  215. package/dist/prolog.js +55 -17
  216. package/dist/proof/evaluate.d.ts +27 -0
  217. package/dist/proof/evaluate.d.ts.map +1 -0
  218. package/dist/proof/evaluate.js +151 -0
  219. package/dist/proof/inspect.d.ts +12 -0
  220. package/dist/proof/inspect.d.ts.map +1 -0
  221. package/dist/proof/inspect.js +236 -0
  222. package/dist/proof/integrations.d.ts +35 -0
  223. package/dist/proof/integrations.d.ts.map +1 -0
  224. package/dist/proof/integrations.js +123 -0
  225. package/dist/proof/producers/junit-adapter.d.ts +26 -0
  226. package/dist/proof/producers/junit-adapter.d.ts.map +1 -0
  227. package/dist/proof/producers/junit-adapter.js +186 -0
  228. package/dist/{public → proof/producers}/playwright-case-id.d.ts +1 -1
  229. package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
  230. package/dist/{public → proof/producers}/playwright-case-id.js +3 -3
  231. package/dist/proof/producers/playwright-reporter.d.ts +27 -0
  232. package/dist/proof/producers/playwright-reporter.d.ts.map +1 -0
  233. package/dist/proof/producers/playwright-reporter.js +138 -0
  234. package/dist/proof/producers/tap-adapter.d.ts +10 -0
  235. package/dist/proof/producers/tap-adapter.d.ts.map +1 -0
  236. package/dist/proof/producers/tap-adapter.js +200 -0
  237. package/dist/proof/receipt-outcome.d.ts +2 -0
  238. package/dist/proof/receipt-outcome.d.ts.map +1 -0
  239. package/dist/proof/receipt-outcome.js +1 -0
  240. package/dist/public/diagnostic-usage.js +6 -6
  241. package/dist/public/distribution-parity.d.ts +7 -1
  242. package/dist/public/distribution-parity.d.ts.map +1 -1
  243. package/dist/public/distribution-parity.js +15 -10
  244. package/dist/public/impact/coverage-depth-quality.d.ts +1 -0
  245. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  246. package/dist/public/impact/coverage-depth-quality.js +1 -1
  247. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  248. package/dist/public/impact/diagnostics.js +2 -2
  249. package/dist/public/impact/diff-meaning.d.ts +1 -0
  250. package/dist/public/impact/diff-meaning.d.ts.map +1 -1
  251. package/dist/public/impact/diff-meaning.js +5 -2
  252. package/dist/public/impact/full-kb-quality.d.ts +5 -2
  253. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  254. package/dist/public/impact/full-kb-quality.js +329 -64
  255. package/dist/public/operations/catalog.d.ts +447 -196
  256. package/dist/public/operations/catalog.d.ts.map +1 -1
  257. package/dist/public/operations/catalog.js +6 -4
  258. package/dist/public/operations/check-executor.d.ts.map +1 -1
  259. package/dist/public/operations/check-executor.js +3 -7
  260. package/dist/public/operations/contracts.d.ts +7 -0
  261. package/dist/public/operations/contracts.d.ts.map +1 -1
  262. package/dist/public/operations/contracts.js +31 -22
  263. package/dist/public/operations/discovery-entities.d.ts +3 -0
  264. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  265. package/dist/public/operations/discovery-entities.js +4 -0
  266. package/dist/public/operations/discovery-executors.d.ts +9 -9
  267. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  268. package/dist/public/operations/discovery-executors.js +17 -14
  269. package/dist/public/operations/index.d.ts +1 -1
  270. package/dist/public/operations/index.d.ts.map +1 -1
  271. package/dist/public/operations/index.js +1 -1
  272. package/dist/public/operations/migration-plan.d.ts +4 -3
  273. package/dist/public/operations/migration-plan.d.ts.map +1 -1
  274. package/dist/public/operations/migration-plan.js +23 -21
  275. package/dist/public/operations/node-ports.js +6 -6
  276. package/dist/public/operations/repair-plan.d.ts +3 -3
  277. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  278. package/dist/public/operations/repair-plan.js +49 -19
  279. package/dist/public/operations/result-envelope.d.ts +1 -0
  280. package/dist/public/operations/result-envelope.d.ts.map +1 -1
  281. package/dist/public/operations/result-envelope.js +12 -10
  282. package/dist/public/operations/runtime-types.d.ts +5 -0
  283. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  284. package/dist/public/operations/specs/check-rules.generated.d.ts +5 -0
  285. package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -0
  286. package/dist/public/operations/specs/check-rules.generated.js +34 -0
  287. package/dist/public/operations/specs/check.d.ts +7 -2
  288. package/dist/public/operations/specs/check.d.ts.map +1 -1
  289. package/dist/public/operations/specs/check.js +8 -20
  290. package/dist/public/operations/specs/mutation-schemas.d.ts +257 -163
  291. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  292. package/dist/public/operations/specs/mutation-schemas.js +15 -7
  293. package/dist/public/operations/specs/planning.d.ts +9 -0
  294. package/dist/public/operations/specs/planning.d.ts.map +1 -1
  295. package/dist/public/operations/specs/planning.js +6 -0
  296. package/dist/public/operations/specs/proof.d.ts +212 -0
  297. package/dist/public/operations/specs/proof.d.ts.map +1 -0
  298. package/dist/public/operations/specs/proof.js +30 -0
  299. package/dist/public/operations/specs/reporting.d.ts +19 -0
  300. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  301. package/dist/public/operations/specs/reporting.js +112 -12
  302. package/dist/public/operations/specs/upsert.d.ts +257 -163
  303. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  304. package/dist/public/operations/symbol-repair-plan.d.ts +11 -0
  305. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -1
  306. package/dist/public/operations/symbol-repair-plan.js +118 -3
  307. package/dist/public/operations/types.d.ts +1 -1
  308. package/dist/public/operations/types.d.ts.map +1 -1
  309. package/dist/public/proof-fingerprint.d.ts +54 -0
  310. package/dist/public/proof-fingerprint.d.ts.map +1 -0
  311. package/dist/public/proof-fingerprint.js +141 -0
  312. package/dist/public/proof-protocol.d.ts +354 -0
  313. package/dist/public/proof-protocol.d.ts.map +1 -0
  314. package/dist/public/proof-protocol.js +454 -0
  315. package/dist/public/proof-receipt.d.ts +279 -0
  316. package/dist/public/proof-receipt.d.ts.map +1 -0
  317. package/dist/public/proof-receipt.js +377 -0
  318. package/dist/public/schemas/entity.d.ts.map +1 -1
  319. package/dist/public/schemas/entity.js +21 -7
  320. package/dist/public/skills/kibi-freshness/SKILL.md +1 -1
  321. package/dist/public/skills/kibi-usage/SKILL.md +41 -12
  322. package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -1
  323. package/dist/public/skills/kibi-usage/resources/proof.md +105 -0
  324. package/dist/public/skills/kibi-usage/resources/workflows.md +6 -6
  325. package/dist/public/symbol-granularity.d.ts +3 -14
  326. package/dist/public/symbol-granularity.d.ts.map +1 -1
  327. package/dist/public/symbol-granularity.generated.d.ts +16 -0
  328. package/dist/public/symbol-granularity.generated.d.ts.map +1 -0
  329. package/dist/public/symbol-granularity.generated.js +20 -0
  330. package/dist/public/symbol-granularity.js +6 -47
  331. package/dist/public/telemetry-acceptance.d.ts +3 -77
  332. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  333. package/dist/public/telemetry-acceptance.js +4 -2
  334. package/dist/public/telemetry-remediation.js +1 -1
  335. package/dist/report/html-report.css +282 -0
  336. package/dist/report/html-report.d.ts +4 -2
  337. package/dist/report/html-report.d.ts.map +1 -1
  338. package/dist/report/html-report.js +37 -300
  339. package/dist/runtime/cli-runtime.d.ts +2 -0
  340. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  341. package/dist/runtime/cli-runtime.js +14 -7
  342. package/dist/schemas/entity.schema.json +355 -215
  343. package/dist/search-ranking.d.ts +1 -0
  344. package/dist/search-ranking.d.ts.map +1 -1
  345. package/dist/search-ranking.js +3 -0
  346. package/dist/traceability/evidence-model.d.ts +28 -0
  347. package/dist/traceability/evidence-model.d.ts.map +1 -1
  348. package/dist/traceability/git-staged.d.ts +20 -0
  349. package/dist/traceability/git-staged.d.ts.map +1 -1
  350. package/dist/traceability/git-staged.js +145 -1
  351. package/dist/traceability/staged-diagnostics.d.ts +7 -0
  352. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  353. package/dist/traceability/staged-diagnostics.js +78 -7
  354. package/dist/traceability/staged-file-coverage.d.ts +33 -0
  355. package/dist/traceability/staged-file-coverage.d.ts.map +1 -0
  356. package/dist/traceability/staged-file-coverage.js +284 -0
  357. package/dist/traceability/staged-impact-contract.js +4 -4
  358. package/dist/traceability/staged-symbols-manifest.d.ts +13 -0
  359. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  360. package/dist/traceability/staged-symbols-manifest.js +138 -27
  361. package/dist/traceability/symbol-extract.d.ts +5 -0
  362. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  363. package/dist/traceability/symbol-extract.js +1 -1
  364. package/dist/traceability/temp-kb.d.ts +2 -0
  365. package/dist/traceability/temp-kb.d.ts.map +1 -1
  366. package/dist/traceability/temp-kb.js +13 -4
  367. package/dist/types/entities.d.ts +5 -3
  368. package/dist/types/entities.d.ts.map +1 -1
  369. package/dist/utils/branch-resolver.d.ts +1 -0
  370. package/dist/utils/branch-resolver.d.ts.map +1 -1
  371. package/dist/utils/branch-resolver.js +7 -4
  372. package/dist/utils/branch-store.d.ts +6 -0
  373. package/dist/utils/branch-store.d.ts.map +1 -1
  374. package/dist/utils/branch-store.js +27 -0
  375. package/dist/utils/kb-paths.d.ts +1 -1
  376. package/dist/utils/kb-paths.d.ts.map +1 -1
  377. package/dist/utils/kb-paths.js +1 -1
  378. package/dist/utils/rule-registry.d.ts +1 -11
  379. package/dist/utils/rule-registry.d.ts.map +1 -1
  380. package/dist/utils/rule-registry.generated.d.ts +97 -0
  381. package/dist/utils/rule-registry.generated.d.ts.map +1 -0
  382. package/dist/utils/rule-registry.generated.js +125 -0
  383. package/dist/utils/rule-registry.js +12 -113
  384. package/dist/utils/strict-modeling.d.ts +1 -0
  385. package/dist/utils/strict-modeling.d.ts.map +1 -1
  386. package/dist/utils/strict-modeling.js +1 -1
  387. package/package.json +8 -11
  388. package/src/public/diagnostic-usage.ts +6 -6
  389. package/src/public/distribution-parity.ts +17 -10
  390. package/src/public/impact/coverage-depth-quality.ts +1 -1
  391. package/src/public/impact/diagnostics.ts +2 -1
  392. package/src/public/impact/diff-meaning.ts +11 -4
  393. package/src/public/impact/full-kb-quality.ts +463 -72
  394. package/src/public/operations/catalog.ts +10 -4
  395. package/src/public/operations/check-executor.ts +3 -7
  396. package/src/public/operations/contracts.ts +38 -22
  397. package/src/public/operations/discovery-entities.ts +7 -0
  398. package/src/public/operations/discovery-executors.ts +26 -23
  399. package/src/public/operations/index.ts +1 -1
  400. package/src/public/operations/migration-plan.ts +32 -25
  401. package/src/public/operations/node-ports.ts +6 -6
  402. package/src/public/operations/repair-plan.ts +60 -23
  403. package/src/public/operations/result-envelope.ts +15 -10
  404. package/src/public/operations/runtime-types.ts +5 -0
  405. package/src/public/operations/specs/check-rules.generated.ts +37 -0
  406. package/src/public/operations/specs/check.ts +12 -21
  407. package/src/public/operations/specs/mutation-schemas.ts +22 -9
  408. package/src/public/operations/specs/planning.ts +7 -0
  409. package/src/public/operations/specs/proof.ts +43 -0
  410. package/src/public/operations/specs/reporting.ts +140 -13
  411. package/src/public/operations/symbol-repair-plan.ts +163 -3
  412. package/src/public/operations/types.ts +1 -1
  413. package/src/public/proof-fingerprint.ts +216 -0
  414. package/src/public/proof-protocol-types.d.ts +96 -0
  415. package/src/public/proof-protocol.ts +589 -0
  416. package/src/public/proof-receipt.ts +499 -0
  417. package/src/public/schemas/entity.ts +26 -10
  418. package/src/public/skills/kibi-freshness/SKILL.md +1 -1
  419. package/src/public/skills/kibi-usage/SKILL.md +41 -12
  420. package/src/public/skills/kibi-usage/resources/operation-access.md +1 -1
  421. package/src/public/skills/kibi-usage/resources/proof.md +105 -0
  422. package/src/public/skills/kibi-usage/resources/workflows.md +6 -6
  423. package/src/public/symbol-granularity.generated.ts +41 -0
  424. package/src/public/symbol-granularity.ts +35 -60
  425. package/src/public/telemetry-acceptance-types.d.ts +98 -0
  426. package/src/public/telemetry-acceptance.ts +22 -100
  427. package/src/public/telemetry-remediation.ts +1 -1
  428. package/src/schemas/entity.schema.json +355 -215
  429. package/dist/cli-register-verification.d.ts +0 -3
  430. package/dist/cli-register-verification.d.ts.map +0 -1
  431. package/dist/cli-register-verification.js +0 -16
  432. package/dist/commands/verify.d.ts +0 -10
  433. package/dist/commands/verify.d.ts.map +0 -1
  434. package/dist/commands/verify.js +0 -126
  435. package/dist/operations/verification/ingest-verification.d.ts +0 -29
  436. package/dist/operations/verification/ingest-verification.d.ts.map +0 -1
  437. package/dist/operations/verification/ingest-verification.js +0 -192
  438. package/dist/public/operations/specs/verification.d.ts +0 -78
  439. package/dist/public/operations/specs/verification.d.ts.map +0 -1
  440. package/dist/public/operations/specs/verification.js +0 -62
  441. package/dist/public/playwright-case-id.d.ts.map +0 -1
  442. package/dist/public/verification-receipt.d.ts +0 -242
  443. package/dist/public/verification-receipt.d.ts.map +0 -1
  444. package/dist/public/verification-receipt.js +0 -296
  445. package/dist/verification/playwright-reporter.d.ts +0 -21
  446. package/dist/verification/playwright-reporter.d.ts.map +0 -1
  447. package/dist/verification/playwright-reporter.js +0 -114
  448. package/src/public/operations/specs/verification.ts +0 -78
  449. package/src/public/playwright-case-id.ts +0 -35
  450. package/src/public/verification-receipt.ts +0 -412
@@ -1,8 +1,27 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
1
4
  import { KIBI_BRAND, renderKibiFaviconDataUri, renderKibiLogo, renderKibiWordmark, } from "./brand.js";
2
5
  import { formatAbsoluteUtc, parseTimestamp } from "./relative-time.js";
3
6
  import { REPORT_FILTERS, reportFilterCounts, } from "./report-view.js";
4
7
  import { commitWebUrl, formatSourceCoordinate, shortCommitSha, sourceWebUrl, } from "./repository.js";
5
8
  // implements REQ-kibi-html-health-report
9
+ function reportStyles() {
10
+ const raw = readFileSync(join(fileURLToPath(new URL(".", import.meta.url)), "html-report.css"), "utf8");
11
+ return raw
12
+ .replaceAll("__KIBI_CARBON__", KIBI_BRAND.carbon)
13
+ .replaceAll("__KIBI_DEEP_CARBON__", KIBI_BRAND.deepCarbon)
14
+ .replaceAll("__KIBI_PANEL__", KIBI_BRAND.panel)
15
+ .replaceAll("__KIBI_ICE__", KIBI_BRAND.ice)
16
+ .replaceAll("__KIBI_SIGNAL__", KIBI_BRAND.signal)
17
+ .replaceAll("__KIBI_SNOW__", KIBI_BRAND.snow)
18
+ .replaceAll("__KIBI_MIST__", KIBI_BRAND.mist)
19
+ .replaceAll("__KIBI_RAIL__", KIBI_BRAND.rail)
20
+ .replaceAll("__KIBI_SUCCESS__", KIBI_BRAND.success)
21
+ .replaceAll("__KIBI_WARNING__", KIBI_BRAND.warning)
22
+ .replaceAll("__KIBI_DANGER__", KIBI_BRAND.danger);
23
+ }
24
+ // implements REQ-kibi-html-health-report
6
25
  export const REPORT_CSP = "default-src 'none'; img-src data:; style-src 'unsafe-inline'; script-src 'unsafe-inline'";
7
26
  // implements REQ-kibi-html-health-report
8
27
  export const KIBI_GETTING_STARTED_URL = "https://github.com/Looted/kibi/blob/develop/docs/install.md";
@@ -160,21 +179,22 @@ function proofGates(rows) {
160
179
  return gate;
161
180
  });
162
181
  }
163
- function earliestUnmetGate(row) {
164
- if (row.proofStatus === "proven")
165
- return "proven";
166
- for (const gate of [
167
- "semantic",
168
- "scenario",
169
- "implementation",
170
- "e2e",
171
- "evidence",
172
- ]) {
173
- if (!passesProofGate(row, gate))
182
+ // implements REQ-kibi-html-health-report
183
+ // covered_by TEST-kibi-html-health-report
184
+ export function firstFailingProofGate(gates, passes) {
185
+ for (const gate of gates) {
186
+ if (!passes(gate))
174
187
  return gate;
175
188
  }
176
189
  return "proven";
177
190
  }
191
+ // implements REQ-kibi-html-health-report
192
+ // covered_by TEST-kibi-html-health-report
193
+ export function earliestUnmetGate(row) {
194
+ if (row.proofStatus === "proven")
195
+ return "proven";
196
+ return firstFailingProofGate(["semantic", "scenario", "implementation", "e2e", "evidence"], (gate) => passesProofGate(row, gate));
197
+ }
178
198
  function evidenceStage(passingE2e, testSources, repository) {
179
199
  const evidence = records(passingE2e.receiptEvidence);
180
200
  const passed = evidence.find((item) => item.state === "passed");
@@ -368,7 +388,7 @@ function rowSeverity(row) {
368
388
  const gaps = strings(row.proofGaps);
369
389
  if (gaps.includes("blocking_contradiction"))
370
390
  return 0;
371
- if (gaps.includes("stale_verification_receipt"))
391
+ if (gaps.includes("stale_proof_receipt"))
372
392
  return 1;
373
393
  if (row.proofStatus !== "proven")
374
394
  return 2;
@@ -381,7 +401,7 @@ function rowStates(row) {
381
401
  states.add("proven");
382
402
  else
383
403
  states.add("attention");
384
- if (gaps.includes("stale_verification_receipt"))
404
+ if (gaps.includes("stale_proof_receipt"))
385
405
  states.add("stale");
386
406
  if (gaps.includes("blocking_contradiction"))
387
407
  states.add("contradiction");
@@ -451,7 +471,7 @@ function reportNotice(input) {
451
471
  const notices = [];
452
472
  if (meta.dirty === true)
453
473
  notices.push("The Kibi knowledge snapshot is stale.");
454
- if (meta.verificationSnapshotDirty === true) {
474
+ if (meta.proofSnapshotDirty === true) {
455
475
  notices.push("Proof was evaluated against a dirty workspace.");
456
476
  }
457
477
  if (notices.length === 0)
@@ -511,12 +531,12 @@ export function renderHtmlReport(input) {
511
531
  ? 0
512
532
  : Math.round((proven / currentRequirements) * 100);
513
533
  const missingScenarios = currentRows.filter((row) => strings(row.proofGaps).includes("missing_scenario")).length;
514
- const staleEvidence = currentRows.filter((row) => strings(row.proofGaps).includes("stale_verification_receipt")).length;
534
+ const staleEvidence = currentRows.filter((row) => strings(row.proofGaps).includes("stale_proof_receipt")).length;
515
535
  const withoutImplementation = currentRows.filter((row) => strings(row.proofGaps).includes("missing_production_symbol")).length;
516
536
  const contradictions = contradictionRows(currentRows);
517
537
  const unmappedProductionSymbols = Math.max(0, count(symbolSummary.uncovered) - count(symbolSummary.mixedRole));
518
538
  const generatedAt = input.generatedAt.toISOString();
519
- const snapshot = text(input.requirements.meta?.verificationSnapshot);
539
+ const snapshot = text(input.requirements.meta?.proofSnapshot);
520
540
  const branch = text(input.branch, "unknown");
521
541
  const repository = {
522
542
  ...input.repository,
@@ -546,290 +566,7 @@ export function renderHtmlReport(input) {
546
566
  <meta http-equiv="Content-Security-Policy" content="${REPORT_CSP}">
547
567
  <link rel="icon" type="image/svg+xml" href="${escapeHtml(faviconHref)}">
548
568
  <title>${escapeHtml(identity.title)}</title>
549
- <style>
550
- :root {
551
- color-scheme: dark;
552
- --bg: #090d18;
553
- --surface: rgba(20, 27, 45, .86);
554
- --surface-strong: #151d30;
555
- --line: rgba(157, 171, 206, .16);
556
- --text: #f4f7ff;
557
- --muted: #9ba7c3;
558
- --violet: #9d84ff;
559
- --cyan: #5ce1e6;
560
- --green: #62e6a7;
561
- --amber: #ffc96b;
562
- --red: #ff7d90;
563
- --shadow: 0 30px 80px rgba(0, 0, 0, .35);
564
- font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
565
- }
566
- * { box-sizing: border-box; }
567
- html { scroll-behavior: smooth; }
568
- body {
569
- margin: 0;
570
- min-width: 320px;
571
- color: var(--text);
572
- background:
573
- radial-gradient(circle at 12% -10%, rgba(93, 74, 190, .32), transparent 34rem),
574
- radial-gradient(circle at 88% 8%, rgba(33, 153, 166, .19), transparent 30rem),
575
- var(--bg);
576
- }
577
- body::before {
578
- position: fixed;
579
- inset: 0;
580
- z-index: -1;
581
- content: "";
582
- opacity: .18;
583
- background-image: linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
584
- background-size: 38px 38px;
585
- mask-image: linear-gradient(to bottom, black, transparent 75%);
586
- }
587
- .shell { width: min(1160px, calc(100% - 40px)); margin: 0 auto; }
588
- .topbar { display: flex; align-items: center; justify-content: space-between; padding: 34px 0 16px; }
589
- .brand { display: flex; align-items: center; gap: 12px; font-weight: 900; letter-spacing: .3em; }
590
- .brand__mark { display: grid; width: 34px; height: 34px; place-items: center; border: 1px solid rgba(157,132,255,.55); border-radius: 11px; color: var(--violet); background: rgba(157,132,255,.12); box-shadow: inset 0 0 18px rgba(157,132,255,.12); }
591
- .snapshot { color: var(--muted); font: 500 12px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; }
592
- .hero { display: grid; grid-template-columns: 1.15fr .85fr; gap: 30px; align-items: stretch; padding: 42px 0 26px; }
593
- .hero__copy, .score-card { border: 1px solid var(--line); border-radius: 28px; background: linear-gradient(145deg, rgba(25,33,54,.92), rgba(13,18,31,.82)); box-shadow: var(--shadow); }
594
- .hero__copy { padding: clamp(30px, 5vw, 62px); }
595
- .eyebrow { margin: 0 0 17px; color: var(--cyan); font-size: 12px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }
596
- h1 { max-width: 720px; margin: 0; font-size: clamp(42px, 7vw, 76px); font-weight: 760; letter-spacing: -.055em; line-height: .98; }
597
- h1 span { display: block; color: var(--muted); font-size: .42em; font-weight: 620; letter-spacing: -.025em; line-height: 1.4; }
598
- .hero__lede { max-width: 620px; margin: 25px 0 0; color: #bdc6dc; font-size: 17px; line-height: 1.65; }
599
- .score-card { display: grid; min-height: 340px; padding: 38px; place-items: center; text-align: center; }
600
- .score-ring { --score: 0%; position: relative; display: grid; width: 220px; aspect-ratio: 1; place-items: center; border-radius: 50%; background: conic-gradient(var(--green) var(--score), rgba(255,255,255,.08) 0); box-shadow: 0 0 60px rgba(98,230,167,.12); }
601
- .score-ring::before { position: absolute; width: 178px; aspect-ratio: 1; content: ""; border: 1px solid var(--line); border-radius: inherit; background: #111827; }
602
- .score-ring__value { position: relative; font-size: 52px; font-weight: 820; letter-spacing: -.06em; }
603
- .score-ring__value span { margin-left: 2px; color: var(--muted); font-size: 22px; }
604
- .score-card p { position: relative; margin: 13px 0 0; color: var(--muted); font-size: 13px; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
605
- .snapshot-notice { display: flex; gap: 14px; align-items: center; margin: 3px 0 23px; padding: 15px 18px; border: 1px solid rgba(255,201,107,.3); border-radius: 15px; color: #f8dfb2; background: rgba(255,201,107,.08); }
606
- .snapshot-notice strong { flex: none; color: var(--amber); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; }
607
- .metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); overflow: hidden; margin: 0 0 62px; border: 1px solid var(--line); border-radius: 20px; background: rgba(18,25,42,.74); box-shadow: var(--shadow); }
608
- .metric { min-width: 0; padding: 22px 20px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
609
- .metric:last-child { border-right: 0; }
610
- .metric span { display: block; min-height: 32px; color: var(--muted); font-size: 12px; line-height: 1.35; }
611
- .metric strong { display: block; margin-top: 6px; font-size: 30px; letter-spacing: -.035em; }
612
- .metric--good strong { color: var(--green); }
613
- .metric--warn strong { color: var(--amber); }
614
- .metric--bad strong { color: var(--red); }
615
- .section-header { display: flex; gap: 24px; align-items: end; justify-content: space-between; margin-bottom: 24px; }
616
- .section-header h2 { margin: 0; font-size: clamp(29px, 4vw, 42px); letter-spacing: -.04em; }
617
- .section-header p { max-width: 590px; margin: 8px 0 0; color: var(--muted); line-height: 1.55; }
618
- .controls { position: sticky; top: 12px; z-index: 4; display: flex; gap: 12px; margin: 0 0 24px; padding: 12px; border: 1px solid var(--line); border-radius: 18px; background: rgba(9,13,24,.86); box-shadow: 0 16px 40px rgba(0,0,0,.25); backdrop-filter: blur(18px); }
619
- .search { min-width: 180px; flex: 1; padding: 12px 15px; border: 1px solid var(--line); border-radius: 12px; outline: none; color: var(--text); background: rgba(255,255,255,.045); font: inherit; }
620
- .search:focus { border-color: var(--violet); box-shadow: 0 0 0 3px rgba(157,132,255,.12); }
621
- .filters { display: flex; gap: 7px; overflow-x: auto; }
622
- .filter { padding: 10px 13px; border: 1px solid transparent; border-radius: 11px; color: var(--muted); background: transparent; cursor: pointer; font: inherit; font-size: 12px; font-weight: 650; white-space: nowrap; }
623
- .filter:hover { color: var(--text); background: rgba(255,255,255,.05); }
624
- .filter[aria-pressed="true"] { border-color: rgba(157,132,255,.38); color: #ddd5ff; background: rgba(157,132,255,.14); }
625
- .requirements { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; padding-bottom: 80px; }
626
- .requirement { position: relative; overflow: hidden; padding: 25px; border: 1px solid var(--line); border-radius: 20px; background: linear-gradient(145deg, rgba(22,30,50,.94), rgba(15,21,36,.9)); box-shadow: 0 16px 45px rgba(0,0,0,.2); }
627
- .requirement::before { position: absolute; inset: 0 auto 0 0; width: 3px; content: ""; background: var(--amber); }
628
- .requirement--proven::before { background: var(--green); }
629
- .requirement--unresolved::before { background: var(--red); }
630
- .requirement[hidden] { display: none; }
631
- .requirement__header { display: flex; gap: 18px; align-items: start; justify-content: space-between; }
632
- .requirement__id { margin-bottom: 7px; color: var(--muted); font: 700 11px/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .05em; }
633
- .requirement h3 { margin: 0; font-size: 20px; line-height: 1.25; letter-spacing: -.02em; }
634
- .proof-badge { flex: none; padding: 7px 9px; border: 1px solid rgba(255,201,107,.25); border-radius: 999px; color: var(--amber); background: rgba(255,201,107,.08); font-size: 10px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
635
- .proof-badge--proven { border-color: rgba(98,230,167,.25); color: var(--green); background: rgba(98,230,167,.08); }
636
- .proof-badge--unresolved { border-color: rgba(255,125,144,.25); color: var(--red); background: rgba(255,125,144,.08); }
637
- .stages { display: grid; gap: 9px; margin: 24px 0 0; padding: 0; list-style: none; }
638
- .stage { display: grid; grid-template-columns: 20px minmax(100px, .7fr) 1.3fr; gap: 8px; align-items: baseline; }
639
- .stage__icon { display: grid; width: 17px; height: 17px; place-items: center; border-radius: 50%; color: #08130e; background: var(--green); font-size: 11px; font-weight: 900; }
640
- .stage--warning .stage__icon { color: #241602; background: var(--amber); }
641
- .stage--failed .stage__icon { color: #24080c; background: var(--red); }
642
- .stage--muted .stage__icon { color: var(--muted); background: rgba(255,255,255,.08); }
643
- .stage__label { font-size: 13px; font-weight: 720; }
644
- .stage__detail { color: var(--muted); font-size: 12px; line-height: 1.45; }
645
- .contradiction { margin-top: 21px; padding: 16px; border: 1px solid rgba(255,125,144,.24); border-radius: 14px; background: rgba(255,125,144,.07); }
646
- .contradiction__eyebrow { color: var(--red); font-size: 10px; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
647
- .contradiction__values { display: flex; gap: 11px; align-items: center; margin-top: 9px; font: 750 15px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; }
648
- .contradiction__values b { color: var(--red); }
649
- .contradiction p { margin: 8px 0 0; color: #d9a9b1; font-size: 12px; line-height: 1.5; }
650
- .proof-gaps { margin-top: 18px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }
651
- .proof-advisories { margin-top: 12px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }
652
- .proof-gaps summary, .proof-advisories summary { padding-top: 14px; cursor: pointer; font-weight: 700; }
653
- .proof-gaps ul, .proof-advisories ul { columns: 2; margin: 11px 0 0; padding-left: 18px; }
654
- .proof-gaps li, .proof-advisories li { margin-bottom: 7px; break-inside: avoid; }
655
- .empty { display: none; padding: 70px 20px; border: 1px dashed var(--line); border-radius: 20px; color: var(--muted); text-align: center; }
656
- .empty[data-visible="true"] { display: block; }
657
- footer { display: flex; gap: 20px; justify-content: space-between; padding: 30px 0 48px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }
658
- @media (max-width: 960px) {
659
- .hero { grid-template-columns: 1fr; }
660
- .score-card { min-height: 290px; }
661
- .metrics { grid-template-columns: repeat(3, 1fr); }
662
- .metric:nth-child(3) { border-right: 0; }
663
- .metric:nth-child(-n+3) { border-bottom: 1px solid var(--line); }
664
- }
665
- @media (max-width: 760px) {
666
- .shell { width: min(100% - 24px, 1160px); }
667
- .topbar { padding-top: 22px; }
668
- .hero { padding-top: 20px; }
669
- .hero__copy, .score-card { border-radius: 22px; }
670
- .requirements { grid-template-columns: 1fr; }
671
- .section-header { align-items: start; flex-direction: column; }
672
- .controls { align-items: stretch; flex-direction: column; }
673
- .filters { padding-bottom: 2px; }
674
- footer { flex-direction: column; }
675
- }
676
- @media (max-width: 520px) {
677
- .metrics { grid-template-columns: repeat(2, 1fr); }
678
- .metric { border-bottom: 1px solid var(--line); }
679
- .metric:nth-child(2n) { border-right: 0; }
680
- .metric:nth-last-child(-n+2) { border-bottom: 0; }
681
- .stage { grid-template-columns: 20px 1fr; }
682
- .stage__detail { grid-column: 2; }
683
- .proof-gaps ul { columns: 1; }
684
- }
685
- @media print {
686
- body { background: #fff; color: #111827; }
687
- body::before, .controls { display: none; }
688
- .hero__copy, .score-card, .metrics, .requirement { border-color: #d9deea; color: #111827; background: #fff; box-shadow: none; break-inside: avoid; }
689
- .requirements { display: block; }
690
- .requirement { margin-bottom: 14px; }
691
- .hero__lede, .metric span, .stage__detail, .section-header p, footer { color: #59647a; }
692
- }
693
-
694
- /* Kibi proof-rail identity. Tokens mirror assets/logo.svg and assets/wordmark.svg. */
695
- :root {
696
- --carbon: ${KIBI_BRAND.carbon};
697
- --deep-carbon: ${KIBI_BRAND.deepCarbon};
698
- --panel: ${KIBI_BRAND.panel};
699
- --ice: ${KIBI_BRAND.ice};
700
- --signal: ${KIBI_BRAND.signal};
701
- --snow: ${KIBI_BRAND.snow};
702
- --mist: ${KIBI_BRAND.mist};
703
- --rail: ${KIBI_BRAND.rail};
704
- --success: ${KIBI_BRAND.success};
705
- --warning: ${KIBI_BRAND.warning};
706
- --danger: ${KIBI_BRAND.danger};
707
- --line: rgba(162, 211, 244, .16);
708
- --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
709
- font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
710
- }
711
- body { color: var(--snow); background: var(--deep-carbon); }
712
- body::before { position: fixed; inset: 0 0 auto; z-index: -1; height: 4px; content: ""; opacity: 1; background: linear-gradient(90deg, var(--ice) 0 17%, var(--signal) 17% 100%); mask-image: none; }
713
- .shell { width: min(1180px, calc(100% - 40px)); }
714
- .topbar { padding: 30px 0 20px; border-bottom: 1px solid var(--line); }
715
- .brand { gap: 13px; letter-spacing: normal; }
716
- .brand__logo { width: 42px; height: 42px; flex: none; }
717
- .brand__wordmark { width: 86px; height: auto; }
718
- .brand__product { padding-left: 14px; border-left: 1px solid var(--rail); color: var(--mist); font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
719
- .snapshot { max-width: min(52vw, 420px); overflow: hidden; color: var(--mist); font: 500 11px/1.4 var(--mono); text-align: right; text-overflow: ellipsis; }
720
- .snapshot a, .source-link, .cta { color: var(--ice); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }
721
- .snapshot a:hover, .source-link:hover, .cta:hover { color: var(--snow); }
722
- .relative-age::before { content: " · "; }
723
- .relative-age:empty::before { content: none; }
724
- .overview { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 36px; align-items: end; padding: clamp(38px, 7vw, 76px) 0 32px; }
725
- .eyebrow { margin: 0 0 12px; color: var(--ice); font: 750 11px/1.4 var(--mono); letter-spacing: .12em; }
726
- h1 { margin: 0; font-size: clamp(38px, 6vw, 68px); font-weight: 720; letter-spacing: -.052em; line-height: 1; }
727
- .overview__copy { max-width: 700px; }
728
- .overview__copy p:last-child { max-width: 660px; margin: 19px 0 0; color: var(--mist); font-size: 16px; line-height: 1.65; }
729
- .score { min-width: 220px; padding-left: 30px; border-left: 2px solid var(--signal); text-align: right; }
730
- .score__value { color: var(--snow); font: 760 clamp(62px, 9vw, 104px)/.84 var(--mono); letter-spacing: -.09em; }
731
- .score__value span { color: var(--ice); font-size: .38em; letter-spacing: -.04em; }
732
- .score__label { margin-top: 17px; color: var(--ice); font-size: 12px; font-weight: 760; letter-spacing: .12em; text-transform: uppercase; }
733
- .score__ratio { margin-top: 6px; color: var(--mist); font: 500 12px/1.4 var(--mono); }
734
- .score__note { max-width: 260px; margin: 10px 0 0 auto; color: var(--mist); font-size: 11px; font-weight: 500; letter-spacing: 0; line-height: 1.45; text-transform: none; }
735
- .snapshot-notice { margin: 0 0 22px; padding: 14px 16px; border-color: rgba(242,184,75,.4); border-radius: 9px; color: var(--snow); background: rgba(242,184,75,.08); }
736
- .snapshot-notice strong { color: var(--warning); font: 750 11px/1.4 var(--mono); }
737
- .proof-path { margin-bottom: 20px; padding: 24px 26px 22px; border: 1px solid var(--line); border-radius: 14px; background: var(--carbon); }
738
- .proof-path__header { display: flex; gap: 24px; align-items: start; justify-content: space-between; margin-bottom: 25px; }
739
- .proof-path__header h2 { margin: 0; font-size: 19px; letter-spacing: -.02em; }
740
- .proof-path__header p { max-width: 510px; margin: 0; color: var(--mist); font-size: 12px; line-height: 1.55; text-align: right; }
741
- .proof-rail { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }
742
- .proof-rail > li { min-width: 0; }
743
- .proof-gate { position: relative; display: block; width: 100%; min-width: 0; margin: 0; padding: 25px 18px 0 0; border: 0; border-top: 2px solid var(--signal); border-radius: 0; color: inherit; background: transparent; font: inherit; text-align: left; cursor: pointer; }
744
- .proof-gate:last-child, .proof-rail > li:last-child .proof-gate { padding-right: 0; }
745
- .proof-gate:focus-visible { outline: 2px solid var(--ice); outline-offset: 4px; }
746
- .proof-gate[aria-pressed="true"] { background: rgba(62, 142, 214, .1); }
747
- .proof-gate__node { position: absolute; top: -10px; left: 0; display: grid; width: 19px; height: 19px; place-items: center; border: 2px solid var(--ice); border-radius: 50%; color: var(--deep-carbon); background: var(--ice); font: 800 9px/1 var(--mono); }
748
- .proof-gate--blocked { border-top-color: var(--rail); }
749
- .proof-gate--blocked .proof-gate__node { border-color: var(--danger); color: var(--danger); background: var(--carbon); }
750
- .proof-gate__count { font: 750 28px/1 var(--mono); letter-spacing: -.05em; }
751
- .proof-gate__label { margin-top: 8px; font-size: 13px; font-weight: 720; }
752
- .proof-gate__drop { min-height: 17px; margin-top: 5px; color: var(--warning); font: 650 10px/1.4 var(--mono); }
753
- .proof-gate p { margin: 7px 0 0; color: var(--mist); font-size: 11px; line-height: 1.45; }
754
- .metrics { margin: 0 0 62px; border-color: var(--line); border-radius: 12px; background: var(--panel); box-shadow: none; }
755
- .metric { position: relative; padding: 18px 17px; border-color: var(--line); }
756
- .metric::before { position: absolute; top: 0; left: 17px; width: 28px; height: 2px; content: ""; background: var(--signal); }
757
- .metric span { min-height: 31px; color: var(--mist); font-size: 11px; }
758
- .metric strong { margin-top: 4px; font: 720 26px/1 var(--mono); letter-spacing: -.04em; }
759
- .metric--good strong { color: var(--success); }
760
- .metric--warn strong { color: var(--warning); }
761
- .metric--bad strong { color: var(--danger); }
762
- .section-header p { color: var(--mist); }
763
- .controls { margin-bottom: 18px; padding: 10px; border-color: var(--line); border-radius: 12px; background: rgba(17,19,24,.94); box-shadow: none; backdrop-filter: blur(14px); }
764
- .search { padding: 11px 13px; border-color: var(--rail); border-radius: 8px; color: var(--snow); background: var(--carbon); }
765
- .search:focus { border-color: var(--ice); box-shadow: 0 0 0 3px rgba(162,211,244,.1); }
766
- .filters { gap: 6px; }
767
- .filter { padding: 9px 11px; border-radius: 7px; color: var(--mist); font: 650 11px/1.4 var(--mono); }
768
- .filter:hover { color: var(--snow); background: rgba(162,211,244,.06); }
769
- .filter[aria-pressed="true"] { border-color: rgba(162,211,244,.35); color: var(--ice); background: rgba(62,142,214,.13); }
770
- .filter:focus-visible { outline: 2px solid var(--ice); outline-offset: 2px; }
771
- .cta:focus-visible, .source-link:focus-visible, .snapshot a:focus-visible { outline: 2px solid var(--ice); outline-offset: 2px; }
772
- .requirements { grid-template-columns: 1fr; gap: 13px; }
773
- .requirement { padding: 22px 24px 20px; border-color: var(--line); border-radius: 12px; background: var(--panel); box-shadow: none; }
774
- .requirement::before { background: var(--warning); }
775
- .requirement--proven::before { background: var(--success); }
776
- .requirement--unresolved::before { background: var(--danger); }
777
- .requirement__id { color: var(--ice); font: 700 10px/1.2 var(--mono); letter-spacing: .07em; }
778
- .requirement h3 { font-size: 18px; line-height: 1.3; }
779
- .proof-badge { padding: 6px 8px; border-color: rgba(242,184,75,.3); border-radius: 6px; color: var(--warning); background: rgba(242,184,75,.07); font: 800 9px/1.2 var(--mono); }
780
- .proof-badge--proven { border-color: rgba(99,201,154,.3); color: var(--success); background: rgba(99,201,154,.07); }
781
- .proof-badge--unresolved { border-color: rgba(240,113,120,.3); color: var(--danger); background: rgba(240,113,120,.07); }
782
- .stages { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; }
783
- .stage { position: relative; display: block; min-width: 0; padding: 20px 13px 0 0; border-top: 1px solid var(--rail); }
784
- .stage:last-child { padding-right: 0; }
785
- .stage__icon { position: absolute; top: -8px; left: 0; width: 16px; height: 16px; border: 1px solid var(--success); color: var(--deep-carbon); background: var(--success); font: 900 10px/1 var(--mono); }
786
- .stage--warning .stage__icon { border-color: var(--warning); color: var(--warning); background: var(--panel); }
787
- .stage--failed .stage__icon { border-color: var(--danger); color: var(--danger); background: var(--panel); }
788
- .stage--muted .stage__icon { border-color: var(--rail); color: var(--mist); background: var(--panel); }
789
- .stage__label { display: block; font-size: 12px; }
790
- .stage__detail { display: block; margin-top: 5px; color: var(--mist); font-size: 11px; }
791
- .contradiction { border-color: rgba(240,113,120,.32); border-radius: 9px; background: rgba(240,113,120,.07); }
792
- .contradiction__eyebrow, .contradiction__values b { color: var(--danger); }
793
- .contradiction p, .proof-gaps, .proof-advisories { color: var(--mist); }
794
- .proof-gaps, .proof-advisories { border-color: var(--line); }
795
- .proof-gaps ul, .proof-advisories ul { columns: 3; }
796
- .empty { border-color: var(--rail); border-radius: 12px; color: var(--mist); }
797
- footer { border-color: var(--line); color: var(--mist); font: 500 11px/1.5 var(--mono); }
798
- .filter__count { margin-left: 6px; color: var(--ice); }
799
- .requirement h3 .source-link { color: inherit; }
800
- @media (max-width: 960px) {
801
- .proof-rail { grid-template-columns: repeat(5, 180px); overflow-x: auto; padding-top: 8px; }
802
- .snapshot { max-width: 100%; }
803
- }
804
- @media (max-width: 760px) {
805
- .shell { width: min(100% - 24px, 1180px); }
806
- .topbar { align-items: start; flex-wrap: wrap; gap: 12px; }
807
- .snapshot { max-width: 100%; text-align: left; }
808
- .overview { grid-template-columns: 1fr; gap: 28px; padding-top: 38px; }
809
- .score { min-width: 0; padding: 20px 0 0; border-top: 2px solid var(--signal); border-left: 0; text-align: left; }
810
- .score__value { font-size: 66px; }
811
- .score__note { margin-left: 0; }
812
- .proof-path__header { align-items: start; flex-direction: column; }
813
- .proof-path__header p { text-align: left; }
814
- .stages { grid-template-columns: 1fr; }
815
- .stage { min-height: 66px; margin-left: 8px; padding: 0 0 18px 30px; border-top: 0; border-left: 1px solid var(--rail); }
816
- .stage__icon { top: 0; left: -8px; }
817
- .proof-gaps ul, .proof-advisories ul { columns: 2; }
818
- }
819
- @media (max-width: 520px) {
820
- .brand__product { display: none; }
821
- .proof-path { padding-inline: 18px; }
822
- .proof-gaps ul, .proof-advisories ul { columns: 1; }
823
- }
824
- @media print {
825
- :root { color-scheme: light; }
826
- body { color: #17202a; background: #fff; }
827
- .topbar, .proof-path, .metrics, .requirement { border-color: #cbd5dc; color: #17202a; background: #fff; }
828
- .proof-gate, .stage { border-color: #7b8b96; background: transparent; }
829
- .proof-gate p, .proof-path__header p, .metric span, .stage__detail, .section-header p, footer, .score__note { color: #4e606c; }
830
- .source-link, .cta, .snapshot a { color: inherit; }
831
- }
832
- </style>
569
+ <style>\n${reportStyles()}\n </style>
833
570
  </head>
834
571
  <body>
835
572
  <div class="shell">
@@ -1,3 +1,5 @@
1
1
  import type { OperationRuntime, RuntimeOptions } from "../public/operations/runtime-types.js";
2
+ import { type BranchResolutionError } from "../utils/branch-resolver.js";
3
+ export declare function attachmentFailureMessage(attachment: BranchResolutionError): string;
2
4
  export declare function createCliRuntime(options?: RuntimeOptions): OperationRuntime;
3
5
  //# sourceMappingURL=cli-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/cli-runtime.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAIV,gBAAgB,EAEhB,cAAc,EACf,MAAM,uCAAuC,CAAC;AA2E/C,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,cAAmB,GAC3B,gBAAgB,CAgHlB"}
1
+ {"version":3,"file":"cli-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/cli-runtime.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAIV,gBAAgB,EAEhB,cAAc,EACf,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,6BAA6B,CAAC;AAErC,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,qBAAqB,GAChC,MAAM,CAOR;AA0ED,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,cAAmB,GAC3B,gBAAgB,CAgHlB"}
@@ -1,7 +1,15 @@
1
1
  import path from "node:path";
2
+ import { retryAttachAfterBreakingStaleLock } from "../prolog/store-lock.js";
2
3
  import { EngineClient } from "../engine.js";
3
4
  import { nodeFilesystem, nodeGit, nodeNetwork, } from "../public/operations/node-ports.js";
4
- import { resolveBranchAttachment } from "../utils/branch-resolver.js";
5
+ import { resolveBranchAttachment, } from "../utils/branch-resolver.js";
6
+ export function attachmentFailureMessage(attachment) {
7
+ const isNonGitContext = attachment.code === "NOT_A_GIT_REPO" ||
8
+ attachment.code === "GIT_NOT_AVAILABLE";
9
+ return isNonGitContext
10
+ ? "Kibi requires an active Git branch outside a repository; set KIBI_BRANCH explicitly for a standalone workspace."
11
+ : `Failed to resolve active branch: ${attachment.error}`;
12
+ }
5
13
  function createDefaultProlog(root, branch) {
6
14
  const engine = new EngineClient({
7
15
  workspaceRoot: root,
@@ -106,12 +114,8 @@ export function createCliRuntime(options = {}) {
106
114
  }
107
115
  const attachment = resolveBranchAttachment(root);
108
116
  if ("error" in attachment) {
109
- const isNonGitContext = attachment.code === "NOT_A_GIT_REPO" ||
110
- attachment.code === "GIT_NOT_AVAILABLE";
111
117
  await merged.prolog?.terminate?.();
112
- throw new Error(isNonGitContext
113
- ? "Kibi requires an active Git branch outside a repository; set KIBI_BRANCH explicitly for a standalone workspace."
114
- : `Failed to resolve active branch: ${attachment.error}`);
118
+ throw new Error(attachmentFailureMessage(attachment));
115
119
  }
116
120
  if (attachment.migrationRequired) {
117
121
  console.warn(`[KIBI] Legacy branch attachment: Git '${attachment.gitBranch}' is reading KB '${attachment.kbBranch}'. Migrate with 'kibi branch migrate --from ${attachment.kbBranch} --to ${attachment.gitBranch} --apply'; writes are blocked until then.`);
@@ -123,7 +127,10 @@ export function createCliRuntime(options = {}) {
123
127
  await prolog.start?.();
124
128
  const kbPath = attachment.storePath;
125
129
  if (!usesEngine) {
126
- const attached = await prolog.query(`kb_attach('${quoteProlog(kbPath)}')`);
130
+ let attached = await prolog.query(`kb_attach('${quoteProlog(kbPath)}')`);
131
+ if (!attached.success) {
132
+ attached = await retryAttachAfterBreakingStaleLock(prolog, kbPath, attached);
133
+ }
127
134
  if (!attached.success) {
128
135
  throw new Error(attached.error ?? "Failed to attach branch KB");
129
136
  }