kibi-cli 0.19.0 → 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 (672) 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.d.ts.map +1 -1
  8. package/dist/cli-operation-loader.js +53 -20
  9. package/dist/cli-operation-metadata.d.ts +21 -8
  10. package/dist/cli-operation-metadata.d.ts.map +1 -1
  11. package/dist/cli-operation-metadata.js +27 -10
  12. package/dist/cli-protocol.d.ts.map +1 -1
  13. package/dist/cli-protocol.js +38 -8
  14. package/dist/cli-register-foundation.d.ts.map +1 -1
  15. package/dist/cli-register-foundation.js +14 -2
  16. package/dist/cli-register-maintenance.d.ts.map +1 -1
  17. package/dist/cli-register-maintenance.js +33 -4
  18. package/dist/cli-register-proof.d.ts +3 -0
  19. package/dist/cli-register-proof.d.ts.map +1 -0
  20. package/dist/cli-register-proof.js +103 -0
  21. package/dist/cli-register-reporting.d.ts.map +1 -1
  22. package/dist/cli-register-reporting.js +11 -0
  23. package/dist/cli.d.ts +4 -0
  24. package/dist/cli.d.ts.map +1 -1
  25. package/dist/cli.js +17 -8
  26. package/dist/commands/aggregated-checks.d.ts +1 -2
  27. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  28. package/dist/commands/aggregated-checks.js +14 -9
  29. package/dist/commands/branch.d.ts +37 -0
  30. package/dist/commands/branch.d.ts.map +1 -1
  31. package/dist/commands/branch.js +375 -40
  32. package/dist/commands/check.d.ts +14 -0
  33. package/dist/commands/check.d.ts.map +1 -1
  34. package/dist/commands/check.js +209 -110
  35. package/dist/commands/coverage.d.ts +1 -0
  36. package/dist/commands/coverage.d.ts.map +1 -1
  37. package/dist/commands/coverage.js +6 -0
  38. package/dist/commands/discovery-shared.d.ts.map +1 -1
  39. package/dist/commands/discovery-shared.js +10 -19
  40. package/dist/commands/doctor.d.ts +26 -1
  41. package/dist/commands/doctor.d.ts.map +1 -1
  42. package/dist/commands/doctor.js +291 -30
  43. package/dist/commands/engine.d.ts +12 -0
  44. package/dist/commands/engine.d.ts.map +1 -1
  45. package/dist/commands/engine.js +50 -7
  46. package/dist/commands/gc.d.ts +5 -2
  47. package/dist/commands/gc.d.ts.map +1 -1
  48. package/dist/commands/gc.js +140 -71
  49. package/dist/commands/github-init.d.ts +57 -0
  50. package/dist/commands/github-init.d.ts.map +1 -0
  51. package/dist/commands/github-init.js +314 -0
  52. package/dist/commands/init-helpers.d.ts +1 -1
  53. package/dist/commands/init-helpers.d.ts.map +1 -1
  54. package/dist/commands/init-helpers.js +109 -28
  55. package/dist/commands/init.d.ts +2 -0
  56. package/dist/commands/init.d.ts.map +1 -1
  57. package/dist/commands/init.js +79 -24
  58. package/dist/commands/legacy-storage-migration.d.ts +54 -0
  59. package/dist/commands/legacy-storage-migration.d.ts.map +1 -0
  60. package/dist/commands/legacy-storage-migration.js +277 -0
  61. package/dist/commands/migrate.d.ts +11 -0
  62. package/dist/commands/migrate.d.ts.map +1 -1
  63. package/dist/commands/migrate.js +249 -96
  64. package/dist/commands/proof-migrate-legacy.d.ts +7 -0
  65. package/dist/commands/proof-migrate-legacy.d.ts.map +1 -0
  66. package/dist/commands/proof-migrate-legacy.js +45 -0
  67. package/dist/commands/proof-prune.d.ts +8 -0
  68. package/dist/commands/proof-prune.d.ts.map +1 -0
  69. package/dist/commands/proof-prune.js +53 -0
  70. package/dist/commands/prove.d.ts +37 -0
  71. package/dist/commands/prove.d.ts.map +1 -0
  72. package/dist/commands/prove.js +470 -0
  73. package/dist/commands/report.d.ts +24 -0
  74. package/dist/commands/report.d.ts.map +1 -0
  75. package/dist/commands/report.js +191 -0
  76. package/dist/commands/sync/cache.d.ts +16 -3
  77. package/dist/commands/sync/cache.d.ts.map +1 -1
  78. package/dist/commands/sync/cache.js +111 -4
  79. package/dist/commands/sync/discovery.d.ts +26 -2
  80. package/dist/commands/sync/discovery.d.ts.map +1 -1
  81. package/dist/commands/sync/discovery.js +204 -15
  82. package/dist/commands/sync/extraction.d.ts +8 -1
  83. package/dist/commands/sync/extraction.d.ts.map +1 -1
  84. package/dist/commands/sync/extraction.js +38 -4
  85. package/dist/commands/sync/manifest.d.ts +9 -6
  86. package/dist/commands/sync/manifest.d.ts.map +1 -1
  87. package/dist/commands/sync/manifest.js +195 -60
  88. package/dist/commands/sync/persistence.d.ts +4 -1
  89. package/dist/commands/sync/persistence.d.ts.map +1 -1
  90. package/dist/commands/sync/persistence.js +26 -12
  91. package/dist/commands/sync/staging.d.ts +1 -0
  92. package/dist/commands/sync/staging.d.ts.map +1 -1
  93. package/dist/commands/sync/staging.js +5 -2
  94. package/dist/commands/sync/untracked-targets.d.ts +24 -0
  95. package/dist/commands/sync/untracked-targets.d.ts.map +1 -0
  96. package/dist/commands/sync/untracked-targets.js +108 -0
  97. package/dist/commands/sync.d.ts +17 -1
  98. package/dist/commands/sync.d.ts.map +1 -1
  99. package/dist/commands/sync.js +375 -106
  100. package/dist/diagnostics.d.ts +1 -1
  101. package/dist/diagnostics.d.ts.map +1 -1
  102. package/dist/engine-daemon.d.ts +3 -1
  103. package/dist/engine-daemon.d.ts.map +1 -1
  104. package/dist/engine-daemon.js +49 -20
  105. package/dist/engine.d.ts +34 -3
  106. package/dist/engine.d.ts.map +1 -1
  107. package/dist/engine.js +578 -42
  108. package/dist/env.d.ts.map +1 -1
  109. package/dist/env.js +5 -6
  110. package/dist/extractors/manifest.d.ts +13 -1
  111. package/dist/extractors/manifest.d.ts.map +1 -1
  112. package/dist/extractors/manifest.js +97 -10
  113. package/dist/extractors/markdown.d.ts +5 -2
  114. package/dist/extractors/markdown.d.ts.map +1 -1
  115. package/dist/extractors/markdown.js +47 -12
  116. package/dist/extractors/playwright-cases.d.ts +24 -0
  117. package/dist/extractors/playwright-cases.d.ts.map +1 -0
  118. package/dist/extractors/playwright-cases.js +126 -0
  119. package/dist/extractors/relationships.d.ts +6 -0
  120. package/dist/extractors/relationships.d.ts.map +1 -1
  121. package/dist/extractors/relationships.js +2 -1
  122. package/dist/extractors/symbol-coordinates.d.ts +81 -3
  123. package/dist/extractors/symbol-coordinates.d.ts.map +1 -1
  124. package/dist/extractors/symbol-coordinates.js +389 -51
  125. package/dist/extractors/symbols-coordinator.js +11 -1
  126. package/dist/extractors/symbols-ts.d.ts +1 -0
  127. package/dist/extractors/symbols-ts.d.ts.map +1 -1
  128. package/dist/extractors/symbols-ts.js +142 -67
  129. package/dist/intent-search.d.ts +61 -0
  130. package/dist/intent-search.d.ts.map +1 -0
  131. package/dist/intent-search.js +437 -0
  132. package/dist/logic/ir.d.ts +1 -0
  133. package/dist/logic/ir.d.ts.map +1 -1
  134. package/dist/logic/ir.js +1 -1
  135. package/dist/operations/bootstrap/activation.d.ts +5 -0
  136. package/dist/operations/bootstrap/activation.d.ts.map +1 -0
  137. package/dist/operations/{autopilot → bootstrap}/activation.js +58 -33
  138. package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts.map +1 -1
  139. package/dist/operations/bootstrap/candidates.d.ts +4 -0
  140. package/dist/operations/{autopilot → bootstrap}/candidates.d.ts.map +1 -1
  141. package/dist/operations/{autopilot → bootstrap}/candidates.js +22 -8
  142. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts +2 -2
  143. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.d.ts.map +1 -1
  144. package/dist/operations/{autopilot → bootstrap}/discovery-evidence.js +46 -6
  145. package/dist/operations/{autopilot → bootstrap}/discovery.d.ts +1 -1
  146. package/dist/operations/bootstrap/discovery.d.ts.map +1 -0
  147. package/dist/operations/{autopilot → bootstrap}/discovery.js +21 -14
  148. package/dist/operations/bootstrap/generate.d.ts +9 -0
  149. package/dist/operations/bootstrap/generate.d.ts.map +1 -0
  150. package/dist/operations/bootstrap/generate.js +207 -0
  151. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts +2 -2
  152. package/dist/operations/{autopilot → bootstrap}/guidance-actions.d.ts.map +1 -1
  153. package/dist/operations/{autopilot → bootstrap}/guidance-actions.js +4 -4
  154. package/dist/operations/{autopilot → bootstrap}/guidance.d.ts +3 -2
  155. package/dist/operations/bootstrap/guidance.d.ts.map +1 -0
  156. package/dist/operations/{autopilot → bootstrap}/guidance.js +3 -1
  157. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts +2 -2
  158. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.d.ts.map +1 -1
  159. package/dist/operations/{autopilot → bootstrap}/markdown-candidates.js +4 -3
  160. package/dist/operations/bootstrap/presentation.d.ts +15 -0
  161. package/dist/operations/bootstrap/presentation.d.ts.map +1 -0
  162. package/dist/operations/bootstrap/presentation.js +177 -0
  163. package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts.map +1 -1
  164. package/dist/operations/{autopilot → bootstrap}/types.d.ts +63 -21
  165. package/dist/operations/bootstrap/types.d.ts.map +1 -0
  166. package/dist/operations/bootstrap/types.js +25 -0
  167. package/dist/operations/modeling/model-requirement.d.ts +5 -0
  168. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  169. package/dist/operations/modeling/model-requirement.js +57 -63
  170. package/dist/operations/modeling/predicate-applicability.d.ts +16 -0
  171. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -0
  172. package/dist/operations/modeling/predicate-applicability.js +375 -0
  173. package/dist/operations/modeling/predicate-applyplan.d.ts +13 -2
  174. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
  175. package/dist/operations/modeling/predicate-applyplan.js +100 -3
  176. package/dist/operations/modeling/predicate-bindings.d.ts +6 -0
  177. package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -0
  178. package/dist/operations/modeling/predicate-bindings.js +122 -0
  179. package/dist/operations/modeling/predicate-catalog-2.d.ts.map +1 -1
  180. package/dist/operations/modeling/predicate-catalog-2.js +18 -2
  181. package/dist/operations/modeling/predicate-catalog-3.d.ts.map +1 -1
  182. package/dist/operations/modeling/predicate-catalog-3.js +17 -1
  183. package/dist/operations/modeling/predicate-catalog-4.d.ts.map +1 -1
  184. package/dist/operations/modeling/predicate-catalog-4.js +155 -0
  185. package/dist/operations/modeling/predicate-catalog-5.d.ts +10 -0
  186. package/dist/operations/modeling/predicate-catalog-5.d.ts.map +1 -0
  187. package/dist/operations/modeling/predicate-catalog-5.js +291 -0
  188. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
  189. package/dist/operations/modeling/predicate-catalog.js +4 -0
  190. package/dist/operations/modeling/predicate-inference-1.d.ts.map +1 -1
  191. package/dist/operations/modeling/predicate-inference-1.js +8 -0
  192. package/dist/operations/modeling/predicate-inference-launcher.d.ts +10 -0
  193. package/dist/operations/modeling/predicate-inference-launcher.d.ts.map +1 -0
  194. package/dist/operations/modeling/predicate-inference-launcher.js +13 -0
  195. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
  196. package/dist/operations/modeling/predicate-inference.js +4 -0
  197. package/dist/operations/modeling/predicate-loader.d.ts +1 -0
  198. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  199. package/dist/operations/modeling/predicate-loader.js +11 -3
  200. package/dist/operations/modeling/predicate-ranker.d.ts +8 -1
  201. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  202. package/dist/operations/modeling/predicate-ranker.js +159 -24
  203. package/dist/operations/modeling/predicate-score-3.d.ts.map +1 -1
  204. package/dist/operations/modeling/predicate-score-3.js +6 -0
  205. package/dist/operations/modeling/predicate-types.d.ts +35 -1
  206. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  207. package/dist/operations/modeling/predicate-usage-hints-3.d.ts.map +1 -1
  208. package/dist/operations/modeling/predicate-usage-hints-3.js +40 -0
  209. package/dist/operations/modeling/predicate-usage-hints-4.d.ts +3 -0
  210. package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -0
  211. package/dist/operations/modeling/predicate-usage-hints-4.js +84 -0
  212. package/dist/operations/modeling/predicate-utils.d.ts.map +1 -1
  213. package/dist/operations/modeling/predicate-utils.js +2 -0
  214. package/dist/operations/modeling/suggest-predicates.d.ts +4 -2
  215. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  216. package/dist/operations/modeling/suggest-predicates.js +203 -32
  217. package/dist/operations/mutation/contradictions.d.ts +2 -1
  218. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  219. package/dist/operations/mutation/contradictions.js +26 -5
  220. package/dist/operations/mutation/delete.d.ts +3 -0
  221. package/dist/operations/mutation/delete.d.ts.map +1 -1
  222. package/dist/operations/mutation/delete.js +483 -19
  223. package/dist/operations/mutation/entity-projection.d.ts +11 -0
  224. package/dist/operations/mutation/entity-projection.d.ts.map +1 -0
  225. package/dist/operations/mutation/entity-projection.js +14 -0
  226. package/dist/operations/mutation/relationships.d.ts +11 -0
  227. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  228. package/dist/operations/mutation/relationships.js +77 -5
  229. package/dist/operations/mutation/saga.d.ts +51 -0
  230. package/dist/operations/mutation/saga.d.ts.map +1 -0
  231. package/dist/operations/mutation/saga.js +67 -0
  232. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  233. package/dist/operations/mutation/serialization.js +3 -1
  234. package/dist/operations/mutation/source-authoring.d.ts +65 -0
  235. package/dist/operations/mutation/source-authoring.d.ts.map +1 -0
  236. package/dist/operations/mutation/source-authoring.js +576 -0
  237. package/dist/operations/mutation/strict-fact.d.ts +1 -0
  238. package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
  239. package/dist/operations/mutation/strict-fact.js +8 -5
  240. package/dist/operations/mutation/symbol-compiler-lock.d.ts +54 -0
  241. package/dist/operations/mutation/symbol-compiler-lock.d.ts.map +1 -0
  242. package/dist/operations/mutation/symbol-compiler-lock.js +337 -0
  243. package/dist/operations/mutation/symbol-granularity.d.ts.map +1 -1
  244. package/dist/operations/mutation/symbol-granularity.js +35 -4
  245. package/dist/operations/mutation/symbol-refresh.d.ts +19 -1
  246. package/dist/operations/mutation/symbol-refresh.d.ts.map +1 -1
  247. package/dist/operations/mutation/symbol-refresh.js +227 -63
  248. package/dist/operations/mutation/types.d.ts +57 -1
  249. package/dist/operations/mutation/types.d.ts.map +1 -1
  250. package/dist/operations/mutation/upsert.d.ts +18 -2
  251. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  252. package/dist/operations/mutation/upsert.js +403 -32
  253. package/dist/operations/mutation/validate-upsert.js +2 -2
  254. package/dist/operations/mutation/validation.d.ts.map +1 -1
  255. package/dist/operations/mutation/validation.js +47 -4
  256. package/dist/operations/mutation/warnings.d.ts +1 -0
  257. package/dist/operations/mutation/warnings.d.ts.map +1 -1
  258. package/dist/operations/mutation/warnings.js +7 -5
  259. package/dist/operations/mutation/workspace-mutation-lock.d.ts +60 -0
  260. package/dist/operations/mutation/workspace-mutation-lock.d.ts.map +1 -0
  261. package/dist/operations/mutation/workspace-mutation-lock.js +362 -0
  262. package/dist/operations/planning/apply-plan.d.ts +19 -0
  263. package/dist/operations/planning/apply-plan.d.ts.map +1 -0
  264. package/dist/operations/planning/apply-plan.js +1514 -0
  265. package/dist/operations/planning/compile-intent.d.ts +108 -0
  266. package/dist/operations/planning/compile-intent.d.ts.map +1 -0
  267. package/dist/operations/planning/compile-intent.js +618 -0
  268. package/dist/operations/proof/ingest-proof.d.ts +34 -0
  269. package/dist/operations/proof/ingest-proof.d.ts.map +1 -0
  270. package/dist/operations/proof/ingest-proof.js +307 -0
  271. package/dist/operations/proof/migrate-legacy-receipts.d.ts +30 -0
  272. package/dist/operations/proof/migrate-legacy-receipts.d.ts.map +1 -0
  273. package/dist/operations/proof/migrate-legacy-receipts.js +88 -0
  274. package/dist/operations/proof/prune-receipts.d.ts +35 -0
  275. package/dist/operations/proof/prune-receipts.d.ts.map +1 -0
  276. package/dist/operations/proof/prune-receipts.js +91 -0
  277. package/dist/operations/proof/receipt-document.d.ts +29 -0
  278. package/dist/operations/proof/receipt-document.d.ts.map +1 -0
  279. package/dist/operations/proof/receipt-document.js +117 -0
  280. package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -0
  281. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  282. package/dist/operations/semantic-advisor/analyze-prose.js +52 -28
  283. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  284. package/dist/operations/semantic-advisor/clauses.js +35 -9
  285. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
  286. package/dist/operations/semantic-advisor/ingestion-boundary.js +7 -3
  287. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts +51 -0
  288. package/dist/operations/semantic-advisor/predicate-rules-launcher.d.ts.map +1 -0
  289. package/dist/operations/semantic-advisor/predicate-rules-launcher.js +96 -0
  290. package/dist/operations/semantic-advisor/strict-count-rules.d.ts +2 -0
  291. package/dist/operations/semantic-advisor/strict-count-rules.d.ts.map +1 -1
  292. package/dist/operations/semantic-advisor/strict-count-rules.js +40 -25
  293. package/dist/operations/semantic-advisor/types.d.ts +13 -5
  294. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  295. package/dist/prolog/codec.d.ts +13 -1
  296. package/dist/prolog/codec.d.ts.map +1 -1
  297. package/dist/prolog/codec.js +269 -153
  298. package/dist/prolog/error-terms.d.ts +47 -0
  299. package/dist/prolog/error-terms.d.ts.map +1 -0
  300. package/dist/prolog/error-terms.js +334 -0
  301. package/dist/prolog/janitor.d.ts +50 -0
  302. package/dist/prolog/janitor.d.ts.map +1 -0
  303. package/dist/prolog/janitor.js +154 -0
  304. package/dist/prolog/store-lock.d.ts +45 -0
  305. package/dist/prolog/store-lock.d.ts.map +1 -0
  306. package/dist/prolog/store-lock.js +195 -0
  307. package/dist/prolog.d.ts +7 -0
  308. package/dist/prolog.d.ts.map +1 -1
  309. package/dist/prolog.js +82 -25
  310. package/dist/proof/evaluate.d.ts +27 -0
  311. package/dist/proof/evaluate.d.ts.map +1 -0
  312. package/dist/proof/evaluate.js +151 -0
  313. package/dist/proof/inspect.d.ts +12 -0
  314. package/dist/proof/inspect.d.ts.map +1 -0
  315. package/dist/proof/inspect.js +236 -0
  316. package/dist/proof/integrations.d.ts +35 -0
  317. package/dist/proof/integrations.d.ts.map +1 -0
  318. package/dist/proof/integrations.js +123 -0
  319. package/dist/proof/producers/junit-adapter.d.ts +26 -0
  320. package/dist/proof/producers/junit-adapter.d.ts.map +1 -0
  321. package/dist/proof/producers/junit-adapter.js +186 -0
  322. package/dist/proof/producers/playwright-case-id.d.ts +8 -0
  323. package/dist/proof/producers/playwright-case-id.d.ts.map +1 -0
  324. package/dist/proof/producers/playwright-case-id.js +25 -0
  325. package/dist/proof/producers/playwright-reporter.d.ts +27 -0
  326. package/dist/proof/producers/playwright-reporter.d.ts.map +1 -0
  327. package/dist/proof/producers/playwright-reporter.js +138 -0
  328. package/dist/proof/producers/tap-adapter.d.ts +10 -0
  329. package/dist/proof/producers/tap-adapter.d.ts.map +1 -0
  330. package/dist/proof/producers/tap-adapter.js +200 -0
  331. package/dist/proof/receipt-outcome.d.ts +2 -0
  332. package/dist/proof/receipt-outcome.d.ts.map +1 -0
  333. package/dist/proof/receipt-outcome.js +1 -0
  334. package/dist/public/branch-resolver.d.ts +1 -0
  335. package/dist/public/branch-resolver.d.ts.map +1 -1
  336. package/dist/public/branch-resolver.js +1 -0
  337. package/dist/public/check-types.d.ts +2 -2
  338. package/dist/public/check-types.d.ts.map +1 -1
  339. package/dist/public/check-types.js +16 -16
  340. package/dist/public/diagnostic-usage.d.ts.map +1 -1
  341. package/dist/public/diagnostic-usage.js +74 -6
  342. package/dist/public/distribution-parity.d.ts +7 -1
  343. package/dist/public/distribution-parity.d.ts.map +1 -1
  344. package/dist/public/distribution-parity.js +15 -9
  345. package/dist/public/ignore-policy.d.ts.map +1 -1
  346. package/dist/public/ignore-policy.js +16 -4
  347. package/dist/public/impact/coverage-depth-quality.d.ts +7 -1
  348. package/dist/public/impact/coverage-depth-quality.d.ts.map +1 -1
  349. package/dist/public/impact/coverage-depth-quality.js +22 -4
  350. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  351. package/dist/public/impact/diagnostics.js +2 -2
  352. package/dist/public/impact/diff-meaning.d.ts +1 -0
  353. package/dist/public/impact/diff-meaning.d.ts.map +1 -1
  354. package/dist/public/impact/diff-meaning.js +5 -2
  355. package/dist/public/impact/full-kb-quality.d.ts +7 -2
  356. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  357. package/dist/public/impact/full-kb-quality.js +364 -39
  358. package/dist/public/impact/manifest.d.ts.map +1 -1
  359. package/dist/public/impact/manifest.js +2 -5
  360. package/dist/public/operational-artifacts.d.ts.map +1 -1
  361. package/dist/public/operational-artifacts.js +7 -1
  362. package/dist/public/operations/catalog.d.ts +900 -34
  363. package/dist/public/operations/catalog.d.ts.map +1 -1
  364. package/dist/public/operations/catalog.js +130 -6
  365. package/dist/public/operations/check-executor.d.ts +2 -2
  366. package/dist/public/operations/check-executor.d.ts.map +1 -1
  367. package/dist/public/operations/check-executor.js +68 -13
  368. package/dist/public/operations/check-format-shared.d.ts +3 -0
  369. package/dist/public/operations/check-format-shared.d.ts.map +1 -1
  370. package/dist/public/operations/check-format-shared.js +3 -0
  371. package/dist/public/operations/check-helpers.d.ts +27 -2
  372. package/dist/public/operations/check-helpers.d.ts.map +1 -1
  373. package/dist/public/operations/check-helpers.js +62 -26
  374. package/dist/public/operations/contracts.d.ts +18 -0
  375. package/dist/public/operations/contracts.d.ts.map +1 -0
  376. package/dist/public/operations/contracts.js +334 -0
  377. package/dist/public/operations/discovery-entities.d.ts +3 -0
  378. package/dist/public/operations/discovery-entities.d.ts.map +1 -1
  379. package/dist/public/operations/discovery-entities.js +4 -0
  380. package/dist/public/operations/discovery-executors.d.ts +43 -7
  381. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  382. package/dist/public/operations/discovery-executors.js +216 -13
  383. package/dist/public/operations/index.d.ts +9 -4
  384. package/dist/public/operations/index.d.ts.map +1 -1
  385. package/dist/public/operations/index.js +8 -3
  386. package/dist/public/operations/migration-plan.d.ts +102 -0
  387. package/dist/public/operations/migration-plan.d.ts.map +1 -0
  388. package/dist/public/operations/migration-plan.js +539 -0
  389. package/dist/public/operations/node-ports.d.ts.map +1 -1
  390. package/dist/public/operations/node-ports.js +71 -11
  391. package/dist/public/operations/prolog-json.d.ts +14 -0
  392. package/dist/public/operations/prolog-json.d.ts.map +1 -1
  393. package/dist/public/operations/prolog-json.js +44 -5
  394. package/dist/public/operations/repair-plan.d.ts +3 -3
  395. package/dist/public/operations/repair-plan.d.ts.map +1 -1
  396. package/dist/public/operations/repair-plan.js +49 -18
  397. package/dist/public/operations/result-envelope.d.ts +14 -0
  398. package/dist/public/operations/result-envelope.d.ts.map +1 -0
  399. package/dist/public/operations/result-envelope.js +106 -0
  400. package/dist/public/operations/runtime-types.d.ts +102 -7
  401. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  402. package/dist/public/operations/source-relationship-parity.d.ts +13 -0
  403. package/dist/public/operations/source-relationship-parity.d.ts.map +1 -0
  404. package/dist/public/operations/source-relationship-parity.js +162 -0
  405. package/dist/public/operations/specs/{autopilot.d.ts → bootstrap.d.ts} +9 -9
  406. package/dist/public/operations/specs/bootstrap.d.ts.map +1 -0
  407. package/dist/public/operations/specs/{autopilot.js → bootstrap.js} +8 -7
  408. package/dist/public/operations/specs/check-rules.generated.d.ts +5 -0
  409. package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -0
  410. package/dist/public/operations/specs/check-rules.generated.js +34 -0
  411. package/dist/public/operations/specs/check.d.ts +9 -4
  412. package/dist/public/operations/specs/check.d.ts.map +1 -1
  413. package/dist/public/operations/specs/check.js +10 -21
  414. package/dist/public/operations/specs/discovery.d.ts +87 -3
  415. package/dist/public/operations/specs/discovery.d.ts.map +1 -1
  416. package/dist/public/operations/specs/discovery.js +53 -3
  417. package/dist/public/operations/specs/modeling.d.ts +3 -3
  418. package/dist/public/operations/specs/modeling.js +3 -3
  419. package/dist/public/operations/specs/mutation-schemas.d.ts +251 -14
  420. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  421. package/dist/public/operations/specs/mutation-schemas.js +16 -6
  422. package/dist/public/operations/specs/mutation.d.ts +42 -2
  423. package/dist/public/operations/specs/mutation.d.ts.map +1 -1
  424. package/dist/public/operations/specs/mutation.js +26 -2
  425. package/dist/public/operations/specs/planning.d.ts +279 -0
  426. package/dist/public/operations/specs/planning.d.ts.map +1 -0
  427. package/dist/public/operations/specs/planning.js +197 -0
  428. package/dist/public/operations/specs/proof.d.ts +212 -0
  429. package/dist/public/operations/specs/proof.d.ts.map +1 -0
  430. package/dist/public/operations/specs/proof.js +30 -0
  431. package/dist/public/operations/specs/reporting.d.ts +23 -1
  432. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  433. package/dist/public/operations/specs/reporting.js +156 -11
  434. package/dist/public/operations/specs/upsert.d.ts +265 -14
  435. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  436. package/dist/public/operations/specs/upsert.js +9 -0
  437. package/dist/public/operations/symbol-repair-plan.d.ts +22 -0
  438. package/dist/public/operations/symbol-repair-plan.d.ts.map +1 -0
  439. package/dist/public/operations/symbol-repair-plan.js +238 -0
  440. package/dist/public/operations/types.d.ts +52 -1
  441. package/dist/public/operations/types.d.ts.map +1 -1
  442. package/dist/public/proof-fingerprint.d.ts +54 -0
  443. package/dist/public/proof-fingerprint.d.ts.map +1 -0
  444. package/dist/public/proof-fingerprint.js +141 -0
  445. package/dist/public/proof-protocol.d.ts +354 -0
  446. package/dist/public/proof-protocol.d.ts.map +1 -0
  447. package/dist/public/proof-protocol.js +454 -0
  448. package/dist/public/proof-receipt.d.ts +279 -0
  449. package/dist/public/proof-receipt.d.ts.map +1 -0
  450. package/dist/public/proof-receipt.js +377 -0
  451. package/dist/public/schemas/entity.d.ts.map +1 -1
  452. package/dist/public/schemas/entity.js +22 -6
  453. package/dist/public/skills/kibi-bootstrap/SKILL.md +58 -0
  454. package/dist/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  455. package/dist/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  456. package/dist/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  457. package/dist/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  458. package/dist/public/skills/kibi-freshness/SKILL.md +39 -9
  459. package/dist/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  460. package/dist/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  461. package/dist/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  462. package/dist/public/skills/kibi-traceability/SKILL.md +47 -47
  463. package/dist/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  464. package/dist/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  465. package/dist/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  466. package/dist/public/skills/kibi-traceability/resources/traceability.md +8 -0
  467. package/dist/public/skills/kibi-usage/SKILL.md +136 -231
  468. package/dist/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  469. package/dist/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  470. package/dist/public/skills/kibi-usage/resources/operation-access.md +36 -38
  471. package/dist/public/skills/kibi-usage/resources/proof.md +105 -0
  472. package/dist/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  473. package/dist/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  474. package/dist/public/skills/kibi-usage/resources/workflows.md +57 -4
  475. package/dist/public/symbol-granularity.d.ts +3 -14
  476. package/dist/public/symbol-granularity.d.ts.map +1 -1
  477. package/dist/public/symbol-granularity.generated.d.ts +16 -0
  478. package/dist/public/symbol-granularity.generated.d.ts.map +1 -0
  479. package/dist/public/symbol-granularity.generated.js +20 -0
  480. package/dist/public/symbol-granularity.js +6 -46
  481. package/dist/public/telemetry-acceptance.d.ts +3 -70
  482. package/dist/public/telemetry-acceptance.d.ts.map +1 -1
  483. package/dist/public/telemetry-acceptance.js +11 -2
  484. package/dist/public/telemetry-remediation.js +1 -1
  485. package/dist/relationships/shards.d.ts +16 -0
  486. package/dist/relationships/shards.d.ts.map +1 -1
  487. package/dist/relationships/shards.js +87 -2
  488. package/dist/report/brand.d.ts +19 -0
  489. package/dist/report/brand.d.ts.map +1 -0
  490. package/dist/report/brand.js +112 -0
  491. package/dist/report/html-report.css +282 -0
  492. package/dist/report/html-report.d.ts +21 -0
  493. package/dist/report/html-report.d.ts.map +1 -0
  494. package/dist/report/html-report.js +700 -0
  495. package/dist/report/relative-time.d.ts +4 -0
  496. package/dist/report/relative-time.d.ts.map +1 -0
  497. package/dist/report/relative-time.js +46 -0
  498. package/dist/report/report-view.d.ts +17 -0
  499. package/dist/report/report-view.d.ts.map +1 -0
  500. package/dist/report/report-view.js +33 -0
  501. package/dist/report/repository.d.ts +35 -0
  502. package/dist/report/repository.d.ts.map +1 -0
  503. package/dist/report/repository.js +151 -0
  504. package/dist/runtime/cli-runtime.d.ts +2 -0
  505. package/dist/runtime/cli-runtime.d.ts.map +1 -1
  506. package/dist/runtime/cli-runtime.js +90 -23
  507. package/dist/schemas/entity.schema.json +1254 -239
  508. package/dist/search-ranking.d.ts +1 -0
  509. package/dist/search-ranking.d.ts.map +1 -1
  510. package/dist/search-ranking.js +3 -0
  511. package/dist/traceability/evidence-model.d.ts +30 -2
  512. package/dist/traceability/evidence-model.d.ts.map +1 -1
  513. package/dist/traceability/evidence-model.js +2 -2
  514. package/dist/traceability/git-staged.d.ts +20 -0
  515. package/dist/traceability/git-staged.d.ts.map +1 -1
  516. package/dist/traceability/git-staged.js +156 -37
  517. package/dist/traceability/markdown-validate.d.ts.map +1 -1
  518. package/dist/traceability/markdown-validate.js +12 -7
  519. package/dist/traceability/staged-diagnostics.d.ts +7 -0
  520. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  521. package/dist/traceability/staged-diagnostics.js +78 -7
  522. package/dist/traceability/staged-file-coverage.d.ts +33 -0
  523. package/dist/traceability/staged-file-coverage.d.ts.map +1 -0
  524. package/dist/traceability/staged-file-coverage.js +284 -0
  525. package/dist/traceability/staged-impact-contract.d.ts +3 -3
  526. package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
  527. package/dist/traceability/staged-impact-contract.js +12 -40
  528. package/dist/traceability/staged-symbols-manifest.d.ts +13 -0
  529. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  530. package/dist/traceability/staged-symbols-manifest.js +142 -26
  531. package/dist/traceability/symbol-extract.d.ts +5 -0
  532. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  533. package/dist/traceability/symbol-extract.js +1 -1
  534. package/dist/traceability/temp-kb.d.ts +2 -0
  535. package/dist/traceability/temp-kb.d.ts.map +1 -1
  536. package/dist/traceability/temp-kb.js +14 -2
  537. package/dist/types/entities.d.ts +5 -0
  538. package/dist/types/entities.d.ts.map +1 -1
  539. package/dist/utils/branch-resolver.d.ts +25 -10
  540. package/dist/utils/branch-resolver.d.ts.map +1 -1
  541. package/dist/utils/branch-resolver.js +124 -38
  542. package/dist/utils/branch-store-locator.d.ts +23 -0
  543. package/dist/utils/branch-store-locator.d.ts.map +1 -0
  544. package/dist/utils/branch-store-locator.js +90 -0
  545. package/dist/utils/branch-store.d.ts +21 -0
  546. package/dist/utils/branch-store.d.ts.map +1 -0
  547. package/dist/utils/branch-store.js +157 -0
  548. package/dist/utils/config.d.ts +39 -37
  549. package/dist/utils/config.d.ts.map +1 -1
  550. package/dist/utils/config.js +107 -119
  551. package/dist/utils/kb-manifest.d.ts +35 -0
  552. package/dist/utils/kb-manifest.d.ts.map +1 -0
  553. package/dist/utils/kb-manifest.js +154 -0
  554. package/dist/utils/kb-paths.d.ts +54 -0
  555. package/dist/utils/kb-paths.d.ts.map +1 -0
  556. package/dist/utils/kb-paths.js +125 -0
  557. package/dist/utils/manifest-paths.d.ts +4 -4
  558. package/dist/utils/manifest-paths.d.ts.map +1 -1
  559. package/dist/utils/manifest-paths.js +8 -56
  560. package/dist/utils/rule-registry.d.ts +42 -24
  561. package/dist/utils/rule-registry.d.ts.map +1 -1
  562. package/dist/utils/rule-registry.generated.d.ts +97 -0
  563. package/dist/utils/rule-registry.generated.d.ts.map +1 -0
  564. package/dist/utils/rule-registry.generated.js +125 -0
  565. package/dist/utils/rule-registry.js +52 -148
  566. package/dist/utils/schema-version.d.ts +5 -5
  567. package/dist/utils/schema-version.d.ts.map +1 -1
  568. package/dist/utils/schema-version.js +26 -6
  569. package/dist/utils/strict-modeling.d.ts +1 -4
  570. package/dist/utils/strict-modeling.d.ts.map +1 -1
  571. package/dist/utils/strict-modeling.js +8 -9
  572. package/package.json +47 -11
  573. package/schema/config.json +2 -2
  574. package/schema/manifest.json +26 -0
  575. package/src/public/branch-resolver.ts +1 -0
  576. package/src/public/check-types.ts +22 -19
  577. package/src/public/diagnostic-usage.ts +84 -6
  578. package/src/public/distribution-parity.ts +17 -9
  579. package/src/public/ignore-policy.ts +16 -10
  580. package/src/public/impact/coverage-depth-quality.ts +37 -1
  581. package/src/public/impact/diagnostics.ts +2 -1
  582. package/src/public/impact/diff-meaning.ts +11 -4
  583. package/src/public/impact/full-kb-quality.ts +545 -41
  584. package/src/public/impact/manifest.ts +2 -4
  585. package/src/public/operational-artifacts.ts +9 -1
  586. package/src/public/operations/catalog.ts +153 -10
  587. package/src/public/operations/check-executor.ts +98 -15
  588. package/src/public/operations/check-format-shared.ts +6 -0
  589. package/src/public/operations/check-helpers.ts +74 -35
  590. package/src/public/operations/contracts.ts +382 -0
  591. package/src/public/operations/discovery-entities.ts +7 -0
  592. package/src/public/operations/discovery-executors.ts +315 -25
  593. package/src/public/operations/index.ts +9 -4
  594. package/src/public/operations/migration-plan.ts +747 -0
  595. package/src/public/operations/node-ports.ts +87 -13
  596. package/src/public/operations/prolog-json.ts +60 -5
  597. package/src/public/operations/repair-plan.ts +60 -22
  598. package/src/public/operations/result-envelope.ts +141 -0
  599. package/src/public/operations/runtime-types.ts +96 -5
  600. package/src/public/operations/source-relationship-parity.ts +226 -0
  601. package/src/public/operations/specs/{autopilot.ts → bootstrap.ts} +17 -16
  602. package/src/public/operations/specs/check-rules.generated.ts +37 -0
  603. package/src/public/operations/specs/check.ts +14 -22
  604. package/src/public/operations/specs/discovery.ts +57 -3
  605. package/src/public/operations/specs/modeling.ts +3 -3
  606. package/src/public/operations/specs/mutation-schemas.ts +24 -6
  607. package/src/public/operations/specs/mutation.ts +27 -2
  608. package/src/public/operations/specs/planning.ts +241 -0
  609. package/src/public/operations/specs/proof.ts +43 -0
  610. package/src/public/operations/specs/reporting.ts +193 -12
  611. package/src/public/operations/specs/upsert.ts +10 -0
  612. package/src/public/operations/symbol-repair-plan.ts +324 -0
  613. package/src/public/operations/types.ts +62 -1
  614. package/src/public/proof-fingerprint.ts +216 -0
  615. package/src/public/proof-protocol-types.d.ts +96 -0
  616. package/src/public/proof-protocol.ts +589 -0
  617. package/src/public/proof-receipt.ts +499 -0
  618. package/src/public/schemas/entity.ts +27 -6
  619. package/src/public/skills/kibi-bootstrap/SKILL.md +58 -0
  620. package/src/public/skills/kibi-bootstrap/resources/bootstrap.md +11 -0
  621. package/src/public/skills/kibi-bootstrap/resources/branch-lifecycle.md +7 -0
  622. package/src/public/skills/kibi-bootstrap/resources/operation-access.md +5 -0
  623. package/src/public/skills/kibi-bootstrap/resources/source-authoring.md +8 -0
  624. package/src/public/skills/kibi-freshness/SKILL.md +39 -9
  625. package/src/public/skills/kibi-freshness/resources/branch-lifecycle.md +7 -0
  626. package/src/public/skills/kibi-freshness/resources/operation-access.md +6 -0
  627. package/src/public/skills/kibi-freshness/resources/source-authoring.md +7 -0
  628. package/src/public/skills/kibi-traceability/SKILL.md +47 -47
  629. package/src/public/skills/kibi-traceability/resources/branch-lifecycle.md +7 -0
  630. package/src/public/skills/kibi-traceability/resources/operation-access.md +5 -0
  631. package/src/public/skills/kibi-traceability/resources/source-authoring.md +6 -0
  632. package/src/public/skills/kibi-traceability/resources/traceability.md +8 -0
  633. package/src/public/skills/kibi-usage/SKILL.md +136 -231
  634. package/src/public/skills/kibi-usage/resources/branch-lifecycle.md +31 -0
  635. package/src/public/skills/kibi-usage/resources/kb-improvement.md +38 -0
  636. package/src/public/skills/kibi-usage/resources/operation-access.md +36 -38
  637. package/src/public/skills/kibi-usage/resources/proof.md +105 -0
  638. package/src/public/skills/kibi-usage/resources/relationship-directions.md +3 -3
  639. package/src/public/skills/kibi-usage/resources/source-authoring.md +31 -0
  640. package/src/public/skills/kibi-usage/resources/workflows.md +57 -4
  641. package/src/public/symbol-granularity.generated.ts +41 -0
  642. package/src/public/symbol-granularity.ts +35 -59
  643. package/src/public/telemetry-acceptance-types.d.ts +98 -0
  644. package/src/public/telemetry-acceptance.ts +30 -93
  645. package/src/public/telemetry-remediation.ts +1 -1
  646. package/src/schemas/entity.schema.json +1254 -239
  647. package/templates/github/kibi-badge.yml +86 -0
  648. package/templates/github/kibi-report.yml +84 -0
  649. package/dist/operations/autopilot/activation.d.ts +0 -4
  650. package/dist/operations/autopilot/activation.d.ts.map +0 -1
  651. package/dist/operations/autopilot/candidates.d.ts +0 -4
  652. package/dist/operations/autopilot/discovery.d.ts.map +0 -1
  653. package/dist/operations/autopilot/generate.d.ts +0 -8
  654. package/dist/operations/autopilot/generate.d.ts.map +0 -1
  655. package/dist/operations/autopilot/generate.js +0 -112
  656. package/dist/operations/autopilot/guidance.d.ts.map +0 -1
  657. package/dist/operations/autopilot/presentation.d.ts +0 -13
  658. package/dist/operations/autopilot/presentation.d.ts.map +0 -1
  659. package/dist/operations/autopilot/presentation.js +0 -91
  660. package/dist/operations/autopilot/types.d.ts.map +0 -1
  661. package/dist/operations/autopilot/types.js +0 -8
  662. package/dist/public/operations/specs/autopilot.d.ts.map +0 -1
  663. package/dist/public/skills/init-kibi/SKILL.md +0 -62
  664. package/dist/public/verification-receipt.d.ts +0 -75
  665. package/dist/public/verification-receipt.d.ts.map +0 -1
  666. package/dist/public/verification-receipt.js +0 -129
  667. package/src/public/skills/init-kibi/SKILL.md +0 -62
  668. package/src/public/verification-receipt.ts +0 -170
  669. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.d.ts +0 -0
  670. /package/dist/operations/{autopilot → bootstrap}/candidate-helpers.js +0 -0
  671. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.d.ts +0 -0
  672. /package/dist/operations/{autopilot → bootstrap}/requirement-claims.js +0 -0
@@ -15,14 +15,25 @@
15
15
  * You should have received a copy of the GNU Affero General Public License
16
16
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
17
  */
18
- import { execSync as rawExecSync } from "node:child_process";
19
- import { copyFileSync, existsSync, mkdirSync, readdirSync, statSync, } from "node:fs";
18
+ import { execFileSync as rawExecFileSync, execSync as rawExecSync, } from "node:child_process";
19
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, } from "node:fs";
20
20
  import * as path from "node:path";
21
21
  import { getBranchOverride } from "../env.js";
22
- const defaultDeps = { execSync: rawExecSync };
22
+ import { branchStoreManifestMatches, branchStorePath, legacyBranchStorePath, } from "./branch-store-locator.js";
23
+ export function unreadableMigrationJournalError(journalName) {
24
+ return {
25
+ error: `Unreadable branch migration journal '${journalName}' blocks attachment; recover it explicitly before continuing.`,
26
+ code: "MIGRATION_RECOVERY_REQUIRED",
27
+ };
28
+ }
29
+ const defaultDeps = {
30
+ execSync: rawExecSync,
31
+ execFileSync: rawExecFileSync,
32
+ };
23
33
  export function _setBranchResolverDepsForTests(deps) {
24
34
  // implements REQ-008
25
35
  defaultDeps.execSync = deps.execSync ?? rawExecSync;
36
+ defaultDeps.execFileSync = deps.execFileSync ?? rawExecFileSync;
26
37
  }
27
38
  // Files to exclude when copying branch snapshots (volatile artifacts)
28
39
  const VOLATILE_ARTIFACTS = new Set([
@@ -96,9 +107,9 @@ export function resolveActiveBranch(workspaceRoot = process.cwd()) {
96
107
  code: "UNKNOWN_ERROR",
97
108
  };
98
109
  }
99
- // Normalize 'master' to 'main' for consistency
100
- const normalizedBranch = branch === "master" ? "main" : branch;
101
- return { branch: normalizedBranch };
110
+ // Git branch names are the branch identity. Do not normalize master,
111
+ // main, or any other branch name: the KB is branch-local state.
112
+ return { branch };
102
113
  }
103
114
  catch (error) {
104
115
  // Try alternative: git rev-parse --abbrev-ref HEAD
@@ -129,9 +140,7 @@ export function resolveActiveBranch(workspaceRoot = process.cwd()) {
129
140
  code: "UNKNOWN_ERROR",
130
141
  };
131
142
  }
132
- // Normalize 'master' to 'main' for consistency
133
- const normalizedBranch = branch === "master" ? "main" : branch;
134
- return { branch: normalizedBranch };
143
+ return { branch };
135
144
  }
136
145
  catch {
137
146
  // Determine specific error type
@@ -156,6 +165,71 @@ export function resolveActiveBranch(workspaceRoot = process.cwd()) {
156
165
  }
157
166
  }
158
167
  }
168
+ /**
169
+ * Resolve the storage namespace without treating any branch as canonical.
170
+ * Literal branch-named stores are read-compatible legacy storage only. The
171
+ * active Git identity always remains the exact branch name.
172
+ */
173
+ export function resolveBranchAttachment(workspaceRoot = process.cwd()) {
174
+ const active = resolveActiveBranch(workspaceRoot);
175
+ if ("error" in active)
176
+ return active;
177
+ const explicit = Boolean(getBranchOverride());
178
+ const migrationRoot = path.join(path.resolve(workspaceRoot), ".kb", "recovery", "branch-migrations");
179
+ if (existsSync(migrationRoot)) {
180
+ for (const journalName of readdirSync(migrationRoot)) {
181
+ if (!journalName.endsWith(".json"))
182
+ continue;
183
+ try {
184
+ const journal = JSON.parse(readFileSync(path.join(migrationRoot, journalName), "utf8"));
185
+ if (journal.state !== "committed" && journal.state !== "rolled_back") {
186
+ const id = journalName.slice(0, -5);
187
+ return {
188
+ error: `Incomplete branch migration journal '${id}' blocks attachment. Preview recovery with 'kibi branch migrate --recover-journal ${id}', then apply that exact recovery action.`,
189
+ code: "MIGRATION_RECOVERY_REQUIRED",
190
+ };
191
+ }
192
+ }
193
+ catch {
194
+ return unreadableMigrationJournalError(journalName);
195
+ }
196
+ }
197
+ }
198
+ const exactPath = branchStorePath(workspaceRoot, active.branch);
199
+ const legacyPath = legacyBranchStorePath(workspaceRoot, active.branch);
200
+ if (existsSync(exactPath) && existsSync(legacyPath)) {
201
+ return {
202
+ error: `Ambiguous branch storage: both the hashed store ${exactPath} and legacy store ${legacyPath} exist for '${active.branch}'. Preview an explicit migration before continuing.`,
203
+ code: "AMBIGUOUS_ATTACHMENT",
204
+ };
205
+ }
206
+ if (existsSync(legacyPath)) {
207
+ return {
208
+ gitBranch: active.branch,
209
+ kbBranch: active.branch,
210
+ storePath: legacyPath,
211
+ kind: "legacy_compat",
212
+ migrationRequired: true,
213
+ };
214
+ }
215
+ // An exact hash directory is an identity fence, not merely a convenient
216
+ // pathname. A missing, malformed, or mismatched manifest must never be
217
+ // silently attached to the active Git ref.
218
+ if (existsSync(exactPath) &&
219
+ !branchStoreManifestMatches(exactPath, active.branch)) {
220
+ return {
221
+ error: `Branch store identity manifest mismatch at ${exactPath}; refusing to attach it to '${active.branch}'.`,
222
+ code: "AMBIGUOUS_ATTACHMENT",
223
+ };
224
+ }
225
+ return {
226
+ gitBranch: active.branch,
227
+ kbBranch: active.branch,
228
+ storePath: exactPath,
229
+ kind: explicit ? "explicit_override" : "exact",
230
+ migrationRequired: false,
231
+ };
232
+ }
159
233
  /**
160
234
  * Check if the repository is in detached HEAD state.
161
235
  *
@@ -203,22 +277,44 @@ export function getBranchDiagnostic(branch, error) {
203
277
  export function isValidBranchName(name) {
204
278
  if (!name || name.length === 0 || name.length > 255)
205
279
  return false;
280
+ const hasControlCharacter = [...name].some((character) => {
281
+ const codePoint = character.codePointAt(0) ?? 0;
282
+ return codePoint <= 0x20 || codePoint === 0x7f;
283
+ });
206
284
  // Reject path traversal attempts
207
285
  if (name.includes("..") || path.isAbsolute(name) || name.startsWith("/")) {
208
286
  return false;
209
287
  }
210
- // Only allow safe characters
211
- if (!/^[a-zA-Z0-9._\-/+]+$/.test(name))
212
- return false;
213
288
  // Reject problematic patterns
214
289
  if (name.includes("//") ||
215
290
  name.endsWith("/") ||
216
291
  name.endsWith(".") ||
217
292
  name.includes("\\") ||
218
- name.startsWith("-")) {
293
+ name.startsWith("-") ||
294
+ name.includes("@{") ||
295
+ name.includes("..") ||
296
+ hasControlCharacter ||
297
+ /[~^:?*\[\]]/.test(name)) {
298
+ return false;
299
+ }
300
+ // Git rejects a ref component that starts with a dot or ends in `.lock`.
301
+ // Keep this check local (rather than shelling out for every validation) so
302
+ // env/config validation remains deterministic while matching the relevant
303
+ // `git check-ref-format --branch` rules.
304
+ const components = name.split("/");
305
+ if (components.some((component) => component.startsWith(".") || component.endsWith(".lock"))) {
306
+ return false;
307
+ }
308
+ try {
309
+ defaultDeps.execFileSync("git", ["check-ref-format", "--branch", name], {
310
+ stdio: ["ignore", "ignore", "ignore"],
311
+ timeout: 5000,
312
+ });
313
+ return true;
314
+ }
315
+ catch {
219
316
  return false;
220
317
  }
221
- return true;
222
318
  }
223
319
  /**
224
320
  * Copy a clean snapshot from source branch to target branch, excluding
@@ -275,37 +371,25 @@ export function getVolatileArtifactPatterns() {
275
371
  ];
276
372
  }
277
373
  /**
278
- * @deprecated defaultBranch is deprecated. Branch lifecycle now follows git naturally
279
- * without requiring a configured default. This function is kept for backward compatibility
280
- * but should not be used for new code.
374
+ * @deprecated Branch lifecycle follows Git naturally. This helper remains for
375
+ * callers that need informational remote-default discovery, but it never
376
+ * invents a `main` branch.
281
377
  *
282
- * Resolve the default branch using the following precedence:
283
- * 1. Configured defaultBranch from config (if set and valid)
284
- * 2. Git remote HEAD (refs/remotes/origin/HEAD)
285
- * 3. Fallback to "main"
378
+ * Resolve a remote default branch for informational display only. It must not
379
+ * be used to attach a KB or initialize a branch. Legacy migration callers must
380
+ * supply explicit old and new identities.
286
381
  *
287
382
  * Unlike resolveActiveBranch, this does NOT normalize branch names.
288
383
  * Configured names are returned verbatim.
289
384
  *
290
385
  * @param cwd - The working directory to resolve the default branch
291
- * @param config - Optional config with defaultBranch
386
+ * @param _config - Retained for source compatibility; ignored.
292
387
  * @returns BranchResolutionResult with either the branch name or an error
293
388
  */
294
- export function resolveDefaultBranch(cwd = process.cwd(), config) {
389
+ export function resolveDefaultBranch(cwd = process.cwd(), _config) {
295
390
  // implements REQ-012
296
- // 1. Check config.defaultBranch first (highest precedence)
297
- const configuredBranch = config?.defaultBranch?.trim();
298
- if (configuredBranch) {
299
- if (!isValidBranchName(configuredBranch)) {
300
- return {
301
- error: `Invalid defaultBranch configured in .kb/config.json: '${configuredBranch}'`,
302
- code: "INVALID_CONFIG",
303
- };
304
- }
305
- // Return configured branch verbatim (no normalization)
306
- return { branch: configuredBranch };
307
- }
308
- // 2. Try to get the remote default branch from origin/HEAD
391
+ // Try to get the remote default branch from origin/HEAD. This is only
392
+ // informational; attachment always follows the active Git branch.
309
393
  try {
310
394
  const remoteHead = defaultDeps
311
395
  .execSync("git symbolic-ref refs/remotes/origin/HEAD", {
@@ -327,6 +411,8 @@ export function resolveDefaultBranch(cwd = process.cwd(), config) {
327
411
  catch {
328
412
  // origin/HEAD doesn't exist or command failed, fall through to fallback
329
413
  }
330
- // 3. Final fallback to "main"
331
- return { branch: "main" };
414
+ return {
415
+ error: "No remote default branch is configured; provide explicit migration identities.",
416
+ code: "NO_DEFAULT_BRANCH",
417
+ };
332
418
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The compiled branch store is keyed by the exact Git ref rather than by a
3
+ * path derived from that ref. This keeps names such as `feature/auth` flat and
4
+ * makes the store safe to enumerate and garbage collect.
5
+ */
6
+ export declare const BRANCH_STORE_MANIFEST_VERSION: 1;
7
+ export type BranchStoreManifest = Readonly<{
8
+ version: typeof BRANCH_STORE_MANIFEST_VERSION;
9
+ branch: string;
10
+ key: string;
11
+ }>;
12
+ export declare function branchStoreKey(branch: string): string;
13
+ export declare function branchStoresRoot(workspaceRoot: string): string;
14
+ export declare function branchStorePath(workspaceRoot: string, branch: string): string;
15
+ export declare function branchStoreManifestPath(storePath: string): string;
16
+ export declare function expectedBranchStoreManifest(branch: string): BranchStoreManifest;
17
+ export declare function readBranchStoreManifest(storePath: string): BranchStoreManifest | null;
18
+ export declare function branchStoreManifestMatches(storePath: string, branch: string): boolean;
19
+ /** Create or verify the identity fence for a newly materialized store. */
20
+ export declare function ensureBranchStoreManifest(workspaceRoot: string, branch: string): string;
21
+ export declare function legacyBranchStorePath(workspaceRoot: string, branch: string): string;
22
+ export declare function isDirectory(pathname: string): boolean;
23
+ //# sourceMappingURL=branch-store-locator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-store-locator.d.ts","sourceRoot":"","sources":["../../src/utils/branch-store-locator.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,EAAG,CAAU,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,OAAO,EAAE,OAAO,6BAA6B,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CAAC;AAEH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,GACb,mBAAmB,CAMrB;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,GAChB,mBAAmB,GAAG,IAAI,CAsB5B;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAUT;AAED,0EAA0E;AAC1E,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,MAAM,CA6BR;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,MAAM,CAER;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMrD"}
@@ -0,0 +1,90 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from "node:fs";
3
+ import path from "node:path";
4
+ /**
5
+ * The compiled branch store is keyed by the exact Git ref rather than by a
6
+ * path derived from that ref. This keeps names such as `feature/auth` flat and
7
+ * makes the store safe to enumerate and garbage collect.
8
+ */
9
+ export const BRANCH_STORE_MANIFEST_VERSION = 1;
10
+ export function branchStoreKey(branch) {
11
+ return createHash("sha256").update(branch, "utf8").digest("hex");
12
+ }
13
+ export function branchStoresRoot(workspaceRoot) {
14
+ return path.join(path.resolve(workspaceRoot), ".kb", "branches");
15
+ }
16
+ export function branchStorePath(workspaceRoot, branch) {
17
+ return path.join(branchStoresRoot(workspaceRoot), branchStoreKey(branch));
18
+ }
19
+ export function branchStoreManifestPath(storePath) {
20
+ return path.join(storePath, "branch.json");
21
+ }
22
+ export function expectedBranchStoreManifest(branch) {
23
+ return {
24
+ version: BRANCH_STORE_MANIFEST_VERSION,
25
+ branch,
26
+ key: branchStoreKey(branch),
27
+ };
28
+ }
29
+ export function readBranchStoreManifest(storePath) {
30
+ const manifestPath = branchStoreManifestPath(storePath);
31
+ if (!existsSync(manifestPath))
32
+ return null;
33
+ try {
34
+ const parsed = JSON.parse(readFileSync(manifestPath, "utf8"));
35
+ if (parsed.version !== BRANCH_STORE_MANIFEST_VERSION ||
36
+ typeof parsed.branch !== "string" ||
37
+ typeof parsed.key !== "string") {
38
+ return null;
39
+ }
40
+ return {
41
+ version: BRANCH_STORE_MANIFEST_VERSION,
42
+ branch: parsed.branch,
43
+ key: parsed.key,
44
+ };
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
50
+ export function branchStoreManifestMatches(storePath, branch) {
51
+ const manifest = readBranchStoreManifest(storePath);
52
+ const expected = expectedBranchStoreManifest(branch);
53
+ return (manifest !== null &&
54
+ manifest.version === expected.version &&
55
+ manifest.branch === expected.branch &&
56
+ manifest.key === expected.key &&
57
+ path.basename(storePath) === expected.key);
58
+ }
59
+ /** Create or verify the identity fence for a newly materialized store. */
60
+ export function ensureBranchStoreManifest(workspaceRoot, branch) {
61
+ const storePath = branchStorePath(workspaceRoot, branch);
62
+ mkdirSync(storePath, { recursive: true });
63
+ const manifestPath = branchStoreManifestPath(storePath);
64
+ const existing = readBranchStoreManifest(storePath);
65
+ if (existing !== null && !branchStoreManifestMatches(storePath, branch)) {
66
+ throw new Error(`Branch store identity mismatch at ${storePath}; refusing to attach it to '${branch}'.`);
67
+ }
68
+ if (existing === null) {
69
+ if (existsSync(manifestPath)) {
70
+ throw new Error(`Branch store manifest is invalid at ${manifestPath}; refusing to overwrite it.`);
71
+ }
72
+ const entries = readdirSync(storePath);
73
+ if (entries.length > 0) {
74
+ throw new Error(`Branch store at ${storePath} has compiled data but no valid identity manifest; refusing to adopt it.`);
75
+ }
76
+ writeFileSync(manifestPath, `${JSON.stringify(expectedBranchStoreManifest(branch), null, 2)}\n`, { mode: 0o600 });
77
+ }
78
+ return storePath;
79
+ }
80
+ export function legacyBranchStorePath(workspaceRoot, branch) {
81
+ return path.join(branchStoresRoot(workspaceRoot), branch);
82
+ }
83
+ export function isDirectory(pathname) {
84
+ try {
85
+ return statSync(pathname).isDirectory();
86
+ }
87
+ catch {
88
+ return false;
89
+ }
90
+ }
@@ -0,0 +1,21 @@
1
+ export type BranchStoreState = "healthy" | "missing" | "incomplete" | "unreadable";
2
+ export type BranchStoreInspection = Readonly<{
3
+ state: BranchStoreState;
4
+ path: string;
5
+ errorCode?: string;
6
+ detail?: string;
7
+ recoveryRequired: boolean;
8
+ }>;
9
+ /**
10
+ * Performs only filesystem checks. It deliberately never starts the engine or
11
+ * attaches Prolog, so callers can still explain a broken branch store.
12
+ */
13
+ export declare function inspectBranchStore(workspaceRoot: string, branch: string): BranchStoreInspection;
14
+ /**
15
+ * Surface a stale branch-store lock journal: the recorded holder is
16
+ * provably dead (crashed engine, killed prove run). The next attach will
17
+ * auto-heal; the reason exists so operators see the state before it bites.
18
+ */
19
+ export declare function storeLockJournalReason(storePath: string): Record<string, unknown> | null;
20
+ export declare function branchStoreReason(inspection: BranchStoreInspection): Record<string, unknown> | null;
21
+ //# sourceMappingURL=branch-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-store.d.ts","sourceRoot":"","sources":["../../src/utils/branch-store.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,qBAAqB,CA0GvB;AAED;;;;GAIG;AAEH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAiBhC;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,qBAAqB,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWhC"}
@@ -0,0 +1,157 @@
1
+ /*
2
+ Kibi — repo-local, per-branch, queryable long-term memory for software projects
3
+ Copyright (C) 2026 Piotr Franczyk
4
+ */
5
+ import { existsSync, readFileSync, statSync } from "node:fs";
6
+ import * as path from "node:path";
7
+ import { classifyStoreLockHolder, readStoreLockOwner, } from "../prolog/store-lock.js";
8
+ import { branchStoreManifestMatches, branchStorePath, legacyBranchStorePath, } from "./branch-store-locator.js";
9
+ /**
10
+ * Performs only filesystem checks. It deliberately never starts the engine or
11
+ * attaches Prolog, so callers can still explain a broken branch store.
12
+ */
13
+ export function inspectBranchStore(workspaceRoot, branch) {
14
+ const storePath = branchStorePath(workspaceRoot, branch);
15
+ if (!existsSync(storePath)) {
16
+ const legacyPath = legacyBranchStorePath(workspaceRoot, branch);
17
+ if (existsSync(legacyPath)) {
18
+ return {
19
+ state: "incomplete",
20
+ path: legacyPath,
21
+ errorCode: "legacy_branch_store",
22
+ detail: "A literal branch-named store exists; preview and apply the explicit migration before writes.",
23
+ recoveryRequired: true,
24
+ };
25
+ }
26
+ return {
27
+ state: "missing",
28
+ path: storePath,
29
+ errorCode: "branch_store_missing",
30
+ detail: "The branch-local KB directory does not exist.",
31
+ recoveryRequired: false,
32
+ };
33
+ }
34
+ try {
35
+ if (!statSync(storePath).isDirectory()) {
36
+ return {
37
+ state: "unreadable",
38
+ path: storePath,
39
+ errorCode: "branch_store_not_directory",
40
+ detail: "The branch-local KB path is not a directory.",
41
+ recoveryRequired: true,
42
+ };
43
+ }
44
+ if (!branchStoreManifestMatches(storePath, branch)) {
45
+ return {
46
+ state: "unreadable",
47
+ path: storePath,
48
+ errorCode: "branch_store_manifest_mismatch",
49
+ detail: "The hashed branch store is missing a valid manifest for the exact Git branch.",
50
+ recoveryRequired: true,
51
+ };
52
+ }
53
+ const markerPath = path.join(storePath, "storage.json");
54
+ const rdfPath = path.join(storePath, "rdf");
55
+ const currentPath = path.join(storePath, "CURRENT");
56
+ const legacyPath = path.join(storePath, "kb.rdf");
57
+ if (existsSync(markerPath)) {
58
+ if (!existsSync(rdfPath) || !statSync(rdfPath).isDirectory()) {
59
+ return {
60
+ state: "incomplete",
61
+ path: storePath,
62
+ errorCode: "branch_store_missing_rdf",
63
+ detail: "The journaled store has no rdf generation directory.",
64
+ recoveryRequired: true,
65
+ };
66
+ }
67
+ if (!existsSync(currentPath)) {
68
+ return {
69
+ state: "incomplete",
70
+ path: storePath,
71
+ errorCode: "sync_metadata_missing",
72
+ detail: "The journaled store has no CURRENT generation pointer.",
73
+ recoveryRequired: true,
74
+ };
75
+ }
76
+ const current = readFileSync(currentPath, "utf8").trim();
77
+ if (!/^generation-[^:\s]+:\d+$/.test(current)) {
78
+ return {
79
+ state: "unreadable",
80
+ path: storePath,
81
+ errorCode: "branch_store_invalid_current",
82
+ detail: "The journaled store CURRENT pointer is malformed.",
83
+ recoveryRequired: true,
84
+ };
85
+ }
86
+ return { state: "healthy", path: storePath, recoveryRequired: false };
87
+ }
88
+ if (existsSync(legacyPath)) {
89
+ const legacy = readFileSync(legacyPath, "utf8");
90
+ if (!/<rdf:RDF(?:\s|>)/.test(legacy)) {
91
+ return {
92
+ state: "unreadable",
93
+ path: storePath,
94
+ errorCode: "branch_store_invalid_legacy_rdf",
95
+ detail: "The legacy kb.rdf file is not RDF/XML.",
96
+ recoveryRequired: true,
97
+ };
98
+ }
99
+ return { state: "healthy", path: storePath, recoveryRequired: false };
100
+ }
101
+ return {
102
+ state: "missing",
103
+ path: storePath,
104
+ errorCode: "sync_metadata_missing",
105
+ detail: "The branch KB has neither journal metadata nor legacy RDF.",
106
+ recoveryRequired: false,
107
+ };
108
+ }
109
+ catch (error) {
110
+ return {
111
+ state: "unreadable",
112
+ path: storePath,
113
+ errorCode: "branch_store_unreadable",
114
+ detail: error instanceof Error ? error.message : String(error),
115
+ recoveryRequired: true,
116
+ };
117
+ }
118
+ }
119
+ /**
120
+ * Surface a stale branch-store lock journal: the recorded holder is
121
+ * provably dead (crashed engine, killed prove run). The next attach will
122
+ * auto-heal; the reason exists so operators see the state before it bites.
123
+ */
124
+ // implements REQ-core-journaled-engine-persistence
125
+ export function storeLockJournalReason(storePath) {
126
+ const journal = readStoreLockOwner(storePath);
127
+ if (journal === null)
128
+ return null;
129
+ const owner = journal.owner;
130
+ // Same boot-id-aware classification as the janitor and the attach
131
+ // takeover, so all three surfaces reach the same verdict on a journal.
132
+ if (classifyStoreLockHolder(owner) !== "dead")
133
+ return null;
134
+ return {
135
+ code: "store_lock_stale",
136
+ path: journal.journalPath,
137
+ entityIds: [],
138
+ detail: `Branch store lock journal records holder pid ${owner.pid} for ${owner.workspaceRoot ?? "unknown"}, which is no longer running.`,
139
+ remediation: {
140
+ command_argv: ["kibi", "engine", "janitor", "--apply"],
141
+ applyRequired: false,
142
+ },
143
+ };
144
+ }
145
+ export function branchStoreReason(inspection) {
146
+ if (inspection.state === "healthy")
147
+ return null;
148
+ return {
149
+ code: inspection.errorCode ?? `branch_store_${inspection.state}`,
150
+ path: inspection.path,
151
+ entityIds: [],
152
+ detail: inspection.detail ?? "Branch store requires attention.",
153
+ remediation: inspection.recoveryRequired
154
+ ? { command_argv: ["kibi", "branch", "recover"], applyRequired: true }
155
+ : { command_argv: ["kibi", "branch", "ensure"], applyRequired: false },
156
+ };
157
+ }
@@ -1,8 +1,21 @@
1
- import { type ChecksConfig, type SymbolTraceabilityOptions } from "./rule-registry.js";
1
+ import { type KbEntityPaths } from "./kb-paths.js";
2
2
  /**
3
- * Configuration paths for entity documentation directories.
3
+ * Kibi no longer has a user-editable configuration file. Entity source
4
+ * locations live in the canonical `.kb/` namespace defined in `kb-paths.ts`,
5
+ * and check policy is owned by Kibi's rule registry. This module retains
6
+ * only the canonical accessors plus read-only recognition of the legacy
7
+ * `.kb/config.json` document for migration tooling.
4
8
  */
5
- export interface KbConfigPaths {
9
+ export type { KbEntityPaths };
10
+ /** Canonical entity paths; always the same, never merged with user input. */
11
+ export declare const DEFAULT_CONFIG_PATHS: KbEntityPaths;
12
+ /**
13
+ * Load the canonical entity paths. The result is constant: Kibi owns the
14
+ * layout and repositories cannot relocate knowledge lanes.
15
+ */
16
+ export declare function loadEntityPaths(_cwd?: string): KbEntityPaths;
17
+ /** Legacy `.kb/config.json` path document, kept only for migration input. */
18
+ export interface LegacyKbConfigPaths {
6
19
  requirements?: string;
7
20
  scenarios?: string;
8
21
  tests?: string;
@@ -12,47 +25,36 @@ export interface KbConfigPaths {
12
25
  facts?: string;
13
26
  symbols?: string;
14
27
  }
15
- /**
16
- * Shared configuration for Kibi.
17
- * Stored in .kb/config.json
18
- */
19
- export interface KbConfig {
20
- paths: KbConfigPaths;
28
+ /** Recognized legacy `.kb/config.json` fields (migration recognition only). */
29
+ export interface LegacyKbConfig {
30
+ paths?: LegacyKbConfigPaths;
31
+ /** Pre-manifest top-level symbols manifest override. */
32
+ symbolsManifest?: string;
21
33
  schemaVersion?: number | string;
22
34
  semanticAdvisorBackfill?: "pending" | "completed" | "not_applicable";
23
- /**
24
- * @deprecated defaultBranch is deprecated. Branch lifecycle now follows git naturally
25
- * without requiring a configured default. This field is ignored but kept for compatibility.
26
- */
35
+ checks?: unknown;
27
36
  defaultBranch?: string;
28
- checks?: ChecksConfig;
29
37
  }
30
- export type { ChecksConfig, SymbolTraceabilityOptions };
38
+ /** Whether a legacy `.kb/config.json` exists at the workspace root. */
39
+ export declare function legacyConfigExists(cwd: string): boolean;
31
40
  /**
32
- * Default configuration values for new repositories.
41
+ * Read a legacy `.kb/config.json` if one exists. Malformed JSON returns
42
+ * `kind: "malformed"` so migration can report actionable diagnostics
43
+ * instead of silently guessing paths.
33
44
  */
34
- export declare const DEFAULT_CONFIG: KbConfig & {
35
- $schema: string;
45
+ export declare function readLegacyKbConfig(cwd: string): {
46
+ kind: "none";
47
+ } | {
48
+ kind: "malformed";
49
+ error: string;
50
+ } | {
51
+ kind: "present";
52
+ config: LegacyKbConfig;
36
53
  };
37
54
  /**
38
- * Default paths used by sync command (backward compatible glob patterns).
39
- */
40
- export declare const DEFAULT_SYNC_PATHS: KbConfigPaths;
41
- /**
42
- * Load and parse the Kibi configuration from .kb/config.json.
43
- * Falls back to DEFAULT_CONFIG if the file doesn't exist or is invalid.
44
- *
45
- * @param cwd - The working directory to look for .kb/config.json
46
- * @returns The merged configuration (defaults + user config)
47
- */
48
- export declare function loadConfig(cwd?: string): KbConfig;
49
- /**
50
- * Load sync configuration with fallback to glob patterns.
51
- * This is used by sync.ts to maintain backward compatibility with
52
- * older config files that may use glob patterns.
53
- *
54
- * @param cwd - The working directory to look for .kb/config.json
55
- * @returns The merged configuration with sync-compatible paths
55
+ * Resolve the effective legacy entity paths for migration discovery:
56
+ * configured values win, then the historical `documentation/` defaults.
57
+ * Glob-bearing values are preserved so migration can strip them to roots.
56
58
  */
57
- export declare function loadSyncConfig(cwd?: string): KbConfig;
59
+ export declare function resolveLegacyEntityPaths(config: LegacyKbConfig | undefined): KbEntityPaths;
58
60
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,yBAAyB,EAC/B,MAAM,oBAAoB,CAAC;AAG5B;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,gBAAgB,CAAC;IACrE;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,YAAY,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;AAExD;;GAEG;AAEH,eAAO,MAAM,cAAc,EAAE,QAAQ,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAgBxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAUhC,CAAC;AA4BF;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,QAAQ,CAmChE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,QAAQ,CAmCpE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAoBA,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,eAAe,CAAC;AAEvB;;;;;;GAMG;AAEH,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,EAAE,aAAsC,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAsB,GAAG,aAAa,CAE3E;AAED,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,gBAAgB,CAAC;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAcD,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,GAET;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAqE9C;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,GAAG,SAAS,GACjC,aAAa,CAwBf"}