scip-query 0.23.0 → 0.26.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 (650) hide show
  1. package/CHANGELOG.md +491 -2
  2. package/README.md +111 -122
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/by-kind-PRVFAGTQ.js +2 -0
  5. package/dist/call-graph-DVPAQV2F.js +2 -0
  6. package/dist/call-graph-evidence-CUtj8V2I.d.ts +19 -0
  7. package/dist/chunk-2FSBGL5P.js +2 -0
  8. package/dist/chunk-2HLAFUCY.js +2 -0
  9. package/dist/chunk-2IWUT6CJ.js +3 -0
  10. package/dist/chunk-2KNN7GTQ.js +2 -0
  11. package/dist/chunk-2LHXRE2B.js +8 -0
  12. package/dist/{chunk-EG2CPZMJ.js → chunk-2YXE77TJ.js} +2 -2
  13. package/dist/chunk-36SGVCGX.js +2 -0
  14. package/dist/chunk-3ABBFPTP.js +2 -0
  15. package/dist/chunk-3IVFU4FD.js +3 -0
  16. package/dist/chunk-3JIQS44J.js +7 -0
  17. package/dist/chunk-3ZRB6DNK.js +7 -0
  18. package/dist/{chunk-6YTSKJJ3.js → chunk-42EOW5VI.js} +1 -1
  19. package/dist/{chunk-6I6L7Z62.js → chunk-4BHGBMNO.js} +2 -2
  20. package/dist/chunk-4BP3UBDG.js +2 -0
  21. package/dist/chunk-4D6RO7G4.js +2 -0
  22. package/dist/chunk-4FEWQ6RH.js +2 -0
  23. package/dist/chunk-4IGEOBG7.js +2 -0
  24. package/dist/chunk-4QZXBUKC.js +2 -0
  25. package/dist/chunk-4WBDEVX2.js +4 -0
  26. package/dist/chunk-4WCUBZU3.js +8 -0
  27. package/dist/chunk-4WTUBQ36.js +40 -0
  28. package/dist/chunk-4XQ4O6IM.js +3 -0
  29. package/dist/chunk-55UQAMZO.js +4 -0
  30. package/dist/chunk-5D2LVK7O.js +125 -0
  31. package/dist/chunk-5IYJ56TT.js +2 -0
  32. package/dist/chunk-5PLMJC7Q.js +2 -0
  33. package/dist/chunk-5TNQJUR2.js +5 -0
  34. package/dist/chunk-62BDNPMI.js +2 -0
  35. package/dist/chunk-64DZ5TXR.js +7 -0
  36. package/dist/chunk-65245JCM.js +2 -0
  37. package/dist/chunk-6FFVZZL4.js +2 -0
  38. package/dist/chunk-6KO5JHAR.js +2 -0
  39. package/dist/chunk-6LRXOOSX.js +2 -0
  40. package/dist/chunk-6LSEIIF7.js +2 -0
  41. package/dist/chunk-6YMNWD3H.js +6 -0
  42. package/dist/chunk-72AD6ZRR.js +5 -0
  43. package/dist/chunk-73AAKPUC.js +4 -0
  44. package/dist/chunk-76CZ77DF.js +2 -0
  45. package/dist/chunk-7VPEEAAG.js +2 -0
  46. package/dist/chunk-7WTPQ4NX.js +14 -0
  47. package/dist/chunk-7Y5T6XDP.js +2 -0
  48. package/dist/chunk-A2IIGFMJ.js +5 -0
  49. package/dist/chunk-AB5KCTEV.js +2 -0
  50. package/dist/chunk-AC566WBP.js +6 -0
  51. package/dist/chunk-AGWFSTXC.js +3 -0
  52. package/dist/chunk-AOSIYPTA.js +2 -0
  53. package/dist/chunk-AUVEWPIF.js +2 -0
  54. package/dist/chunk-B56T42J3.js +25 -0
  55. package/dist/chunk-BIQEF5NE.js +2 -0
  56. package/dist/chunk-BL6XJKTA.js +3 -0
  57. package/dist/chunk-BMKOQJRI.js +2 -0
  58. package/dist/chunk-BOZ4EXBB.js +3 -0
  59. package/dist/chunk-BUTWYEPH.js +2 -0
  60. package/dist/chunk-BZB4QPIP.js +2 -0
  61. package/dist/{chunk-ILTDAWEF.js → chunk-CE357GEE.js} +4 -4
  62. package/dist/chunk-CFN45HFP.js +2 -0
  63. package/dist/chunk-CFYMZFXT.js +368 -0
  64. package/dist/chunk-CN5EH7O3.js +2 -0
  65. package/dist/chunk-D254DNNQ.js +4 -0
  66. package/dist/chunk-D3FDISIC.js +2 -0
  67. package/dist/chunk-D3NX5XIE.js +3 -0
  68. package/dist/chunk-DA7RPPDF.js +3 -0
  69. package/dist/chunk-DDMC3FON.js +3 -0
  70. package/dist/chunk-DIO3FUSG.js +2 -0
  71. package/dist/chunk-DJ2NNSUK.js +3 -0
  72. package/dist/chunk-DKYQIM3C.js +18 -0
  73. package/dist/{chunk-JTQVMR42.js → chunk-DOOEL2IV.js} +2 -2
  74. package/dist/chunk-DVFP6PZI.js +2 -0
  75. package/dist/chunk-E3FDPXZK.js +2 -0
  76. package/dist/chunk-E7YNJLCB.js +2 -0
  77. package/dist/chunk-EFGW5JPH.js +2 -0
  78. package/dist/chunk-EJVTR244.js +13 -0
  79. package/dist/chunk-EOV7RTRZ.js +2 -0
  80. package/dist/chunk-ETOIKRHO.js +2 -0
  81. package/dist/chunk-EYK3ZAO2.js +3 -0
  82. package/dist/chunk-F2V2LPET.js +52 -0
  83. package/dist/chunk-F4LUHJTF.js +2 -0
  84. package/dist/chunk-F4PUT6IT.js +2 -0
  85. package/dist/chunk-F56GCXXS.js +5 -0
  86. package/dist/chunk-FC2EVQRM.js +2 -0
  87. package/dist/chunk-FL7NBMHP.js +3 -0
  88. package/dist/chunk-FMRN2TRL.js +3 -0
  89. package/dist/chunk-FVULPZDF.js +20 -0
  90. package/dist/chunk-GCKCF5FL.js +43 -0
  91. package/dist/chunk-GH2PYF46.js +2 -0
  92. package/dist/chunk-GHJAGXIP.js +2 -0
  93. package/dist/{chunk-WIWY3CRX.js → chunk-GMVSHUKZ.js} +2 -2
  94. package/dist/chunk-GS6KDO4R.js +2 -0
  95. package/dist/chunk-GUUBXNN7.js +2 -0
  96. package/dist/chunk-GVWX5T43.js +80 -0
  97. package/dist/chunk-GZKFETP5.js +2 -0
  98. package/dist/chunk-H4EQHO6J.js +9 -0
  99. package/dist/chunk-H73WY2RM.js +2 -0
  100. package/dist/chunk-H75GSPRV.js +60 -0
  101. package/dist/chunk-HDR3AHSV.js +61 -0
  102. package/dist/chunk-HQBSL74Y.js +2 -0
  103. package/dist/chunk-HRRFKWPZ.js +2 -0
  104. package/dist/chunk-HXENDJC6.js +2 -0
  105. package/dist/chunk-IIBAZNSW.js +21 -0
  106. package/dist/chunk-INLMWEUU.js +12 -0
  107. package/dist/chunk-IWQPAF4F.js +2 -0
  108. package/dist/chunk-IZJ6YUKP.js +35 -0
  109. package/dist/chunk-J2TMAIN5.js +60 -0
  110. package/dist/chunk-J5FJMODQ.js +142 -0
  111. package/dist/chunk-J7HZPIO3.js +2 -0
  112. package/dist/chunk-JEVRKFRL.js +2 -0
  113. package/dist/chunk-JFXSGAEB.js +30 -0
  114. package/dist/chunk-JVRTHGFS.js +3 -0
  115. package/dist/chunk-JYWEX7RR.js +360 -0
  116. package/dist/chunk-K3YL22N6.js +2 -0
  117. package/dist/chunk-K4CN7GXK.js +12 -0
  118. package/dist/chunk-K5TBVXU4.js +30 -0
  119. package/dist/chunk-KDDIE2DP.js +9 -0
  120. package/dist/chunk-KHWRRPV4.js +2 -0
  121. package/dist/chunk-KI6NBKDY.js +14 -0
  122. package/dist/chunk-KU3QRSTH.js +2 -0
  123. package/dist/chunk-KZBJWZJB.js +2 -0
  124. package/dist/chunk-L7GFM3NP.js +3 -0
  125. package/dist/chunk-LMO6PK3V.js +35 -0
  126. package/dist/chunk-LN4YXJJU.js +2 -0
  127. package/dist/chunk-LOVIZBJ4.js +43 -0
  128. package/dist/chunk-LPCRK4A2.js +11 -0
  129. package/dist/chunk-MMHZKBFA.js +2 -0
  130. package/dist/{chunk-M2O5NY6W.js → chunk-MOQQBQRD.js} +2 -2
  131. package/dist/chunk-N2WN6I3L.js +2 -0
  132. package/dist/chunk-N3ORQT7L.js +2 -0
  133. package/dist/chunk-NAZ3RAIW.js +2 -0
  134. package/dist/chunk-NDUNO5JQ.js +2 -0
  135. package/dist/chunk-NEIWRNAZ.js +4 -0
  136. package/dist/chunk-NJJMVD65.js +2 -0
  137. package/dist/chunk-NLOQOBXI.js +20 -0
  138. package/dist/chunk-NOLZOVCU.js +2 -0
  139. package/dist/chunk-NOWINRRN.js +2 -0
  140. package/dist/chunk-NZAXKGRL.js +16 -0
  141. package/dist/chunk-O2C4UILI.js +2 -0
  142. package/dist/chunk-O3RHA6ZT.js +3 -0
  143. package/dist/chunk-O4UZSPPI.js +3 -0
  144. package/dist/chunk-OGFV2BUX.js +2 -0
  145. package/dist/chunk-OZCJXZK6.js +499 -0
  146. package/dist/chunk-P6ODM7BY.js +2 -0
  147. package/dist/{chunk-XBGWL66K.js → chunk-PAVGPRHJ.js} +2 -2
  148. package/dist/chunk-PH52RA7D.js +2 -0
  149. package/dist/chunk-PKN354TH.js +3 -0
  150. package/dist/chunk-PWOASWEG.js +11 -0
  151. package/dist/chunk-QIWXRW72.js +2 -0
  152. package/dist/chunk-QJRMOK5N.js +2 -0
  153. package/dist/{chunk-YXPUP5G2.js → chunk-QOIXNWQR.js} +2 -2
  154. package/dist/chunk-QXEUDXBT.js +3 -0
  155. package/dist/chunk-QYUVVBMR.js +6 -0
  156. package/dist/chunk-QZ7KQZRN.js +2 -0
  157. package/dist/chunk-R6LQBUDH.js +2 -0
  158. package/dist/chunk-RBS42E55.js +20 -0
  159. package/dist/chunk-RSJKPCFX.js +26 -0
  160. package/dist/chunk-S6CZA3MV.js +2 -0
  161. package/dist/chunk-STMVAHJP.js +2 -0
  162. package/dist/chunk-SYVPTTVW.js +2 -0
  163. package/dist/chunk-T3I6NHBH.js +2 -0
  164. package/dist/chunk-T6DK3ZP7.js +2 -0
  165. package/dist/chunk-TKD34PHN.js +4 -0
  166. package/dist/chunk-TNNQFH7W.js +2 -0
  167. package/dist/chunk-TNV7SSUF.js +2 -0
  168. package/dist/chunk-TO7ZR3EH.js +8 -0
  169. package/dist/chunk-TOU3CHK4.js +2 -0
  170. package/dist/chunk-TRBI4UKT.js +2 -0
  171. package/dist/chunk-TZCVNCAN.js +4 -0
  172. package/dist/chunk-U4LZA5LL.js +3 -0
  173. package/dist/chunk-U5RIG3JP.js +3 -0
  174. package/dist/chunk-UP5KXN2I.js +2 -0
  175. package/dist/chunk-UQFR3NDH.js +5 -0
  176. package/dist/chunk-UXYXF7GV.js +2 -0
  177. package/dist/chunk-VB3GOKOS.js +2 -0
  178. package/dist/chunk-VF5JZICY.js +2 -0
  179. package/dist/chunk-VTY3VK6E.js +2 -0
  180. package/dist/chunk-VX2O4RIS.js +2 -0
  181. package/dist/chunk-WKPV2TDZ.js +2 -0
  182. package/dist/chunk-WOFQ5DTB.js +2 -0
  183. package/dist/chunk-WS4C6TCK.js +2 -0
  184. package/dist/chunk-WXU3DGPU.js +2 -0
  185. package/dist/chunk-X6RMKHJQ.js +81 -0
  186. package/dist/{chunk-4ILJCCXV.js → chunk-XHMN6ZX7.js} +2 -2
  187. package/dist/chunk-XHTVFLWW.js +2 -0
  188. package/dist/chunk-XKIDJCIK.js +2 -0
  189. package/dist/chunk-XTYTYZPT.js +2 -0
  190. package/dist/chunk-Y2JHHTTA.js +2 -0
  191. package/dist/chunk-YGVRMGYN.js +4 -0
  192. package/dist/chunk-YNQCGEQE.js +2 -0
  193. package/dist/chunk-YOQVEXVE.js +14 -0
  194. package/dist/chunk-YRT2WLYY.js +2 -0
  195. package/dist/chunk-YTAP5Y2G.js +2 -0
  196. package/dist/chunk-YTYWI7VB.js +2 -0
  197. package/dist/chunk-YULZRALL.js +2 -0
  198. package/dist/chunk-Z33WQG4Q.js +2 -0
  199. package/dist/chunk-ZGTYGDMF.js +16 -0
  200. package/dist/chunk-ZHMRSZFD.js +43 -0
  201. package/dist/chunk-ZHSP366W.js +10 -0
  202. package/dist/chunk-ZIBYCYKK.js +7 -0
  203. package/dist/{chunk-GAS2LJMP.js → chunk-ZLADLUE6.js} +3 -3
  204. package/dist/chunk-ZO4YXUT6.js +4 -0
  205. package/dist/{chunk-HYO3NP5Q.js → chunk-ZR4HBC2H.js} +2 -2
  206. package/dist/cli-main.js +6 -6
  207. package/dist/cli.js +1 -1
  208. package/dist/{code-B17qEMbt.d.ts → code-BNyrCF3_.d.ts} +3 -2
  209. package/dist/code-IL5WH3NZ.js +2 -0
  210. package/dist/code-result-json-ANTBEDFP.js +4 -0
  211. package/dist/command-descriptors-HEEMDHTU.js +222 -0
  212. package/dist/deps-EOWFC6FD.js +2 -0
  213. package/dist/direct-navigation-Y5B6OSIQ.js +3 -0
  214. package/dist/{exploration-topology-BG4v30HZ.d.ts → exploration-topology-CSgEyAz-.d.ts} +3 -1
  215. package/dist/files-K4AI3JUM.js +2 -0
  216. package/dist/frontend-profile-roles-D7eCum8P.d.ts +10 -0
  217. package/dist/{health-CPp2Jf1Z.d.ts → health-BtfmNrfa.d.ts} +58 -74
  218. package/dist/hierarchy-6W5NDIFI.js +2 -0
  219. package/dist/imports-WH365QY4.js +2 -0
  220. package/dist/index.d.ts +13 -1
  221. package/dist/index.js +1 -1
  222. package/dist/members-K3PHMF5S.js +2 -0
  223. package/dist/methods-E7KVMBX4.js +2 -0
  224. package/dist/output-continuation-command-BJSY67SN.js +3 -0
  225. package/dist/output-pagination-UZJ5ACIX.js +24 -0
  226. package/dist/postinstall.js +1 -1
  227. package/dist/project-reindex-EP24WT4X.js +3 -0
  228. package/dist/queries/affected.js +1 -1
  229. package/dist/queries/architecture.d.ts +15 -4
  230. package/dist/queries/architecture.js +1 -1
  231. package/dist/queries/bottlenecks.js +1 -1
  232. package/dist/queries/by-kind.js +1 -1
  233. package/dist/queries/call-graph.d.ts +3 -1
  234. package/dist/queries/call-graph.js +1 -1
  235. package/dist/queries/change-surface.d.ts +1 -0
  236. package/dist/queries/change-surface.js +1 -1
  237. package/dist/queries/cleanup-plan.d.ts +3 -3
  238. package/dist/queries/cleanup-plan.js +1 -1
  239. package/dist/queries/co-change.d.ts +20 -2
  240. package/dist/queries/co-change.js +1 -1
  241. package/dist/queries/code.d.ts +1 -1
  242. package/dist/queries/code.js +1 -1
  243. package/dist/queries/complexity.d.ts +6 -3
  244. package/dist/queries/complexity.js +1 -1
  245. package/dist/queries/context.d.ts +1 -7
  246. package/dist/queries/context.js +1 -1
  247. package/dist/queries/coupling.js +1 -1
  248. package/dist/queries/cycles.js +1 -1
  249. package/dist/queries/dead.d.ts +2 -0
  250. package/dist/queries/dead.js +1 -1
  251. package/dist/queries/decorative-checkers.js +1 -1
  252. package/dist/queries/dependence-slice.d.ts +46 -22
  253. package/dist/queries/dependence-slice.js +1 -1
  254. package/dist/queries/dependency-depth.d.ts +1 -7
  255. package/dist/queries/dependency-depth.js +1 -1
  256. package/dist/queries/deps.js +1 -1
  257. package/dist/queries/diff-impact.d.ts +3 -1
  258. package/dist/queries/diff-impact.js +1 -1
  259. package/dist/queries/doc-drift.js +1 -1
  260. package/dist/queries/drift.d.ts +1 -1
  261. package/dist/queries/drift.js +1 -1
  262. package/dist/queries/duplicate-bodies.d.ts +29 -2
  263. package/dist/queries/duplicate-bodies.js +1 -1
  264. package/dist/queries/entry-map.d.ts +2 -4
  265. package/dist/queries/entry-map.js +1 -1
  266. package/dist/queries/evidence.d.ts +121 -61
  267. package/dist/queries/evidence.js +1 -1
  268. package/dist/queries/fan.js +1 -1
  269. package/dist/queries/files.js +1 -1
  270. package/dist/queries/health.d.ts +1 -1
  271. package/dist/queries/health.js +1 -1
  272. package/dist/queries/hierarchy.d.ts +2 -2
  273. package/dist/queries/hierarchy.js +1 -1
  274. package/dist/queries/hotspots.d.ts +1 -1
  275. package/dist/queries/hotspots.js +1 -1
  276. package/dist/queries/imports.d.ts +1 -0
  277. package/dist/queries/imports.js +1 -1
  278. package/dist/queries/incomplete-migration.d.ts +3 -3
  279. package/dist/queries/incomplete-migration.js +1 -1
  280. package/dist/queries/index.d.ts +17 -65
  281. package/dist/queries/index.js +1 -1
  282. package/dist/queries/locality-candidates.d.ts +4 -4
  283. package/dist/queries/locality-candidates.js +1 -1
  284. package/dist/queries/members.d.ts +2 -2
  285. package/dist/queries/members.js +1 -1
  286. package/dist/queries/methods.js +1 -1
  287. package/dist/queries/not-implemented.d.ts +2 -6
  288. package/dist/queries/not-implemented.js +1 -1
  289. package/dist/queries/outline.js +1 -1
  290. package/dist/queries/passthrough-candidates.d.ts +9 -1
  291. package/dist/queries/passthrough-candidates.js +1 -1
  292. package/dist/queries/react-component-duplicates.d.ts +19 -3
  293. package/dist/queries/react-component-duplicates.js +1 -1
  294. package/dist/queries/react-hook-candidates.d.ts +22 -3
  295. package/dist/queries/react-hook-candidates.js +1 -1
  296. package/dist/queries/react-large-component-pressure.d.ts +17 -3
  297. package/dist/queries/react-large-component-pressure.js +1 -1
  298. package/dist/queries/recent-duplicates.js +1 -1
  299. package/dist/queries/redundant-reexports.d.ts +4 -14
  300. package/dist/queries/redundant-reexports.js +1 -1
  301. package/dist/queries/refs.d.ts +4 -1
  302. package/dist/queries/refs.js +1 -1
  303. package/dist/queries/review.d.ts +188 -0
  304. package/dist/queries/review.js +2 -0
  305. package/dist/queries/similar-files.d.ts +7 -10
  306. package/dist/queries/similar-files.js +1 -1
  307. package/dist/queries/similar-signatures.js +1 -1
  308. package/dist/queries/similar.d.ts +19 -1
  309. package/dist/queries/similar.js +1 -1
  310. package/dist/queries/slice-cohesion.d.ts +205 -0
  311. package/dist/queries/slice-cohesion.js +2 -0
  312. package/dist/queries/source-inspection.d.ts +6 -202
  313. package/dist/queries/source-inspection.js +1 -1
  314. package/dist/queries/source-search.d.ts +2 -3
  315. package/dist/queries/source-search.js +1 -1
  316. package/dist/queries/stats.d.ts +1 -0
  317. package/dist/queries/stats.js +1 -1
  318. package/dist/queries/surface.js +1 -1
  319. package/dist/queries/symbols.js +1 -1
  320. package/dist/queries/system.d.ts +4 -2
  321. package/dist/queries/system.js +1 -1
  322. package/dist/queries/test-quality.d.ts +1 -1
  323. package/dist/queries/test-quality.js +1 -1
  324. package/dist/queries/twin-drift.d.ts +23 -7
  325. package/dist/queries/twin-drift.js +1 -1
  326. package/dist/queries/unused-imports.js +1 -1
  327. package/dist/queries/unused-params.d.ts +3 -15
  328. package/dist/queries/unused-params.js +1 -1
  329. package/dist/queries/vue-component-duplicates.js +1 -1
  330. package/dist/queries/vue-composable-candidates.js +1 -1
  331. package/dist/queries/vue-large-view-pressure.js +1 -1
  332. package/dist/query-service-fastpath.js +5 -5
  333. package/dist/query-service-server.js +4 -4
  334. package/dist/refs-CCBJG7WK.js +2 -0
  335. package/dist/refs-pagination-DRNLVU4S.js +2 -0
  336. package/dist/reindex-worker.js +79 -29
  337. package/dist/reindex.js +45 -45
  338. package/dist/repository-cache-worker.js +2 -0
  339. package/dist/runtime.d.ts +8 -8
  340. package/dist/runtime.js +3 -4
  341. package/dist/rust-semantic-session-server.js +1 -1
  342. package/dist/rust-semantic-session-worker.js +1 -1
  343. package/dist/rust-semantic-worker.js +1 -1
  344. package/dist/service-queries-2WAJI7R6.js +6 -0
  345. package/dist/source-inspection-91U9zdO3.d.ts +341 -0
  346. package/dist/{source-search-types-Dwz8KeuW.d.ts → source-search-types-DWGYNg8M.d.ts} +15 -2
  347. package/dist/stats-G7DIV6VU.js +2 -0
  348. package/dist/surface-IO55UALI.js +2 -0
  349. package/dist/system-ZBMSHJXU.js +2 -0
  350. package/dist/{queries/trace.d.ts → trace-BMjw3prn.d.ts} +1 -18
  351. package/dist/typescript-indexer.js +2 -0
  352. package/dist/typescript-mailbox-worker.js +1 -1
  353. package/dist/watch-server.js +3 -3
  354. package/docs/AGENT_GUIDE.md +19 -128
  355. package/docs/CLI_JSON_OUTPUT.md +21 -17
  356. package/docs/COMMAND_REFERENCE.md +34 -49
  357. package/docs/CURRENT_COMMANDS.md +123 -0
  358. package/docs/DETECTOR_EVIDENCE_CONTRACTS.md +0 -40
  359. package/docs/DETECTOR_GUIDE.md +55 -12
  360. package/docs/PRODUCT_VISION.md +135 -0
  361. package/docs/PROPERTY_TESTING.md +73 -0
  362. package/docs/REVIEW.md +76 -0
  363. package/docs/SKILLS.md +51 -0
  364. package/docs/WINDOWS_SIDECAR_RELEASE.md +12 -3
  365. package/docs/accuracy-audit-checklist.md +70 -13
  366. package/docs/analyzer-inventory.md +2 -2
  367. package/docs/locality-analyzer-design.md +9 -9
  368. package/package.json +18 -80
  369. package/scripts/evidence-product-contract.mjs +7 -3
  370. package/scripts/record-review-coverage.mjs +118 -0
  371. package/scripts/scip-windows-provenance.mjs +29 -19
  372. package/skills/scip-architecture-review/SKILL.md +57 -0
  373. package/skills/scip-architecture-review/agents/openai.yaml +4 -0
  374. package/skills/scip-architecture-review/references/design-checks.md +17 -0
  375. package/skills/scip-explore/SKILL.md +15 -59
  376. package/skills/scip-explore/agents/openai.yaml +3 -3
  377. package/skills/scip-explore/references/external-evidence.md +2 -2
  378. package/skills/scip-explore/references/information-model.md +26 -29
  379. package/skills/scip-explore/scripts/capture-evidence.mjs +68 -34
  380. package/skills/scip-integrity-audit/SKILL.md +53 -181
  381. package/skills/scip-integrity-audit/agents/openai.yaml +3 -3
  382. package/skills/scip-integrity-audit/references/integrity-probes.md +27 -0
  383. package/skills/scip-plan/SKILL.md +39 -65
  384. package/skills/scip-plan/agents/openai.yaml +2 -2
  385. package/skills/scip-query/SKILL.md +28 -81
  386. package/skills/scip-query/agents/openai.yaml +2 -2
  387. package/skills/scip-query/references/command-guide.md +169 -0
  388. package/skills/scip-setup/SKILL.md +4 -2
  389. package/skills/scip-setup/agents/openai.yaml +3 -3
  390. package/dist/by-kind-XI2CSWEY.js +0 -2
  391. package/dist/call-graph-UONR6JR5.js +0 -2
  392. package/dist/call-graph-evidence-lZa2dwQA.d.ts +0 -11
  393. package/dist/chunk-26CT72HM.js +0 -2
  394. package/dist/chunk-2E7CX53V.js +0 -2
  395. package/dist/chunk-2GRUZAQF.js +0 -43
  396. package/dist/chunk-2LDBDR6J.js +0 -29
  397. package/dist/chunk-2OOY75BW.js +0 -2
  398. package/dist/chunk-2R3V3PSD.js +0 -4
  399. package/dist/chunk-2WC2OEDO.js +0 -4
  400. package/dist/chunk-35NLDRZC.js +0 -2
  401. package/dist/chunk-3AF4TUFK.js +0 -3
  402. package/dist/chunk-3D3QG236.js +0 -2
  403. package/dist/chunk-3FHOF22C.js +0 -21
  404. package/dist/chunk-3JKSW6LJ.js +0 -2
  405. package/dist/chunk-3L2ZBPEX.js +0 -133
  406. package/dist/chunk-3PJABJSU.js +0 -2
  407. package/dist/chunk-3SVF22I5.js +0 -2
  408. package/dist/chunk-3WR4E3A3.js +0 -3
  409. package/dist/chunk-4FTZ4P5G.js +0 -2
  410. package/dist/chunk-4UX2F3JX.js +0 -2
  411. package/dist/chunk-4WNW27SX.js +0 -2
  412. package/dist/chunk-5ENOG4VP.js +0 -61
  413. package/dist/chunk-64BFSI5I.js +0 -2
  414. package/dist/chunk-66DVSJQG.js +0 -455
  415. package/dist/chunk-6HFCYNYE.js +0 -9
  416. package/dist/chunk-6PQNKL3G.js +0 -3
  417. package/dist/chunk-6V5CNXL6.js +0 -2
  418. package/dist/chunk-6VVV4WRR.js +0 -4
  419. package/dist/chunk-7BWFZPPZ.js +0 -2
  420. package/dist/chunk-7CYG22FH.js +0 -2
  421. package/dist/chunk-7F45LJKI.js +0 -2
  422. package/dist/chunk-7IWV2EG3.js +0 -3
  423. package/dist/chunk-7KCZELVM.js +0 -2
  424. package/dist/chunk-AFHTBORT.js +0 -2
  425. package/dist/chunk-AVRYW5OZ.js +0 -2
  426. package/dist/chunk-B3X6KU75.js +0 -2
  427. package/dist/chunk-B5D7QPBE.js +0 -4
  428. package/dist/chunk-BBCIS4DX.js +0 -16
  429. package/dist/chunk-BDUVI7TO.js +0 -3
  430. package/dist/chunk-BE7ZZTMC.js +0 -2
  431. package/dist/chunk-BHVUJOCQ.js +0 -3
  432. package/dist/chunk-BJT7LSPK.js +0 -3
  433. package/dist/chunk-BKVWUP7Y.js +0 -2
  434. package/dist/chunk-BQGB4HBD.js +0 -2
  435. package/dist/chunk-BRV7PIFF.js +0 -2
  436. package/dist/chunk-CEEZJXEF.js +0 -2
  437. package/dist/chunk-CIYLO6SI.js +0 -7
  438. package/dist/chunk-CJZXN4NU.js +0 -2
  439. package/dist/chunk-CNO7TOKL.js +0 -2
  440. package/dist/chunk-COF23M5F.js +0 -2
  441. package/dist/chunk-CWFP7GM5.js +0 -2
  442. package/dist/chunk-D2DHWI3D.js +0 -2
  443. package/dist/chunk-D4N5SQ2M.js +0 -4
  444. package/dist/chunk-DBRSYFXR.js +0 -2
  445. package/dist/chunk-DHUIOLDT.js +0 -2
  446. package/dist/chunk-DIRJWYBM.js +0 -6
  447. package/dist/chunk-DIUFNHRJ.js +0 -35
  448. package/dist/chunk-DRENNWRG.js +0 -2
  449. package/dist/chunk-DTZCKZEU.js +0 -4
  450. package/dist/chunk-DULC3QFP.js +0 -5
  451. package/dist/chunk-DYGHBZ2N.js +0 -16
  452. package/dist/chunk-E5R6AQ73.js +0 -40
  453. package/dist/chunk-E73UNJTF.js +0 -38
  454. package/dist/chunk-EKV5HX33.js +0 -2
  455. package/dist/chunk-EQHFIL6T.js +0 -3
  456. package/dist/chunk-ESIQ66Z7.js +0 -2
  457. package/dist/chunk-EVFUMY4R.js +0 -3
  458. package/dist/chunk-F7DY272B.js +0 -2
  459. package/dist/chunk-FBN2FGXG.js +0 -2
  460. package/dist/chunk-FDLOBR6P.js +0 -4
  461. package/dist/chunk-FESCRNVV.js +0 -5
  462. package/dist/chunk-FFRKR4EQ.js +0 -2
  463. package/dist/chunk-FGA2U4OR.js +0 -8
  464. package/dist/chunk-FIQRSHVM.js +0 -2
  465. package/dist/chunk-FPYLNQPT.js +0 -2
  466. package/dist/chunk-FRUSVINH.js +0 -2
  467. package/dist/chunk-GSP44ENC.js +0 -2
  468. package/dist/chunk-GUFSG5TX.js +0 -2
  469. package/dist/chunk-GYIZ4NXB.js +0 -2
  470. package/dist/chunk-GZIUDL6G.js +0 -2
  471. package/dist/chunk-H5EXS3HM.js +0 -2
  472. package/dist/chunk-HCXEQRFF.js +0 -18
  473. package/dist/chunk-HEHOQQKH.js +0 -2
  474. package/dist/chunk-HKGFPJ4T.js +0 -4
  475. package/dist/chunk-HLZTEXRA.js +0 -2
  476. package/dist/chunk-HOENASQM.js +0 -3
  477. package/dist/chunk-HVF5VBG6.js +0 -2
  478. package/dist/chunk-I55I7XXP.js +0 -2
  479. package/dist/chunk-IDFEUFKS.js +0 -2
  480. package/dist/chunk-IHGQTTVW.js +0 -2
  481. package/dist/chunk-IICPE7B2.js +0 -20
  482. package/dist/chunk-IL676XCC.js +0 -18
  483. package/dist/chunk-IW5XQG5G.js +0 -2
  484. package/dist/chunk-IZDPJ2QI.js +0 -2
  485. package/dist/chunk-J66VOFW6.js +0 -5
  486. package/dist/chunk-JFMEXGFE.js +0 -2
  487. package/dist/chunk-JGKUET5J.js +0 -3
  488. package/dist/chunk-JS4PGXMV.js +0 -3
  489. package/dist/chunk-JWTGMPIT.js +0 -80
  490. package/dist/chunk-JYR66JN5.js +0 -5
  491. package/dist/chunk-KFOYCQAJ.js +0 -9
  492. package/dist/chunk-KLFEXGQA.js +0 -2
  493. package/dist/chunk-KMVGRIO2.js +0 -2
  494. package/dist/chunk-KYSDI3GE.js +0 -5
  495. package/dist/chunk-L6PJPETJ.js +0 -29
  496. package/dist/chunk-LDVT66YM.js +0 -2
  497. package/dist/chunk-LEECKFCJ.js +0 -2
  498. package/dist/chunk-LMZ5PRUV.js +0 -2
  499. package/dist/chunk-LQRQN2XA.js +0 -2
  500. package/dist/chunk-LXABEJX3.js +0 -2
  501. package/dist/chunk-MNV5FSBW.js +0 -3
  502. package/dist/chunk-MPQ4OTBM.js +0 -2
  503. package/dist/chunk-MTDBHTSF.js +0 -2
  504. package/dist/chunk-MV3CDXPI.js +0 -38
  505. package/dist/chunk-MWN53KRN.js +0 -60
  506. package/dist/chunk-MXNGIEPU.js +0 -3
  507. package/dist/chunk-N2ZSIIGR.js +0 -117
  508. package/dist/chunk-N5B2NILC.js +0 -5
  509. package/dist/chunk-NJITK2GP.js +0 -2
  510. package/dist/chunk-NOGJXYFO.js +0 -2
  511. package/dist/chunk-NOYBFVJA.js +0 -554
  512. package/dist/chunk-NWQXSFFU.js +0 -3
  513. package/dist/chunk-ODDUPDP7.js +0 -13
  514. package/dist/chunk-OLIWTZI3.js +0 -3
  515. package/dist/chunk-OLNV6I6U.js +0 -2
  516. package/dist/chunk-OR2E3AGZ.js +0 -2
  517. package/dist/chunk-OSR2GEHQ.js +0 -2
  518. package/dist/chunk-OSSESPDX.js +0 -3
  519. package/dist/chunk-OWOOWNJ5.js +0 -7
  520. package/dist/chunk-P42EIXTA.js +0 -2
  521. package/dist/chunk-PJFGPYTU.js +0 -2
  522. package/dist/chunk-PP7KNN7L.js +0 -2
  523. package/dist/chunk-PU7T5QYQ.js +0 -2
  524. package/dist/chunk-PWWAJSKV.js +0 -74
  525. package/dist/chunk-PZL5T7SU.js +0 -73
  526. package/dist/chunk-QBE3YX64.js +0 -23
  527. package/dist/chunk-QGVTFRY2.js +0 -7
  528. package/dist/chunk-QOJONDS7.js +0 -2
  529. package/dist/chunk-QU5XRYB5.js +0 -4
  530. package/dist/chunk-QUU5OBVK.js +0 -11
  531. package/dist/chunk-RBLQNW26.js +0 -20
  532. package/dist/chunk-RTQ7NEKG.js +0 -81
  533. package/dist/chunk-SQXRS7BG.js +0 -4
  534. package/dist/chunk-SSK6LDPC.js +0 -2
  535. package/dist/chunk-SZHGTCPP.js +0 -7
  536. package/dist/chunk-T4N4P2K5.js +0 -16
  537. package/dist/chunk-TA3QKLLU.js +0 -2
  538. package/dist/chunk-TEBQMNVI.js +0 -43
  539. package/dist/chunk-TPFHAQ2G.js +0 -2
  540. package/dist/chunk-TQPCBMWT.js +0 -5
  541. package/dist/chunk-TQZV7KV4.js +0 -2
  542. package/dist/chunk-TRNAEQ6P.js +0 -3
  543. package/dist/chunk-TY7CRN3Z.js +0 -2
  544. package/dist/chunk-UHFYCMZO.js +0 -35
  545. package/dist/chunk-UICY4GTQ.js +0 -7
  546. package/dist/chunk-UVGEWT4Y.js +0 -26
  547. package/dist/chunk-UXW33INU.js +0 -29
  548. package/dist/chunk-VMPRET3I.js +0 -5
  549. package/dist/chunk-VNLGKHS6.js +0 -6
  550. package/dist/chunk-VQILFTEH.js +0 -2
  551. package/dist/chunk-VUPHCS7Y.js +0 -57
  552. package/dist/chunk-VVZSBTSU.js +0 -23
  553. package/dist/chunk-VZRNID6A.js +0 -2
  554. package/dist/chunk-W5OXRYGE.js +0 -7
  555. package/dist/chunk-W6STWDQI.js +0 -57
  556. package/dist/chunk-W7CXK74K.js +0 -2
  557. package/dist/chunk-WB3WYIRE.js +0 -4
  558. package/dist/chunk-WDNVY4E7.js +0 -20
  559. package/dist/chunk-WK46TNUM.js +0 -3
  560. package/dist/chunk-WNTFFKAX.js +0 -12
  561. package/dist/chunk-WOIKCX6A.js +0 -2
  562. package/dist/chunk-WUN6KBHV.js +0 -2
  563. package/dist/chunk-WYCTJDVR.js +0 -2
  564. package/dist/chunk-WYPL7GF7.js +0 -2
  565. package/dist/chunk-XDAUYDFT.js +0 -2
  566. package/dist/chunk-XDQMU3BT.js +0 -2
  567. package/dist/chunk-XFA4SSO3.js +0 -3
  568. package/dist/chunk-XGZEP6GR.js +0 -8
  569. package/dist/chunk-XPDPNWTQ.js +0 -368
  570. package/dist/chunk-XRYABF57.js +0 -8
  571. package/dist/chunk-YBGKCQIS.js +0 -2
  572. package/dist/chunk-YEN6CYC7.js +0 -16
  573. package/dist/chunk-YF5IB2LF.js +0 -2
  574. package/dist/chunk-YI2AWIHC.js +0 -3
  575. package/dist/chunk-YPWBKGFU.js +0 -2
  576. package/dist/chunk-YPWHBBIS.js +0 -2
  577. package/dist/chunk-YSH6U3L4.js +0 -3
  578. package/dist/chunk-YU5DZUZI.js +0 -10
  579. package/dist/chunk-YWO5DDRC.js +0 -16
  580. package/dist/chunk-Z4CDXYNQ.js +0 -2
  581. package/dist/chunk-ZF5KHH7C.js +0 -2
  582. package/dist/chunk-ZOHS7AQV.js +0 -21
  583. package/dist/chunk-ZTI4SBFV.js +0 -3
  584. package/dist/code-MI6F2TTU.js +0 -2
  585. package/dist/code-result-json-FXALY4HE.js +0 -2
  586. package/dist/command-descriptors-P34VABY5.js +0 -343
  587. package/dist/dataflow-4KEMJPC6.js +0 -2
  588. package/dist/dependence-slice-R7FPWD5M.js +0 -2
  589. package/dist/deps-7EMQUYUT.js +0 -2
  590. package/dist/direct-navigation-6YO234F2.js +0 -3
  591. package/dist/entry-map-KOOLR26E.js +0 -2
  592. package/dist/files-OPIPJIGZ.js +0 -2
  593. package/dist/graph-evidence-Bjyky2V4.d.ts +0 -126
  594. package/dist/hierarchy-QPD2CAER.js +0 -2
  595. package/dist/imports-M6HUXRXC.js +0 -2
  596. package/dist/members-I5MEFOCT.js +0 -2
  597. package/dist/methods-5JYGGHXA.js +0 -2
  598. package/dist/next-anchor-candidates-BwMczMvX.d.ts +0 -90
  599. package/dist/output-continuation-command-UPQAAKBP.js +0 -3
  600. package/dist/output-pagination-3OFL2MJV.js +0 -19
  601. package/dist/project-reindex-UKKQ5PLS.js +0 -3
  602. package/dist/queries/anchors.d.ts +0 -123
  603. package/dist/queries/anchors.js +0 -2
  604. package/dist/queries/complexity-hotspots.d.ts +0 -40
  605. package/dist/queries/complexity-hotspots.js +0 -2
  606. package/dist/queries/convergence.d.ts +0 -33
  607. package/dist/queries/convergence.js +0 -2
  608. package/dist/queries/dataflow.d.ts +0 -77
  609. package/dist/queries/dataflow.js +0 -2
  610. package/dist/queries/deep-chains.d.ts +0 -5
  611. package/dist/queries/deep-chains.js +0 -2
  612. package/dist/queries/extract-candidates.d.ts +0 -52
  613. package/dist/queries/extract-candidates.js +0 -2
  614. package/dist/queries/isolated.d.ts +0 -24
  615. package/dist/queries/isolated.js +0 -2
  616. package/dist/queries/plan-context.d.ts +0 -33
  617. package/dist/queries/plan-context.js +0 -2
  618. package/dist/queries/reference-neighborhood.d.ts +0 -4
  619. package/dist/queries/reference-neighborhood.js +0 -2
  620. package/dist/queries/reference-reachability.d.ts +0 -48
  621. package/dist/queries/reference-reachability.js +0 -2
  622. package/dist/queries/self-audit.d.ts +0 -63
  623. package/dist/queries/self-audit.js +0 -2
  624. package/dist/queries/similar-chains.d.ts +0 -48
  625. package/dist/queries/similar-chains.js +0 -2
  626. package/dist/queries/slice.d.ts +0 -4
  627. package/dist/queries/slice.js +0 -2
  628. package/dist/queries/stale-abstractions.d.ts +0 -72
  629. package/dist/queries/stale-abstractions.js +0 -2
  630. package/dist/queries/system-map.d.ts +0 -449
  631. package/dist/queries/system-map.js +0 -2
  632. package/dist/queries/trace.js +0 -2
  633. package/dist/queries/twin-ab.d.ts +0 -66
  634. package/dist/queries/twin-ab.js +0 -2
  635. package/dist/queries/value-flow.d.ts +0 -43
  636. package/dist/queries/value-flow.js +0 -2
  637. package/dist/queries/wrapper-candidates.d.ts +0 -34
  638. package/dist/queries/wrapper-candidates.js +0 -2
  639. package/dist/refs-PSU4JZZW.js +0 -2
  640. package/dist/refs-pagination-JG6CJMRC.js +0 -2
  641. package/dist/slice-HYRATV64.js +0 -2
  642. package/dist/source-snippet-_wrcgmZc.d.ts +0 -15
  643. package/dist/stats-OOJ74B32.js +0 -2
  644. package/dist/surface-VTGDYWF5.js +0 -2
  645. package/dist/symbol-resolution-WD5EU5JE.js +0 -2
  646. package/dist/system-LRQNFOR2.js +0 -2
  647. package/dist/trace-F4B6OLL4.js +0 -2
  648. package/dist/value-flow-VRPZY72V.js +0 -2
  649. package/skills/concrete-plan/SKILL.md +0 -8
  650. package/skills/concrete-plan/agents/openai.yaml +0 -4
@@ -0,0 +1,135 @@
1
+ # scip-query: exploration, planning, and code maintenance
2
+
3
+ Status: product vision and removal audit, recorded on 2026-09-05. The workflows and acceptance requirements below are the implementation target, not a claim that the current product already meets them. The earlier simplification and Sol/medium pilot are completed work; this document supersedes their narrower product scope.
4
+
5
+ ## Purpose
6
+
7
+ Give coding agents reliable evidence about existing code and their changes, so they can choose appropriate owners, reuse suitable implementations, preserve behavior, and remove unnecessary complexity.
8
+
9
+ A module is a unit of code that implements an assigned responsibility through operations other code can use. Responsibility ownership is the assignment of control over a rule or resource to the code that enforces its valid use. For example, a reservation operation owns cancellation when all channels go through its eligibility checks and recorded writes.
10
+
11
+ A code pattern is a recurring arrangement of responsibilities and interactions, such as entry points delegating policy and persistence to the same operation. Repeated syntax is evidence of similarity; it does not establish that two implementations express the same policy or should share an owner. A code smell is an observable arrangement suggesting a maintenance problem and requiring contextual review. A finding is a recorded observation identifying the exact code, the evidence, the applicable requirement or concern, and the limits of the conclusion.
12
+
13
+ The product must work in two situations: first adoption in an unfamiliar repository, including a large repository; and continued use through exploration, a written plan, implementation, and review of the resulting diff. A diff is the set of source changes relative to an explicitly identified Git revision or snapshot.
14
+
15
+ ## First adoption: useful findings without prior setup work
16
+
17
+ After preparing the supported source analysis, the tool must provide a short, useful set of findings without requiring a historical baseline, owner annotations, suppression records, or prior scip-query use. Initial indexing time and analysis coverage must be visible. Missing history or configuration must disable only the findings that depend on them.
18
+
19
+ The initial report should identify exact sites and explain concerns such as:
20
+
21
+ - Duplicated implementations, with both bodies and their material differences available.
22
+ - Complex functions, showing the decisions or nesting that contribute to the measurement.
23
+ - Circular imports, with the actual import path that closes the cycle and whether the edges are type-only or runtime imports where supported.
24
+ - Possible mixed responsibilities, supported by separately used operations, distinct consumers, dependencies, or state effects. File length or a folder name alone cannot establish this.
25
+ - Possible competing owners, supported by multiple live implementations or write paths controlling the same declared rule or resource. An absent owner declaration is missing context, not proof of defective architecture.
26
+ - Dependency violations where rules are declared. Without declarations, show the observed relationships and possible concerns; do not invent an intended layer order.
27
+
28
+ The first screen must contain actionable examples, not only category totals followed by a list of commands. Group findings about the same underlying code so one duplicated implementation does not appear as several independent problems. Large scans may be bounded, but must identify what was scanned, what was omitted, and how to recover the rest. Missing output is never a clean bill of health.
29
+
30
+ ## Established use: explore, plan, implement, review
31
+
32
+ ### Explore and write the plan
33
+
34
+ The agent should establish the requested behavior, applicable existing implementations and patterns, the intended owner, affected consumers, dependency constraints, and relevant tests. The tool should expose competing implementations and exceptions rather than choosing an authority by naming, apparent recency, or result order.
35
+
36
+ The written plan records the intended change, exact affected code, opportunities for reuse, behavior and state effects to preserve, planned removals, required validation, and unresolved assumptions. This is an agent-authored decision backed by evidence, not a plan inferred automatically from similarity scores. Keep plans in the repository's existing planning convention; do not introduce a second persistent planning database.
37
+
38
+ ### Implement and review the actual diff
39
+
40
+ After implementation, the skill must direct the agent to review the current diff before reporting completion or committing. Review must include newly created functions, new untracked source files, and new functions added to old files, as well as modified and deleted code. It must identify the comparison revision, current source state, index freshness, and unsupported analysis.
41
+
42
+ The review should report:
43
+
44
+ 1. The changed and newly created code units, including changes the index could not attribute.
45
+ 2. Affected callers, consumers, and relevant dependency changes.
46
+ 3. Per-function complexity before and after the change, or an explicit reason a comparison is unavailable. Splits, merges, deletions, and ambiguous matches must not be forced into misleading numeric deltas.
47
+ 4. New or increased duplication against existing repository code, including another function in the same file. An unrelated duplicate elsewhere must not crowd the changed code out of a bounded search.
48
+ 5. Changes in declared architecture violations and observed cycles, with actual edges.
49
+ 6. Applicable drift, obsolete wiring, unused-code, and test-quality findings, each with evidence and stated coverage.
50
+ 7. What improved, what worsened, what was already present, what was intentionally accepted, and what remains unknown.
51
+
52
+ The agent then addresses supported problems, checks preserved behavior, and reruns review for the affected change. A lower metric alone does not establish improvement: moving complexity into poorly named helpers, weakening tests, or merging independent policies must not count as success.
53
+
54
+ ### Complexity and coverage
55
+
56
+ Cyclomatic complexity is a measure of branching within a function; counted decision points determine the result under a stated language rule set. Cognitive complexity is a rule-based estimate of difficulty following execution, including additional cost for nested decisions. These measurements describe different properties and must not be silently substituted for one another. The current branch-based estimate remains labeled as an estimate until its supported syntax is independently validated.
57
+
58
+ Test coverage records which parts of the implementation were exercised by a particular test run. The Change Risk Anti-Patterns (CRAP) index combines cyclomatic complexity with that coverage. CRAP requires coverage matched to the exact source revision, with the coverage kind and provider disclosed. Missing, stale, or unmappable coverage means CRAP is unavailable; it is neither zero coverage nor a good score. Coverage does not establish the quality of test assertions.
59
+
60
+ Metric definitions: [Sonar's Cognitive Complexity specification](https://www.sonarsource.com/docs/CognitiveComplexity.pdf), [PHPUnit's CRAP and coverage definitions](https://docs.phpunit.de/en/12.5/code-coverage.html#software-metrics-for-code-coverage).
61
+
62
+ ## One evidence model, a small workflow surface
63
+
64
+ Retain shared analysis providers and use a common finding record for first-use scans and change review. Each record needs a stable rule identity, exact source subjects, supporting observations, the concern or violated declaration, evidence strength, coverage and freshness, and a concrete inspection or validation step. A change review additionally identifies whether the finding is introduced, worsened, unchanged, resolved, or not comparable to the base. Accepted exceptions retain a reason and the code identity they apply to.
65
+
66
+ Use existing `health` for repository maintenance, existing `context` plus exact exploration controls for planning, and one `review` surface for the diff. It assembles shared providers rather than grow a parallel detector engine. `diff-impact` already supplies changed-symbol and consumer evidence; it is a component of review, not the entire review.
67
+
68
+ Keep `search`, `outline`, `evidence`, `inspect`, and `code` for exact investigation. Keep architecture declarations and their checks. Decide specialist command retention from a concrete unique need and a replacement path, not from a command-count target. Do not require agents to memorize a separate command for every smell.
69
+
70
+ ## Removal and consolidation audit
71
+
72
+ The recommendations below precede implementation. A producer is the code that computes an observation; its public command and report are presentation surfaces. Consolidating a surface does not justify deleting a producer still used by another supported workflow.
73
+
74
+ | Existing mechanism | Recommendation | Evidence and replacement requirement |
75
+ | ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
76
+ | File-age-based Echo orientation in `recent-duplicates` | Replace as the pre-commit duplication mechanism | `recentDuplicateFocusFiles` and `orientRecentDuplicate` classify recency from file-add history. A new function in an old file can be excluded. Use base/current function changes for review; keep historical recency only if it answers a separately justified question. |
77
+ | Cross-file-only callable comparison in Echo | Remove this restriction from diff duplication analysis | `callableDuplicateCandidates` sets `crossFileOnly: true`; a copied function in the same file must be detectable. Preserve intentional policy differences and report candidates rather than automatic deletion instructions. |
78
+ | General similarity results presented as instructions to delete the newer code | Remove the unsupported conclusion | Shared callees or tokens do not establish equivalent behavior or ownership. Show both implementations and the verification needed before reuse or consolidation. |
79
+ | Category-only health actions with effort/impact and recoverable-line estimates | Replace as the main first-use report | `HealthAction` carries aggregate descriptions and estimates without exact source subjects. Lead with evidence-backed findings; keep useful totals secondary. Do not infer effort or quality from potential line deletion. |
80
+ | Separate per-detector command discovery during every review | Consolidate into the scan/review workflow | The query command registry exposes many specialist surfaces. Preserve proven producers and detailed recovery paths while removing redundant public registrations only after their replacement is tested. |
81
+ | Generated commands and repeated exploration instructions across installed skills | Compress; integrate the planning and review obligation | The primary skill duplicates command templates in its generated manual and relies on a second skill for investigation. Keep one concise normal workflow; retain specialist explanation material as references where useful. |
82
+ | Watcher startup as the only ordinary freshness procedure | Replace with an explicit freshness contract | The pilot ran with background services disabled. Review must either analyze the current source or report exactly why it cannot; the skill must support the configured service mode without repeated failed startup attempts. |
83
+ | Broad source expansion during an exact range read | Candidate for explicit opt-in rather than default | A requested `recentDuplicates` range automatically included its same-file helper closure. `inspect` already serves connected behavior; exact `code` reads should have a predictable scope. Audit compatibility and evidence completeness before changing it. |
84
+ | `twin-ab` generated test scaffolding | Candidate for retirement from the core product | CLI help describes a ready-to-fill Vitest scaffold, not executed behavioral evidence. Keep validation in the project's real test framework; inspect consumers before deletion. |
85
+ | `self-audit` | Keep as developer calibration, outside the normal user workflow | Its purpose is checking the tool's own evidence paths against stronger analysis. Reliable detectors need this validation; it is not a repository cleanup finding. |
86
+ | `cleanup-plan --verify/--patch` | Audit separately; do not treat compiler success as cleanup correctness | It proposes deletion batches and runs a compiler in an isolated snapshot. That can support a deletion review but cannot establish preserved runtime behavior. Preserve useful dependency ordering while avoiding a competing general planning workflow. |
87
+ | Optional formal-model tooling | Outside the default workflow; no wholesale deletion established yet | The vision prioritizes first-use findings and everyday change review. Separate useful verification from its default installation and discoverability; inspect dependencies and actual users before proposing a removal. |
88
+ | Complexity, duplication, drift, dependency, consumer, source, and supported flow providers | Retain and validate | These directly serve the stated product. Removing misleading packaging is not a reason to remove accurate underlying observations. |
89
+
90
+ Implementation anchors: [recent duplicate selection](../src/queries/cleanup/recent-duplicates.ts#L137), [callable comparison](../src/queries/cleanup/recent-duplicates.ts#L248), [file-age orientation](../src/queries/cleanup/recent-duplicates.ts#L410), [health result model](../src/queries/health/health-report.ts#L11), [command registry](../src/runtime/commands/query-command-specs.ts#L11), [primary skill](../skills/scip-query/SKILL.md), [pilot findings](benchmarks/2026-09-05-change-pilot.md).
91
+
92
+ ## Implementation order and completion tests
93
+
94
+ 1. Finish the removal audit and settle the small normal workflow. For each removal, identify its consumers, retained producer, replacement, contract tests, and migration note. Preserve the existing working-tree changes and earlier pilot artifacts.
95
+ 2. Repair freshness and missing-selector completeness before using semantic results for review. Test initial use, watcher-disabled operation, newly added source, edits between queries, and incomplete providers. Never label a result complete when a requested subject is unresolved.
96
+ 3. Establish the common finding record and concrete first-use report using validated existing detectors. Exercise a repository with no scip-query configuration or history, and a larger repository where bounded scans and duplicate grouping matter. Show actual cycle paths and duplicate sites; keep ownership concerns calibrated.
97
+ 4. Implement review of the actual diff by reusing impact analysis and the same finding providers. Test tracked, staged, unstaged, untracked, added, removed, and renamed code. Read the requested base correctly and disclose failures. A staged-only review, if supported, must analyze staged bytes rather than unrelated working-tree edits.
98
+ 5. Add validated per-function cognitive and cyclomatic measurements and a coverage adapter for CRAP. Start with explicit TypeScript/JavaScript support and disclose unsupported syntax/languages. Test nested functions, decision syntax, changed signatures, function splits, stale coverage, and source mappings. Extend language support only with verified implementations.
99
+ 6. Repair Echo through diff-based comparison. Required cases include copying into an old file, copying within one file, renaming identifiers, reusing common library calls without duplicating a responsibility, and deliberately equal but independently changing policies. Compare changed code against established code outside the changed-file set.
100
+ 7. Connect setup and the installed skill to exploration, an evidence-backed written plan, implementation, diff review, and behavior checks. Test generated instructions and execute the loop in disposable checkouts. Do not add a hidden committing or automatic refactoring step.
101
+ 8. Evaluate the whole workflow using the approved cheaper model, initially `gpt-5.6-sol` at `medium`. Preserve raw outcomes and failures. Expand beyond the tiny development fixture, then repeat matched runs after requirements are frozen.
102
+
103
+ Completion requires a demonstrated first-use report, an executed planning/edit/review loop, meaningful detector and integration tests, documented omissions, compatible generated command/API records or explicit migrations, and a review of the resulting tool diff. A written vision or passing implementation tests alone is not completion of this product work.
104
+
105
+ ## Evaluate the actual purpose
106
+
107
+ Measure three things separately: whether the tool identifies real problems without excessive false alarms; whether it helps an agent find existing implementations and make appropriate plans; and whether its review helps the agent repair defects in its own change while preserving behavior.
108
+
109
+ Use both known defects and legitimate exceptions. Tasks must include problems that the agent is not explicitly told to look for, and checks independent of the detector's own score. Record correct findings, missed defects, false alarms, unnecessary edits, preserved behavior, maintenance effort on a later change, time, and token use. An import cycle detected correctly and a suggested module split justified poorly are different outcomes.
110
+
111
+ The [first Sol/medium pilot](benchmarks/2026-09-05-change-pilot.md) remains a small development baseline. Its directed tasks and index-refresh limitation do not establish the value of first-use diagnosis, planning, or continuous diff review. Do not replace it silently, tune against a held-out evaluation set, or use a lower complexity score as the sole success criterion.
112
+
113
+ ## Implementation checkpoint: 2026-09-05
114
+
115
+ The ordinary workflow now has a shared current-source TS/JS health scan and Git-based review, documented in [REVIEW.md](REVIEW.md). Review includes changed/new/deleted functions, explicit metric contributions, same-file and repository-wide body duplication candidates, relative import cycles, declared architecture edges, removed-file import residue, and measured coverage/CRAP with source-hash validation. It does not depend on watcher freshness. Source and supplied test-coverage omissions are visible and fail the optional completeness gate.
116
+
117
+ Removed in this implementation: `twin-ab` and its public scaffold API; automatic local-call expansion from ordinary range reads; literal-erasing comparison in the older duplicate-body detector. The default health report now presents exact finding sites; the older specialist report is available through `health --indexed`. Main skill and setup guidance connect exploration, a written plan, implementation, diff review, simplification and behavioral checks. Missing graph roots and partial multi-selector source reads no longer report full resolution.
118
+
119
+ Still evidence-dependent: conceptual ownership, business-rule equivalence, module cohesion and the best abstraction cannot be inferred from size or token similarity. Existing context/evidence and indexed drift/framework/cleanup producers remain useful specialists. This checkpoint does not certify every language/provider or claim measured agent effectiveness. A Sol medium audit on a real repository snapshot found three reproducible defects in the first implementation; all three now have fixes and regression tests. See the [audit report](benchmarks/2026-09-05-maintenance-sol-audit.md).
120
+
121
+ Reviewing the implementation also exposed a comparison defect: an increase in one complexity measure could be hidden by an unchanged maximum ranking score. Review now compares both measures independently, with an executable regression for increased cyclomatic complexity and unchanged cognitive complexity. The report renderer separates changed-function records from finding details; the comparison logic makes its precedence explicit. These changes improve the implementation without requiring every parser branch or validation check to disappear below a threshold.
122
+
123
+ The repository policy gives the isolated change-benchmark fixture its own boundary with no production dependencies. Range-read tests belong to the navigation test suite. The existing source owner continues to own source snapshots, parsing, fingerprints and coverage measurements; its file budget increases from 61 to 65 for the four shared implementations. This is an explicit budget revision for added responsibility, not evidence that file count measures conceptual quality. All dependency-direction and ownership-coverage rules remain enforced.
124
+
125
+ The implementation's own review remains above the strict complexity gate: examples include `dependenceSlice` (41 cyclomatic / 48 cognitive), the metric syntax visitor (24 / 29), and `functionCoverage` (19 / 18). Their branches include criterion validation, bounded traversal, syntax-specific counting, source-hash validation and nested-function exclusions. These are retained review findings, not waived checks or a claim that the implementations are optimal. Further simplification must preserve those distinctions and the regression cases. No whole-repository coverage receipt was supplied for this review, so it makes no whole-repository CRAP claim.
126
+
127
+ Final verification on 2026-09-05: all 2,871 tests in 334 files passed in the serial full suite. `npm run lint` passed formatting, ESLint, the build, public API compatibility, consumer type checking and skill-link checks; `npm run typecheck` and `git diff --check` passed separately. After reindexing, architecture mapped all 541 indexed files across 37 declared boundaries, with no unmapped or ambiguous owners, forbidden dependencies, cycles, size-limit violations, test-boundary violations or stale allowances. The current-source review accounted for 563 eligible files and 12,326 functions with no source-coverage problems. Indexed `diff-impact` also ran, but its coverage did not establish an exhaustive consumer set. The Sol audit and the tests support these bounded claims; they do not establish general improvement in agent outcomes.
128
+
129
+
130
+ ## First-use reliability follow-up
131
+
132
+ The active follow-up is recorded in [the scanner checklist](plans/2026-09-05-first-use-scanner-reliability.md). Compiler snapshot resolution, configuration-only diff evidence, source-role exclusions, dependency-role separation, bounded planning subjects and a conservative lexical-binding responsibility candidate are implemented. The follow-up is verified in the [first-use validation report](benchmarks/2026-09-05-first-use-validation.md); the earlier checkpoint above describes the preceding implementation. Current user-facing behavior and precise limitations are documented in [REVIEW.md](REVIEW.md).
133
+
134
+
135
+ The first-use follow-up passes the 2,900-test full suite, final focused checks, lint/type/API checks and the refreshed architecture policy. Its source scan resolves LaunchPoint's aliases across all 5,306 eligible files with zero unresolved internal imports in that snapshot. It presents shared dependency components and a bounded selection of module subjects with exact evidence. Conceptual ownership and runtime resource identity remain evidence-dependent; no responsibility candidate qualified in LaunchPoint, and no general agent-effectiveness improvement is claimed. See the validation report for retained metrics, source/index coverage differences and the cheaper-model audit.
@@ -0,0 +1,73 @@
1
+ # Property-based verification
2
+
3
+ A property-based test checks a stated rule against generated inputs. Each case is one completed predicate invocation, potentially containing several edits, assertions or service events. fast-check reduces failures to simpler inputs and records a seed and replay path. A passing case count measures executions within the documented generators; it is not a count of unique inputs or proof of exhaustive correctness.
4
+
5
+ The suites use the existing Vitest runner and production TypeScript owners. fast-check is a development dependency. The shared runner is `tests/properties/support.ts`; the eight area suites are `tests/properties/<area>.property.test.ts`. The external compiler comparison is registered through `indexing-compiler.ts`.
6
+
7
+ ## Running and replaying
8
+
9
+ ```sh
10
+ npm run build # Required for the real daemon and worker entrypoints used by indexing histories.
11
+ npm run test:properties
12
+ npm run test:properties:thorough
13
+ npm run test:properties:thorough -- --area indexing --seed 20260907
14
+ npm run test:properties:types
15
+ ```
16
+
17
+ Normal runs execute 200 component cases, five integration cases, two compiler sequences and two system histories per property. Thorough runs execute 200,000 component cases, 200 integration cases, 30 compiler sequences and 30 system histories per property. All area suites also run at normal budgets under `npm test`. A sequence contains multiple operations; those operations are not added to the case totals. The compiler check launches the independently packaged scip-typescript CLI after each generated edit and compares exact retained document bytes, with separately known file membership and definition checks.
18
+
19
+ The runner prints a unique temporary result directory. `summary.json` includes actual per-area/tier counts and individual receipts containing the fast-check version, seed, duration, skipped inputs, shrinking count, counterexample and failure message. Failed or interrupted properties cannot contribute passing-case credit; the runner also fails if Vitest reports an error or a full area misses its requested component budget. A raw test pass with a runner/worker error is not accepted.
20
+
21
+ Replay one failed property with its recorded seed and path, selecting its exact Vitest test name:
22
+
23
+ ```sh
24
+ npm run test:properties -- --area scanner --test 'scanner: generated branches' --seed 12345 --path '0:1:2'
25
+ ```
26
+
27
+ The example seed/path above is illustrative. Use the receipt from the failure. To vary local budgets, set `SCIP_PROPERTY_COMPONENT_RUNS`, `SCIP_PROPERTY_INTEGRATION_RUNS`, `SCIP_PROPERTY_COMPILER_RUNS`, or `SCIP_PROPERTY_SYSTEM_RUNS`. Values must be positive integers. A full thorough invocation still requires at least 200,000 passing component cases per area. Targeted `--test` invocations report only their selected work and do not claim full-area completion.
28
+
29
+ The GitHub workflow runs normal budgets on pushes and pull requests, and thorough budgets weekly or through manual dispatch. Unspecified seeds vary between invocations and are saved. It uploads the actual receipts even on test failure. The workflow becomes active after the commit reaches GitHub; local execution does not verify hosted CI.
30
+
31
+ ## Guarantees and independent expectations
32
+
33
+ | Area | Generated checks | Independent expectation and bounds |
34
+ | --- | --- | --- |
35
+ | `indexing` | Add/edit/delete manifests; affected consumers; compiler shard membership; SQLite publication and failures at all four patch stages; retained compiler documents versus fresh compiler output | Plain before/after arrays, exhaustive small-graph reachability, explicit relational facts, unchanged accepted database bytes, and the external compiler. Component graphs have up to 10 vertices; SQLite sequences up to eight operations; compiler sequences two to five edits across four modules plus their consumer. |
36
+ | `graphs` | Component membership/order, target-only vertices, resolved module dependencies, isolated modules and cycle membership | Exhaustive reachability, independent of production Tarjan/queue traversal; generated source imports directly specify expected edges. Up to 10 vertices and 100 proposed edges. |
37
+ | `pagination` | Cursor identity; count/completion consistency; exact saved-output recovery across UTF-8 byte boundaries | Input strings and independently calculated counts, with real snapshot files and continuation reads. Includes ASCII, astral characters, combining marks, control characters, quotes and empty strings. This checks transport accounting, not whether a selected graph contains every task-relevant fact. |
38
+ | `scanner` | Exact cyclomatic/cognitive counts, local renaming and significant-literal duplication distinctions, comment invariance, parse failures, first-use health and file-budget failures | Constructed branches have known counts. Up to five branch groups with five nesting levels, else branches and while loops. Integration scans measure one to 20 sequential conditions and subsequent edits. Other syntax forms retain their existing fixed tests. |
39
+ | `cache` | Source equality, database isolation, LRU eviction, computation failure and scoped/global invalidation; actual source reads after edits/deletions | A small list-based cache model and current file contents. Up to 25 operations, two ownership keys and five files; separate real database/file integration. Source readers are invalidated through the documented cache registry, not assumed to poll disk on each cached read. |
40
+ | `suppressions` | Exact comment categories, source location bounds, finding identity, expiry, changed evidence and cached inventory/configuration changes | Constructed categories, explicit wall-clock comparisons and content identities, plus real indexed source comments. These checks do not establish the correctness of a human's suppression rationale. |
41
+ | `boundaries` | All 20 registered query-service request kinds, identity/timing/payload corruption, binary file limits, hashing and descriptor ownership | Shared fixed request fixtures are exhaustive at compile time; generated envelope fields and independent bytes/hash expectations. Real file cases cover up to 2,048 bytes; existing mutation/race regressions remain. |
42
+ | `lifecycle` | Admission, success, rejection, malformed/mismatched response, timeout, worker error, cancellation, duplicate response and delayed termination; watch finalization failures | Observable settlements, timers, admission state, termination calls, signal listeners and finalization order. The production lane/lifecycle runs with controlled worker/timer boundaries. Generated schedules cover the modeled events, not every OS thread/process interleaving. |
43
+
44
+ ## Command coverage map
45
+
46
+ Direct coverage below means a generated test invokes the production consumer used by that command. Shared coverage means the command benefits from tested indexing, caches, protocols or transport, while its particular analysis still relies on existing fixed tests. Coverage of a dependency is not coverage of the entire command.
47
+
48
+ | Commands / surfaces | Property coverage | Remaining specificity |
49
+ | --- | --- | --- |
50
+ | `health`, `review`, `system --source` | Direct current-source scanner/module report consumers; current edits, incompleteness, dependency direction and cycle membership | Generated Git-base diff comparisons, every architecture rule and coverage-backed CRAP are not included. |
51
+ | `reindex` | Direct affected-file planning, sharding, SQLite patch publication and compiler document updates; real reindex/daemon histories, generation readers and interrupted publication | Generated repositories use one small TypeScript project; every configuration and non-TypeScript indexer is not covered. |
52
+ | `watch` | Direct worker-lane/lifecycle transitions; real daemon compiler requests, service restarts and an automatic filesystem refresh | Selected process interruptions and completion schedules do not exhaust OS event delivery or locking behavior. |
53
+ | `continue` | Direct immutable saved-output producer/consumer | Output beyond configured caps and every storage failure retain existing regressions. |
54
+ | `search`, `outline`, `entrypoints`, `inspect`, `code`, `files`, `methods`, `refs`, `imports`, `imported-by`, `members`, `by-kind`, `kind-counts`, `hierarchy`, `stats`, `surface` | Shared indexed identities/source freshness; generated protocol checks for registered request kinds; cursors and output transport | Locator relevance, semantic resolution and exact content selection are not established by envelope validation. |
55
+ | `evidence`, `session`, `deps`, `rdeps`, `system`, `cycles`, `architecture`, `dependency-depth`, `entry-map`, `call-graph`, `affected`, `diff-impact`, `change-surface`, `context`, `hotspots`, `fan-in`, `fan-out`, `coupling`, `bottlenecks`, `dependence-slice` | Shared indexing, graph component/ordering foundations, source module evidence and transport | Symbol-level execution/dataflow/provider completeness and task relevance retain dedicated fixed tests; source-module tests do not prove these relations. |
56
+ | `complexity`, `duplicate-bodies`, `similar`, `similar-files`, `similar-signatures`, `recent-duplicates`, `twin-drift`, `dead`, `unused-imports`, `unused-params`, `drift`, `passthrough-candidates`, `slice-cohesion`, `redundant-reexports`, `not-implemented`, `decorative-checkers`, `test-quality`, `cleanup-plan`, `locality-candidates`, `co-change`, `doc-drift`, `incomplete-migration` | Shared source metrics/fingerprints, cache validity, suppression parsing and transport | Indexed detector-specific scoring, history interpretation, cleanup safety and precision are not inferred from shared properties. |
57
+ | `react-component-duplicates`, `react-hook-candidates`, `react-large-component-pressure`, `vue-component-duplicates`, `vue-composable-candidates`, `vue-large-view-pressure` | Shared source/cache/index/transport foundations | Framework-specific structures remain covered by existing examples; no generated React/Vue suite is claimed. |
58
+ | `augment-sources`, `augment-vue`, `install-skills`, `check-deps`, `capabilities`, `init`, `config-validate`, `suppress`, `doctor`, `setup`, `setup-agent`, `uninstall`, `status` | Shared boundaries/suppression foundations where used | Installation effects, migrations, project discovery, provider support, skill prose and configuration semantics retain existing contracts. |
59
+ | `hook-architecture-stop`, `__diff-impact-batch`, `__health-phase`, `__health-semantic-prewarm` | Shared service and analysis foundations | These internal routes retain their existing end-to-end tests. |
60
+
61
+ ## Scope and results
62
+
63
+ The indexing system suite (`indexing-history.ts`, `indexing-interruptions.ts`, `indexing-mutations.ts`) runs the actual reindex entrypoint, daemon/worker and SQLite publication. It supplies source edits, never an affected-file list. An initial function-to-constant change must publish incrementally with expensive fallback disabled. Every successful checkpoint compares all fixture-file compiler occurrences (symbols, roles, ranges and enclosing ranges) against the independently packaged compiler, checks exact file membership and database integrity, and checks that an already open reader retains its prior snapshot. The source map supplies independent expected membership and an untouched definition. Compiler semantic bugs shared by both paths can still escape this comparison; it is not a comparison of every analysis provider's output.
64
+
65
+ Generated histories contain 3–12 actions drawn from function/constant changes, deletion, restoration, rename, import rewiring, invalid syntax, configuration edits, no-op, revert and service restart. A separate fixed history exercises every kind. Short-history enumeration checks every sequence of length 1–2 (12 histories, 21 edit checkpoints) normally and length 1–3 (39 histories, 102 edit checkpoints) in thorough mode, over three owner states: function, constant and absent. Enumeration counts are printed separately, not added to generated-case totals.
66
+
67
+ Five real process-death checks kill a child indexer before/after its authoritative pointer change and during stable mirror replacement, then recover using retained crash files. Two I/O checks inject ENOSPC. Further checks cover cancellation, competing writers serialized by the lifecycle lock, a moving-input build's rejection, and automatic watcher catch-up. Checkpoints are controlled at real filesystem/status boundaries in an isolated test process. They do not simulate machine power loss or every possible OS schedule. Two temporary production-function mutations deliberately omit dependent files or retain old candidate database rows; both must be caught by the same clean-build assertion. These are negative controls, not production defects found by chance.
68
+
69
+ The state-verification worklist, confirmed production defects and validation receipts are recorded in [the indexer state plan](plans/2026-09-07-indexer-state-verification.md).
70
+
71
+ This suite increases the combinations exercised through the tool's shared foundations and selected real consumers. It cannot determine whether business module boundaries are well chosen, infer task intent, validate every language provider, or prove no future defects exist. No agent benchmarks are required. Tests do not alter production thresholds or suppressions.
72
+
73
+ The implementation worklist, execution receipts and discovered issues are recorded in [the property-testing plan](plans/2026-09-07-property-testing.md).
package/docs/REVIEW.md ADDED
@@ -0,0 +1,76 @@
1
+ # Explore, plan, review
2
+
3
+ Use `scip-query health` for an initial scan and `scip-query review --base HEAD` after changing code. Both read current TypeScript/JavaScript files without a compiler index. `context <symbol>`, exact source reads, and explicitly selected relationship evidence support planning around existing implementations. The installed scip-query skill connects these operations to a written plan and behavioral checks.
4
+
5
+ A finding is a report identifying concrete source and evidence of a possible defect or maintenance problem. Derived findings report a deterministic calculation, such as a circular import component. Candidates identify code requiring judgment, such as similar implementations whose contracts may differ. Neither category establishes that an automatic rewrite is correct.
6
+
7
+ ## Normal use
8
+
9
+ ```sh
10
+ scip-query health
11
+ scip-query context <existing-symbol>
12
+ # Write a plan citing the implementation, consumers, preserved behavior, and checks.
13
+ # Implement and run the relevant tests.
14
+ scip-query review --base HEAD
15
+ ```
16
+
17
+ `review` compares the named commit with current files, including untracked files, unstaged edits and staged changes still present in current bytes. It lists added, modified and removed functions, including callbacks. Changed functions below warning thresholds still appear. Unique path/name pairs receive before/after metrics; ambiguous names receive uncomparable records. Renames and splits are not guessed: they may appear as removal plus addition. This is not a staged-only report.
18
+
19
+ Findings are classified as introduced, worsened, existing, resolved, or uncomparable. Duplicate comparisons scan repository peers, including same-file peers and functions added to old files; they do not use file creation dates to decide whether a copy is new. `--scope src/module` filters displayed subjects while retaining repository peers for comparison. `--include-tests` includes tests, fixtures and benchmarks. `--full` displays all findings; it does not remove source-analysis bounds. `--max-files` raises the default 10,000-file limit. Files over 1 MiB and snapshots over 128 MiB are disclosed omissions.
20
+
21
+ `--check` exits 1 for introduced/worsened derived review findings (or any derived health finding), 2 for incomplete source coverage or unavailable explicitly requested test coverage, and 0 otherwise. Similarity candidates do not fail this gate. A zero exit code does not establish behavioral correctness, complete dependency coverage, or good ownership. Coverage limitations apply even when the source scan is accounted for.
22
+
23
+ `health --indexed` retains specialist framework, drift and cleanup analyses. `health --baseline` and `--write-baseline` retain the indexed finding-identity baseline. Fresh `diff-impact` and `evidence` establish indexed symbol consumers and supported runtime relationships. The current-source report's affected files are transitive importers only.
24
+
25
+ ## Complexity rules
26
+
27
+ A function is an executable source unit with parameters and an implementation body. Each function, method, accessor, constructor and callback is measured separately; a nested function's decisions are not added to its enclosing function.
28
+
29
+ Cyclomatic complexity is a control-flow measure counting independent decision paths under a specified counting rule. Rule set `typescript-function-local-v1` starts at 1 and adds 1 for each `if`, loop, non-default `case`, `catch`, ternary, and `&&`, `||`, or `??` operation. It does not attempt interprocedural path feasibility or implicit exception paths.
30
+
31
+ Cognitive complexity is a structural measure that increases when control-flow interruptions occur inside other control-flow structures. This implementation adds 1 plus nesting for `if`, loops, `catch`, ternaries and `switch`; `else` and `else if` add 1; same-operator logical sequences add 1; labeled jumps add 1. Nullish coalescing adds no cognitive increment. Contributions include exact line/column locations in the machine result. The initial warning thresholds are cyclomatic >10 or cognitive >15; they are review defaults, not universal design laws.
32
+
33
+ The structural rules are informed by [SonarSource's specification](https://www.sonarsource.com/docs/CognitiveComplexity.pdf). This version does **not** claim exact Sonar parity: it measures nested functions independently and omits recursion because source spelling alone cannot establish recursive binding. Metrics identify branching and nesting; they do not measure whether a business concept has a clear owner.
34
+
35
+ ## Actual coverage and CRAP
36
+
37
+ Test coverage is a record of which executable source locations were observed during a test run. CRAP is a numerical review measure combining cyclomatic complexity with uncovered execution locations:
38
+
39
+ `CRAP = complexity² × (1 − coverageFraction)³ + complexity`.
40
+
41
+ This is the continuous formula used in [php-code-coverage's CRAP implementation](https://github.com/sebastianbergmann/php-code-coverage/blob/main/src/Node/CrapIndex.php), without its ≥95% shortcut. Here the coverage fraction counts distinct Istanbul statement-start lines belonging to the function, excluding nested function statements. It is not branch coverage, path coverage, or proof that assertions checked the behavior. CRAP ≥30 produces a review finding. Base CRAP is unavailable without an independent source-matched base measurement, so current CRAP findings are uncomparable rather than falsely introduced.
42
+
43
+ Configure your existing test runner to write Istanbul `coverage-final.json`. Then wrap that actual command. For a local package installation:
44
+
45
+ ```sh
46
+ node node_modules/scip-query/scripts/record-review-coverage.mjs \
47
+ --input coverage/coverage-final.json --output .scipquery/coverage.json \
48
+ -- npm test -- --coverage
49
+ scip-query review --coverage .scipquery/coverage.json
50
+ ```
51
+
52
+ Use the test arguments appropriate to your project; the recorder does not install a coverage provider. In this repository the script is at `scripts/record-review-coverage.mjs`. It requires Git, a successful test process, a fresh coverage artifact and unchanged source hashes before/after the run. The receipt contains `schemaVersion: 1` and a `files` object keyed by project-relative path; each entry holds `sourceHash` (SHA-256 of file bytes) and its original Istanbul `coverage` entry. Missing hashes, changed bytes, malformed coverage or unmapped executable locations yield **unavailable**, never fabricated zero coverage. Both health and review print available/unavailable measurement counts. Supplying unusable coverage makes the report incomplete; review requires coverage for its changed current functions, while health requires it for functions in its displayed scope. Keep receipts local; regenerate after edits.
53
+
54
+ ## What findings establish
55
+
56
+ `suppress <id>` records an exception supported by named source, configuration, test or graph evidence. Automatic acceptance requires a content hash for every file named by the finding, even when the reason is supported by a different file. Supply repeated `--evidence source:<target-file>` arguments alongside that other evidence. Changing or deleting a target or cited evidence invalidates the exception; missing target evidence leaves the finding open. Raw findings remain visible in the report. Suppression checks establish that the reviewed referents still match, not that the written justification is correct.
57
+
58
+ Duplicate findings compare entire function bodies with at least 60 tokens. They preserve literal values and property names, ignore comments and formatting, and disclose local-binding renaming as candidate evidence. A compiler binding lookup distinguishes each local declaration from unrelated globals and shadowed variables; no import resolution or project-wide typecheck is implied. This is neither semantic equivalence nor partial-block clone detection. Compare callers, errors, side effects, state and intended contracts before selecting one implementation to own a rule. Similar code can correctly serve separate responsibilities.
59
+
60
+ Dependencies use TypeScript compiler resolution over captured repository source and configuration: relative imports, `paths`/`baseUrl`, JSONC inheritance, project references and repository package exports. Each Git revision uses its own configuration. Missing external configuration is disclosed; the compiler host never silently reads current filesystem bytes to resolve the base. External packages and Node built-ins are counted separately from missing or ambiguous internal imports. Existing relative asset targets (for example CSS) are recorded as excluded dependencies, not missing executable modules. Runtime package installation, custom loaders and nonliteral dynamic targets remain outside this source provider.
61
+
62
+ The production file-cycle report uses static value imports and re-exports. Type-only imports, tests, dynamic imports and CommonJS calls have separate counts and exact import records. Declared architecture checks include type dependencies and exclude test-related edges; the indexed command preserves dedicated opt-in test-policy checks. Boundary cycles explicitly report whether a cycle between files exists or only the grouping creates the cycle. Neither proves a runtime initialization failure. Missing dependency-policy rows remain unknown directions, even when every analyzed file has a boundary. First-use source checks report observed forbidden edges, enforced group cycles, configured bounds and assignment violations; use `architecture` for the full indexed policy, including test policy and unused allowances.
63
+
64
+ Review lists source changes, configuration changes and import-relationship changes separately. Configuration-only edits can affect unchanged consumers without inventing added or modified functions. Configuration gaps make dependency comparisons uncertain while exact source metrics remain comparable. Removed targets remain visible through both source revisions.
65
+
66
+ Default exclusions cover tests (including end-to-end test support), fixtures, benchmarks, declarations, managed build output, generated directories, and reference/vendor copies. `--include-tests`, `--include-generated` and `--include-references` opt into those source roles. Exclusion reasons, eligible/analyzed file counts, missing dependencies and parse/resource failures are visible. Project configuration selects the applicable resolution rules; compiler `include`/`exclude` membership does not silently erase repository tooling from the source inventory.
67
+
68
+ Health presents dependency components separately from five module planning subjects by default. A shared cycle is not assigned to its first member as that module's defect. A subject groups findings by an unambiguous declared boundary, or by directory when none exists; it is not a discovered business responsibility. Each subject includes exact implementations, observed consumer/dependency files and ranked findings. The first display gives the strongest available example of each finding kind a slot before filling remaining slots, so many copies cannot crowd out all complexity evidence. `--limit` changes the displayed subject count; `--scope` focuses a source path; `--full` returns all findings and details. Machine reports preserve all subjects and findings using `--json --json-output <path>`.
69
+
70
+ A responsibility candidate requires at least two independent groups of substantial exported top-level functions (at least two functions with 60 body tokens per group), separate observed dependencies and separate named importers. Same-file helpers/state and shared imported modules connect groups; orchestration and shared consumers are contrary evidence. The provider follows lexical binding identity, including nested closures, rather than matching identifier spelling. Classes, indirect re-exports, dynamic consumers, external users and runtime resource identity remain unestablished. A common public contract can justify retaining separate operations together; candidates never authorize an automatic split.
71
+
72
+ Ownership and conceptual cohesion still require combining behavior, consumers and dependency evidence. The tool does not invent owners, declare a large module inherently wrong, or assign an architectural grade. Plans should record established responsibilities, uncertain alternatives, existing patterns to reuse, and the tests that would catch a mistaken consolidation.
73
+
74
+ ## Retirements
75
+
76
+ `twin-ab` and its public API were removed: the command generated an unfinished test scaffold, not a behavioral comparison. Write and run focused comparison tests in the project's own test suite. `code file:start-end` now reads only that range by default; add `--local-calls` for statically attributed same-file callees. Default `health` now returns concrete current-source findings; existing consumers of the specialist JSON report should use `health --indexed`.
package/docs/SKILLS.md ADDED
@@ -0,0 +1,51 @@
1
+ # Agent workflows and module evidence
2
+
3
+ scip-query is built for coding agents. Its workflows address choosing the wrong implementation, copying an existing rule, overlooking consumers, leaking coordination into callers, and mistaking an incomplete implementation for finished behavior.
4
+
5
+ Ordinary source search/reads are the default. Use the tool for relationships, reuse, module structure, quality findings and change impact. Saved results can be read selectively; routine exploration needs no formal evidence ledger or mandatory page draining.
6
+
7
+ ## Six skills
8
+
9
+ Setup and `install-skills` install all six workflows into available Claude, Codex, and shared agent roots. `--all` remains compatible with existing scripts and has the same result. Agents load only the workflow relevant to their task.
10
+
11
+ | Skill | Responsibility |
12
+ | --- | --- |
13
+ | [scip-query](../skills/scip-query/SKILL.md) | Shared commands, evidence limits, transport, and actual-diff review |
14
+ | [scip-explore](../skills/scip-explore/SKILL.md) | Establish live behavior, relevant owners, consumers, decisions, effects, and recovery |
15
+ | [scip-plan](../skills/scip-plan/SKILL.md) | Concrete implementation order, preserved behavior, consumer migration, retirement, and checks |
16
+ | [scip-architecture-review](../skills/scip-architecture-review/SKILL.md) | Evaluate architecture and maintainability using concrete consequences for future changes |
17
+ | [scip-integrity-audit](../skills/scip-integrity-audit/SKILL.md) | Compare promised behavior with live behavior; exercise distinguishing positive/negative cases |
18
+ | [scip-setup](../skills/scip-setup/SKILL.md) | Diagnose and repair indexing, freshness, watchers, caches, and installation |
19
+
20
+ Architecture review absorbs principal-maintainability-review, scip-system-compression, and structural investigations from scip-root-cause and scip-twin-drift. Integrity review absorbs scip-claim-audit, scip-probe-reachability, scip-calibrate, and behavioral comparison of competing implementations. Planning absorbs the useful execution/retirement guidance from conductor. The concrete-plan alias is removed.
21
+
22
+ Upgrade removes links into this package for retired skills. It preserves unrelated links and user-owned files. Existing prompts naming retired workflows must use the canonical names above. Historical audit documents retain their original skill names as records of those runs.
23
+
24
+ The shared guide and relevant workflows link the appropriate sections of the [shared command decision guide](../skills/scip-query/references/command-guide.md). Every public command has a question, selector/mode, index prerequisite and interpretation limit. The guide separates internal transport/workers and explains which overlapping-looking controls answer different questions. Agents load the needed section, not an all-command checklist.
25
+
26
+ ## One module evidence view
27
+
28
+ ```sh
29
+ scip-query system --source
30
+ scip-query system --source src/payments
31
+ # Or use an exact group ID printed by the inventory:
32
+ scip-query system --source 'directory:src/payments' --full
33
+ ```
34
+
35
+ Source mode reads the current TS/JS snapshot and configuration without creating a compiler index. It uses the same source analysis as health, but includes modules with no findings. Unambiguous configured boundaries take precedence; remaining files are grouped by directory. A path selects whole groups containing matching files, not a guessed business subsystem.
36
+
37
+ Selecting a group exposes files, grammar-derived export declarations, imports, incoming import sites, production dependency/consumer files, and finding identities. Cross-group edges retain exact import sites and distinguish value/type, production/test, and static/dynamic/CommonJS syntax. Findings retain derived/candidate labels. The report also exposes configured boundary coverage and unknown dependency-policy rows.
38
+
39
+ In machine output, `imports` stores each parsed import observation once. Group `importIds`, `incomingImportIds`, and edge `importIds` are indexes into that report's table; they are not identities to reuse across runs. Human output resolves these references to source locations.
40
+
41
+ Export declarations are starting locations for interface investigation. Wildcard exports are not expanded; CommonJS export assignments, class member interfaces, external consumers, runtime registrations, and complete symbol invocation coverage are not established. `system <path>` retains the indexed summary; indexed `surface <path>` and selected `evidence` relationships supply additional facts where supported. A syntax tree, a resolved reference, and observed execution establish different things.
42
+
43
+ The human view limits displayed groups and examples and prints exact recovery. `--full` shows all captured rows; it does not remove scan bounds. `--max-files` raises the default 10,000-file limit. File and snapshot byte bounds, parsing/configuration failures, missing imports, and exclusions remain disclosed. Use `--include-tests`, `--include-references`, or `--include-generated` for optional source roles. Save exhaustive machine output using `--json --json-output <path>`.
44
+
45
+ ## Design and integrity judgments
46
+
47
+ The tool reports structure and checks declared rules. The architecture skill requires the agent to connect a concern to a real maintenance mistake, examine consumers and counterevidence, and explain how a proposed change reduces required knowledge or coordination. Deep interfaces are evaluated by caller obligations; no depth or architecture score is produced.
48
+
49
+ Integrity review starts with a specific promised outcome, traces the live route, and exercises cases that distinguish a real implementation from a shortcut. A parser library being present does not prove it replaced regex extraction. A missed parser probe does not prove a branch unreachable. Literal status values can be justified by preceding checks; computed status can still be misleading.
50
+
51
+ Skills are agent instructions. They do not enforce their own compliance or establish better agent behavior merely by existing. Workflow effectiveness requires comparing actual agent tasks and resulting changes, alongside deterministic tests for the tool's reported facts. A complete inventory does not establish a complete behavioral review; disclose material limitations when they affect the conclusion.
@@ -137,9 +137,9 @@ and verifying registry truth after each publication:
137
137
  2. require a clean Git checkout and record the exact `HEAD` object ID;
138
138
  3. resolve one canonical credential-free HTTPS npm registry and retain it for
139
139
  the complete run;
140
- 4. run typecheck, the complete test suite, and lint; lint includes formatting,
141
- production build, API compatibility, downstream compilation, and skill
142
- link checks;
140
+ 4. run typecheck, the production dependency audit, and lint (including
141
+ formatting, production build, API compatibility, downstream compilation,
142
+ and skill links), then the complete test suite against that fresh build;
143
143
  5. verify provenance and pack the sidecar;
144
144
  6. pack the main package with lifecycle scripts disabled;
145
145
  7. extract both packed `package.json` files, require their coordinates, and
@@ -184,6 +184,15 @@ the two packed artifacts were tested and produced.
184
184
  local recovery record, and reads/downloads any existing registry versions.
185
185
  It never invokes `npm publish`.
186
186
 
187
+ The complete suite keeps its two-worker limit. CLI contract tests execute
188
+ the built CLI instead of repeatedly loading TypeScript through a development
189
+ runner. Test subprocesses share Node's module compilation cache inside the
190
+ release's temporary directory, which is removed on success or failure.
191
+ Every test still executes; no previous pass is reused. Explicit
192
+ `NODE_DISABLE_COMPILE_CACHE=1` and `NODE_COMPILE_CACHE` settings are honored,
193
+ and `NODE_V8_COVERAGE` disables compilation caching for precise coverage.
194
+ Node versions without compilation-cache support still run the same checks.
195
+
187
196
  5. Review the reported coordinates, integrities, registry states, and the JSON
188
197
  record under `.scipquery/releases/`.
189
198
  6. Run:
@@ -42,6 +42,63 @@ The certification thresholds and publication rules live in
42
42
  Program closure and the private-shadow decision live in
43
43
  [`2026-07-11-accuracy-program-closure.md`](./validation/2026-07-11-accuracy-program-closure.md).
44
44
 
45
+ ## 2026-09-03 third and fourth repository label review
46
+
47
+ SuplierScout (Express + React, solution-style tsconfig, 17.8k symbols) and
48
+ Stable_Management (workspace monorepo, five tsconfigs, 109k symbols). Sample
49
+ seed 11; every row read in source. Precision is over labeled signal-tier rows,
50
+ recall over labeled true rows.
51
+
52
+ | Detector | Repository | Sample | Precision | Recall | Note |
53
+ | -------------------------------- | ----------------- | ------ | --------- | ------ | -------------------------------------------------------------------------------- |
54
+ | `twin-drift` | Stable_Management | 15 | 1.0 | 1.0 | writeAuditEntry in 18 copies, hasAnyRole in 4, drifted normalization helpers. |
55
+ | `duplicate-bodies` | Stable_Management | 10 | 1.0 | 1.0 | Identical bodies under different names or workspaces. |
56
+ | `stale-abstractions` | Stable_Management | 20 | 1.0 | 1.0 | Verified with `git grep -w`; nine contract types with no consumer anywhere. |
57
+ | `co-change` | Stable_Management | 16 | 1.0 | 1.0 | Was 0.82 recall; view script companions were read as maintenance scripts. |
58
+ | `similar` | Stable_Management | 20 | 1.0 | 0.92 | Was 0.33 recall; same-file workflow siblings were held at signal by vocabulary. |
59
+ | `wrapper-candidates` | Stable_Management | 20 | n/a | n/a | All 50 rows are signal tier; the sample holds no direct-tier row to score. |
60
+ | `dead` | Stable_Management | 1 | 1.0 | 1.0 | One frontend API export with no frontend reference. |
61
+ | `extract-candidates` | Stable_Management | 20 | 0.25 | 1.0 | Three signal rows are fragments crossing a block boundary; see the known gap. |
62
+ | `similar` | SuplierScout | 13 | 1.0 | 0.67 | Console panels sharing a boot-and-fetch shell stay at signal. |
63
+ | `extract-candidates` | SuplierScout | 20 | 1.0 | 0.64 | Was 0.9 precision; misses are wide-interface rows disclosed at support tier. |
64
+ | `dead` | SuplierScout | 17 | 1.0 | 1.0 | |
65
+ | `twin-drift` | SuplierScout | 12 | 0.83 | 1.0 | Provider-contract implementations and client HTTP wrappers over server services. |
66
+ | `co-change` | SuplierScout | 16 | 0.8 | 1.0 | One global stylesheet paired with a server route. |
67
+ | `duplicate-bodies` | SuplierScout | 10 | 1.0 | 1.0 | |
68
+ | `stale-abstractions` | SuplierScout | 20 | 1.0 | 1.0 | |
69
+ | `passthrough-candidates` | SuplierScout | 4 | 1.0 | 1.0 | The defaulted-parameter row is excluded now. |
70
+ | `wrapper-candidates` | SuplierScout | 6 | n/a | n/a | All signal tier. |
71
+ | `react-large-component-pressure` | SuplierScout | 4 | 1.0 | 1.0 | |
72
+
73
+ Known gap: `extract-candidates` reports regions built from callee line
74
+ intervals, so a region can begin inside an enclosing branch or end by closing
75
+ one. Demoting every region whose braces do not balance fixes the three
76
+ Stable_Management rows but fires on 50 to 75 percent of all rows and costs
77
+ recall on Vega and SuplierScout, so it is not shipped.
78
+
79
+ ## 2026-09-02 TypeScript label review
80
+
81
+ The matrix below is the 2026-07-10 snapshot. On 2026-09-02 the TypeScript
82
+ detectors that feed the health report were re-audited against reviewed
83
+ label sets (`docs/validation/labels/<repository>/<detector>.json`, scored by
84
+ `scripts/score-detector-labels.ts`). Each row names the repository, the
85
+ sample, and the result after that day's fixes; the truth rules are in the
86
+ label files' notes.
87
+
88
+ | Detector | Repository | Sample | Precision / recall of labeled rows | Notes |
89
+ | ----------------------------------------------------- | ----------------- | -------------------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
90
+ | `dead` | Launchpoint | 20 of 65 dead-code rows | 0.95 / 1.0, then 1.0 after the config-referenced entry surface | word search outside the defining file as the truth rule |
91
+ | `similar` | Launchpoint | 20 pairs | 1.0 / 0.43 | four true pairs sit at signal tier by the earlier scaffolding calibration |
92
+ | `stale-abstractions` | Launchpoint | 5 direct, 10 signal | 1.0 / 1.0 | signal rows are counted findings (`countedTiers`) |
93
+ | `complexity-hotspots` | Launchpoint | 20 of the 192 extreme rows | 1.0 / 1.0 | text recount of branch tokens agrees |
94
+ | `react-large-component-pressure` | Launchpoint | 20 components | 1.0 / 1.0 | two static templates labeled uncertain |
95
+ | `co-change` | Launchpoint | 20 non-doc pairs | 0.53 before the signal tier | sweep-only, stale, and configuration pairs are signal tier and not counted |
96
+ | `extract-candidates` | Launchpoint, Vega | 20 each | 1.0 / 1.0; 0.875 / 0.54 | Vega misses are wide-interface support rows; element-boundary snapping added |
97
+ | `wrapper-candidates` | Launchpoint, Vega | 20 each | direct tier 0 false; 1.0 / 1.0 | forwarding shape, owner-qualified boundary names, module-private state |
98
+ | `passthrough-candidates` | Launchpoint, Vega | 20 each | 1.0 / 1.0; 1.0 / 1.0 | shared vocabulary, composed-service facades, curried handlers |
99
+ | `twin-drift` | Launchpoint, Vega | 20 groups each | 0.77 / 1.0; 0.83 / 0.71 | layering, stubs, overrides, key-qualified lookups, near-name suffix words |
100
+ | `react-component-duplicates`, `react-hook-candidates` | Launchpoint | full-list review (morning) | see the calibration document | policy exclusions for generic mechanics, hook/component pairs, vendored primitives |
101
+
45
102
  ## Certification Matrix
46
103
 
47
104
  Legend: `certified`, `qualified`, `experimental`, `insufficient`, `unsupported`,
@@ -97,8 +154,8 @@ state. A checked box does not upgrade an `insufficient` state to `certified`.
97
154
 
98
155
  - [x] `unused-imports` — certified
99
156
  - [x] `unused-params` — insufficient population evidence
100
- - [x] `cycles` — insufficient population evidence
101
- - [x] `duplicate-bodies` — certified
157
+ - [x] `cycles` — insufficient population evidence (2026-09-02: consistent across generations; the Launchpoint change was the repository removing its cycles)
158
+ - [x] `duplicate-bodies` — certified (2026-09-02: constructors, test bodies, route verb exports, and UI-kit bodies removed before grouping)
102
159
  - [x] `complexity` — certified
103
160
  - [x] `isolated` — insufficient population evidence
104
161
  - [x] `redundant-reexports` — certified
@@ -151,8 +208,8 @@ certificate:
151
208
  - [x] `similar-files` — certified relationship
152
209
  - [x] `similar-chains` — qualified within a bounded candidate frame
153
210
  - [x] `similar-signatures` — certified relationship
154
- - [x] `twin-drift` — qualified; 37/40 valid
155
- - [x] `react-component-duplicates` — certified relationship
211
+ - [x] `twin-drift` — qualified; 37/40 valid (2026-09-02: route-convention and CRUD/lifecycle member names excluded; no reviewed precision sample yet)
212
+ - [x] `react-component-duplicates` — certified relationship (2026-09-02: test-file, UI-kit, route-scaffolding, and hook-versus-component policies; Launchpoint label set precision 1.0 / recall 1.0)
156
213
  - [x] `vue-component-duplicates` — certified relationship
157
214
  - [x] `convergence` alias parity with `similar --plan`
158
215
  - [x] `twin-ab` — certified generated-scaffold correctness for importable named
@@ -164,18 +221,18 @@ consolidation would improve the code.
164
221
 
165
222
  ## Architecture and Refactoring Signals
166
223
 
167
- - [x] `wrapper-candidates` — certified production single-caller relationship
168
- - [x] `passthrough-candidates` — certified literal-forwarding relationship
224
+ - [x] `wrapper-candidates` — certified production single-caller relationship (2026-09-02: constructors excluded, body shape distinguishes forwarders from helpers; no reviewed precision sample yet)
225
+ - [x] `passthrough-candidates` — certified literal-forwarding relationship (2026-09-02: facade files (three or more forwards to one collaborator) become boundary signals; no reviewed precision sample yet)
169
226
  - [x] `stale-abstractions` — certified relationship
170
- - [x] `extract-candidates` — certified measurement; extraction remains contextual
227
+ - [x] `extract-candidates` — certified measurement; extraction remains contextual. Rebuilt 2026-09-02 around exclusive line regions with compiler-known locals; the Python row above predates the rebuild, and the current reviewed sample is `docs/validation/labels/launchpoint-backend/extract-candidates.json`
171
228
  - [x] `locality-candidates` — certified relationship; movement remains contextual
172
229
  - [x] `drift` — qualified; subtype breadth incomplete
173
- - [x] `co-change` — certified relationship
230
+ - [x] `co-change` — certified relationship (2026-09-02: doc-code and generated-artifact partners weight zero)
174
231
  - [x] `doc-drift` — certified relationship
175
232
  - [x] `coupling` — certified graph fact
176
233
  - [x] `bottlenecks` — certified disclosed graph fact; utility remains contextual
177
234
  - [x] `deep-chains` — certified condensed-component path
178
- - [x] `complexity-hotspots` — certified measurement
235
+ - [x] `complexity-hotspots` — certified measurement (2026-09-02: rendered children count as fan-out; extreme requires ten branches; pressure threshold scales with file count)
179
236
  - [x] `hotspots` — certified graph fact
180
237
  - [x] `fan-in` — certified exact-symbol graph fact
181
238
  - [x] `fan-out` — certified graph fact
@@ -185,9 +242,9 @@ action. A real relationship can still be an unhelpful recommendation.
185
242
 
186
243
  ## React and Vue Signals
187
244
 
188
- - [x] `react-component-duplicates` — 48/48, certified relationship
189
- - [x] `react-hook-candidates` — 48/48, certified relationship
190
- - [x] `react-large-component-pressure` — 48/48, certified measurement
245
+ - [x] `react-component-duplicates` — 48/48, certified relationship (2026-09-02: test-file, UI-kit, route-scaffolding, and hook-versus-component policies; Launchpoint label set precision 1.0 / recall 1.0)
246
+ - [x] `react-hook-candidates` — 48/48, certified relationship (2026-09-02: generic-mechanics and shared-hook policies; Launchpoint label set precision 1.0 / recall 1.0)
247
+ - [x] `react-large-component-pressure` — 48/48, certified measurement (2026-09-02: UI-kit directories excluded; token axes gated by size)
191
248
  - [x] `vue-component-duplicates` — 41/41, certified relationship
192
249
  - [x] `vue-composable-candidates` — 48/48, certified relationship
193
250
  - [x] `vue-large-view-pressure` — 64/64, certified measurement
@@ -218,7 +275,7 @@ was not independently actionable without local design context.
218
275
  - [x] `new-dead` — qualified candidate with unconfirmed tier
219
276
  - [x] `baseline` — qualified exact set difference
220
277
  - [x] `health` — experimental composite; private shadow only
221
- - [x] `self-audit` — qualified; partial oracles withhold precision
278
+ - [x] `self-audit` — qualified; partial oracles withhold precision (2026-09-02: renders question, per-symbol complete oracle, callee precision measured (Vega 1.0 / Launchpoint 0.988))
222
279
  - [x] `effectiveness` — qualified ledger-transition facts
223
280
  - [x] `affected` — qualified indexed closure
224
281
  - [x] `change-surface` — qualified indexed consumer counts
@@ -31,8 +31,8 @@ These commands report direct findings or bounded maintenance leads:
31
31
  `similar-chains`, `duplicate-bodies`, `recent-duplicates`, `twin-drift`;
32
32
  - unnecessary indirection: `wrapper-candidates`, `passthrough-candidates`,
33
33
  `decorative-checkers`, `not-implemented`;
34
- - extraction and locality: `extract-candidates`, `locality-candidates`,
35
- `complexity-hotspots`;
34
+ - extraction and locality: `extract-candidates`, `slice-cohesion`,
35
+ `locality-candidates`, `complexity-hotspots`;
36
36
  - migration and documentation: `incomplete-migration`, `doc-drift`,
37
37
  `redundant-reexports`;
38
38
  - history and coordination: `co-change`, `change-surface`.