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
@@ -19,6 +19,7 @@ import * as crypto from "node:crypto";
19
19
  import * as fs from "node:fs";
20
20
  import * as path from "node:path";
21
21
  import { load as parseYAML } from "js-yaml";
22
+ import { parseDocument } from "yaml";
22
23
  /**
23
24
  * Gets the path to the relationships directory for a given KB root.
24
25
  */
@@ -132,7 +133,80 @@ export function writeShard(shardPath, records) {
132
133
  unique.push(record);
133
134
  }
134
135
  const yamlContent = serializeToYAML(unique);
135
- fs.writeFileSync(shardPath, yamlContent, "utf8");
136
+ atomicWriteText(shardPath, yamlContent);
137
+ }
138
+ /**
139
+ * Publish one canonical shard replacement atomically. Relationship shards are
140
+ * authored source, so a torn write must never leave a half-valid YAML file
141
+ * for the next sync or Git operation.
142
+ */
143
+ function atomicWriteText(targetPath, body) {
144
+ const temporary = `${targetPath}.kibi-write-${process.pid}-${Date.now()}-${Math.random()
145
+ .toString(16)
146
+ .slice(2)}`;
147
+ try {
148
+ fs.writeFileSync(temporary, body, { encoding: "utf8", mode: 0o600 });
149
+ fs.renameSync(temporary, targetPath);
150
+ }
151
+ catch (error) {
152
+ try {
153
+ if (fs.existsSync(temporary))
154
+ fs.unlinkSync(temporary);
155
+ }
156
+ catch {
157
+ // Preserve the original publication failure.
158
+ }
159
+ throw error;
160
+ }
161
+ }
162
+ /**
163
+ * Remove exact legacy-shard relationships using an atomic temp-file rename.
164
+ * The caller is responsible for retracting the compiled RDF edge afterwards.
165
+ */
166
+ export function removeRelationshipsFromShards(kbRoot, selectors) {
167
+ const wanted = new Set(selectors.map((selector) => `${selector.type}\0${selector.from}\0${selector.to}`));
168
+ const removed = new Map();
169
+ for (const shardPath of listShards(kbRoot)) {
170
+ const records = readShard(shardPath);
171
+ const matching = records.filter((record) => wanted.has(`${record.type}\0${record.from}\0${record.to}`));
172
+ if (matching.length === 0)
173
+ continue;
174
+ // Patch the YAML sequence in place so comments, ordering, and unrelated
175
+ // records survive a relationship deletion. The compiled store is never
176
+ // the mutation target; this shard remains the canonical source artifact.
177
+ const document = parseDocument(fs.readFileSync(shardPath, "utf8"));
178
+ const sequence = document.get("relationships", true);
179
+ if (!sequence || typeof sequence !== "object" || !("items" in sequence)) {
180
+ throw new Error(`Invalid shard file: missing 'relationships' array at ${shardPath}`);
181
+ }
182
+ const items = sequence.items;
183
+ for (let index = items.length - 1; index >= 0; index -= 1) {
184
+ const item = items[index];
185
+ if (!item || typeof item !== "object" || !("get" in item))
186
+ continue;
187
+ const get = item.get.bind(item);
188
+ if (wanted.has(`${String(get("type"))}\0${String(get("from"))}\0${String(get("to"))}`)) {
189
+ document.deleteIn(["relationships", index]);
190
+ }
191
+ }
192
+ atomicWriteText(shardPath, document.toString());
193
+ for (const record of matching) {
194
+ const key = `${record.type}\0${record.from}\0${record.to}`;
195
+ const entry = removed.get(key) ?? { paths: [], sources: [] };
196
+ entry.paths.push(shardPath);
197
+ entry.sources.push(record.source);
198
+ removed.set(key, entry);
199
+ }
200
+ }
201
+ return selectors.map((selector) => {
202
+ const entry = removed.get(`${selector.type}\0${selector.from}\0${selector.to}`);
203
+ return {
204
+ selector,
205
+ shardPaths: entry?.paths ?? [],
206
+ sources: entry?.sources ?? [],
207
+ removed: entry !== undefined,
208
+ };
209
+ });
136
210
  }
137
211
  /**
138
212
  * Serializes records to YAML format.
@@ -185,7 +259,18 @@ export function appendRelationship(kbRoot, relationship) {
185
259
  ...relationship,
186
260
  id: recordId,
187
261
  };
188
- writeShard(shardPath, [...existing, newRecord]);
262
+ if (fs.existsSync(shardPath)) {
263
+ const document = parseDocument(fs.readFileSync(shardPath, "utf8"));
264
+ const sequence = document.get("relationships", true);
265
+ if (!sequence || typeof sequence !== "object" || !("items" in sequence)) {
266
+ throw new Error(`Invalid shard file: missing 'relationships' array at ${shardPath}`);
267
+ }
268
+ sequence.items.push(newRecord);
269
+ atomicWriteText(shardPath, document.toString());
270
+ }
271
+ else {
272
+ writeShard(shardPath, [newRecord]);
273
+ }
189
274
  }
190
275
  return { shardPath, recordId };
191
276
  }
@@ -0,0 +1,19 @@
1
+ export declare const KIBI_BRAND: {
2
+ readonly carbon: "#1d1e23";
3
+ readonly deepCarbon: "#111318";
4
+ readonly panel: "#191c22";
5
+ readonly ice: "#a2d3f4";
6
+ readonly signal: "#3e8ed6";
7
+ readonly snow: "#f4f8fb";
8
+ readonly mist: "#aab8c2";
9
+ readonly rail: "#34434f";
10
+ readonly success: "#63c99a";
11
+ readonly warning: "#f2b84b";
12
+ readonly danger: "#f07178";
13
+ };
14
+ export declare function renderKibiLogo(className?: string): string;
15
+ export declare function renderKibiWordmark(className?: string): string;
16
+ export declare function renderKibiFaviconSvg(): string;
17
+ export declare function renderKibiFaviconDataUri(): string;
18
+ export declare function renderKibiBadge(message: string, statusColor: string): string;
19
+ //# sourceMappingURL=brand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/report/brand.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;;;;;;CAYb,CAAC;AAmBX,wBAAgB,cAAc,CAAC,SAAS,SAAK,GAAG,MAAM,CAErD;AAGD,wBAAgB,kBAAkB,CAAC,SAAS,SAAK,GAAG,MAAM,CAEzD;AAGD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAGD,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAgDD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA+B5E"}
@@ -0,0 +1,112 @@
1
+ export const KIBI_BRAND = {
2
+ carbon: "#1d1e23",
3
+ deepCarbon: "#111318",
4
+ panel: "#191c22",
5
+ ice: "#a2d3f4",
6
+ signal: "#3e8ed6",
7
+ snow: "#f4f8fb",
8
+ mist: "#aab8c2",
9
+ rail: "#34434f",
10
+ success: "#63c99a",
11
+ warning: "#f2b84b",
12
+ danger: "#f07178",
13
+ };
14
+ // Visible path/ellipse markup from assets/logo.svg and assets/wordmark.svg.
15
+ // Packed reports stay self-contained; the e2e fingerprint compares these marks
16
+ // to the canonical files, so keep the geometry in lockstep with those assets.
17
+ const LOGO_BODY = `<path d="M59.403564453125,0.548828125C67.20257568359375,-0.47119140625,80.16162109375,0.2437744140625,88.4605712890625,0.24078369140625L146.50048828125,0.227783203125L214.8255615234375,0.23577880859375C240.16748046875,0.2437744140625,262.236572265625,-2.67620849609375,283.3775634765625,14.2947998046875C311.0205078125,36.48480224609375,307.6495361328125,66.8988037109375,307.671630859375,98.5548095703125L307.6895751953125,162.74783325195312L307.66552734375,217.54684448242188C307.6585693359375,226.07479858398438,307.653564453125,234.5628662109375,307.504638671875,243.0877685546875C306.8895263671875,278.2227783203125,283.66259765625,304.5137939453125,248.32958984375,308.1297607421875C240.6875,308.9278564453125,226.1695556640625,308.5008544921875,217.8525390625,308.4927978515625L161.468505859375,308.4508056640625L93.9794921875,308.5028076171875C68.57257080078125,308.5147705078125,46.83258056640625,311.5418701171875,25.39654541015625,295.0338134765625C-2.66644287109375,273.423828125,0.13555908203125,245.0108642578125,0.10955810546875,213.40182495117188L0.0855712890625,154.30581665039062L0.10357666015625,95.5968017578125C0.112548828125,81.48980712890625,-0.62841796875,66.85577392578125,1.7275390625,52.96478271484375C6.78955078125,23.11376953125,30.14154052734375,3.88580322265625,59.403564453125,0.548828125Z" fill="${KIBI_BRAND.carbon}"/><ellipse cx="113.3257670641164" cy="150.86303791579667" rx="51.325767064116405" ry="51.52454059083652" fill="${KIBI_BRAND.ice}"/><path d="M228.05255126953125,197.78256225585938L227.611572265625,165.51681518554688L156.5028076171875,165.69512939453125L95.43316650390625,165.28231811523438L95.4334716796875,135.09622192382812L156.503173828125,135.26748657226562L227.535888671875,135.08938598632812L227.53631591796875,101.200927734375L252.20697021484375,101.20071411132812L252.20599365234375,197.78225708007812" fill="${KIBI_BRAND.ice}"/>`;
18
+ const WORDMARK_BODY = `<ellipse cx="337.16000366210943" cy="30.99999999999997" rx="20.000000000000057" ry="19.99999999999997" fill="${KIBI_BRAND.signal}"/><path d="M381.8653869628906,49.212493896484375L381.6935119628906,36.688079833984375L353.9847106933594,36.757293701171875L330.1878356933594,36.5970458984375L330.1879577636719,24.8798828125L353.9848327636719,24.94635009765625L381.6640319824219,24.877227783203125L381.6641540527344,11.722930908203125L391.2775573730469,11.72283935546875L391.2771301269531,49.212371826171875" fill="${KIBI_BRAND.signal}"/><path d="M0,155.33001708984375L0,22.1300048828125L19.6199951171875,22.1300048828125L19.6199951171875,102.58999633789062L20.519989013671875,102.58999633789062L35.100006103515625,87.6500244140625L61.20001220703125,62.45001220703125L84.42001342773438,62.45001220703125L46.800018310546875,98.989990234375L88.55999755859375,155.33001708984375L64.98001098632812,155.33001708984375L32.579986572265625,110.1500244140625L19.6199951171875,122.21002197265625L19.6199951171875,155.33001708984375L0,155.33001708984375L0,155.33001708984375M110.33999633789062,155.33001708984375L110.33999633789062,139.49002075195312L132.01998901367188,139.49002075195312L132.01998901367188,78.28997802734375L100.33999633789062,78.28997802734375L100.33999633789062,62.45001220703125L151.63998413085938,62.45001220703125L151.63998413085938,139.49002075195312L171.33999633789062,139.49002075195312L171.33999633789062,155.33001708984375L110.33999633789062,155.33001708984375L110.33999633789062,155.33001708984375M194.3800048828125,155.33001708984375L194.3800048828125,22.1300048828125L214,22.1300048828125L214.08001708984375,70L215.16000366210938,70C221.16000366210938,65,220.16000366210938,66,224.16000366210938,64C229.1324462890625,61.513824462890625,236.32000732421875,60.28997802734375,243.16000366210938,60.28997802734375L243.16000366210938,60.28997802734375C254.08004760742188,60.28997802734375,262.7799987792969,64.3699951171875,269.2599792480469,72.52999877929688C275.7399597167969,80.69000244140625,278.9800109863281,92.80999755859375,278.9800109863281,108.8900146484375L278.9800109863281,108.8900146484375C278.9800109863281,124.97000122070312,275.7399597167969,137.08999633789062,269.2599792480469,145.25C262.7799987792969,153.41000366210938,254.08004760742188,157.49002075195312,243.16000366210938,157.49002075195312L243.16000366210938,157.49002075195312C236.32000732421875,157.49002075195312,227.92709350585938,156.8602294921875,223.16000366210938,154C218.16000366210938,151,219.16000366210938,152,215.16000366210938,147L215.16000366210938,147L214.08001708984375,147L214,155.33001708984375L194.3800048828125,155.33001708984375L194.3800048828125,155.33001708984375M235.05999755859375,141.47000122070312L235.05999755859375,141.47000122070312C242.5,141.47000122070312,248.23001098632812,139.19000244140625,252.24996948242188,134.6300048828125C256.2699890136719,130.07000732421875,258.2799987792969,124.010009765625,258.2799987792969,116.45001220703125L258.2799987792969,116.45001220703125L258.2799987792969,101.33001708984375C258.2799987792969,93.77001953125,256.2699890136719,87.71002197265625,252.24996948242188,83.1500244140625C248.23001098632812,78.59002685546875,242.5,76.30999755859375,235.05999755859375,76.30999755859375L235.05999755859375,76.30999755859375C232.18002319335938,76.30999755859375,229.48001098632812,76.66998291015625,226.95999145507812,77.3900146484375C224.44000244140625,78.1099853515625,222.22000122070312,79.19000244140625,220.30001831054688,80.6300048828125C218.3800048828125,82.07000732421875,216.85000610351562,83.84002685546875,215.70999145507812,85.94000244140625C214.57000732421875,88.03997802734375,214,90.52999877929688,214,93.41000366210938L214,93.41000366210938L214,124.3699951171875C214,127.25,214.57000732421875,129.74002075195312,215.70999145507812,131.83999633789062C216.85000610351562,133.94000244140625,218.3800048828125,135.70999145507812,220.30001831054688,137.14999389648438C222.22000122070312,138.58999633789062,224.44000244140625,139.67001342773438,226.95999145507812,140.3900146484375C229.48001098632812,141.11001586914062,232.18002319335938,141.47000122070312,235.05999755859375,141.47000122070312L235.05999755859375,141.47000122070312M306.3399963378906,155.33001708984375L306.3399963378906,139.49002075195312L328.0199890136719,139.49002075195312L328.0199890136719,78.28997802734375L296.3399963378906,78.28997802734375L296.3399963378906,62.45001220703125L347.6399841308594,62.45001220703125L347.6399841308594,139.49002075195312L367.3399963378906,139.49002075195312L367.3399963378906,155.33001708984375L306.3399963378906,155.33001708984375L306.3399963378906,155.33001708984375" fill="${KIBI_BRAND.ice}"/><ellipse cx="141.66000366210938" cy="31.5" rx="12.5" ry="12.5" fill="${KIBI_BRAND.ice}"/>`;
19
+ function xml(value) {
20
+ return value
21
+ .replaceAll("&", "&amp;")
22
+ .replaceAll("<", "&lt;")
23
+ .replaceAll(">", "&gt;")
24
+ .replaceAll('"', "&quot;")
25
+ .replaceAll("'", "&apos;");
26
+ }
27
+ // implements REQ-kibi-branded-health-report
28
+ export function renderKibiLogo(className = "") {
29
+ return `<svg${className ? ` class="${xml(className)}"` : ""} viewBox="0 0 308 309" role="img" aria-label="Kibi logo">${LOGO_BODY}</svg>`;
30
+ }
31
+ // implements REQ-kibi-branded-health-report
32
+ export function renderKibiWordmark(className = "") {
33
+ return `<svg${className ? ` class="${xml(className)}"` : ""} viewBox="-2 10 395 148" role="img" aria-label="Kibi">${WORDMARK_BODY}</svg>`;
34
+ }
35
+ // implements REQ-kibi-branded-health-report
36
+ export function renderKibiFaviconSvg() {
37
+ return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 308 309">${LOGO_BODY}</svg>`;
38
+ }
39
+ // implements REQ-kibi-branded-health-report
40
+ export function renderKibiFaviconDataUri() {
41
+ return `data:image/svg+xml;utf8,${encodeURIComponent(renderKibiFaviconSvg())}`;
42
+ }
43
+ const BADGE_HEIGHT = 20;
44
+ const BADGE_LABEL = "kibi";
45
+ const BADGE_FONT = "DejaVu Sans,Verdana,Geneva,sans-serif";
46
+ const BADGE_LOGO = 14;
47
+ const BADGE_LOGO_LEFT = 5;
48
+ const BADGE_LOGO_GAP = 3;
49
+ const BADGE_TEXT_PAD = 8;
50
+ const BADGE_LABEL_FILL = "#555";
51
+ const BADGE_TEXT_FILL = "#fff";
52
+ const BADGE_TEXT_SHADOW = "#010101";
53
+ const BADGE_LOGO_BODY = LOGO_BODY.replaceAll(`fill="${KIBI_BRAND.carbon}"`, `fill="${BADGE_LABEL_FILL}"`);
54
+ function badgeTextWidth(text) {
55
+ let width = 0;
56
+ for (const char of text) {
57
+ if (char === " ")
58
+ width += 4;
59
+ else if (char === "%")
60
+ width += 9;
61
+ else
62
+ width += 7;
63
+ }
64
+ return Math.ceil(width);
65
+ }
66
+ function badgeLabelWidth(label) {
67
+ return (BADGE_LOGO_LEFT +
68
+ BADGE_LOGO +
69
+ BADGE_LOGO_GAP +
70
+ badgeTextWidth(label) +
71
+ BADGE_TEXT_PAD);
72
+ }
73
+ function badgeMessageWidth(message) {
74
+ return BADGE_TEXT_PAD + badgeTextWidth(message) + BADGE_TEXT_PAD;
75
+ }
76
+ function badgeCaption(x, text) {
77
+ const safe = xml(text);
78
+ return `<text x="${x}" y="15" fill="${BADGE_TEXT_SHADOW}" fill-opacity=".3">${safe}</text>
79
+ <text x="${x}" y="14" fill="${BADGE_TEXT_FILL}">${safe}</text>`;
80
+ }
81
+ // implements REQ-kibi-branded-health-report
82
+ export function renderKibiBadge(message, statusColor) {
83
+ const accessible = `Kibi requirement health: ${message}`;
84
+ const labelWidth = badgeLabelWidth(BADGE_LABEL);
85
+ const messageWidth = badgeMessageWidth(message);
86
+ const width = labelWidth + messageWidth;
87
+ const logoX = BADGE_LOGO_LEFT;
88
+ const logoY = (BADGE_HEIGHT - BADGE_LOGO) / 2;
89
+ const labelTextX = BADGE_LOGO_LEFT +
90
+ BADGE_LOGO +
91
+ BADGE_LOGO_GAP +
92
+ badgeTextWidth(BADGE_LABEL) / 2;
93
+ const messageTextX = labelWidth + messageWidth / 2;
94
+ return `<svg xmlns="http://www.w3.org/2000/svg" role="img" aria-label="${xml(accessible)}" width="${width}" height="${BADGE_HEIGHT}" viewBox="0 0 ${width} ${BADGE_HEIGHT}">
95
+ <title>${xml(accessible)}</title>
96
+ <linearGradient id="kibi-badge-s" x2="0" y2="100%">
97
+ <stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
98
+ <stop offset="1" stop-opacity=".1"/>
99
+ </linearGradient>
100
+ <clipPath id="kibi-badge"><rect width="${width}" height="${BADGE_HEIGHT}" rx="3" fill="#fff"/></clipPath>
101
+ <g clip-path="url(#kibi-badge)">
102
+ <rect width="${labelWidth}" height="${BADGE_HEIGHT}" fill="${BADGE_LABEL_FILL}"/>
103
+ <rect x="${labelWidth}" width="${messageWidth}" height="${BADGE_HEIGHT}" fill="${xml(statusColor)}"/>
104
+ <rect width="${width}" height="${BADGE_HEIGHT}" fill="url(#kibi-badge-s)"/>
105
+ </g>
106
+ <g fill="${BADGE_TEXT_FILL}" text-anchor="middle" font-family="${BADGE_FONT}" font-size="11">
107
+ ${badgeCaption(labelTextX, BADGE_LABEL)}
108
+ ${badgeCaption(messageTextX, message)}
109
+ </g>
110
+ <svg x="${logoX}" y="${logoY}" width="${BADGE_LOGO}" height="${BADGE_LOGO}" viewBox="0 0 308 309" aria-hidden="true">${BADGE_LOGO_BODY}</svg>
111
+ </svg>`;
112
+ }
@@ -0,0 +1,282 @@
1
+ :root {
2
+ color-scheme: dark;
3
+ --bg: #090d18;
4
+ --surface: rgba(20, 27, 45, .86);
5
+ --surface-strong: #151d30;
6
+ --line: rgba(157, 171, 206, .16);
7
+ --text: #f4f7ff;
8
+ --muted: #9ba7c3;
9
+ --violet: #9d84ff;
10
+ --cyan: #5ce1e6;
11
+ --green: #62e6a7;
12
+ --amber: #ffc96b;
13
+ --red: #ff7d90;
14
+ --shadow: 0 30px 80px rgba(0, 0, 0, .35);
15
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
16
+ }
17
+ * { box-sizing: border-box; }
18
+ html { scroll-behavior: smooth; }
19
+ body {
20
+ margin: 0;
21
+ min-width: 320px;
22
+ color: var(--text);
23
+ background:
24
+ radial-gradient(circle at 12% -10%, rgba(93, 74, 190, .32), transparent 34rem),
25
+ radial-gradient(circle at 88% 8%, rgba(33, 153, 166, .19), transparent 30rem),
26
+ var(--bg);
27
+ }
28
+ body::before {
29
+ position: fixed;
30
+ inset: 0;
31
+ z-index: -1;
32
+ content: "";
33
+ opacity: .18;
34
+ background-image: linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
35
+ background-size: 38px 38px;
36
+ mask-image: linear-gradient(to bottom, black, transparent 75%);
37
+ }
38
+ .shell { width: min(1160px, calc(100% - 40px)); margin: 0 auto; }
39
+ .topbar { display: flex; align-items: center; justify-content: space-between; padding: 34px 0 16px; }
40
+ .brand { display: flex; align-items: center; gap: 12px; font-weight: 900; letter-spacing: .3em; }
41
+ .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); }
42
+ .snapshot { color: var(--muted); font: 500 12px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; }
43
+ .hero { display: grid; grid-template-columns: 1.15fr .85fr; gap: 30px; align-items: stretch; padding: 42px 0 26px; }
44
+ .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); }
45
+ .hero__copy { padding: clamp(30px, 5vw, 62px); }
46
+ .eyebrow { margin: 0 0 17px; color: var(--cyan); font-size: 12px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }
47
+ h1 { max-width: 720px; margin: 0; font-size: clamp(42px, 7vw, 76px); font-weight: 760; letter-spacing: -.055em; line-height: .98; }
48
+ h1 span { display: block; color: var(--muted); font-size: .42em; font-weight: 620; letter-spacing: -.025em; line-height: 1.4; }
49
+ .hero__lede { max-width: 620px; margin: 25px 0 0; color: #bdc6dc; font-size: 17px; line-height: 1.65; }
50
+ .score-card { display: grid; min-height: 340px; padding: 38px; place-items: center; text-align: center; }
51
+ .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); }
52
+ .score-ring::before { position: absolute; width: 178px; aspect-ratio: 1; content: ""; border: 1px solid var(--line); border-radius: inherit; background: #111827; }
53
+ .score-ring__value { position: relative; font-size: 52px; font-weight: 820; letter-spacing: -.06em; }
54
+ .score-ring__value span { margin-left: 2px; color: var(--muted); font-size: 22px; }
55
+ .score-card p { position: relative; margin: 13px 0 0; color: var(--muted); font-size: 13px; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
56
+ .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); }
57
+ .snapshot-notice strong { flex: none; color: var(--amber); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; }
58
+ .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); }
59
+ .metric { min-width: 0; padding: 22px 20px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
60
+ .metric:last-child { border-right: 0; }
61
+ .metric span { display: block; min-height: 32px; color: var(--muted); font-size: 12px; line-height: 1.35; }
62
+ .metric strong { display: block; margin-top: 6px; font-size: 30px; letter-spacing: -.035em; }
63
+ .metric--good strong { color: var(--green); }
64
+ .metric--warn strong { color: var(--amber); }
65
+ .metric--bad strong { color: var(--red); }
66
+ .section-header { display: flex; gap: 24px; align-items: end; justify-content: space-between; margin-bottom: 24px; }
67
+ .section-header h2 { margin: 0; font-size: clamp(29px, 4vw, 42px); letter-spacing: -.04em; }
68
+ .section-header p { max-width: 590px; margin: 8px 0 0; color: var(--muted); line-height: 1.55; }
69
+ .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); }
70
+ .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; }
71
+ .search:focus { border-color: var(--violet); box-shadow: 0 0 0 3px rgba(157,132,255,.12); }
72
+ .filters { display: flex; gap: 7px; overflow-x: auto; }
73
+ .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; }
74
+ .filter:hover { color: var(--text); background: rgba(255,255,255,.05); }
75
+ .filter[aria-pressed="true"] { border-color: rgba(157,132,255,.38); color: #ddd5ff; background: rgba(157,132,255,.14); }
76
+ .requirements { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; padding-bottom: 80px; }
77
+ .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); }
78
+ .requirement::before { position: absolute; inset: 0 auto 0 0; width: 3px; content: ""; background: var(--amber); }
79
+ .requirement--proven::before { background: var(--green); }
80
+ .requirement--unresolved::before { background: var(--red); }
81
+ .requirement[hidden] { display: none; }
82
+ .requirement__header { display: flex; gap: 18px; align-items: start; justify-content: space-between; }
83
+ .requirement__id { margin-bottom: 7px; color: var(--muted); font: 700 11px/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .05em; }
84
+ .requirement h3 { margin: 0; font-size: 20px; line-height: 1.25; letter-spacing: -.02em; }
85
+ .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; }
86
+ .proof-badge--proven { border-color: rgba(98,230,167,.25); color: var(--green); background: rgba(98,230,167,.08); }
87
+ .proof-badge--unresolved { border-color: rgba(255,125,144,.25); color: var(--red); background: rgba(255,125,144,.08); }
88
+ .stages { display: grid; gap: 9px; margin: 24px 0 0; padding: 0; list-style: none; }
89
+ .stage { display: grid; grid-template-columns: 20px minmax(100px, .7fr) 1.3fr; gap: 8px; align-items: baseline; }
90
+ .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; }
91
+ .stage--warning .stage__icon { color: #241602; background: var(--amber); }
92
+ .stage--failed .stage__icon { color: #24080c; background: var(--red); }
93
+ .stage--muted .stage__icon { color: var(--muted); background: rgba(255,255,255,.08); }
94
+ .stage__label { font-size: 13px; font-weight: 720; }
95
+ .stage__detail { color: var(--muted); font-size: 12px; line-height: 1.45; }
96
+ .contradiction { margin-top: 21px; padding: 16px; border: 1px solid rgba(255,125,144,.24); border-radius: 14px; background: rgba(255,125,144,.07); }
97
+ .contradiction__eyebrow { color: var(--red); font-size: 10px; font-weight: 850; letter-spacing: .1em; text-transform: uppercase; }
98
+ .contradiction__values { display: flex; gap: 11px; align-items: center; margin-top: 9px; font: 750 15px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; }
99
+ .contradiction__values b { color: var(--red); }
100
+ .contradiction p { margin: 8px 0 0; color: #d9a9b1; font-size: 12px; line-height: 1.5; }
101
+ .proof-gaps { margin-top: 18px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }
102
+ .proof-advisories { margin-top: 12px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }
103
+ .proof-gaps summary, .proof-advisories summary { padding-top: 14px; cursor: pointer; font-weight: 700; }
104
+ .proof-gaps ul, .proof-advisories ul { columns: 2; margin: 11px 0 0; padding-left: 18px; }
105
+ .proof-gaps li, .proof-advisories li { margin-bottom: 7px; break-inside: avoid; }
106
+ .empty { display: none; padding: 70px 20px; border: 1px dashed var(--line); border-radius: 20px; color: var(--muted); text-align: center; }
107
+ .empty[data-visible="true"] { display: block; }
108
+ 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; }
109
+ @media (max-width: 960px) {
110
+ .hero { grid-template-columns: 1fr; }
111
+ .score-card { min-height: 290px; }
112
+ .metrics { grid-template-columns: repeat(3, 1fr); }
113
+ .metric:nth-child(3) { border-right: 0; }
114
+ .metric:nth-child(-n+3) { border-bottom: 1px solid var(--line); }
115
+ }
116
+ @media (max-width: 760px) {
117
+ .shell { width: min(100% - 24px, 1160px); }
118
+ .topbar { padding-top: 22px; }
119
+ .hero { padding-top: 20px; }
120
+ .hero__copy, .score-card { border-radius: 22px; }
121
+ .requirements { grid-template-columns: 1fr; }
122
+ .section-header { align-items: start; flex-direction: column; }
123
+ .controls { align-items: stretch; flex-direction: column; }
124
+ .filters { padding-bottom: 2px; }
125
+ footer { flex-direction: column; }
126
+ }
127
+ @media (max-width: 520px) {
128
+ .metrics { grid-template-columns: repeat(2, 1fr); }
129
+ .metric { border-bottom: 1px solid var(--line); }
130
+ .metric:nth-child(2n) { border-right: 0; }
131
+ .metric:nth-last-child(-n+2) { border-bottom: 0; }
132
+ .stage { grid-template-columns: 20px 1fr; }
133
+ .stage__detail { grid-column: 2; }
134
+ .proof-gaps ul { columns: 1; }
135
+ }
136
+ @media print {
137
+ body { background: #fff; color: #111827; }
138
+ body::before, .controls { display: none; }
139
+ .hero__copy, .score-card, .metrics, .requirement { border-color: #d9deea; color: #111827; background: #fff; box-shadow: none; break-inside: avoid; }
140
+ .requirements { display: block; }
141
+ .requirement { margin-bottom: 14px; }
142
+ .hero__lede, .metric span, .stage__detail, .section-header p, footer { color: #59647a; }
143
+ }
144
+
145
+ /* Kibi proof-rail identity. Tokens mirror assets/logo.svg and assets/wordmark.svg. */
146
+ :root {
147
+ --carbon: __KIBI_CARBON__;
148
+ --deep-carbon: __KIBI_DEEP_CARBON__;
149
+ --panel: __KIBI_PANEL__;
150
+ --ice: __KIBI_ICE__;
151
+ --signal: __KIBI_SIGNAL__;
152
+ --snow: __KIBI_SNOW__;
153
+ --mist: __KIBI_MIST__;
154
+ --rail: __KIBI_RAIL__;
155
+ --success: __KIBI_SUCCESS__;
156
+ --warning: __KIBI_WARNING__;
157
+ --danger: __KIBI_DANGER__;
158
+ --line: rgba(162, 211, 244, .16);
159
+ --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
160
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
161
+ }
162
+ body { color: var(--snow); background: var(--deep-carbon); }
163
+ 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; }
164
+ .shell { width: min(1180px, calc(100% - 40px)); }
165
+ .topbar { padding: 30px 0 20px; border-bottom: 1px solid var(--line); }
166
+ .brand { gap: 13px; letter-spacing: normal; }
167
+ .brand__logo { width: 42px; height: 42px; flex: none; }
168
+ .brand__wordmark { width: 86px; height: auto; }
169
+ .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; }
170
+ .snapshot { max-width: min(52vw, 420px); overflow: hidden; color: var(--mist); font: 500 11px/1.4 var(--mono); text-align: right; text-overflow: ellipsis; }
171
+ .snapshot a, .source-link, .cta { color: var(--ice); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }
172
+ .snapshot a:hover, .source-link:hover, .cta:hover { color: var(--snow); }
173
+ .relative-age::before { content: " · "; }
174
+ .relative-age:empty::before { content: none; }
175
+ .overview { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 36px; align-items: end; padding: clamp(38px, 7vw, 76px) 0 32px; }
176
+ .eyebrow { margin: 0 0 12px; color: var(--ice); font: 750 11px/1.4 var(--mono); letter-spacing: .12em; }
177
+ h1 { margin: 0; font-size: clamp(38px, 6vw, 68px); font-weight: 720; letter-spacing: -.052em; line-height: 1; }
178
+ .overview__copy { max-width: 700px; }
179
+ .overview__copy p:last-child { max-width: 660px; margin: 19px 0 0; color: var(--mist); font-size: 16px; line-height: 1.65; }
180
+ .score { min-width: 220px; padding-left: 30px; border-left: 2px solid var(--signal); text-align: right; }
181
+ .score__value { color: var(--snow); font: 760 clamp(62px, 9vw, 104px)/.84 var(--mono); letter-spacing: -.09em; }
182
+ .score__value span { color: var(--ice); font-size: .38em; letter-spacing: -.04em; }
183
+ .score__label { margin-top: 17px; color: var(--ice); font-size: 12px; font-weight: 760; letter-spacing: .12em; text-transform: uppercase; }
184
+ .score__ratio { margin-top: 6px; color: var(--mist); font: 500 12px/1.4 var(--mono); }
185
+ .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; }
186
+ .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); }
187
+ .snapshot-notice strong { color: var(--warning); font: 750 11px/1.4 var(--mono); }
188
+ .proof-path { margin-bottom: 20px; padding: 24px 26px 22px; border: 1px solid var(--line); border-radius: 14px; background: var(--carbon); }
189
+ .proof-path__header { display: flex; gap: 24px; align-items: start; justify-content: space-between; margin-bottom: 25px; }
190
+ .proof-path__header h2 { margin: 0; font-size: 19px; letter-spacing: -.02em; }
191
+ .proof-path__header p { max-width: 510px; margin: 0; color: var(--mist); font-size: 12px; line-height: 1.55; text-align: right; }
192
+ .proof-rail { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }
193
+ .proof-rail > li { min-width: 0; }
194
+ .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; }
195
+ .proof-gate:last-child, .proof-rail > li:last-child .proof-gate { padding-right: 0; }
196
+ .proof-gate:focus-visible { outline: 2px solid var(--ice); outline-offset: 4px; }
197
+ .proof-gate[aria-pressed="true"] { background: rgba(62, 142, 214, .1); }
198
+ .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); }
199
+ .proof-gate--blocked { border-top-color: var(--rail); }
200
+ .proof-gate--blocked .proof-gate__node { border-color: var(--danger); color: var(--danger); background: var(--carbon); }
201
+ .proof-gate__count { font: 750 28px/1 var(--mono); letter-spacing: -.05em; }
202
+ .proof-gate__label { margin-top: 8px; font-size: 13px; font-weight: 720; }
203
+ .proof-gate__drop { min-height: 17px; margin-top: 5px; color: var(--warning); font: 650 10px/1.4 var(--mono); }
204
+ .proof-gate p { margin: 7px 0 0; color: var(--mist); font-size: 11px; line-height: 1.45; }
205
+ .metrics { margin: 0 0 62px; border-color: var(--line); border-radius: 12px; background: var(--panel); box-shadow: none; }
206
+ .metric { position: relative; padding: 18px 17px; border-color: var(--line); }
207
+ .metric::before { position: absolute; top: 0; left: 17px; width: 28px; height: 2px; content: ""; background: var(--signal); }
208
+ .metric span { min-height: 31px; color: var(--mist); font-size: 11px; }
209
+ .metric strong { margin-top: 4px; font: 720 26px/1 var(--mono); letter-spacing: -.04em; }
210
+ .metric--good strong { color: var(--success); }
211
+ .metric--warn strong { color: var(--warning); }
212
+ .metric--bad strong { color: var(--danger); }
213
+ .section-header p { color: var(--mist); }
214
+ .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); }
215
+ .search { padding: 11px 13px; border-color: var(--rail); border-radius: 8px; color: var(--snow); background: var(--carbon); }
216
+ .search:focus { border-color: var(--ice); box-shadow: 0 0 0 3px rgba(162,211,244,.1); }
217
+ .filters { gap: 6px; }
218
+ .filter { padding: 9px 11px; border-radius: 7px; color: var(--mist); font: 650 11px/1.4 var(--mono); }
219
+ .filter:hover { color: var(--snow); background: rgba(162,211,244,.06); }
220
+ .filter[aria-pressed="true"] { border-color: rgba(162,211,244,.35); color: var(--ice); background: rgba(62,142,214,.13); }
221
+ .filter:focus-visible { outline: 2px solid var(--ice); outline-offset: 2px; }
222
+ .cta:focus-visible, .source-link:focus-visible, .snapshot a:focus-visible { outline: 2px solid var(--ice); outline-offset: 2px; }
223
+ .requirements { grid-template-columns: 1fr; gap: 13px; }
224
+ .requirement { padding: 22px 24px 20px; border-color: var(--line); border-radius: 12px; background: var(--panel); box-shadow: none; }
225
+ .requirement::before { background: var(--warning); }
226
+ .requirement--proven::before { background: var(--success); }
227
+ .requirement--unresolved::before { background: var(--danger); }
228
+ .requirement__id { color: var(--ice); font: 700 10px/1.2 var(--mono); letter-spacing: .07em; }
229
+ .requirement h3 { font-size: 18px; line-height: 1.3; }
230
+ .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); }
231
+ .proof-badge--proven { border-color: rgba(99,201,154,.3); color: var(--success); background: rgba(99,201,154,.07); }
232
+ .proof-badge--unresolved { border-color: rgba(240,113,120,.3); color: var(--danger); background: rgba(240,113,120,.07); }
233
+ .stages { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; }
234
+ .stage { position: relative; display: block; min-width: 0; padding: 20px 13px 0 0; border-top: 1px solid var(--rail); }
235
+ .stage:last-child { padding-right: 0; }
236
+ .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); }
237
+ .stage--warning .stage__icon { border-color: var(--warning); color: var(--warning); background: var(--panel); }
238
+ .stage--failed .stage__icon { border-color: var(--danger); color: var(--danger); background: var(--panel); }
239
+ .stage--muted .stage__icon { border-color: var(--rail); color: var(--mist); background: var(--panel); }
240
+ .stage__label { display: block; font-size: 12px; }
241
+ .stage__detail { display: block; margin-top: 5px; color: var(--mist); font-size: 11px; }
242
+ .contradiction { border-color: rgba(240,113,120,.32); border-radius: 9px; background: rgba(240,113,120,.07); }
243
+ .contradiction__eyebrow, .contradiction__values b { color: var(--danger); }
244
+ .contradiction p, .proof-gaps, .proof-advisories { color: var(--mist); }
245
+ .proof-gaps, .proof-advisories { border-color: var(--line); }
246
+ .proof-gaps ul, .proof-advisories ul { columns: 3; }
247
+ .empty { border-color: var(--rail); border-radius: 12px; color: var(--mist); }
248
+ footer { border-color: var(--line); color: var(--mist); font: 500 11px/1.5 var(--mono); }
249
+ .filter__count { margin-left: 6px; color: var(--ice); }
250
+ .requirement h3 .source-link { color: inherit; }
251
+ @media (max-width: 960px) {
252
+ .proof-rail { grid-template-columns: repeat(5, 180px); overflow-x: auto; padding-top: 8px; }
253
+ .snapshot { max-width: 100%; }
254
+ }
255
+ @media (max-width: 760px) {
256
+ .shell { width: min(100% - 24px, 1180px); }
257
+ .topbar { align-items: start; flex-wrap: wrap; gap: 12px; }
258
+ .snapshot { max-width: 100%; text-align: left; }
259
+ .overview { grid-template-columns: 1fr; gap: 28px; padding-top: 38px; }
260
+ .score { min-width: 0; padding: 20px 0 0; border-top: 2px solid var(--signal); border-left: 0; text-align: left; }
261
+ .score__value { font-size: 66px; }
262
+ .score__note { margin-left: 0; }
263
+ .proof-path__header { align-items: start; flex-direction: column; }
264
+ .proof-path__header p { text-align: left; }
265
+ .stages { grid-template-columns: 1fr; }
266
+ .stage { min-height: 66px; margin-left: 8px; padding: 0 0 18px 30px; border-top: 0; border-left: 1px solid var(--rail); }
267
+ .stage__icon { top: 0; left: -8px; }
268
+ .proof-gaps ul, .proof-advisories ul { columns: 2; }
269
+ }
270
+ @media (max-width: 520px) {
271
+ .brand__product { display: none; }
272
+ .proof-path { padding-inline: 18px; }
273
+ .proof-gaps ul, .proof-advisories ul { columns: 1; }
274
+ }
275
+ @media print {
276
+ :root { color-scheme: light; }
277
+ body { color: #17202a; background: #fff; }
278
+ .topbar, .proof-path, .metrics, .requirement { border-color: #cbd5dc; color: #17202a; background: #fff; }
279
+ .proof-gate, .stage { border-color: #7b8b96; background: transparent; }
280
+ .proof-gate p, .proof-path__header p, .metric span, .stage__detail, .section-header p, footer, .score__note { color: #4e606c; }
281
+ .source-link, .cta, .snapshot a { color: inherit; }
282
+ }
@@ -0,0 +1,21 @@
1
+ import { type ProofGateKey } from "./report-view.js";
2
+ import { type ReportRepository } from "./repository.js";
3
+ export type UnknownRecord = Readonly<Record<string, unknown>>;
4
+ export declare const REPORT_CSP = "default-src 'none'; img-src data:; style-src 'unsafe-inline'; script-src 'unsafe-inline'";
5
+ export declare const KIBI_GETTING_STARTED_URL = "https://github.com/Looted/kibi/blob/develop/docs/install.md";
6
+ export type HtmlReportCoverage = Readonly<{
7
+ summary: UnknownRecord;
8
+ rows: readonly UnknownRecord[];
9
+ meta?: UnknownRecord;
10
+ }>;
11
+ export type HtmlReportInput = Readonly<{
12
+ requirements: HtmlReportCoverage;
13
+ symbols: HtmlReportCoverage;
14
+ branch: string;
15
+ generatedAt: Date;
16
+ repository?: ReportRepository;
17
+ }>;
18
+ export declare function firstFailingProofGate(gates: readonly ProofGateKey[], passes: (gate: ProofGateKey) => boolean): ProofGateKey | "proven";
19
+ export declare function earliestUnmetGate(row: UnknownRecord): ProofGateKey | "proven";
20
+ export declare function renderHtmlReport(input: HtmlReportInput): string;
21
+ //# sourceMappingURL=html-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-report.d.ts","sourceRoot":"","sources":["../../src/report/html-report.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,gBAAgB,EAMtB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAuB9D,eAAO,MAAM,UAAU,6FACqE,CAAC;AAG7F,eAAO,MAAM,wBAAwB,gEAC0B,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,YAAY,EAAE,kBAAkB,CAAC;IACjC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B,CAAC,CAAC;AAsMH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,GACtC,YAAY,GAAG,QAAQ,CAKzB;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,CAM7E;AA8YD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAuM/D"}