scip-query 0.14.0 → 0.16.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 (321) hide show
  1. package/CHANGELOG.md +14 -2
  2. package/README.md +158 -62
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/chunk-2EU6WVR3.js +3 -0
  5. package/dist/chunk-2HFXPIBT.js +2 -0
  6. package/dist/chunk-2LGPMYS2.js +35 -0
  7. package/dist/chunk-2Y7YX54K.js +16 -0
  8. package/dist/chunk-363TZ64I.js +2 -0
  9. package/dist/chunk-3I34FZ6R.js +2 -0
  10. package/dist/chunk-3LAKH6BV.js +2 -0
  11. package/dist/chunk-3M2UCPFS.js +3 -0
  12. package/dist/chunk-3OPIMH42.js +2 -0
  13. package/dist/{chunk-QZOAOLLZ.js → chunk-3YAZH3JU.js} +2 -2
  14. package/dist/chunk-5P26M63Y.js +2 -0
  15. package/dist/{chunk-72FR7KEZ.js → chunk-5TVNLPUM.js} +14 -12
  16. package/dist/chunk-5UKDCXVC.js +5 -0
  17. package/dist/{chunk-R7U2I55B.js → chunk-5XDNFOAH.js} +2 -2
  18. package/dist/chunk-62Y3PC27.js +4 -0
  19. package/dist/chunk-6DNE65QS.js +40 -0
  20. package/dist/{chunk-N2OTJWC2.js → chunk-6EVORGCB.js} +2 -2
  21. package/dist/chunk-6GZ7LM7S.js +2 -0
  22. package/dist/chunk-753JWTUH.js +3 -0
  23. package/dist/chunk-7II7NFRV.js +4 -0
  24. package/dist/{chunk-M7EEHYSU.js → chunk-7RAS466A.js} +2 -2
  25. package/dist/chunk-A46JTKTM.js +5 -0
  26. package/dist/{chunk-2XRXEIRK.js → chunk-AAMZRDJT.js} +2 -2
  27. package/dist/chunk-AMPN2VMF.js +3 -0
  28. package/dist/{chunk-6XA4LDHY.js → chunk-B3X6KU75.js} +2 -2
  29. package/dist/chunk-BFWVHD2P.js +16 -0
  30. package/dist/chunk-BVHP2B4D.js +61 -0
  31. package/dist/{chunk-BUNDZ6K2.js → chunk-BVUA3GZC.js} +2 -2
  32. package/dist/{chunk-EDSD3VJK.js → chunk-CKIAEVGM.js} +2 -2
  33. package/dist/chunk-CM4EZLW4.js +2 -0
  34. package/dist/chunk-CS3FXTUC.js +2 -0
  35. package/dist/chunk-CVBS2FD4.js +2 -0
  36. package/dist/chunk-D5OXYOJP.js +7 -0
  37. package/dist/chunk-DA34GNNO.js +29 -0
  38. package/dist/chunk-DKK2H4D7.js +7 -0
  39. package/dist/chunk-EBSSCVR4.js +5 -0
  40. package/dist/{chunk-OXTM2RX3.js → chunk-EVCSXWER.js} +2 -2
  41. package/dist/chunk-FFIYGYQR.js +67 -0
  42. package/dist/chunk-G4KQ7S74.js +20 -0
  43. package/dist/{chunk-44P4SJFN.js → chunk-GWWYLYD3.js} +2 -2
  44. package/dist/chunk-HGUNWXJX.js +2 -0
  45. package/dist/chunk-HLRWOFXC.js +9 -0
  46. package/dist/{chunk-YQKECTPV.js → chunk-IRIM3SUR.js} +2 -2
  47. package/dist/chunk-JHK2DMUQ.js +4 -0
  48. package/dist/chunk-JQ2PCFZW.js +3 -0
  49. package/dist/chunk-JRFCWCOD.js +16 -0
  50. package/dist/chunk-JXAJDINF.js +2 -0
  51. package/dist/chunk-K32ZOW3P.js +2 -0
  52. package/dist/{chunk-3H5OSDF7.js → chunk-KI4WPR7Q.js} +2 -2
  53. package/dist/{chunk-43GKP6LI.js → chunk-KP2DJY7D.js} +2 -2
  54. package/dist/{chunk-YTVKPJXW.js → chunk-L27UIF3E.js} +2 -2
  55. package/dist/chunk-LT6AHYVY.js +18 -0
  56. package/dist/chunk-MCNWCJYL.js +11 -0
  57. package/dist/{chunk-K6UI6EBZ.js → chunk-MZB3DTHW.js} +2 -2
  58. package/dist/chunk-NLRWGGPY.js +8 -0
  59. package/dist/chunk-NLVKD45E.js +13 -0
  60. package/dist/chunk-OO6S4ECV.js +112 -0
  61. package/dist/{chunk-QYOPMTZ6.js → chunk-OYGKBDAD.js} +2 -2
  62. package/dist/chunk-P5QZILZ4.js +2 -0
  63. package/dist/chunk-P5XHIJHI.js +2 -0
  64. package/dist/chunk-PCCMMI2M.js +3 -0
  65. package/dist/{chunk-2TPCIPYA.js → chunk-Q65QYKU7.js} +2 -2
  66. package/dist/{chunk-K7SPOJHZ.js → chunk-QB7NRST4.js} +2 -2
  67. package/dist/{chunk-7JZRFDCU.js → chunk-QSNG3NHQ.js} +2 -2
  68. package/dist/chunk-QVZSWLLZ.js +2 -0
  69. package/dist/chunk-RLB7FZKR.js +10 -0
  70. package/dist/{chunk-KYB7FPXT.js → chunk-RPMT6MTX.js} +2 -2
  71. package/dist/chunk-RQWNF2RM.js +2 -0
  72. package/dist/chunk-RYFIRFYJ.js +4 -0
  73. package/dist/{chunk-QARYU7R3.js → chunk-S2FZILCF.js} +2 -2
  74. package/dist/{chunk-HV27H2V2.js → chunk-S3IXCXW2.js} +2 -2
  75. package/dist/{chunk-TYCZ7S4I.js → chunk-S5MTSES5.js} +2 -2
  76. package/dist/chunk-S5RZQA6V.js +2 -0
  77. package/dist/{chunk-PEHDARNC.js → chunk-SEEJPIWG.js} +2 -2
  78. package/dist/chunk-SOCS3467.js +2 -0
  79. package/dist/chunk-U6BJVXWQ.js +2 -0
  80. package/dist/chunk-UO4IADXJ.js +38 -0
  81. package/dist/{chunk-ZEO4CXQR.js → chunk-VLSI5MYU.js} +2 -2
  82. package/dist/chunk-VSQRU3AP.js +2 -0
  83. package/dist/chunk-VYQY75NA.js +2 -0
  84. package/dist/{chunk-NOKUZU56.js → chunk-VZCR3VQY.js} +2 -2
  85. package/dist/chunk-W3ZVRLCH.js +2 -0
  86. package/dist/chunk-WA64GKWB.js +20 -0
  87. package/dist/chunk-WFRZGMWJ.js +71 -0
  88. package/dist/chunk-WN6XEYVX.js +2 -0
  89. package/dist/chunk-XAEU4ROB.js +101 -0
  90. package/dist/chunk-XBPAJASV.js +2 -0
  91. package/dist/{chunk-GY3HAWUA.js → chunk-XC6PUFNN.js} +2 -2
  92. package/dist/chunk-Y42DMR6F.js +6 -0
  93. package/dist/chunk-YCVYOV4A.js +7 -0
  94. package/dist/{chunk-WPZPB42I.js → chunk-YD37KSEK.js} +2 -2
  95. package/dist/{chunk-V5W7H7V4.js → chunk-YFEJIYWH.js} +2 -2
  96. package/dist/chunk-YSUD2S7T.js +3 -0
  97. package/dist/{chunk-KJCDEDQW.js → chunk-ZEKBAMCN.js} +2 -2
  98. package/dist/chunk-ZHGUZKJL.js +2 -0
  99. package/dist/cli.js +587 -305
  100. package/dist/{config-types-BrHl3Bge.d.ts → config-types-SVkUIufk.d.ts} +10 -2
  101. package/dist/{db-_Bdx0E1W.d.ts → db-CS0TuVH6.d.ts} +1 -1
  102. package/dist/{git-history-Dao3_Pu9.d.ts → git-history-ChNHbfZQ.d.ts} +2 -1
  103. package/dist/{health-BEZ1Rt0S.d.ts → health-Btal3mQi.d.ts} +4 -4
  104. package/dist/index.d.ts +7 -5
  105. package/dist/index.js +1 -19
  106. package/dist/queries/affected.d.ts +2 -2
  107. package/dist/queries/affected.js +1 -1
  108. package/dist/queries/bottlenecks.d.ts +8 -2
  109. package/dist/queries/bottlenecks.js +1 -1
  110. package/dist/queries/by-kind.d.ts +2 -2
  111. package/dist/queries/by-kind.js +1 -1
  112. package/dist/queries/call-graph.d.ts +2 -2
  113. package/dist/queries/call-graph.js +1 -1
  114. package/dist/queries/change-surface.d.ts +2 -2
  115. package/dist/queries/change-surface.js +1 -1
  116. package/dist/queries/cleanup-plan.d.ts +2 -2
  117. package/dist/queries/cleanup-plan.js +1 -1
  118. package/dist/queries/co-change.d.ts +4 -3
  119. package/dist/queries/co-change.js +1 -1
  120. package/dist/queries/code.d.ts +2 -2
  121. package/dist/queries/code.js +1 -1
  122. package/dist/queries/complexity-hotspots.d.ts +3 -3
  123. package/dist/queries/complexity-hotspots.js +1 -1
  124. package/dist/queries/complexity.d.ts +5 -4
  125. package/dist/queries/complexity.js +1 -1
  126. package/dist/queries/convergence.d.ts +2 -2
  127. package/dist/queries/convergence.js +1 -1
  128. package/dist/queries/coupling.d.ts +2 -2
  129. package/dist/queries/coupling.js +1 -1
  130. package/dist/queries/cycles.d.ts +2 -2
  131. package/dist/queries/cycles.js +1 -1
  132. package/dist/queries/dataflow.d.ts +2 -2
  133. package/dist/queries/dataflow.js +1 -1
  134. package/dist/queries/dead.d.ts +12 -3
  135. package/dist/queries/dead.js +1 -1
  136. package/dist/queries/decorative-checkers.d.ts +2 -2
  137. package/dist/queries/decorative-checkers.js +1 -1
  138. package/dist/queries/deep-chains.d.ts +8 -3
  139. package/dist/queries/deep-chains.js +1 -1
  140. package/dist/queries/deps.d.ts +2 -2
  141. package/dist/queries/deps.js +1 -1
  142. package/dist/queries/diff-gate.d.ts +5 -4
  143. package/dist/queries/diff-gate.js +1 -1
  144. package/dist/queries/diff-impact.d.ts +3 -3
  145. package/dist/queries/diff-impact.js +1 -1
  146. package/dist/queries/doc-drift.d.ts +4 -2
  147. package/dist/queries/doc-drift.js +1 -1
  148. package/dist/queries/drift.d.ts +2 -2
  149. package/dist/queries/drift.js +1 -1
  150. package/dist/queries/duplicate-bodies.d.ts +3 -3
  151. package/dist/queries/duplicate-bodies.js +1 -1
  152. package/dist/queries/extract-candidates.d.ts +2 -2
  153. package/dist/queries/extract-candidates.js +1 -1
  154. package/dist/queries/fan.d.ts +11 -5
  155. package/dist/queries/fan.js +1 -1
  156. package/dist/queries/files.d.ts +2 -2
  157. package/dist/queries/health.d.ts +3 -3
  158. package/dist/queries/health.js +1 -1
  159. package/dist/queries/hierarchy.d.ts +2 -2
  160. package/dist/queries/hierarchy.js +1 -1
  161. package/dist/queries/hotspots.d.ts +2 -2
  162. package/dist/queries/hotspots.js +1 -1
  163. package/dist/queries/imports.d.ts +2 -2
  164. package/dist/queries/imports.js +1 -1
  165. package/dist/queries/incomplete-migration.d.ts +3 -3
  166. package/dist/queries/incomplete-migration.js +1 -1
  167. package/dist/queries/index.d.ts +5 -5
  168. package/dist/queries/index.js +1 -1
  169. package/dist/queries/isolated.d.ts +2 -2
  170. package/dist/queries/isolated.js +1 -1
  171. package/dist/queries/locality-candidates.d.ts +2 -2
  172. package/dist/queries/locality-candidates.js +1 -1
  173. package/dist/queries/members.d.ts +2 -2
  174. package/dist/queries/members.js +1 -1
  175. package/dist/queries/methods.d.ts +2 -2
  176. package/dist/queries/methods.js +1 -1
  177. package/dist/queries/not-implemented.d.ts +2 -2
  178. package/dist/queries/not-implemented.js +1 -1
  179. package/dist/queries/outline.d.ts +2 -2
  180. package/dist/queries/outline.js +1 -1
  181. package/dist/queries/passthrough-candidates.d.ts +3 -3
  182. package/dist/queries/passthrough-candidates.js +1 -1
  183. package/dist/queries/plan-context.d.ts +4 -4
  184. package/dist/queries/plan-context.js +1 -1
  185. package/dist/queries/react-component-duplicates.d.ts +4 -2
  186. package/dist/queries/react-component-duplicates.js +1 -1
  187. package/dist/queries/react-hook-candidates.d.ts +4 -2
  188. package/dist/queries/react-hook-candidates.js +1 -1
  189. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  190. package/dist/queries/react-large-component-pressure.js +1 -1
  191. package/dist/queries/recent-duplicates.d.ts +4 -2
  192. package/dist/queries/recent-duplicates.js +1 -1
  193. package/dist/queries/redundant-reexports.d.ts +2 -2
  194. package/dist/queries/redundant-reexports.js +1 -1
  195. package/dist/queries/refs.d.ts +2 -2
  196. package/dist/queries/refs.js +1 -1
  197. package/dist/queries/self-audit.d.ts +2 -2
  198. package/dist/queries/self-audit.js +1 -1
  199. package/dist/queries/similar-chains.d.ts +2 -2
  200. package/dist/queries/similar-chains.js +1 -1
  201. package/dist/queries/similar-files.d.ts +2 -2
  202. package/dist/queries/similar-files.js +1 -1
  203. package/dist/queries/similar-signatures.d.ts +2 -2
  204. package/dist/queries/similar-signatures.js +1 -1
  205. package/dist/queries/similar.d.ts +2 -2
  206. package/dist/queries/similar.js +1 -1
  207. package/dist/queries/slice.d.ts +2 -2
  208. package/dist/queries/slice.js +1 -1
  209. package/dist/queries/stale-abstractions.d.ts +2 -2
  210. package/dist/queries/stale-abstractions.js +1 -1
  211. package/dist/queries/stats.d.ts +2 -2
  212. package/dist/queries/surface.d.ts +2 -2
  213. package/dist/queries/surface.js +1 -1
  214. package/dist/queries/symbols.d.ts +2 -2
  215. package/dist/queries/symbols.js +1 -1
  216. package/dist/queries/system.d.ts +2 -2
  217. package/dist/queries/system.js +1 -1
  218. package/dist/queries/test-quality.d.ts +2 -2
  219. package/dist/queries/test-quality.js +1 -1
  220. package/dist/queries/trace.d.ts +2 -2
  221. package/dist/queries/trace.js +1 -1
  222. package/dist/queries/twin-ab.d.ts +2 -2
  223. package/dist/queries/twin-ab.js +1 -1
  224. package/dist/queries/twin-drift.d.ts +2 -2
  225. package/dist/queries/twin-drift.js +1 -1
  226. package/dist/queries/unused-imports.d.ts +2 -2
  227. package/dist/queries/unused-imports.js +1 -1
  228. package/dist/queries/unused-params.d.ts +2 -2
  229. package/dist/queries/unused-params.js +1 -1
  230. package/dist/queries/vue-component-duplicates.d.ts +4 -2
  231. package/dist/queries/vue-component-duplicates.js +1 -1
  232. package/dist/queries/vue-composable-candidates.d.ts +4 -2
  233. package/dist/queries/vue-composable-candidates.js +1 -1
  234. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  235. package/dist/queries/vue-large-view-pressure.js +1 -1
  236. package/dist/queries/wrapper-candidates.d.ts +2 -2
  237. package/dist/queries/wrapper-candidates.js +1 -1
  238. package/dist/reindex-worker.js +256 -12
  239. package/dist/reindex.d.ts +29 -3
  240. package/dist/reindex.js +251 -22
  241. package/dist/runtime.d.ts +8 -4
  242. package/dist/runtime.js +2 -2
  243. package/dist/rust-semantic-session-server.js +2 -0
  244. package/dist/rust-semantic-session-worker.js +2 -0
  245. package/dist/rust-semantic-worker.js +2 -0
  246. package/dist/{scip-cli-C7cg4ZHR.d.ts → scip-cli-BKL-26TZ.d.ts} +2 -2
  247. package/dist/{symbol-types-DaoeXKUt.d.ts → symbol-types-BgWU6lhL.d.ts} +2 -0
  248. package/dist/watch-server.js +42 -0
  249. package/docs/AGENT_GUIDE.md +110 -34
  250. package/docs/AI_FAILURE_MODES.md +8 -3
  251. package/docs/COMMAND_REFERENCE.md +11 -6
  252. package/docs/REGEX_POLICY.md +3 -1
  253. package/docs/accuracy-audit-checklist.md +300 -0
  254. package/docs/accuracy-hardening-goal.md +493 -54
  255. package/docs/analyzer-inventory.md +31 -23
  256. package/docs/analyzer-validation-ledger.md +51 -21
  257. package/package.json +2 -1
  258. package/scripts/build-scip-windows.mjs +7 -7
  259. package/skills/_shared/SKILL.md +21 -18
  260. package/skills/scip-calibrate/SKILL.md +9 -3
  261. package/skills/scip-hyper-optimization/SKILL.md +5 -1
  262. package/skills/scip-query/SKILL.md +1 -1
  263. package/skills/scip-setup/SKILL.md +104 -4
  264. package/skills/scip-verify/SKILL.md +24 -13
  265. package/dist/chunk-27HMTUJE.js +0 -3
  266. package/dist/chunk-27XEGMCT.js +0 -7
  267. package/dist/chunk-3AMWF6V5.js +0 -3
  268. package/dist/chunk-5AAAEZ2Z.js +0 -2
  269. package/dist/chunk-5JRMZMLM.js +0 -2
  270. package/dist/chunk-5VY3RIEI.js +0 -38
  271. package/dist/chunk-6JUAGXR4.js +0 -4
  272. package/dist/chunk-6KDOYKCB.js +0 -40
  273. package/dist/chunk-6KMTPNZL.js +0 -3
  274. package/dist/chunk-7COVQPQQ.js +0 -9
  275. package/dist/chunk-7S5E7KWT.js +0 -2
  276. package/dist/chunk-7TVFPOD7.js +0 -102
  277. package/dist/chunk-A6KSEIRN.js +0 -61
  278. package/dist/chunk-AAMURYOK.js +0 -4
  279. package/dist/chunk-BP7S6V3M.js +0 -20
  280. package/dist/chunk-BRBF3E5X.js +0 -35
  281. package/dist/chunk-BZXE3HO4.js +0 -6
  282. package/dist/chunk-CXQQOXSI.js +0 -10
  283. package/dist/chunk-EVZSAR3S.js +0 -2
  284. package/dist/chunk-GMOEX7EV.js +0 -2
  285. package/dist/chunk-GNG622H3.js +0 -3
  286. package/dist/chunk-GUDKRIGW.js +0 -7
  287. package/dist/chunk-GULVO6NF.js +0 -43
  288. package/dist/chunk-HZZQKNVE.js +0 -2
  289. package/dist/chunk-I4R3SNMR.js +0 -2
  290. package/dist/chunk-IMQFJ53K.js +0 -2
  291. package/dist/chunk-ISLWJ4PY.js +0 -10
  292. package/dist/chunk-IUSSGHJO.js +0 -2
  293. package/dist/chunk-J5WVNZ6O.js +0 -2
  294. package/dist/chunk-JJUX2OAP.js +0 -2
  295. package/dist/chunk-JZBGTSAB.js +0 -13
  296. package/dist/chunk-K5N5RNGM.js +0 -2
  297. package/dist/chunk-KSJ544IV.js +0 -5
  298. package/dist/chunk-LY7NMOBW.js +0 -2
  299. package/dist/chunk-N23FT4EZ.js +0 -2
  300. package/dist/chunk-NCVFKOLB.js +0 -2
  301. package/dist/chunk-PESEPWZO.js +0 -2
  302. package/dist/chunk-PMY4UFGV.js +0 -2
  303. package/dist/chunk-Q7PWDXL5.js +0 -5
  304. package/dist/chunk-QVGFVRKD.js +0 -2
  305. package/dist/chunk-R5336VHZ.js +0 -2
  306. package/dist/chunk-RLB6SG25.js +0 -2
  307. package/dist/chunk-SFDVBARK.js +0 -2
  308. package/dist/chunk-TG7QSYCJ.js +0 -2
  309. package/dist/chunk-U3VMUDXJ.js +0 -2
  310. package/dist/chunk-UHPWZCYQ.js +0 -3
  311. package/dist/chunk-URSSPS5H.js +0 -2
  312. package/dist/chunk-WIBFXSYB.js +0 -6
  313. package/dist/chunk-WMO2VZZK.js +0 -3
  314. package/dist/chunk-WS3Z6W3M.js +0 -65
  315. package/dist/chunk-X3DTIEMU.js +0 -18
  316. package/dist/chunk-X5C43YVI.js +0 -2
  317. package/dist/chunk-X7CHWTZ2.js +0 -72
  318. package/dist/chunk-XC2PJOVM.js +0 -3
  319. package/dist/chunk-XDESMVOL.js +0 -4
  320. package/dist/chunk-XZBLZHXL.js +0 -16
  321. package/dist/chunk-ZMGBWSFZ.js +0 -2
@@ -20,7 +20,7 @@ The action tiers are:
20
20
 
21
21
  ## Current Surfaces
22
22
 
23
- The published query surface and private query-helper manifest live in `src/queries/public-query-entries.ts`. The CLI command order and families live in `src/runtime/commands/query-command-specs.ts`. The composite health score runs the phases listed in `HEALTH_PHASES` in `src/queries/health/health.ts`. The diff gate runs the default diff-scoped checks listed in `DIFF_GATE_CHECKS` in `src/queries/impact/diff-gate.ts`; the baseline policy helper remains private to the query tree and runs only for the explicit full health-baseline ratchet. The `tla` command is also ordered in that command registry as an on-demand formal-model verifier, not as a health-scored analyzer.
23
+ The published query surface and private query-helper manifest live in `src/queries/public-query-entries.ts`. The CLI command order and families live in `src/runtime/commands/query-command-specs.ts`. The composite health score runs the phases listed in `HEALTH_PHASES` in `src/queries/health/health.ts`; that health path also carries the full-vs-bounded semantic enrichment budget used by semantic-capable detectors. The diff gate runs the default diff-scoped checks listed in `DIFF_GATE_CHECKS` in `src/queries/impact/diff-gate.ts`; the baseline policy helper remains private to the query tree and runs only for the explicit full health-baseline ratchet. The `tla` command is also ordered in that command registry as an on-demand formal-model verifier, not as a health-scored analyzer.
24
24
 
25
25
  An earlier `health --json` run on this repository reported:
26
26
 
@@ -34,28 +34,28 @@ The declared-coupling config has been refreshed after the inventory surfaced old
34
34
 
35
35
  ## Health-Scored Analyzers
36
36
 
37
- | Analyzer | Evidence examined | Current health role | Recommended action tier | Evaluation |
38
- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------: | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
39
- | `dead` | Production definitions, SCIP/source/caller references, package roots, framework-discovered route/page roots, and entry exclusions | Risk, graph findings | Direct repair for `dead-code`; contextual for `file-internal` | Strong when `kind === dead-code`: zero references and excluded external-live surfaces make deletion likely. `file-internal` is not direct deletion evidence; it may be private helper ownership. |
40
- | `cleanup-plan` | `dead --only-dead` seed plus conservative cascade references | Standalone, not direct health phase | Direct repair | Strongest deletion analyzer. It computes ordered batches and can be compiler-verified from the command layer. |
41
- | `isolated` | Production callables with no callers and no non-self callees | Risk, graph findings | Direct repair | Strong dead-leaf signal. It is stricter than `dead` and usually means remove or wire up. |
42
- | `cycles` | File dependency graph, with module-hierarchy/test/barrel/entry cycle classification | Risk | Direct repair for `real`; support/noise for `module-hierarchy` | Good split already exists. Real cycles normally need architectural repair. Module-hierarchy cycles should not score. |
43
- | `similar` / `similarAll` | Callable callee fingerprints, IDF weighting, source-token fallback | Hygiene | Contextual signal | Similarity is a reuse lead, not proof of duplicate semantics. Needs naming, behavior, signatures, and product intent before action. Shared evidence is now labeled as domain, access/query, framework/generic, mixed, or neutral structural overlap. |
44
- | `recent-duplicates` | `similarAll`, React/Vue duplicate analyzers, git file-age orientation | Standalone cleanup | Direct repair for `echo`; contextual for `twin` | Directionality makes this much stronger than plain similarity. A recent echo usually should reuse/delete. Twins still need choice of owner. |
45
- | `react-component-duplicates` | JSX structure tokens from React profiles | Hygiene | Contextual signal | Good UI reuse lead. Needs product semantics and design-system judgment before extracting. |
46
- | `react-hook-candidates` | Shared React hook/state/effect/request/handler tokens, evidence class, action tier, and recommendation | Hygiene, with `scoreCount` discount | Contextual signal for domain or mixed behavior; support for generic workflow/shared abstraction rows | Better than raw similarity because behavior tokens are named. The output now separates generic UI workflow and existing shared abstractions from domain behavior, but extraction still needs product judgment. |
47
- | `react-large-component-pressure` | Component LOC, file LOC, JSX token count, behavior token count, pressure kind, context, recommendation kind | Hygiene | Direct repair pressure with review direction | Large component pressure usually implies splitting. It now distinguishes JSX, behavior, file, and route/page pressure, but still does not choose the destination directory for extracted code. |
48
- | `vue-component-duplicates` | Vue template structure tokens | Hygiene | Contextual signal | Same reuse caveat as React component duplicates. |
49
- | `vue-composable-candidates` | Vue composable/store/reactivity/lifecycle/request/function/template tokens, evidence class, action tier, and recommendation | Hygiene, with `scoreCount` discount | Contextual signal for domain or mixed behavior; support for generic workflow/shared abstraction rows | Good extraction lead when domain behavior is present. Generic workflow scaffolding remains visible as support, and extraction still needs domain and locality judgment. |
50
- | `vue-large-view-pressure` | SFC total/template/script/style/external-script line counts, pressure kind, context, recommendation kind | Hygiene | Direct repair pressure with review direction | Usually implies splitting a large view. It now distinguishes template, script, style, external-script, and route/page pressure, but still needs companion directory-locality guidance. |
51
- | `extract-candidates` | Large callable callee clusters, co-occurrence isolation, extraction kind, action tier, and recommendation | Hygiene | Contextual signal | It finds possible extraction seams, not proof of a new abstraction. The output now distinguishes workflow orchestration from broad/cohesive helper clusters and keeps every row as signal. |
52
- | `wrapper-candidates` | Small production callables with one real external caller, caller fan-in, and boundary-token evidence | Hygiene | Contextual signal, sometimes direct | Single-caller wrappers can be needless indirection, but may also be names, domain/lifecycle boundaries, test seams, or API shaping. Boundary evidence discounts those without hiding them. |
53
- | `passthrough-candidates` | Small production callables with exactly one callee, literal pass-through body, runtime-boundary evidence, public-facade evidence, action tier, recommendation, and score count | Hygiene, with `scoreCount` discount | Direct when no boundary or public-facade evidence is present; contextual signal when either exists | Body-shape gate is real. Boundary evidence distinguishes adapter, provider, public, capability, transport, lifecycle, access-policy, and facade-shaped forwarders; public-facade evidence separately identifies package-public or rooted exported passthroughs. |
54
- | `stale-abstractions` | Type-like definitions, real consumers, barrel consumers, transitive reachability, definer usage, confidence, staleness kind, action tier, and recommendation | Hygiene | Direct for unused abstractions; contextual signal for one-consumer ownership rows | `0 consumers` is direct repair. `1 consumer` is contextual, including high-confidence misplaced types, because the repair may be move, inline, keep, or document as public contract. |
55
- | `drift` | File dep graph, symbol ref graph, semantic/source import usage, explicit or inferred layer policy, sibling patterns, action tier, policy basis, recommendation | Hygiene | Split by kind | `unused-import` is direct repair. Explicit `layer-violation` is direct; inferred layer policy and `pattern-deviation` rows are contextual signal. Pattern deviations remain excluded from health scoring. |
56
- | `complexity-hotspots` | Production callable LOC, fan-in, fan-out, callee count | Risk | Direct repair pressure | Complexity pressure usually means refactor, but the current score is structural, not cyclomatic. It should be separate from branch-count complexity. |
57
- | `co-change` / hidden coupling | Git co-change pairs, dependency edges, declared couplings, file noise filters, partner-class labels, declared-coupling suggestions, commit scope, recency context, commit-subject context, and score-weighted count | Risk, weighted by history strength | Contextual signal | Strong evidence that coordination may be missing, but not proof that extraction or unification is correct. Partner classes, history context, subject context, and score weighting now separate contract-like focused current pairs from broad, stale, or unlabeled history before suggesting declared coupling. |
58
- | Suppression inventory | `scip-query: ignore-*` comments in source, plus structured `.scipquery.json` suppressions | Evidence quality axis | Meta signal | Useful precision feedback. High suppressions should reduce trust or weight for that detector family. Structured file-scoped suppressions now validate path freshness. |
37
+ | Analyzer | Evidence examined | Current health role | Recommended action tier | Evaluation |
38
+ | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------: | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
39
+ | `dead` | Production definitions, SCIP/source/caller references including tests, transitive declared package/Cargo library surfaces, framework entry files, interface/protocol contracts, implicit runtime reachability, and configured roots | Risk, graph findings | Direct repair for certified TypeScript `dead-code`; contextual for `file-internal` and Rust `implicit-usage` | TypeScript `dead-code` is certified under the repository-dead truth rule. Rust public library items are rooted and implicit runtime reachability is a non-scoring signal, but Rust `dead-code` remains insufficiently evidenced after a three-repository replay. Checker verification is still required before deletion. |
40
+ | `cleanup-plan` | `dead --only-dead` seed plus conservative cascade references | Standalone, not direct health phase | Direct repair | Strongest deletion analyzer. It computes ordered batches and can be compiler-verified from the command layer. |
41
+ | `isolated` | Production callables with no callers and no non-self callees | Risk, graph findings | Direct repair | Strong dead-leaf signal. It is stricter than `dead` and usually means remove or wire up. |
42
+ | `cycles` | File dependency graph, with module-hierarchy/test/barrel/entry cycle classification | Risk | Direct repair for `real`; support/noise for `module-hierarchy` | Good split already exists. Real cycles normally need architectural repair. Module-hierarchy cycles should not score. |
43
+ | `similar` / `similarAll` | Callable callee fingerprints, IDF weighting, source-token fallback | Hygiene | Contextual signal | Similarity is a reuse lead, not proof of duplicate semantics. Needs naming, behavior, signatures, and product intent before action. Shared evidence is now labeled as domain, access/query, framework/generic, mixed, or neutral structural overlap. |
44
+ | `recent-duplicates` | `similarAll`, React/Vue duplicate analyzers, git file-age orientation | Standalone cleanup | Direct repair for `echo`; contextual for `twin` | Directionality makes this much stronger than plain similarity. A recent echo usually should reuse/delete. Twins still need choice of owner. |
45
+ | `react-component-duplicates` | JSX structure tokens from React profiles | Hygiene | Contextual signal | Good UI reuse lead. Needs product semantics and design-system judgment before extracting. |
46
+ | `react-hook-candidates` | Shared React hook/state/effect/request/handler tokens, evidence class, action tier, and recommendation | Hygiene, with `scoreCount` discount | Contextual signal for domain or mixed behavior; support for generic workflow/shared abstraction rows | Better than raw similarity because behavior tokens are named. The output now separates generic UI workflow and existing shared abstractions from domain behavior, but extraction still needs product judgment. |
47
+ | `react-large-component-pressure` | Component LOC, file LOC, JSX token count, behavior token count, pressure kind, context, recommendation kind | Hygiene | Direct repair pressure with review direction | Large component pressure usually implies splitting. It now distinguishes JSX, behavior, file, and route/page pressure, but still does not choose the destination directory for extracted code. |
48
+ | `vue-component-duplicates` | Vue template structure tokens | Hygiene | Contextual signal | Same reuse caveat as React component duplicates. |
49
+ | `vue-composable-candidates` | Vue composable/store/reactivity/lifecycle/request/function/template tokens, evidence class, action tier, and recommendation | Hygiene, with `scoreCount` discount | Contextual signal for domain or mixed behavior; support for generic workflow/shared abstraction rows | Good extraction lead when domain behavior is present. Generic workflow scaffolding remains visible as support, and extraction still needs domain and locality judgment. |
50
+ | `vue-large-view-pressure` | SFC total/template/script/style/external-script line counts, pressure kind, context, recommendation kind | Hygiene | Direct repair pressure with review direction | Usually implies splitting a large view. It now distinguishes template, script, style, external-script, and route/page pressure, but still needs companion directory-locality guidance. |
51
+ | `extract-candidates` | Large callable callee clusters, co-occurrence isolation, extraction kind, action tier, and recommendation | Hygiene | Contextual signal | It finds possible extraction seams, not proof of a new abstraction. The output now distinguishes workflow orchestration from broad/cohesive helper clusters and keeps every row as signal. |
52
+ | `wrapper-candidates` | Small production callables with one real external caller, caller fan-in, and boundary-token evidence | Hygiene | Contextual signal, sometimes direct | Single-caller wrappers can be needless indirection, but may also be names, domain/lifecycle boundaries, test seams, or API shaping. Boundary evidence discounts those without hiding them. |
53
+ | `passthrough-candidates` | Small production callables with exactly one callee, literal pass-through body, runtime-boundary evidence, public-facade evidence, action tier, recommendation, and score count | Hygiene, with `scoreCount` discount | Direct when no boundary or public-facade evidence is present; contextual signal when either exists | Body-shape gate is real. Boundary evidence distinguishes adapter, provider, public, capability, transport, lifecycle, access-policy, and facade-shaped forwarders; public-facade evidence separately identifies package-public or rooted exported passthroughs. |
54
+ | `stale-abstractions` | Type-like definitions, real consumers, barrel consumers, transitive reachability, definer usage, confidence, staleness kind, action tier, and recommendation | Hygiene | Direct for unused abstractions; contextual signal for one-consumer ownership rows | `0 consumers` is direct repair. `1 consumer` is contextual, including high-confidence misplaced types, because the repair may be move, inline, keep, or document as public contract. |
55
+ | `drift` | File dep graph, symbol ref graph, semantic/source import usage, explicit or inferred layer policy, sibling patterns, action tier, policy basis, recommendation | Hygiene | Split by kind | `unused-import` is direct repair. Explicit `layer-violation` is direct; inferred layer policy and `pattern-deviation` rows are contextual signal. Pattern deviations remain excluded from health scoring. |
56
+ | `complexity-hotspots` | Production callable LOC, fan-in, fan-out, callee count | Risk | Direct repair pressure | Complexity pressure usually means refactor, but the current score is structural, not cyclomatic. It should be separate from branch-count complexity. |
57
+ | `co-change` / hidden coupling | Git co-change pairs, dependency edges, declared couplings, file noise filters, partner-class labels, declared-coupling suggestions, commit scope, recency context, commit-subject context, and score-weighted count | Risk, weighted by history strength | Contextual signal | Strong evidence that coordination may be missing, but not proof that extraction or unification is correct. Partner classes, history context, subject context, and score weighting now separate contract-like focused current pairs from broad, stale, or unlabeled history before suggesting declared coupling. |
58
+ | Suppression inventory | `scip-query: ignore-*` comments in source, plus structured `.scipquery.json` suppressions | Evidence quality axis | Meta signal | Useful precision feedback. High suppressions should reduce trust or weight for that detector family. Structured file-scoped suppressions now validate path freshness. |
59
59
 
60
60
  ## Diff-Gate Checks
61
61
 
@@ -254,3 +254,11 @@ wiring decisions (test-quality's health eligibility is ledgered as a
254
254
  followup). Registration files (`queryCommandOrder`,
255
255
  `PUBLIC_QUERY_ENTRIES`, `query-command-specs.ts`) still own their
256
256
  canonical lists; only the list contents grew.
257
+
258
+ ## 2026-07-08 Rust Semantic Parity Follow-Up
259
+
260
+ The `src/queries/health/health.ts` citation remains accurate after the Rust
261
+ semantic parity slice. Health still owns the composite phase inventory and
262
+ score model, and it now threads semantic enrichment through the health budget:
263
+ full/default health enables semantic facts, while bounded large-index health
264
+ can explicitly disable them.
@@ -12,12 +12,12 @@ The companion documents are:
12
12
 
13
13
  The ledger is anchored to the current tool surface, not memory.
14
14
 
15
- | Surface | Source | Why it anchors the ledger |
16
- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
17
- | Repo-wide health analysis | `scip-query code health --json` reported `src/queries/health/health.ts:217`, where `health()` runs `runHealthAnalyses()` and `buildHealthReport()`. | Every repo-wide analyzer validation must eventually reconcile with health output and scoring. |
15
+ | Surface | Source | Why it anchors the ledger |
16
+ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
17
+ | Repo-wide health analysis | `scip-query code health --json` reported `src/queries/health/health.ts:218`, where `health()` runs `runHealthAnalyses()` and `buildHealthReport()` through the health budget that carries full-vs-bounded semantic enrichment. | Every repo-wide analyzer validation must eventually reconcile with health output and scoring. |
18
18
  | Change-time gate analysis | `scip-query code diffGate --json` reported `src/queries/impact/diff-gate.ts:228`, where `diffGate()` runs the default diff-scoped checks: `echo`, `incomplete-migration`, `co-change-partner`, `doc-reference`, `unused-params`, and `new-dead`. The baseline ratchet is explicit because it is repo-wide. | Every diff-only analyzer needs a separate validation path from repo-wide health. |
19
- | Public command registry | `scip-query trace queryCommandOrder --json` reported `src/runtime/commands/query-command-specs.ts:11`, where the public query command order starts. `scip-query code queryCommandDescriptor --json` reported `src/runtime/commands/query-command-specs.ts:104`, where command descriptors are resolved by id. | The ledger must not silently miss a public analyzer command. |
20
- | Diff-gate check list | `scip-query trace DIFF_GATE_CHECKS --json` reported `src/queries/impact/diff-gate.ts:64`, where the canonical diff-gate check list is exported. | The ledger must cover every change-time check that can block a diff. |
19
+ | Public command registry | `scip-query trace queryCommandOrder --json` reported `src/runtime/commands/query-command-specs.ts:11`, where the public query command order starts. `scip-query code queryCommandDescriptor --json` reported `src/runtime/commands/query-command-specs.ts:104`, where command descriptors are resolved by id. | The ledger must not silently miss a public analyzer command. |
20
+ | Diff-gate check list | `scip-query trace DIFF_GATE_CHECKS --json` reported `src/queries/impact/diff-gate.ts:64`, where the canonical diff-gate check list is exported. | The ledger must cover every change-time check that can block a diff. |
21
21
 
22
22
  ## Core Concepts
23
23
 
@@ -45,22 +45,24 @@ A repair outcome is the result of acting on an analyzer finding. It matters beca
45
45
 
46
46
  Closeout status: all active ledger rows are complete as of 2026-06-22. Remaining future work is provider- or corpus-gated, not an unfinished validation slice: true co-change issue/PR label ingestion needs a repository metadata provider, and locality score integration needs stronger consumer-coverage plus repair-outcome evidence.
47
47
 
48
- | ID | Item | Scope | Status | Next action | Done signal |
49
- | ------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
50
- | AVL-001 | Field evaluation baseline | Run the protocol on `scip-query`, `Stable_Management`, `Vega_2.0`, and `SynthRunnerRust`. | `complete` | Completed in `docs/validation/2026-06-21-second-repo-confirmation.md`. | A dated run summary exists for each repo with raw-output locations and sampling notes. |
51
- | AVL-002 | Direct repair analyzer verdicts | `cleanup-plan`, `dead`, `new-dead`, `isolated`, `unused-params`, `unused-imports`, `redundant-reexports`, `passthrough-candidates`, `cycles`, broken `doc-drift`, and `doc-reference`. | `complete` | Completed in `docs/validation/2026-06-21-direct-deletion-family-closure-result.md`. | Each direct analyzer has TP/FP/FN counts, accepted-design examples, and precision actions. |
52
- | AVL-003 | Contextual signal analyzer verdicts | Similarity, extraction, locality, wrapper, stale abstraction, frontend duplicate, hook/composable, co-change, bottleneck, coupling, drift, and deep-chain families. | `complete` | Completed in `docs/validation/2026-06-21-contextual-signal-closure-result.md`. | Each contextual family has a reviewed precision note and a score-weight recommendation. |
53
- | AVL-004 | Support analysis accuracy | `affected`, `change-surface`, `plan-context`, navigation commands, graph metrics, and `self-audit`. | `complete` | Completed in `docs/validation/2026-06-21-support-analysis-accuracy-result.md`. | Support commands have referential-accuracy notes and known unsupported cases. |
54
- | AVL-005 | Analyzer implementation parity | Confirm each public analyzer command's documented behavior matches implementation behavior. | `complete` | Completed in `docs/validation/2026-06-21-analyzer-implementation-parity-result.md`. | The inventory and protocol either match implementation or list required doc/code corrections. |
55
- | AVL-006 | Score calibration | Evaluate direct findings, contextual signals, suppressions, validation ratio, and signal backlog pressure. | `complete` | Completed in `docs/validation/2026-06-21-score-calibration-finalization-result.md`. | A calibration memo states score-weight changes, accepted current weights, or blocked evidence gaps. |
56
- | AVL-007 | Output and schema quality | Verify each analyzer emits enough structured evidence for users and agents to review the claim. | `complete` | Completed in `docs/validation/2026-06-21-output-schema-quality-finalization-result.md`. | Each analyzer family has an output-quality verdict and missing-field list. |
57
- | AVL-008 | Performance and budget behavior | Check large-index behavior, `--full`, scan limits, git-history bounds, and graceful degradation. | `complete` | Completed in `docs/validation/2026-06-21-performance-budget-behavior-result.md`. | Budget behavior is documented with any timeout, cap, or misleading-empty-output issues. |
58
- | AVL-009 | Suppression lifecycle | Evaluate whether suppressions are stale, justified, expired, or useful as detector precision feedback. | `complete` | Completed in `docs/validation/2026-06-21-suppression-lifecycle-result.md`. | Suppression categories have counts, stale examples, and trust-weight recommendations. |
59
- | AVL-010 | Cross-language capability boundaries | Establish what works for TypeScript, React, Vue, Rust, and any unsupported language surfaces. | `complete` | Completed in `docs/validation/2026-06-21-cross-language-capability-boundaries-result.md`. | Capability notes distinguish "no findings" from "not supported by current evidence." |
60
- | AVL-011 | Agent repair outcomes | Test whether acting on analyzer findings produces better code rather than churn or misplaced abstraction. | `complete` | Completed in `docs/validation/2026-06-21-agent-repair-outcomes-result.md`. | Each action tier has at least one reviewed repair outcome or an explicit reason it cannot be tested yet. |
61
- | AVL-012 | Locality analyzer validation | Validate the proposed `locality-candidates` report and `scip-locality-review` skill workflow before implementation. | `complete` | Completed in `docs/validation/2026-06-21-locality-analyzer-validation-result.md`. | The locality design has TP/FP/FN-style examples and a go/no-go recommendation for implementation. |
62
- | AVL-013 | Config and declared-coupling freshness | Check whether `.scipquery.json` declared couplings and suppressions still point at current paths. | `complete` | Completed in `docs/validation/2026-06-21-config-declared-coupling-freshness-result.md`. | Stale config paths are fixed, removed, or documented as intentionally retained. |
63
- | AVL-014 | Public command surface coverage | Ensure every public analyzer command is present in the inventory, protocol, and ledger. | `complete` | Completed in `docs/validation/2026-06-21-public-command-surface-coverage-result.md`. | A coverage checklist shows no missing analyzer or marks non-analyzer support commands separately. |
48
+ | ID | Item | Scope | Status | Next action | Done signal |
49
+ | ------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
50
+ | AVL-001 | Field evaluation baseline | Run the protocol on `scip-query`, `Stable_Management`, `Vega_2.0`, and `SynthRunnerRust`. | `complete` | Completed in `docs/validation/2026-06-21-second-repo-confirmation.md`. | A dated run summary exists for each repo with raw-output locations and sampling notes. |
51
+ | AVL-002 | Direct repair analyzer verdicts | `cleanup-plan`, `dead`, `new-dead`, `isolated`, `unused-params`, `unused-imports`, `redundant-reexports`, `passthrough-candidates`, `cycles`, broken `doc-drift`, and `doc-reference`. | `complete` | Completed in `docs/validation/2026-06-21-direct-deletion-family-closure-result.md`. | Each direct analyzer has TP/FP/FN counts, accepted-design examples, and precision actions. |
52
+ | AVL-003 | Contextual signal analyzer verdicts | Similarity, extraction, locality, wrapper, stale abstraction, frontend duplicate, hook/composable, co-change, bottleneck, coupling, drift, and deep-chain families. | `complete` | Completed in `docs/validation/2026-06-21-contextual-signal-closure-result.md`. | Each contextual family has a reviewed precision note and a score-weight recommendation. |
53
+ | AVL-004 | Support analysis accuracy | `affected`, `change-surface`, `plan-context`, navigation commands, graph metrics, and `self-audit`. | `complete` | Completed in `docs/validation/2026-06-21-support-analysis-accuracy-result.md`. | Support commands have referential-accuracy notes and known unsupported cases. |
54
+ | AVL-005 | Analyzer implementation parity | Confirm each public analyzer command's documented behavior matches implementation behavior. | `complete` | Completed in `docs/validation/2026-06-21-analyzer-implementation-parity-result.md`. | The inventory and protocol either match implementation or list required doc/code corrections. |
55
+ | AVL-006 | Score calibration | Evaluate direct findings, contextual signals, suppressions, validation ratio, and signal backlog pressure. | `complete` | Completed in `docs/validation/2026-06-21-score-calibration-finalization-result.md`. | A calibration memo states score-weight changes, accepted current weights, or blocked evidence gaps. |
56
+ | AVL-007 | Output and schema quality | Verify each analyzer emits enough structured evidence for users and agents to review the claim. | `complete` | Completed in `docs/validation/2026-06-21-output-schema-quality-finalization-result.md`. | Each analyzer family has an output-quality verdict and missing-field list. |
57
+ | AVL-008 | Performance and budget behavior | Check large-index behavior, `--full`, scan limits, git-history bounds, and graceful degradation. | `complete` | Completed in `docs/validation/2026-06-21-performance-budget-behavior-result.md`. | Budget behavior is documented with any timeout, cap, or misleading-empty-output issues. |
58
+ | AVL-009 | Suppression lifecycle | Evaluate whether suppressions are stale, justified, expired, or useful as detector precision feedback. | `complete` | Completed in `docs/validation/2026-06-21-suppression-lifecycle-result.md`. | Suppression categories have counts, stale examples, and trust-weight recommendations. |
59
+ | AVL-010 | Cross-language capability boundaries | Establish what works for TypeScript, React, Vue, Rust, and any unsupported language surfaces. | `complete` | Completed in `docs/validation/2026-06-21-cross-language-capability-boundaries-result.md`. | Capability notes distinguish "no findings" from "not supported by current evidence." |
60
+ | AVL-011 | Agent repair outcomes | Test whether acting on analyzer findings produces better code rather than churn or misplaced abstraction. | `complete` | Completed in `docs/validation/2026-06-21-agent-repair-outcomes-result.md`. | Each action tier has at least one reviewed repair outcome or an explicit reason it cannot be tested yet. |
61
+ | AVL-012 | Locality analyzer validation | Validate the proposed `locality-candidates` report and `scip-locality-review` skill workflow before implementation. | `complete` | Completed in `docs/validation/2026-06-21-locality-analyzer-validation-result.md`. | The locality design has TP/FP/FN-style examples and a go/no-go recommendation for implementation. |
62
+ | AVL-013 | Config and declared-coupling freshness | Check whether `.scipquery.json` declared couplings and suppressions still point at current paths. | `complete` | Completed in `docs/validation/2026-06-21-config-declared-coupling-freshness-result.md`. | Stale config paths are fixed, removed, or documented as intentionally retained. |
63
+ | AVL-014 | Public command surface coverage | Ensure every public analyzer command is present in the inventory, protocol, and ledger. | `complete` | Completed in `docs/validation/2026-06-21-public-command-surface-coverage-result.md`. | A coverage checklist shows no missing analyzer or marks non-analyzer support commands separately. |
64
+ | AVL-015 | TypeScript `dead` certification | Fixed-seed four-repository precision review, causal remediation, holdout replay, and known-positive recall. | `complete` | Certified in `docs/validation/2026-07-10-typescript-dead-certification.md`. | Precision, confidence, corpus, and recall gates pass under the repository-dead truth rule. |
65
+ | AVL-016 | Rust `dead` hardening | Pinned Codex, SynthRunnerRust, and VegaAssistant review covering Cargo surfaces, traits, macros, reflection, examples, and positive recall. | `complete` | Hardened but insufficiently evidenced in `docs/validation/2026-07-10-rust-dead-certification.md`; expand the corpus before renewal. | Every baseline false positive is removed, applicability is visible, recall fixtures pass, and failed certification gates are explicit. |
64
66
 
65
67
  ## Public Command Coverage Checklist
66
68
 
@@ -324,6 +326,15 @@ and a `detectorPrecision` field (per-check finding-outcome stats from the new
324
326
  finding-outcome ledger) — both paths still compute and render through the same
325
327
  command surfaces cited above.
326
328
 
329
+ ## 2026-07-08 Rust Semantic Parity Follow-Up
330
+
331
+ The `src/queries/health/health.ts` citation remains accurate after the Rust
332
+ semantic parity slice. Health still owns the composite phase inventory and
333
+ score assembly; the health budget now also carries whether a run should enrich
334
+ detectors with semantic facts. Full/default health keeps semantic enrichment
335
+ enabled, while bounded large-index health records the explicit semantic-off
336
+ budget choice.
337
+
327
338
  ## 2026-07-02 Doc-Reference Hub-Cascade Follow-Up
328
339
 
329
340
  The `diffGate()` and `DIFF_GATE_CHECKS` citations were refreshed (line anchors
@@ -334,3 +345,22 @@ one clustered finding carrying `citationCount`, up to 3 `citationExemplars`,
334
345
  and an explicit `suppressedCount`. Default diff-gate still runs the same
335
346
  check family through the same entry point; per-doc findings under the
336
347
  threshold are unchanged.
348
+
349
+ ## 2026-07-10 TypeScript Dead-Code Certification Follow-Up
350
+
351
+ The direct-repair `dead` row now has a detector-language certificate rather
352
+ than relying on the earlier mixed-family calibration. The pinned four-repo
353
+ baseline produced 25 valid and 53 invalid TypeScript findings. Shared fixes
354
+ made test references count as repository usage, propagated declared package
355
+ surfaces through re-exports, recognized framework entry files, and excluded
356
+ interface, constructor, React lifecycle, and implemented-protocol contracts.
357
+
358
+ The final fixed-seed review contained 43 valid findings and zero invalid
359
+ findings across Vega_2.0, openwork, Stable_Management, and traceroot. Observed
360
+ precision was 100%, the 95% Wilson lower bound was 91.8%, and three positive
361
+ fixtures continued to detect ordinary unreferenced definitions. The retained
362
+ claim is narrowly scoped: TypeScript `dead-code` rows are certified
363
+ repository-dead candidates, while `file-internal`, other detector families,
364
+ Rust, Python, and the aggregate health score retain independent status. The
365
+ full evidence is in
366
+ `docs/validation/2026-07-10-typescript-dead-certification.md`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scip-query",
3
- "version": "0.14.0",
3
+ "version": "0.16.0",
4
4
  "description": "Evidence and verification for AI coding agents: map code, reuse concepts, finish migrations, and gate diffs.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -317,6 +317,7 @@
317
317
  "lint": "npm run format:check && eslint src tests tsup.config.ts && node scripts/check-skill-links.mjs",
318
318
  "build:scip-windows": "node scripts/build-scip-windows.mjs",
319
319
  "bench:evidence-products": "node scripts/evidence-product-contract.mjs",
320
+ "bench:native-symbol-leaf": "node scripts/bench-native-symbol-leaf.mjs",
320
321
  "calibrate": "node scripts/accuracy-calibration.mjs",
321
322
  "docs:commands": "vite-node scripts/render-command-reference.ts --write",
322
323
  "prepublishOnly": "npm run publish:scip-windows && npm run build",
@@ -45,16 +45,16 @@ try {
45
45
  writeFileSync(
46
46
  join(VENDOR_DIR, 'README.md'),
47
47
  [
48
- '# scip.exe release assets',
48
+ '# Windows scip.exe npm sidecar',
49
49
  '',
50
50
  `These binaries are built from ${SCIP_REPO_URL} at ${SCIP_VERSION}.`,
51
- 'They are NOT bundled into the npm package. Upload each as a GitHub release',
52
- 'asset (scip-win32-<arch>.exe) and pin url + sha256 in',
53
- 'src/runtime/scip-windows-assets.ts before publishing scip-query downloads',
54
- 'and checksum-verifies them on demand so Windows `reindex` works without',
55
- 'requiring Go or WSL.',
51
+ 'They are bundled in the OS-gated `scip-query-scip-windows` npm package. The main',
52
+ '`scip-query` package declares that sidecar as an optional dependency, so npm',
53
+ 'installs it automatically on Windows and `reindex` works without Go or WSL.',
56
54
  '',
57
- 'Run `npm run build:scip-windows` to (re)build these before publishing.',
55
+ 'Run `npm run build:scip-windows` to rebuild the binaries. Publishing the main',
56
+ 'package verifies the version pin, builds missing binaries, and publishes the',
57
+ 'matching sidecar first.',
58
58
  '',
59
59
  ].join('\n'),
60
60
  );
@@ -91,7 +91,7 @@ scip-query slice <symbol> # Reference-level program slice: what affects this (ba
91
91
  ### Cleanup
92
92
 
93
93
  ```bash
94
- scip-query dead [scope] # Find dead code and file-internal symbols (no cross-file consumers)
94
+ scip-query dead [scope] # Find repository-dead code, file-internal symbols, and implicit-usage signals
95
95
  scip-query unused-imports <file> # Find imports not referenced in the same file
96
96
  scip-query isolated # Find completely orphaned symbols (no references at all)
97
97
  scip-query similar [symbol] [other] # Find heuristic function similarity candidates from callee fingerprints
@@ -130,12 +130,12 @@ scip-query similar-signatures # Find functions with near-identical type signatur
130
130
 
131
131
  ```bash
132
132
  scip-query hotspots # Most-referenced symbols in the codebase (choke points)
133
- scip-query fan-in [symbol] # How many files reference a symbol (or top fan-in across codebase)
133
+ scip-query fan-in [symbol] # Count files referencing an exact symbol; top JSON rows include exact symbol identity
134
134
  scip-query fan-out [file] # How many external symbols a file uses (or top fan-out across codebase)
135
135
  scip-query coupling [file1] [file2] # Coupling between two files, or top coupled pairs in codebase
136
136
  scip-query cycles # Detect circular dependency chains between files
137
137
  scip-query bottlenecks # Find coupling hubs: high fan-in AND high fan-out
138
- scip-query deep-chains # Find the longest transitive dependency chains
138
+ scip-query deep-chains # Find the longest condensed dependency-component chains
139
139
  scip-query call-graph <symbol> # Show incoming callers and outgoing callees for a symbol
140
140
  ```
141
141
 
@@ -174,6 +174,7 @@ scip-query complexity <symbol> # Per-symbol complexity: branches, cyclomatic est
174
174
 
175
175
  ```bash
176
176
  scip-query bench # Benchmark indexing and command runtimes for this repository
177
+ scip-query work-audit <profile> # Rank exact repeated computations in a profiling JSONL file by measured avoidable time
177
178
  scip-query install-skills # Install skills (_shared, scip-query, scip-setup, scip-calibrate, scip-cleanup-audit, scip-cleanup-improve, scip-integrity-audit, scip-twin-drift, scip-claim-audit, scip-probe-reachability, scip-hyper-optimization, scip-api-impact, scip-concrete-plan, scip-conductor, scip-debug, scip-explore, scip-triage-issue, scip-diagram, scip-doc-reconcile, scip-directory-architecture, scip-maintainability, scip-react-maintainability, scip-vue-maintainability, scip-verify, scip-language-playbook, scip-tla-model-system) into Claude Code, Codex, and shared agent roots
178
179
  scip-query setup-hooks # Install or refresh project-local Codex and Claude Code lifecycle hooks
179
180
  scip-query check-deps # Check whether scip-query and the detected language indexers are actually runnable
@@ -181,13 +182,14 @@ scip-query capabilities # Report which evidence and verification capabilities ar
181
182
  scip-query capability-matrix # Deprecated alias for capabilities --matrix
182
183
  scip-query init # Create a .scipquery.json config file for this project
183
184
  scip-query config-validate # Validate .scipquery.json, including structured suppressions and declared coupling groups
184
- scip-query suppress <id> # Record an accepted finding in .scipquery.json with a required reason
185
+ scip-query suppress <id> # Record an accepted finding as a file under .scipquery/suppressions/ with a required reason
186
+ scip-query effectiveness # Per-check effectiveness from the committed outcome ledger: caught, same-HEAD verified fixes, suppressed, unverified disappearances, and precision
185
187
  scip-query doctor # Diagnose config, index freshness, dependency readiness, and project capabilities
186
- scip-query setup # Bootstrap this project: install agent skills, refresh the index, verify capabilities, and report health
188
+ scip-query setup # Bootstrap this project: enable automatic indexing, install agent skills, refresh the index, verify capabilities, and report health
187
189
  scip-query setup-agent # Seed agent guidance for this project: AGENTS.md/CLAUDE.md block pointing agents at the scip-query skills and diff gate, plus an optional git pre-commit backstop
188
190
  scip-query setup-ci # Write a GitHub Actions workflow that runs scip-query reindex and diff-gate on pull requests
189
191
  scip-query uninstall # Remove scip-query-owned skill links, project hooks, and managed agent setup blocks
190
- scip-query watch # Watch for file changes in the foreground and reindex automatically
192
+ scip-query watch # Watch in the foreground or manage the per-project background refresh service
191
193
  scip-query status # Show index status for this project
192
194
  ```
193
195
 
@@ -196,7 +198,7 @@ scip-query status # Show index status for this project
196
198
  ## Detector Reliability
197
199
 
198
200
  Calibrated against two external production repos on 2026-07-01
199
- (docs/validation/2026-07-01-external-calibration-*.md). Weight findings by
201
+ (docs/validation/2026-07-01-external-calibration-\*.md). Weight findings by
200
202
  measured precision, not by volume:
201
203
 
202
204
  - **Strong signal** — `complexity-hotspots` (~90%), `recent-duplicates` (~75%), graph facts (`refs`, `trace`, `deps`), compiler-verified `cleanup-plan --verify`.
@@ -205,6 +207,7 @@ measured precision, not by volume:
205
207
  - **Advisory gate findings** (marked `(advisory)`) never block; they are context, not obligations.
206
208
  - **False-dead archetypes (2026-07-02 remediation, docs/plans/2026-07-02-followups.md items 1-3)**: `import type`-only consumers (incl. tsconfig `paths`-aliased specifiers) and pnpm/npm/yarn workspace cross-package consumers (incl. unbuilt `dist/` exports maps) are now resolved by the shared reference-counting layer that `dead`/`isolated`/`new-dead`/`stale-abstractions`/`production-callables` all consume; Vue `<script setup>` composable consumers were already correctly resolved (verified live, no code change needed). One narrow residual gap remains: a symbol with an **ambiguous leaf name** (a same-named definition exists elsewhere in the project) reached only through a **re-exporting barrel file** in a workspace package can still misattribute — `new-dead` labels that specific shape `unconfirmed (cross-package ambiguous-name resolution gap)` with `evidence: "heuristic"` and lowered confidence instead of asserting `dead`; treat those as "verify manually," not as a fact. Everything else in this class is a normal graph-fact `dead` claim again — confirm with `refs` when in doubt, same as any other finding.
207
209
  - **Ledger nudges**: when `diff-gate --hook` reports "this check is rarely acted on in this repo", either tune that check's config, suppress the standing findings with reasons, or consciously accept the noise — do not let unresolved findings accumulate as wallpaper.
210
+ - **Effectiveness ledger**: every completed diff-gate run, including JSON and hook mode, appends caught/resolved/suppressed transitions to `.scipquery/ledger/events.jsonl` (committed, conflict-free via a scoped `merge=union` gitattribute — commit it with your changes). Query it with `scip-query effectiveness [--since 30d] [--check <check>] [--json]`: per check it reports findings caught, same-HEAD verified fixed, suppressed, still open, `moved` (rename noise), `unverified` (the finding disappeared after HEAD changed or without Git identity), precision (verified fixed ÷ verified fixed plus suppressed), and median days-to-fix. Run diff-gate before and after a repair, before committing, to earn verified credit. Standalone detector commands are not outcome-tracked until they expose complete-scan evidence.
208
211
 
209
212
  ## Diff Gate Checks
210
213
 
@@ -214,17 +217,17 @@ measured precision, not by volume:
214
217
 
215
218
  Run the rows that match the actual edit:
216
219
 
217
- | Change made | Check |
218
- | --- | --- |
219
- | Extracted a helper or abstraction | `scip-query incomplete-migration --json --full` |
220
- | Added a helper, module, component, hook, composable, or adapter | `scip-query similar <symbol> --json --full` and `scip-query recent-duplicates --json --full` |
221
- | Added parameters, options, props, config flags, or broad option objects | `scip-query unused-params --json --full` |
222
- | Added a wrapper, facade, forwarding layer, alias, or re-export | `scip-query wrapper-candidates --json --full`, `scip-query passthrough-candidates --json --full`, and `scip-query redundant-reexports` when exports changed |
223
- | Added an interface, base class, adapter contract, or type alias | `scip-query stale-abstractions --json --full` |
224
- | Changed schema, config, generated files, public contracts, command descriptors, or docs-backed behavior | `scip-query co-change <file> --json --full` and `scip-query doc-drift --json --full` |
225
- | Deleted code | `scip-query cleanup-plan --verify --json` |
226
- | Changed React components or hooks | the React frontend commands above |
227
- | Changed Vue SFCs or composables | the Vue frontend commands above |
220
+ | Change made | Check |
221
+ | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
222
+ | Extracted a helper or abstraction | `scip-query incomplete-migration --json --full` |
223
+ | Added a helper, module, component, hook, composable, or adapter | `scip-query similar <symbol> --json --full` and `scip-query recent-duplicates --json --full` |
224
+ | Added parameters, options, props, config flags, or broad option objects | `scip-query unused-params --json --full` |
225
+ | Added a wrapper, facade, forwarding layer, alias, or re-export | `scip-query wrapper-candidates --json --full`, `scip-query passthrough-candidates --json --full`, and `scip-query redundant-reexports` when exports changed |
226
+ | Added an interface, base class, adapter contract, or type alias | `scip-query stale-abstractions --json --full` |
227
+ | Changed schema, config, generated files, public contracts, command descriptors, or docs-backed behavior | `scip-query co-change <file> --json --full` and `scip-query doc-drift --json --full` |
228
+ | Deleted code | `scip-query cleanup-plan --verify --json` |
229
+ | Changed React components or hooks | the React frontend commands above |
230
+ | Changed Vue SFCs or composables | the Vue frontend commands above |
228
231
 
229
232
  Every implemented change ends with:
230
233
 
@@ -8,6 +8,7 @@ commands:
8
8
  - scip-query dead --json
9
9
  - scip-query similar <symbol>
10
10
  - scip-query config-validate
11
+ - scip-query effectiveness --since 30d --json
11
12
  ---
12
13
 
13
14
  # scip-calibrate
@@ -116,9 +117,14 @@ filed upstream.
116
117
 
117
118
  The finding-outcome ledger keeps calibrating for you: once the repo uses
118
119
  diff-gate, per-detector precision is recomputed from real outcomes
119
- (`detectorPrecision` in `health --json`). Re-run this protocol only after
120
- major detector upgrades or when the ledger's precision numbers drift from
121
- what you measured. Write the calibration report to
120
+ (`detectorPrecision` in `health --json`), and the committed event ledger
121
+ makes those outcomes durable and queryable `scip-query effectiveness
122
+ --since 30d --json` reports per-check caught/same-HEAD-fixed/suppressed/open/
123
+ unverified counts, precision, and median days-to-fix from
124
+ `.scipquery/ledger/events.jsonl`. Run diff-gate before and after the repair,
125
+ before committing, so a changed HEAD cannot be mistaken for a verified fix.
126
+ Re-run this protocol only after major detector upgrades or when the
127
+ ledger's precision numbers drift from what you measured. Write the calibration report to
122
128
  `docs/validation/YYYY-MM-DD-external-calibration-<repo>.md` in the shape of
123
129
  the exemplars this skill was distilled from — battery table, retro-gate
124
130
  walls, per-detector verdicts, noise archetypes, caps and deviations.
@@ -6,6 +6,8 @@ commands:
6
6
  when: "Target and harness: baseline timings for a scip-query command target."
7
7
  - template: "scip-query bench --json --cold-index --include-heavy --timeout-ms 600000"
8
8
  when: "Target and harness: cold-path and heavy-detector timings."
9
+ - template: "scip-query work-audit <profile> --json"
10
+ when: "Profile the chain: rank exact repeated computations by measured avoidable time."
9
11
  - template: "scip-query plan-context <entry-symbol-or-file>"
10
12
  when: "Trace behavior: pre-edit context for the profiled entry point."
11
13
  - template: "scip-query call-graph <entry-symbol>"
@@ -40,6 +42,7 @@ One sentence to decide: if you can already name the one function you expect to f
40
42
  | --- | --- | --- |
41
43
  | `scip-query bench --json` | Benchmark indexing and command runtimes for this repository | Target and harness: baseline timings for a scip-query command target. |
42
44
  | `scip-query bench --json --cold-index --include-heavy --timeout-ms 600000` | Benchmark indexing and command runtimes for this repository | Target and harness: cold-path and heavy-detector timings. |
45
+ | `scip-query work-audit <profile> --json` | Rank exact repeated computations in a profiling JSONL file by measured avoidable time | Profile the chain: rank exact repeated computations by measured avoidable time. |
43
46
  | `scip-query plan-context <entry-symbol-or-file>` | Pre-edit planning context for a symbol, file, or module | Trace behavior: pre-edit context for the profiled entry point. |
44
47
  | `scip-query call-graph <entry-symbol>` | Show incoming callers and outgoing callees for a symbol | Trace behavior: callers/callees for the pipeline under test. |
45
48
  | `scip-query complexity <hot-symbol>` | Per-symbol complexity: branches, cyclomatic estimate, fan-in/out, callees | Diagnose: branches, cyclomatic estimate, fan-in/out for a hot symbol. |
@@ -117,7 +120,7 @@ This step is complete only when each major pipeline step can be timed as a profi
117
120
 
118
121
  ### 4. Profile the chain
119
122
 
120
- 0. Check whether the target app already has an instrumentation layer before adding spans — a bespoke profiling harness competes with the one the codebase already trusts. When the target is scip-query itself, its instrumentation is `src/instrumentation/profile.ts` (`profileSpan`, env-gated by `SCIP_QUERY_PROFILE`/`SCIP_QUERY_PROFILE_OUT`, with `SCIP_QUERY_PROFILE_CACHE_STATE` for cache-state labels) — use it, don't add a parallel one.
123
+ 0. Check whether the target app already has an instrumentation layer before adding spans — a bespoke profiling harness competes with the one the codebase already trusts. When the target is scip-query itself, its instrumentation is `src/instrumentation/profile.ts` (`profileSpan`/`profileAsyncSpan`, env-gated by `SCIP_QUERY_PROFILE`/`SCIP_QUERY_PROFILE_OUT`, with `SCIP_QUERY_PROFILE_CACHE_STATE` for cache-state labels and inherited workload/subsystem identities) — use it, don't add a parallel one.
121
124
  1. Measure the target unprofiled.
122
125
  2. Measure profiled once and compare overhead.
123
126
  3. Measure distinct states: cold index, cold evidence/cache fill, warm cache hit, repeated focused run, production-like mixed state.
@@ -125,6 +128,7 @@ This step is complete only when each major pipeline step can be timed as a profi
125
128
  5. Split the largest workload-weighted span.
126
129
  6. Repeat until the slow operation is a repeated lookup, initialization, scan, traversal, subprocess, serialization step, or wait.
127
130
  7. Write span records with cardinality to run history.
131
+ 8. When spans carry work identities, run `scip-query work-audit <profile> --json` to separate exact repeats from same-name work on different inputs.
128
132
 
129
133
  This step is complete only when the dominant cost is concrete enough to form a falsifiable hypothesis.
130
134
 
@@ -100,7 +100,7 @@ Top commands per routed skill, generated from each skill's own `commands:` front
100
100
  | `scip-directory-architecture` | `scip-query system <scope>`, `scip-query locality-candidates --json --full`, `scip-query similar-files --full --json` |
101
101
  | `scip-doc-reconcile` | `scip-query doc-drift --json --full`, `scip-query doc-drift <doc>`, `scip-query outline <subject-file>` |
102
102
  | `scip-explore` | `scip-query stats`, `scip-query system <module-or-scope>`, `scip-query trace <entry-symbol>` |
103
- | `scip-hyper-optimization` | `scip-query bench --json`, `scip-query bench --json --cold-index --include-heavy --timeout-ms 600000`, `scip-query plan-context <entry-symbol-or-file>` |
103
+ | `scip-hyper-optimization` | `scip-query bench --json`, `scip-query bench --json --cold-index --include-heavy --timeout-ms 600000`, `scip-query work-audit <profile> --json` |
104
104
  | `scip-language-playbook` | `scip-query stats`, `scip-query files <feature-or-module-name>`, `scip-query outline <file>` |
105
105
  | `scip-maintainability` | `scip-query stats`, `scip-query system <scope>`, `scip-query surface <scope>` |
106
106
  | `scip-probe-reachability` | `scip-query outline <file> --signatures`, `scip-query code <symbol>`, `scip-query trace <symbol>` |