codebaseiq 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/CHANGELOG.md +481 -0
  2. package/LICENSE +202 -0
  3. package/README.md +349 -0
  4. package/dist/augment-vue-worker.js +2 -0
  5. package/dist/call-graph-evidence-gNsxjCW8.d.ts +16 -0
  6. package/dist/change-analysis-types-CCtoCHbC.d.ts +9 -0
  7. package/dist/chunk-2Q2LW5JW.js +14 -0
  8. package/dist/chunk-2X7V4HS4.js +88 -0
  9. package/dist/chunk-34WBMAYK.js +2 -0
  10. package/dist/chunk-35NLDRZC.js +2 -0
  11. package/dist/chunk-362QOSFD.js +3 -0
  12. package/dist/chunk-3IER7Q6H.js +12 -0
  13. package/dist/chunk-3JSXXYTZ.js +345 -0
  14. package/dist/chunk-3LCDIREB.js +4 -0
  15. package/dist/chunk-476NR5B7.js +2 -0
  16. package/dist/chunk-4FC325IF.js +30 -0
  17. package/dist/chunk-4WKDMDEW.js +9 -0
  18. package/dist/chunk-4XTAUQFD.js +2 -0
  19. package/dist/chunk-5PUWMSDU.js +26 -0
  20. package/dist/chunk-5VKBFZZU.js +3 -0
  21. package/dist/chunk-6BQ3DSPK.js +2 -0
  22. package/dist/chunk-6CS3UQTN.js +3 -0
  23. package/dist/chunk-6MUIJMVL.js +6 -0
  24. package/dist/chunk-6NW7MU72.js +40 -0
  25. package/dist/chunk-6OAHRI2D.js +6 -0
  26. package/dist/chunk-6YTSKJJ3.js +2 -0
  27. package/dist/chunk-7FND7D7N.js +2 -0
  28. package/dist/chunk-7MGU3HPH.js +2 -0
  29. package/dist/chunk-7NVGT435.js +2 -0
  30. package/dist/chunk-7XAN6GKB.js +2 -0
  31. package/dist/chunk-AAQQPKCU.js +2 -0
  32. package/dist/chunk-ADTBPVUZ.js +21 -0
  33. package/dist/chunk-AKB7V7TV.js +2 -0
  34. package/dist/chunk-ANFVSJWQ.js +11 -0
  35. package/dist/chunk-B2OB55RR.js +3 -0
  36. package/dist/chunk-B3UYV66Z.js +4 -0
  37. package/dist/chunk-B75HZHUP.js +2 -0
  38. package/dist/chunk-BFFZDZQV.js +2 -0
  39. package/dist/chunk-BGBBVSH4.js +2 -0
  40. package/dist/chunk-BH5F2Q4O.js +2 -0
  41. package/dist/chunk-BJ6SQAEN.js +2 -0
  42. package/dist/chunk-BMYOV5GP.js +77 -0
  43. package/dist/chunk-BVAJLC5A.js +7 -0
  44. package/dist/chunk-C6SBF2WH.js +4 -0
  45. package/dist/chunk-C74PPYLA.js +3 -0
  46. package/dist/chunk-C7QOQX32.js +8 -0
  47. package/dist/chunk-CAUCPUOF.js +7 -0
  48. package/dist/chunk-CO5R3UNA.js +2 -0
  49. package/dist/chunk-CQP3THUZ.js +7 -0
  50. package/dist/chunk-CVYSU6BX.js +16 -0
  51. package/dist/chunk-CWONGW6P.js +3 -0
  52. package/dist/chunk-DDZ7VHWV.js +20 -0
  53. package/dist/chunk-DGXRDLV5.js +2 -0
  54. package/dist/chunk-DO6WQD2T.js +3 -0
  55. package/dist/chunk-DQMDCD24.js +2 -0
  56. package/dist/chunk-DR2LURYU.js +3 -0
  57. package/dist/chunk-DRENNWRG.js +2 -0
  58. package/dist/chunk-ECQBG7PW.js +564 -0
  59. package/dist/chunk-EF2R3WNQ.js +2 -0
  60. package/dist/chunk-ELNRLMC5.js +29 -0
  61. package/dist/chunk-EMNIHCRB.js +18 -0
  62. package/dist/chunk-ENCCHKM6.js +5 -0
  63. package/dist/chunk-EZNMUY67.js +5 -0
  64. package/dist/chunk-FAJQ7LWY.js +3 -0
  65. package/dist/chunk-FDGD5AB5.js +2 -0
  66. package/dist/chunk-FETNQCFO.js +117 -0
  67. package/dist/chunk-FM5BPL4V.js +60 -0
  68. package/dist/chunk-FQKZWM4L.js +49 -0
  69. package/dist/chunk-FW53T7EB.js +2 -0
  70. package/dist/chunk-G6XFR4ZL.js +4 -0
  71. package/dist/chunk-GCHRX4YW.js +4 -0
  72. package/dist/chunk-GTIYTDRE.js +562 -0
  73. package/dist/chunk-GTXSJDCO.js +2 -0
  74. package/dist/chunk-GW6Z3WGY.js +2 -0
  75. package/dist/chunk-H3LGFZVK.js +2 -0
  76. package/dist/chunk-HKQUXIFO.js +2 -0
  77. package/dist/chunk-HOA5YGOH.js +3 -0
  78. package/dist/chunk-HPJRBHVT.js +3 -0
  79. package/dist/chunk-HRWGYWRJ.js +49 -0
  80. package/dist/chunk-I2T2LLK2.js +4 -0
  81. package/dist/chunk-ICFDQHAM.js +3 -0
  82. package/dist/chunk-ID63777H.js +4 -0
  83. package/dist/chunk-IJ4HMYBE.js +3 -0
  84. package/dist/chunk-ILMHV3KM.js +2 -0
  85. package/dist/chunk-IOP6FWIM.js +2 -0
  86. package/dist/chunk-IRQOAM5G.js +2 -0
  87. package/dist/chunk-J77SU6VA.js +38 -0
  88. package/dist/chunk-JE3WZ6II.js +2 -0
  89. package/dist/chunk-JEJLSICM.js +4 -0
  90. package/dist/chunk-JOIRNPPY.js +2 -0
  91. package/dist/chunk-JSOYNVWH.js +3 -0
  92. package/dist/chunk-KMITESMT.js +2 -0
  93. package/dist/chunk-KUW32IRO.js +2 -0
  94. package/dist/chunk-KWVHSKHK.js +31 -0
  95. package/dist/chunk-L4NRUAGJ.js +18 -0
  96. package/dist/chunk-L57ZKWVG.js +6 -0
  97. package/dist/chunk-LTA3BRZX.js +2 -0
  98. package/dist/chunk-LU3BMVH2.js +10 -0
  99. package/dist/chunk-LZYFLFEH.js +2 -0
  100. package/dist/chunk-MOVBWNIP.js +16 -0
  101. package/dist/chunk-MVB3DAEY.js +3 -0
  102. package/dist/chunk-N3IQCBCF.js +29 -0
  103. package/dist/chunk-NAUD7LCA.js +2 -0
  104. package/dist/chunk-NCZUNH3E.js +109 -0
  105. package/dist/chunk-NE6IU5ZD.js +5 -0
  106. package/dist/chunk-NEDP5RFQ.js +60 -0
  107. package/dist/chunk-NMTSZXCL.js +2 -0
  108. package/dist/chunk-NNJ2KZZG.js +4 -0
  109. package/dist/chunk-NNO6A2PO.js +2 -0
  110. package/dist/chunk-NNOKTMZT.js +20 -0
  111. package/dist/chunk-O6QTXQPJ.js +13 -0
  112. package/dist/chunk-OANDYLJQ.js +2 -0
  113. package/dist/chunk-OFBE4NGP.js +2 -0
  114. package/dist/chunk-OGTFJ3XD.js +2 -0
  115. package/dist/chunk-OL6KJP3N.js +16 -0
  116. package/dist/chunk-OLF4MA5W.js +8 -0
  117. package/dist/chunk-OTOKVOJ3.js +2 -0
  118. package/dist/chunk-OVTS4DKB.js +2 -0
  119. package/dist/chunk-OZYRSMSH.js +3 -0
  120. package/dist/chunk-P5XHIJHI.js +2 -0
  121. package/dist/chunk-PBI2LFKH.js +2 -0
  122. package/dist/chunk-PIOMTC27.js +2 -0
  123. package/dist/chunk-PTAWHLVJ.js +6 -0
  124. package/dist/chunk-PX4RYAAK.js +2 -0
  125. package/dist/chunk-PYAB5SM6.js +7 -0
  126. package/dist/chunk-Q5ELPRKQ.js +2 -0
  127. package/dist/chunk-Q65CQ4XL.js +2 -0
  128. package/dist/chunk-Q72QSKXC.js +308 -0
  129. package/dist/chunk-QCN62RTF.js +3 -0
  130. package/dist/chunk-QDCCHMVZ.js +2 -0
  131. package/dist/chunk-QHRNXP3C.js +3 -0
  132. package/dist/chunk-QKPLA6IC.js +2 -0
  133. package/dist/chunk-QOKYJ33H.js +2 -0
  134. package/dist/chunk-QW7EP6WI.js +21 -0
  135. package/dist/chunk-R2NOK63J.js +4 -0
  136. package/dist/chunk-RBAS5ZHI.js +2 -0
  137. package/dist/chunk-RDBI2RXU.js +9 -0
  138. package/dist/chunk-RKEJ6VTF.js +73 -0
  139. package/dist/chunk-RR7SX44N.js +35 -0
  140. package/dist/chunk-RU65DDUP.js +215 -0
  141. package/dist/chunk-SELM5MER.js +2 -0
  142. package/dist/chunk-SGX43S2L.js +2 -0
  143. package/dist/chunk-SMRBZ6EC.js +2 -0
  144. package/dist/chunk-SNNWPCN7.js +4 -0
  145. package/dist/chunk-ST7V3SKN.js +2 -0
  146. package/dist/chunk-SWHMHUKF.js +2 -0
  147. package/dist/chunk-SYDJMPES.js +2 -0
  148. package/dist/chunk-SZD2KF7Q.js +2 -0
  149. package/dist/chunk-T3DGWPXM.js +3 -0
  150. package/dist/chunk-TFZB6XTM.js +239 -0
  151. package/dist/chunk-TIIC3ZE7.js +2 -0
  152. package/dist/chunk-TRRC4ZJ7.js +2 -0
  153. package/dist/chunk-TXXOEMZJ.js +2 -0
  154. package/dist/chunk-UBGWN7I4.js +2 -0
  155. package/dist/chunk-UCD3H3UZ.js +5 -0
  156. package/dist/chunk-UDS562V4.js +5 -0
  157. package/dist/chunk-UNBY47BC.js +3 -0
  158. package/dist/chunk-UP3BUZR5.js +74 -0
  159. package/dist/chunk-UXM43C7T.js +3 -0
  160. package/dist/chunk-UZGZB3VB.js +3 -0
  161. package/dist/chunk-VE5AVNMP.js +2 -0
  162. package/dist/chunk-VEXUL62T.js +2 -0
  163. package/dist/chunk-VFY6Y2H6.js +61 -0
  164. package/dist/chunk-VUIYB2V3.js +2 -0
  165. package/dist/chunk-VXYS3FZD.js +23 -0
  166. package/dist/chunk-WE5RZHZ7.js +5 -0
  167. package/dist/chunk-WMPRTGH2.js +2 -0
  168. package/dist/chunk-WOQBZPIF.js +2 -0
  169. package/dist/chunk-XLQ3GLWZ.js +2 -0
  170. package/dist/chunk-XME3HPXZ.js +2 -0
  171. package/dist/chunk-XMQ23E27.js +2 -0
  172. package/dist/chunk-XWUOUWYI.js +2 -0
  173. package/dist/chunk-XZEE23VG.js +5 -0
  174. package/dist/chunk-Y6KHROC3.js +7 -0
  175. package/dist/chunk-YESXMKX3.js +3 -0
  176. package/dist/chunk-YMGZZEW4.js +2 -0
  177. package/dist/chunk-YSNONTJ2.js +2 -0
  178. package/dist/chunk-YUKYB54I.js +1 -0
  179. package/dist/chunk-YVCIMIOC.js +12 -0
  180. package/dist/chunk-Z54RD7VL.js +3 -0
  181. package/dist/chunk-ZKX2FRS6.js +15 -0
  182. package/dist/chunk-ZMI2JSX2.js +2 -0
  183. package/dist/chunk-ZV3JV5G5.js +8 -0
  184. package/dist/chunk-ZZ3MWF33.js +4 -0
  185. package/dist/chunk-ZZXSWSN6.js +2 -0
  186. package/dist/cli-context-3SNLDYBM.js +3 -0
  187. package/dist/cli-context-T3B7W6GG.js +2 -0
  188. package/dist/cli-program-YNOXO72B.js +7 -0
  189. package/dist/cli.js +3 -0
  190. package/dist/code-DlqpBDd0.d.ts +121 -0
  191. package/dist/command-descriptors-6AOUKWW7.js +346 -0
  192. package/dist/command-descriptors-ZFKJSRUP.js +344 -0
  193. package/dist/command-panels-SZONPMLJ.js +3 -0
  194. package/dist/config-types-BNoC96J3.d.ts +560 -0
  195. package/dist/db-D7sauVFH.d.ts +95 -0
  196. package/dist/direct-navigation-DP4LVMRX.js +3 -0
  197. package/dist/direct-navigation-FLUS3BT6.js +2 -0
  198. package/dist/exploration-topology-BG4v30HZ.d.ts +256 -0
  199. package/dist/file-dep-graph-Bqg3t3Px.d.ts +4 -0
  200. package/dist/file-kind-BKCVMNUf.d.ts +10 -0
  201. package/dist/frontend-behavior-evidence-EfM4_9bc.d.ts +4 -0
  202. package/dist/git-history-ChNHbfZQ.d.ts +13 -0
  203. package/dist/graph-evidence-BIFqyisO.d.ts +131 -0
  204. package/dist/health-DJaZXg8I.d.ts +340 -0
  205. package/dist/index.d.ts +183 -0
  206. package/dist/index.js +2 -0
  207. package/dist/invocation-command-descriptors-QT2JMY5J.js +3 -0
  208. package/dist/invocation-command-descriptors-YN4QJEAX.js +2 -0
  209. package/dist/next-anchor-candidates-BwMczMvX.d.ts +90 -0
  210. package/dist/output-continuation-command-2V2SL4TD.js +2 -0
  211. package/dist/output-continuation-command-65J5IP3O.js +3 -0
  212. package/dist/postinstall.js +3 -0
  213. package/dist/project-reindex-5JOKXAXT.js +2 -0
  214. package/dist/project-reindex-UQBIKO4M.js +3 -0
  215. package/dist/queries/affected.d.ts +40 -0
  216. package/dist/queries/affected.js +2 -0
  217. package/dist/queries/anchors.d.ts +123 -0
  218. package/dist/queries/anchors.js +2 -0
  219. package/dist/queries/architecture.d.ts +166 -0
  220. package/dist/queries/architecture.js +2 -0
  221. package/dist/queries/bottlenecks.d.ts +68 -0
  222. package/dist/queries/bottlenecks.js +2 -0
  223. package/dist/queries/by-kind.d.ts +27 -0
  224. package/dist/queries/by-kind.js +2 -0
  225. package/dist/queries/call-graph.d.ts +52 -0
  226. package/dist/queries/call-graph.js +2 -0
  227. package/dist/queries/change-surface.d.ts +55 -0
  228. package/dist/queries/change-surface.js +2 -0
  229. package/dist/queries/cleanup-plan.d.ts +66 -0
  230. package/dist/queries/cleanup-plan.js +2 -0
  231. package/dist/queries/co-change.d.ts +90 -0
  232. package/dist/queries/co-change.js +2 -0
  233. package/dist/queries/code.d.ts +6 -0
  234. package/dist/queries/code.js +2 -0
  235. package/dist/queries/complexity-hotspots.d.ts +61 -0
  236. package/dist/queries/complexity-hotspots.js +2 -0
  237. package/dist/queries/complexity.d.ts +74 -0
  238. package/dist/queries/complexity.js +2 -0
  239. package/dist/queries/context.d.ts +146 -0
  240. package/dist/queries/context.js +2 -0
  241. package/dist/queries/convergence.d.ts +33 -0
  242. package/dist/queries/convergence.js +2 -0
  243. package/dist/queries/coupling.d.ts +32 -0
  244. package/dist/queries/coupling.js +2 -0
  245. package/dist/queries/cycles.d.ts +66 -0
  246. package/dist/queries/cycles.js +2 -0
  247. package/dist/queries/dataflow.d.ts +77 -0
  248. package/dist/queries/dataflow.js +2 -0
  249. package/dist/queries/dead.d.ts +58 -0
  250. package/dist/queries/dead.js +2 -0
  251. package/dist/queries/decorative-checkers.d.ts +34 -0
  252. package/dist/queries/decorative-checkers.js +2 -0
  253. package/dist/queries/deep-chains.d.ts +5 -0
  254. package/dist/queries/deep-chains.js +2 -0
  255. package/dist/queries/dependence-slice.d.ts +46 -0
  256. package/dist/queries/dependence-slice.js +2 -0
  257. package/dist/queries/dependency-depth.d.ts +49 -0
  258. package/dist/queries/dependency-depth.js +2 -0
  259. package/dist/queries/deps.d.ts +15 -0
  260. package/dist/queries/deps.js +2 -0
  261. package/dist/queries/diff-impact.d.ts +165 -0
  262. package/dist/queries/diff-impact.js +2 -0
  263. package/dist/queries/doc-drift.d.ts +115 -0
  264. package/dist/queries/doc-drift.js +2 -0
  265. package/dist/queries/drift.d.ts +79 -0
  266. package/dist/queries/drift.js +2 -0
  267. package/dist/queries/duplicate-bodies.d.ts +55 -0
  268. package/dist/queries/duplicate-bodies.js +2 -0
  269. package/dist/queries/entry-map.d.ts +121 -0
  270. package/dist/queries/entry-map.js +2 -0
  271. package/dist/queries/evidence.d.ts +70 -0
  272. package/dist/queries/evidence.js +2 -0
  273. package/dist/queries/extract-candidates.d.ts +52 -0
  274. package/dist/queries/extract-candidates.js +2 -0
  275. package/dist/queries/fan.d.ts +53 -0
  276. package/dist/queries/fan.js +2 -0
  277. package/dist/queries/files.d.ts +20 -0
  278. package/dist/queries/files.js +2 -0
  279. package/dist/queries/health.d.ts +8 -0
  280. package/dist/queries/health.js +2 -0
  281. package/dist/queries/hierarchy.d.ts +21 -0
  282. package/dist/queries/hierarchy.js +2 -0
  283. package/dist/queries/hotspots.d.ts +42 -0
  284. package/dist/queries/hotspots.js +2 -0
  285. package/dist/queries/imports.d.ts +34 -0
  286. package/dist/queries/imports.js +2 -0
  287. package/dist/queries/incomplete-migration.d.ts +90 -0
  288. package/dist/queries/incomplete-migration.js +2 -0
  289. package/dist/queries/index.d.ts +180 -0
  290. package/dist/queries/index.js +2 -0
  291. package/dist/queries/isolated.d.ts +24 -0
  292. package/dist/queries/isolated.js +2 -0
  293. package/dist/queries/locality-candidates.d.ts +51 -0
  294. package/dist/queries/locality-candidates.js +2 -0
  295. package/dist/queries/members.d.ts +21 -0
  296. package/dist/queries/members.js +2 -0
  297. package/dist/queries/methods.d.ts +43 -0
  298. package/dist/queries/methods.js +2 -0
  299. package/dist/queries/not-implemented.d.ts +33 -0
  300. package/dist/queries/not-implemented.js +2 -0
  301. package/dist/queries/outline.d.ts +22 -0
  302. package/dist/queries/outline.js +2 -0
  303. package/dist/queries/passthrough-candidates.d.ts +41 -0
  304. package/dist/queries/passthrough-candidates.js +2 -0
  305. package/dist/queries/plan-context.d.ts +33 -0
  306. package/dist/queries/plan-context.js +2 -0
  307. package/dist/queries/react-component-duplicates.d.ts +39 -0
  308. package/dist/queries/react-component-duplicates.js +2 -0
  309. package/dist/queries/react-hook-candidates.d.ts +44 -0
  310. package/dist/queries/react-hook-candidates.js +2 -0
  311. package/dist/queries/react-large-component-pressure.d.ts +34 -0
  312. package/dist/queries/react-large-component-pressure.js +2 -0
  313. package/dist/queries/recent-duplicates.d.ts +79 -0
  314. package/dist/queries/recent-duplicates.js +2 -0
  315. package/dist/queries/redundant-reexports.d.ts +37 -0
  316. package/dist/queries/redundant-reexports.js +2 -0
  317. package/dist/queries/reference-neighborhood.d.ts +4 -0
  318. package/dist/queries/reference-neighborhood.js +2 -0
  319. package/dist/queries/reference-reachability.d.ts +48 -0
  320. package/dist/queries/reference-reachability.js +2 -0
  321. package/dist/queries/refs.d.ts +13 -0
  322. package/dist/queries/refs.js +2 -0
  323. package/dist/queries/self-audit.d.ts +65 -0
  324. package/dist/queries/self-audit.js +2 -0
  325. package/dist/queries/similar-chains.d.ts +48 -0
  326. package/dist/queries/similar-chains.js +2 -0
  327. package/dist/queries/similar-files.d.ts +35 -0
  328. package/dist/queries/similar-files.js +2 -0
  329. package/dist/queries/similar-signatures.d.ts +46 -0
  330. package/dist/queries/similar-signatures.js +2 -0
  331. package/dist/queries/similar.d.ts +187 -0
  332. package/dist/queries/similar.js +2 -0
  333. package/dist/queries/slice.d.ts +4 -0
  334. package/dist/queries/slice.js +2 -0
  335. package/dist/queries/source-inspection.d.ts +209 -0
  336. package/dist/queries/source-inspection.js +2 -0
  337. package/dist/queries/source-search.d.ts +85 -0
  338. package/dist/queries/source-search.js +2 -0
  339. package/dist/queries/stale-abstractions.d.ts +72 -0
  340. package/dist/queries/stale-abstractions.js +2 -0
  341. package/dist/queries/stats.d.ts +15 -0
  342. package/dist/queries/stats.js +2 -0
  343. package/dist/queries/surface.d.ts +22 -0
  344. package/dist/queries/surface.js +2 -0
  345. package/dist/queries/symbols.d.ts +14 -0
  346. package/dist/queries/symbols.js +2 -0
  347. package/dist/queries/system-map.d.ts +449 -0
  348. package/dist/queries/system-map.js +2 -0
  349. package/dist/queries/system.d.ts +21 -0
  350. package/dist/queries/system.js +2 -0
  351. package/dist/queries/test-quality.d.ts +56 -0
  352. package/dist/queries/test-quality.js +2 -0
  353. package/dist/queries/trace.d.ts +68 -0
  354. package/dist/queries/trace.js +2 -0
  355. package/dist/queries/twin-ab.d.ts +66 -0
  356. package/dist/queries/twin-ab.js +2 -0
  357. package/dist/queries/twin-drift.d.ts +119 -0
  358. package/dist/queries/twin-drift.js +2 -0
  359. package/dist/queries/unused-imports.d.ts +4 -0
  360. package/dist/queries/unused-imports.js +2 -0
  361. package/dist/queries/unused-params.d.ts +38 -0
  362. package/dist/queries/unused-params.js +2 -0
  363. package/dist/queries/value-flow.d.ts +42 -0
  364. package/dist/queries/value-flow.js +2 -0
  365. package/dist/queries/vue-component-duplicates.d.ts +43 -0
  366. package/dist/queries/vue-component-duplicates.js +2 -0
  367. package/dist/queries/vue-composable-candidates.d.ts +44 -0
  368. package/dist/queries/vue-composable-candidates.js +2 -0
  369. package/dist/queries/vue-large-view-pressure.d.ts +41 -0
  370. package/dist/queries/vue-large-view-pressure.js +2 -0
  371. package/dist/queries/wrapper-candidates.d.ts +34 -0
  372. package/dist/queries/wrapper-candidates.js +2 -0
  373. package/dist/reindex-worker.js +3 -0
  374. package/dist/reindex.d.ts +254 -0
  375. package/dist/reindex.js +298 -0
  376. package/dist/repository-text-C0Q8VYdN.d.ts +19 -0
  377. package/dist/runtime.d.ts +555 -0
  378. package/dist/runtime.js +4 -0
  379. package/dist/rust-semantic-session-server.js +2 -0
  380. package/dist/rust-semantic-session-worker.js +2 -0
  381. package/dist/rust-semantic-worker.js +2 -0
  382. package/dist/scip-cli-B7N3haxa.d.ts +67 -0
  383. package/dist/source-snippet-_wrcgmZc.d.ts +15 -0
  384. package/dist/symbol-types-BIQwfoAx.d.ts +74 -0
  385. package/dist/typescript-mailbox-worker.js +2 -0
  386. package/dist/watch-server.js +8 -0
  387. package/docs/AGENT_GUIDE.md +148 -0
  388. package/docs/AI_FAILURE_MODES.md +43 -0
  389. package/docs/API.md +40 -0
  390. package/docs/API_EVOLUTION.md +77 -0
  391. package/docs/CLI_JSON_OUTPUT.md +389 -0
  392. package/docs/COMMAND_REFERENCE.md +294 -0
  393. package/docs/CONFIGURATION_WRITE_SAFETY.md +131 -0
  394. package/docs/DETECTOR_GUIDE.md +46 -0
  395. package/docs/DURABILITY.md +159 -0
  396. package/docs/INDEX_GENERATIONS.md +167 -0
  397. package/docs/LOCK_PROTOCOL.md +133 -0
  398. package/docs/MAILBOX_LIFECYCLE.md +224 -0
  399. package/docs/REGEX_POLICY.md +36 -0
  400. package/docs/REINDEX_METADATA_COMPATIBILITY.md +104 -0
  401. package/docs/RUST_DURABLE_SESSION_PROTOCOL.md +126 -0
  402. package/docs/SECURITY_MODEL.md +125 -0
  403. package/docs/TELEMETRY_RETENTION.md +84 -0
  404. package/docs/TIME_SEMANTICS.md +77 -0
  405. package/docs/WATCH_REFRESH_REQUESTS.md +123 -0
  406. package/docs/WINDOWS_SIDECAR_RELEASE.md +424 -0
  407. package/docs/accuracy-audit-checklist.md +304 -0
  408. package/docs/accuracy-hardening-goal.md +500 -0
  409. package/docs/analyzer-inventory.md +78 -0
  410. package/docs/analyzer-validation-protocol.md +84 -0
  411. package/docs/architecture-coherence-vision.md +254 -0
  412. package/docs/assets/codebaseiq-logo-dark.svg +21 -0
  413. package/docs/assets/codebaseiq-logo.svg +24 -0
  414. package/docs/locality-analyzer-design.md +193 -0
  415. package/docs/schemas/cli-json-envelope.schema.json +237 -0
  416. package/docs/schemas/cli-output-page.schema.json +104 -0
  417. package/docs/schemas/npm-release-state.schema.json +146 -0
  418. package/docs/schemas/observation-receipt.schema.json +164 -0
  419. package/docs/schemas/project-config.schema.json +318 -0
  420. package/docs/schemas/suppression-record.schema.json +79 -0
  421. package/docs/schemas/windows-sidecar-provenance.schema.json +137 -0
  422. package/package.json +482 -0
  423. package/scripts/build-codebaseiq-windows.mjs +197 -0
  424. package/scripts/codebaseiq-windows-provenance.mjs +364 -0
  425. package/scripts/evidence-product-contract.mjs +197 -0
  426. package/scripts/verify-codebaseiq-windows.mjs +29 -0
  427. package/skills/codebaseiq/SKILL.md +75 -0
  428. package/skills/codebaseiq/agents/openai.yaml +4 -0
  429. package/skills/codebaseiq-explore/SKILL.md +34 -0
  430. package/skills/codebaseiq-explore/agents/openai.yaml +4 -0
  431. package/skills/concrete-plan/SKILL.md +79 -0
  432. package/skills/concrete-plan/agents/openai.yaml +4 -0
@@ -0,0 +1,43 @@
1
+ # Coding-agent failure modes
2
+
3
+ codebaseiq helps with failures caused by an incomplete repository map. It does
4
+ not prevent every coding error and does not replace tests.
5
+
6
+ ## Narrow implementation
7
+
8
+ The edit handles the obvious entry point but misses consumers, callers, or
9
+ parallel paths. Use `codebaseiq context <target>` before the edit and
10
+ `codebaseiq diff-impact` after it.
11
+
12
+ ## Retirement residue
13
+
14
+ A replacement works, but old helpers, exports, adapters, tests, or docs remain
15
+ and mislead later agents. Inspect `codebaseiq incomplete-migration --full`,
16
+ `codebaseiq dead --full`, and the changed source. A detector suggests where to
17
+ look; source and native checks decide what can be removed.
18
+
19
+ ## Duplicate or drifted concepts
20
+
21
+ An agent creates another implementation instead of reusing the current owner,
22
+ or updates one twin while leaving another behind. Inspect
23
+ `codebaseiq duplicate-bodies --full`, `codebaseiq twin-drift --full`, and
24
+ `codebaseiq recent-duplicates --full`.
25
+
26
+ ## Structural drift
27
+
28
+ The code works locally but violates declared dependency rules or spreads one
29
+ concept across inappropriate boundaries. Inspect `codebaseiq architecture` and
30
+ the relevant dependency edges.
31
+
32
+ ## Framework cleanup missed
33
+
34
+ Repeated React components or hooks, or repeated Vue components or composables,
35
+ remain invisible to a language-neutral review. Use the React and Vue detector
36
+ families in `codebaseiq health --full`, then confirm candidates in source.
37
+
38
+ ## Ceremony without information
39
+
40
+ Repeated status checks, duplicate queries, and record writing spend time
41
+ without changing the agent's decision. codebaseiq therefore keeps work-state
42
+ ownership outside the tool. Reuse evidence while repository state and coverage
43
+ needs are unchanged.
package/docs/API.md ADDED
@@ -0,0 +1,40 @@
1
+ # Programmatic API
2
+
3
+ Public query commands are also available as TypeScript functions. The `queries` namespace exports cover the analysis commands, including the `top*` variants of `fan-in`, `fan-out`, and `coupling`, plus `similarAll` for the cross-codebase mode of `similar`. Operational CLI commands such as `setup`, `doctor`, and `watch` remain runtime commands rather than query-library exports.
4
+
5
+ ```typescript
6
+ import { ScipDatabase, createGitignoreFilter } from 'codebaseiq';
7
+ import {
8
+ health,
9
+ affected,
10
+ changeSurface,
11
+ diffImpact,
12
+ hotspots,
13
+ similar,
14
+ dead,
15
+ convergence,
16
+ } from 'codebaseiq/queries';
17
+
18
+ const filter = createGitignoreFilter('/path/to/project');
19
+ const db = new ScipDatabase(
20
+ {
21
+ dbPath: '/path/to/index.db',
22
+ indexPath: '/path/to/index.scip',
23
+ projectRoot: '/path/to/project',
24
+ },
25
+ filter,
26
+ );
27
+
28
+ const report = health(db);
29
+ console.log(`Score: ${report.score}/100`);
30
+ console.log(`Actions: ${report.actions.length}`);
31
+
32
+ const blast = affected(db, 'login', { maxDepth: 3 });
33
+ const brief = changeSurface(db, 'auth.service.ts');
34
+ const impact = diffImpact(db, { base: 'main' });
35
+
36
+ const pairs = similar(db, 'myFunction', { minSimilarity: 0.5 });
37
+ const recipe = convergence(db, 'funcA', 'funcB');
38
+
39
+ db.close();
40
+ ```
@@ -0,0 +1,77 @@
1
+ # Public TypeScript API evolution
2
+
3
+ The public TypeScript API is the compiler-visible declaration surface
4
+ reachable through `codebaseiq` package export paths. Its essential property is
5
+ that downstream programs can depend on it without importing this repository's
6
+ internal files.
7
+
8
+ Every built declaration path is recorded in
9
+ `docs/api/codebaseiq.api.json`. The report includes exported names, declaration
10
+ kinds and signatures, generic and parameter syntax, return types, and the
11
+ shared declaration chunks that carry referenced public types. Generation
12
+ normalizes formatting, comments, named import/export order, path separators,
13
+ and tsup chunk hashes so the review shows semantic declaration changes rather
14
+ than build noise.
15
+
16
+ ## Contributor workflow
17
+
18
+ Build and compare the current declarations:
19
+
20
+ ```bash
21
+ npm run api:check
22
+ ```
23
+
24
+ The check fails closed when a declaration target is absent, the committed
25
+ manifest is malformed, its acceptance record is missing, or any declaration
26
+ changes. Review every reported path and downstream use. Then accept the change
27
+ with one classification:
28
+
29
+ ```bash
30
+ npm run api:update -- \
31
+ --classification additive \
32
+ --reason "Add an optional result field for evidence provenance."
33
+ ```
34
+
35
+ The classifications are:
36
+
37
+ - `additive`: an old consumer remains valid, such as a new export or an
38
+ optional result field;
39
+ - `compatible-correction`: the declaration report changes to correct a
40
+ contract that did not describe usable runtime behavior, with the reasoning
41
+ recorded for review;
42
+ - `breaking`: an old consumer may stop compiling or acquire a different
43
+ meaning.
44
+
45
+ The checker automatically identifies additions and removals. It treats changed
46
+ signatures and referenced shared declarations conservatively. A human may
47
+ classify uncertain drift as a compatible correction or breaking change, but
48
+ cannot accept a known or uncertain change as additive without resolving the
49
+ evidence.
50
+
51
+ `api:update` writes a content-addressed record under
52
+ `docs/api/changes/`. The record binds the old and new manifest digests, package
53
+ version, automatic result, chosen classification, reason, and exact change
54
+ list. Do not edit the generated manifest or an acceptance record by hand.
55
+
56
+ ## Compatibility policy
57
+
58
+ - Keep a deprecated export or adapter for at least one minor release before
59
+ removal when a feasible compatibility path exists.
60
+ - When preserving behavior would reintroduce a deliberately retired subsystem,
61
+ record a versioned compatibility exception beside the API change. The record
62
+ must name the removed referents, explain why an adapter would give consumers
63
+ false semantics, preserve any independently useful serialized types, and
64
+ identify the supported replacement. A generated breaking-change acceptance
65
+ record alone is not that justification.
66
+ - Add optional fields instead of making old consumers construct new required
67
+ state.
68
+ - Treat parameter optionality, union membership, generic constraints, and
69
+ discriminated-union members as contract changes even when runtime tests pass.
70
+ - Preserve the compile fixture in
71
+ `tests/fixtures/public-api-consumer/`. It represents a previously written
72
+ downstream program and must compile against the newly built package.
73
+ - The two-package release coordinator runs lint, whose gate includes
74
+ `api:check`, before packing either artifact or reading registry state. Direct
75
+ `npm publish` is refused by `prepublishOnly`; it is not an alternate API
76
+ compatibility path. A declaration change is not accepted merely because
77
+ its implementation tests pass.
@@ -0,0 +1,389 @@
1
+ # CLI output modes
2
+
3
+ Human output is the default for people and agents. It is the command-owned
4
+ presentation: reports retain sections and whitespace, and `code` retains a
5
+ path/range header, source indentation, and one-based line numbers. It omits
6
+ transport metadata that does not help answer the command's question.
7
+
8
+ Public commands that support structured output share the same three options:
9
+
10
+ ```text
11
+ --json Emit the stable versioned CLI envelope.
12
+ --result-only With --json, emit only the command-owned result.
13
+ --compact With --json, minify the selected JSON form for a program.
14
+ ```
15
+
16
+ Use plain `--json` for an integration that depends on producer, schema,
17
+ coverage, evidence, arguments, or invocation options. Use `--json
18
+ --result-only` for a program that needs just the result. Agents should run the
19
+ ordinary command instead; pretty JSON remains structurally noisier than the
20
+ human renderer. Both modifiers are rejected without `--json`.
21
+
22
+ For example, one exact `codebaseiq code <selector>` prints source directly. Its
23
+ single-result result-only form contains only `file`, resolved `symbol`,
24
+ `language`, a one-based `range`, and ordered `{ line, text }` rows. With several
25
+ selectors, an exact-file export surface, or ambiguity, result-only reports each
26
+ selector's status, sources, range or file coverage, omitted-definition ledger,
27
+ candidates, and literal values. A line-range selector includes the exact
28
+ requested lines plus statically attributed same-file callable definitions and
29
+ states the dynamic-call limit. An exact-file export surface contains exported
30
+ definitions—or top-level definitions when no explicit export surface
31
+ exists—and their same-file referenced definitions; `--members all` is the
32
+ explicit whole-file form. Ambiguity never silently selects one candidate.
33
+
34
+ ## Stable JSON envelope
35
+
36
+ A CLI JSON envelope is the public transport record printed by a codebaseiq
37
+ command when a caller selects `--json`. Its real-world units are the JSON
38
+ objects read by agents, shell scripts, CI jobs, and other programs. It is a
39
+ versioned message format distinguished by one stable outer shape that names
40
+ its producer, command, and result contract while leaving the command-specific
41
+ payload under `result`.
42
+
43
+ The current envelope is schema version 1:
44
+
45
+ ```json
46
+ {
47
+ "kind": "codebaseiq-result",
48
+ "schemaVersion": 1,
49
+ "producer": { "name": "codebaseiq", "version": "0.20.0" },
50
+ "command": "refs",
51
+ "operationRole": "repository-observation",
52
+ "resultSchemaVersion": 1,
53
+ "evidence": "graph-fact",
54
+ "evidenceContext": {
55
+ "schemaVersion": 1,
56
+ "operationRole": "repository-observation",
57
+ "receipt": {
58
+ "schemaVersion": 2,
59
+ "observedAt": "2026-07-30T12:00:00.000Z",
60
+ "facts": {
61
+ "collaborationDomain": {
62
+ "schemaVersion": 1,
63
+ "canonicalizationVersion": 1,
64
+ "hashAlgorithm": "sha256",
65
+ "projection": { "name": "codebaseiq:collaboration-domain", "version": 1 },
66
+ "digest": "<64 lowercase hex characters>"
67
+ },
68
+ "index": {
69
+ "generation": {
70
+ "schemaVersion": 1,
71
+ "canonicalizationVersion": 1,
72
+ "hashAlgorithm": "sha256",
73
+ "projection": { "name": "codebaseiq:index-generation", "version": 1 },
74
+ "digest": "<64 lowercase hex characters>"
75
+ },
76
+ "source": "immutable"
77
+ }
78
+ },
79
+ "observedSources": [{ "kind": "index-generation" }],
80
+ "stabilityProofs": [{ "source": "index-generation", "kind": "immutable" }]
81
+ },
82
+ "analysisManifest": {
83
+ "schemaVersion": 1,
84
+ "evidence": "graph-fact",
85
+ "coverage": {},
86
+ "claimQualification": {
87
+ "schemaVersion": 1,
88
+ "origin": "compiler-graph",
89
+ "coverage": { "state": "complete", "returned": 1, "totalKnown": true, "total": 1, "omitted": 0 },
90
+ "producerValidation": { "status": "not-evaluated" },
91
+ "stateAuthority": {
92
+ "policyVersion": 1,
93
+ "authority": "advisory",
94
+ "requiredRelationships": ["collaborationDomain", "wholeContent", "observationStability"],
95
+ "reasons": ["wholeContent:unknown"]
96
+ },
97
+ "repositoryPolicy": {
98
+ "policyId": "codebaseiq:unresolved-repository-policy",
99
+ "policyVersion": 1,
100
+ "permission": "not-established",
101
+ "reasons": ["No repository action policy was supplied for this claim."]
102
+ }
103
+ }
104
+ }
105
+ },
106
+ "args": ["login"],
107
+ "options": { "json": true },
108
+ "result": {},
109
+ "coverage": {}
110
+ }
111
+ ```
112
+
113
+ `schemaVersion` governs the outer transport record. `resultSchemaVersion`
114
+ governs the payload selected by `command`; it can advance without changing
115
+ the transport version. `producer.version` is the installed package version
116
+ that emitted the record. `kind` prevents a consumer from mistaking another
117
+ JSON protocol for a CLI result.
118
+
119
+ `operationRole` names the effect of the parsed invocation, independently from
120
+ how its result was derived. The closed roles distinguish repository
121
+ observation, repository preview, mutation, combined mutation/observation,
122
+ environment observation, and tool information. A command with several modes
123
+ selects its role from parsed arguments and options before its handler runs.
124
+
125
+ Repository observations, previews, and composite operations attach
126
+ `evidenceContext` automatically at the shared renderer when they hold an open
127
+ database. Pure mutations and environment/tool-information results do not
128
+ inherit repository-observation authority merely because they emit JSON. The
129
+ context repeats the selected operation role so it remains self-contained; the
130
+ decoder rejects conflicting top-level and nested roles.
131
+
132
+ The context's version-2 `receipt` records independent facts about the
133
+ collaboration domain, workspace instance, whole repository content, relevant
134
+ inputs, index inputs, immutable generation, observed sources, and the
135
+ mechanism—if any—that kept each source fixed. Every content-derived identity
136
+ names its projection and projection version, canonicalization version, and
137
+ hash algorithm. A missing fact means unknown; it is never inferred from a
138
+ neighboring identity.
139
+
140
+ The example identifies the immutable index generation the query actually
141
+ held, but it does not contain a fixed repository snapshot or an index-input
142
+ alignment proof. Product policy therefore keeps it advisory for completion
143
+ even though the index source itself is immutable. `analysisManifest`
144
+ separately records how the result was produced and how much was examined.
145
+
146
+ `claimQualification` keeps five questions independent. `origin` identifies
147
+ the method that produced support for the result. `coverage` identifies how
148
+ much of the relevant answer the invocation enumerated. `producerValidation`
149
+ reports performance against a named versioned corpus when such certification
150
+ exists. `stateAuthority` is product policy derived from the receipt rather
151
+ than a producer-authored strength label. `repositoryPolicy.permission` states
152
+ what response the repository permits. A strong value in one field never
153
+ upgrades another.
154
+
155
+ For a command whose aggregate origin is `mixed`, `families` binds a stable
156
+ result selector either to one fixed origin or to an existing per-row
157
+ provenance field. This retains the actual origins of findings and result
158
+ families instead of forcing a consumer to treat every row as generically
159
+ mixed. The legacy top-level and manifest `evidence` values remain during the
160
+ additive compatibility window.
161
+
162
+ When a producer actually reads repository bytes through the fixed-snapshot
163
+ boundary, its receipt may additionally contain:
164
+
165
+ - `facts.wholeContent`, derived from the immutable Git tree plus captured
166
+ dirty, untracked, declared-ignored, deletion, symlink, and executable-mode
167
+ overlays;
168
+ - one `facts.relevantInputs` entry for `codebaseiq:index-inputs`;
169
+ - `facts.index.inputs`, derived from the versioned project-input fingerprint
170
+ already persisted with the held generation; and
171
+ - a `repository-snapshot` observed source with a `fixed-snapshot` stability
172
+ proof.
173
+
174
+ Equal `codebaseiq:index-inputs` projections establish exact alignment between
175
+ that snapshot and the immutable generation. A capture race, unsupported input,
176
+ or producer that never read repository bytes leaves the snapshot facts absent;
177
+ absence remains `unknown`. A producer does not gain whole-content authority
178
+ merely because another command could have taken a snapshot.
179
+
180
+ Version-1 receipts remain readable as legacy provenance. Their path-derived
181
+ project identity and mixed worktree hash are not relabeled as collaboration,
182
+ workspace, or content identities. Only a legacy index-generation identity can
183
+ be compared as the same legacy fact; unproved v2 relationships remain
184
+ `unknown`.
185
+
186
+ The existing top-level `evidence`, `analysisBudget`, and `coverage` fields
187
+ remain during the additive migration so older tolerant consumers continue to
188
+ work. New consumers may read the nested context. `--result-only` deliberately
189
+ omits the common envelope, including this context, and therefore cannot stand
190
+ alone as completion evidence.
191
+
192
+ The machine-readable schema is
193
+ [`schemas/cli-json-envelope.schema.json`](schemas/cli-json-envelope.schema.json).
194
+ The public `codebaseiq/runtime` export provides
195
+ `decodeCliJsonEnvelope()` and `requireCompatibleCliJsonEnvelope()` for
196
+ consumers that want the repository's compatibility policy rather than a
197
+ hand-written field check.
198
+
199
+ ## Complete output for agents
200
+
201
+ An output page is one consecutive, bounded part of the characters a command
202
+ rendered. Its real-world units are the `codebaseiq-output-page` objects and
203
+ human page blocks returned after a result exceeds an agent transport's safe
204
+ size. It differs from a query limit because it divides already-produced
205
+ output without discarding any character: following each emitted continuation
206
+ command reconstructs the complete rendered stream.
207
+
208
+ Every command accepts these global options:
209
+
210
+ ```text
211
+ --output-page-size <characters>
212
+ --output-cursor <cursor>
213
+ ```
214
+
215
+ Run commands normally without choosing a page size. Human output larger than
216
+ 12,000 characters is paged automatically as ordinary multiline text, not as a
217
+ JSON object. Each incomplete page prints one exact continuation command after
218
+ its content. Agents must run that command unchanged until the output-complete
219
+ marker. Supplying `--output-page-size` changes the character budget; it does
220
+ not select JSON. The value counts rendered JavaScript string characters, not
221
+ rows, results, model tokens, or bytes. If the complete result fits, codebaseiq
222
+ returns it unchanged and removes the temporary snapshot; a page wrapper exists
223
+ only when more content remains. Partial human pages end at the last complete
224
+ line within that budget whenever one exists, so the next page begins with its
225
+ own heading or source line number; a single line longer than the budget is the
226
+ only case that requires a character-boundary split. Do not pipe codebaseiq
227
+ through `head`, `tail`, or a line-range `sed`; those programs discard output
228
+ without creating a resumable position.
229
+
230
+ Default `--json` output remains the ordinary, additively extensible
231
+ `codebaseiq-result` envelope. When that envelope exceeds
232
+ 12,000 characters, codebaseiq writes an early stderr warning containing the
233
+ exact command that opts into output pages. The paged command returns:
234
+
235
+ ```json
236
+ {
237
+ "kind": "codebaseiq-output-page",
238
+ "schemaVersion": 1,
239
+ "producer": { "name": "codebaseiq", "version": "0.20.0" },
240
+ "command": "architecture",
241
+ "contentType": "application/json",
242
+ "agentInstruction": "INCOMPLETE EVIDENCE: do not draw conclusions or report completion from this partial page. Run page.continuation.command exactly, then repeat until page.complete is true.",
243
+ "page": {
244
+ "offset": 0,
245
+ "returnedCharacters": 12000,
246
+ "totalCharacters": 48152,
247
+ "omittedCharacters": 36152,
248
+ "remainingCharacters": 36152,
249
+ "complete": false,
250
+ "outputHash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
251
+ "continuation": {
252
+ "cursor": "<opaque cursor>",
253
+ "command": "codebaseiq architecture --json --output-page-size 12000 --output-cursor <opaque cursor>"
254
+ }
255
+ },
256
+ "content": "{\n \"kind\": \"codebaseiq-result\",\n ..."
257
+ }
258
+ ```
259
+
260
+ The cursor is bound to the executable or package-runner prefix, command,
261
+ working directory, complete non-pagination argument list, immutable page
262
+ number and size, private output snapshot, and SHA-256 of the complete rendered
263
+ output. The initial capture records that invocation identity plus each page's
264
+ UTF-8 byte range and hash. A continuation reads and verifies only that range,
265
+ so retrieving all pages performs linear snapshot I/O and never re-runs the
266
+ command. A changed executable identity, page, page size, missing snapshot, or
267
+ expired snapshot is rejected with the exact page-one restart command using the
268
+ same prefix that created it.
269
+
270
+ A genuinely partial JSON page must carry `content` as a string because an
271
+ arbitrary character boundary is not necessarily valid nested JSON. Run the
272
+ emitted continuation exactly until completion. Normal agent work should use
273
+ human output, where partial pages remain multiline text rather than a JSON
274
+ string.
275
+
276
+ One snapshot is bounded to 32 million characters, 64 MiB, and 32,768 pages.
277
+ The per-user pool is bounded to 32 snapshots and 256 MiB under atomic
278
+ reservation. Every incomplete machine-readable page carries a direct
279
+ `agentInstruction`; consumers must follow `page.continuation.command` until
280
+ `page.complete` is `true`.
281
+
282
+ Output pages and result coverage answer different questions:
283
+
284
+ - output pagination says whether every rendered character is retrievable;
285
+ - the result envelope's `coverage` says whether the command examined every
286
+ logical result unit.
287
+
288
+ A completely retrieved page can therefore still contain a bounded or sampled
289
+ analysis. Use the result envelope's stated `--full` remediation when present,
290
+ then follow output continuation commands until complete.
291
+
292
+ Invocation coverage counts the semantic result units declared by the command
293
+ descriptor. A list command counts top-level rows; a report counts one report;
294
+ and a command with a named result field counts only that field. Unrelated
295
+ diagnostic arrays do not inflate `returned`. Symbol-selecting commands also
296
+ report a separate `coverage.resolution` state—`exact`, `ambiguous`, or
297
+ `missing` with its candidate count—because resolving one requested identity
298
+ and enumerating that identity's result rows are different completeness
299
+ questions.
300
+
301
+ `refs --limit <n>` uses a generation-bound keyset cursor: each ordinary page
302
+ continues after the last returned `(relativePath, line)` and stops once it has
303
+ found the requested rows plus one continuation witness. The JSON result reports
304
+ `pagination.producer: "source-keyset"` for that bounded producer. Explicit
305
+ semantic enrichment (`--full`), Ruby supplemental evidence, and the coarse SCIP
306
+ chunk fallback cannot currently resume before complete materialization; those
307
+ pages preserve their evidence but report
308
+ `pagination.producer: "complete-only"` instead of implying that `--limit`
309
+ bounded the analysis work. Version-1 offset cursors remain readable and their
310
+ next continuation is upgraded to the version-2 keyset format. Every result
311
+ cursor is rejected after the index generation changes.
312
+
313
+ The machine-readable page schema is
314
+ [`schemas/cli-output-page.schema.json`](schemas/cli-output-page.schema.json).
315
+ Page sizes range from 256 through 100,000 characters and cursors are limited
316
+ to 4,096 characters. The first paged invocation streams the complete output
317
+ to a mode-`0600` snapshot beneath a current-user mode-`0700` temporary
318
+ directory while retaining only the requested page in memory. Snapshots expire
319
+ after one hour and are removed after the final page. Pagination imposes no
320
+ arbitrary total-output ceiling and does not silently discard later pages;
321
+ command-level result budgets still apply and report their own completeness.
322
+
323
+ ## Compatibility policy
324
+
325
+ The decoder accepts:
326
+
327
+ | Input | Meaning | Consumer action |
328
+ | ------------------------------------------------------------------- | --------------------------------------------- | -------------------------------------------------------------- |
329
+ | Unversioned legacy envelope | The public shape emitted before schema v1 | Read as supported legacy v0; plan migration |
330
+ | `kind: "codebaseiq-result"`, `schemaVersion: 1` | Current transport contract | Read the named result schema |
331
+ | A supported envelope with an unknown command `resultSchemaVersion` | A command payload this consumer does not know | Reject that payload without changing unrelated command schemas |
332
+ | A higher or otherwise unsupported positive envelope `schemaVersion` | An outer contract this consumer does not know | Reject with producer/version context |
333
+ | Missing required identity or transport fields | A malformed or different message | Reject with the failed boundary |
334
+
335
+ Consumers must ignore unknown fields. Additive fields can therefore ship in a
336
+ minor release. A field removal, type change, meaning change, or previously
337
+ optional field becoming required needs a new relevant schema version.
338
+ Deprecated aliases remain available for a documented compatibility window;
339
+ removing one requires a major contract transition.
340
+
341
+ The committed v0 and v1 fixtures in `tests/fixtures/` prove that the newest
342
+ decoder reads both generations. The v1 fixture also contains an unknown
343
+ additive field so tests prove tolerant reads rather than exact-key coupling.
344
+
345
+ ## Effectiveness telemetry authority
346
+
347
+ `effectiveness --json` reports both handling outcomes and the authority of the
348
+ observer that produced them. Repository-local agents and humans can edit the
349
+ same `.codebaseiq/events/` and suppression files being summarized, so their
350
+ rows use `authority: "local-writable-telemetry"` and expose
351
+ `resolutionVsSuppressionRate`. The legacy `precision` result field remains
352
+ present but is `null` for writable, mixed, or self-asserted populations. It is
353
+ numeric only when every event in that population is a `protected-ci`
354
+ observation with `protected-external` authority and the caller supplies its
355
+ gate-run ID through a separately controlled attestation set. The built-in
356
+ repository-history command supplies no such set, so writable JSON cannot
357
+ self-promote into an independent grade. External evaluators can call the
358
+ public `computeEffectiveness()` export from `codebaseiq/queries` with
359
+ `protectedGateRunIds` obtained from their separately controlled corpus.
360
+
361
+ The result also includes observer counts, distinct and missing gate-run
362
+ identities, and bounded anomaly samples. Those samples identify calibration
363
+ work without requiring a human to approve every ordinary automated
364
+ suppression. `recordCompatibility.outcomeEvents` remains the independent
365
+ statement about whether every event file was readable; neither compatibility
366
+ nor Git can prove that a writable event file was never deleted.
367
+
368
+ ## Other JSON protocols
369
+
370
+ The hidden `__health-phase` and `__diff-impact-batch` commands are
371
+ same-package child-process messages, not public `--json` responses. They use
372
+ the independently versioned `codebaseiq-isolated-analysis` protocol and are
373
+ validated for protocol name, schema version, producer, command, and result
374
+ before the parent accepts them.
375
+
376
+ The `hook-context`, `hook-pretool`, and `hook-stop` outputs implement the
377
+ Codex or Claude host's hook schema. Those hosts are the protocol owners, so
378
+ codebaseiq must not add its CLI envelope fields to their messages. The hook
379
+ event discriminator supplied by the host contract identifies those records.
380
+
381
+ ## Evolution checklist
382
+
383
+ 1. Keep existing fields and meanings when making an additive change.
384
+ 2. Bump `resultSchemaVersion` when one command's payload breaks compatibility.
385
+ 3. Bump `schemaVersion` when the shared outer record breaks compatibility.
386
+ 4. Keep a fixture for the previous supported generation and teach the decoder
387
+ whether to migrate or reject it.
388
+ 5. Update the JSON Schema, this guide, the command reference, and compatibility
389
+ tests in the same change.