octocode-cli 1.2.7 → 1.2.9

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 (282) hide show
  1. package/README.md +42 -35
  2. package/out/octocode-cli.js +36 -11719
  3. package/package.json +36 -36
  4. package/skills/README.md +42 -114
  5. package/skills/{octocode-code-engineer → octocode-engineer}/.claude/settings.local.json +2 -1
  6. package/skills/octocode-engineer/README.md +99 -0
  7. package/skills/octocode-engineer/SKILL.md +499 -0
  8. package/skills/octocode-engineer/build.mjs +29 -0
  9. package/skills/{octocode-code-engineer → octocode-engineer}/eslint.config.mjs +3 -13
  10. package/skills/{octocode-code-engineer → octocode-engineer}/package.json +28 -27
  11. package/skills/octocode-engineer/references/ast-reference.md +166 -0
  12. package/skills/{octocode-code-engineer → octocode-engineer}/references/cli-reference.md +80 -6
  13. package/skills/octocode-engineer/references/externals.md +86 -0
  14. package/skills/{octocode-code-engineer → octocode-engineer}/references/output-files.md +46 -6
  15. package/skills/octocode-engineer/references/quality-indicators.md +202 -0
  16. package/skills/octocode-engineer/references/tool-workflows.md +298 -0
  17. package/skills/octocode-engineer/references/validation-playbooks.md +99 -0
  18. package/skills/octocode-engineer/scripts/ast/search.js +45 -0
  19. package/skills/octocode-engineer/scripts/ast/tree-search.js +27 -0
  20. package/skills/octocode-engineer/scripts/index.js +173 -0
  21. package/skills/octocode-engineer/scripts/run.js +179 -0
  22. package/skills/octocode-engineer/src/analysis/dependencies.ts +378 -0
  23. package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/discovery.test.ts +57 -0
  24. package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/discovery.ts +43 -0
  25. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/search.test.ts +113 -0
  26. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/search.ts +64 -1
  27. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/tree-sitter.test.ts +118 -2
  28. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/tree-sitter.ts +65 -3
  29. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/ts-analyzer.test.ts +281 -1
  30. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/ts-analyzer.ts +173 -3
  31. package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/security.test.ts +73 -0
  32. package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/security.ts +62 -4
  33. package/skills/octocode-engineer/src/detector-gating.test.ts +59 -0
  34. package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/code-quality.ts +342 -0
  35. package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/index.ts +8 -0
  36. package/skills/{octocode-code-engineer → octocode-engineer}/src/index.test.ts +565 -11
  37. package/skills/octocode-engineer/src/index.ts +468 -0
  38. package/skills/octocode-engineer/src/pipeline/affected.test.ts +147 -0
  39. package/skills/octocode-engineer/src/pipeline/affected.ts +68 -0
  40. package/skills/octocode-engineer/src/pipeline/baseline.test.ts +276 -0
  41. package/skills/octocode-engineer/src/pipeline/baseline.ts +76 -0
  42. package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/cli.test.ts +300 -53
  43. package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/cli.ts +180 -36
  44. package/skills/octocode-engineer/src/pipeline/config-loader.test.ts +264 -0
  45. package/skills/octocode-engineer/src/pipeline/config-loader.ts +109 -0
  46. package/skills/octocode-engineer/src/pipeline/create-options.ts +55 -0
  47. package/skills/octocode-engineer/src/pipeline/health-score.test.ts +65 -0
  48. package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/main.ts +130 -17
  49. package/skills/octocode-engineer/src/pipeline/progress.ts +51 -0
  50. package/skills/octocode-engineer/src/pipeline/reporters.test.ts +155 -0
  51. package/skills/octocode-engineer/src/pipeline/reporters.ts +64 -0
  52. package/skills/octocode-engineer/src/reporting/graph-features.test.ts +279 -0
  53. package/skills/{octocode-code-engineer → octocode-engineer}/src/reporting/output-contract.test.ts +6 -0
  54. package/skills/octocode-engineer/src/reporting/summary-md.test.ts +1066 -0
  55. package/skills/octocode-engineer/src/reporting/summary-md.ts +1604 -0
  56. package/skills/{octocode-code-engineer → octocode-engineer}/src/reporting/writer.ts +136 -13
  57. package/skills/octocode-engineer/src/run.ts +78 -0
  58. package/skills/{octocode-code-engineer → octocode-engineer}/src/sanity.test.ts +1 -1
  59. package/skills/octocode-engineer/src/types/analysis.ts +25 -0
  60. package/skills/octocode-engineer/src/types/collectors.ts +134 -0
  61. package/skills/{octocode-code-engineer → octocode-engineer}/src/types/constants.ts +75 -41
  62. package/skills/octocode-engineer/src/types/core.ts +203 -0
  63. package/skills/octocode-engineer/src/types/dependency.ts +215 -0
  64. package/skills/octocode-engineer/src/types/file-entry.ts +108 -0
  65. package/skills/octocode-engineer/src/types/findings.ts +105 -0
  66. package/skills/{octocode-code-engineer → octocode-engineer}/src/types/index.ts +60 -30
  67. package/skills/octocode-engineer/src/types/tree-sitter.ts +38 -0
  68. package/skills/{octocode-code-engineer → octocode-engineer}/tsconfig.json +1 -0
  69. package/skills/octocode-research/.octocode/scan/.cache/analysis-cache.json +1 -0
  70. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/architecture.json +1 -0
  71. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/ast-trees.txt +5566 -0
  72. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/code-quality.json +1 -0
  73. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/dead-code.json +1 -0
  74. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/file-inventory.json +1 -0
  75. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/findings.json +1 -0
  76. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/graph.md +189 -0
  77. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/security.json +1 -0
  78. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/summary.json +1 -0
  79. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/summary.md +265 -0
  80. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/architecture.json +1 -0
  81. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/ast-trees.txt +5555 -0
  82. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/code-quality.json +1 -0
  83. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/dead-code.json +1 -0
  84. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/file-inventory.json +1 -0
  85. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/findings.json +1 -0
  86. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/graph.md +190 -0
  87. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/security.json +1 -0
  88. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/summary.json +1 -0
  89. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/summary.md +265 -0
  90. package/skills/octocode-research/CHANGELOG.md +60 -0
  91. package/skills/octocode-research/README.md +102 -388
  92. package/skills/octocode-research/SKILL.md +169 -498
  93. package/skills/octocode-research/package.json +19 -31
  94. package/skills/octocode-research/references/PARALLEL_AGENT_PROTOCOL.md +19 -0
  95. package/skills/octocode-research/references/SESSION_MANAGEMENT.md +38 -0
  96. package/skills/octocode-research/scripts/server-init.js +1 -1
  97. package/skills/octocode-research/scripts/server.d.ts +2 -1
  98. package/skills/octocode-research/scripts/server.js +329 -233
  99. package/skills/octocode-research/src/__tests__/integration/promptsRoutes.test.ts +180 -0
  100. package/skills/octocode-research/src/__tests__/integration/serverHttp.test.ts +221 -0
  101. package/skills/octocode-research/src/__tests__/integration/serverLifecycle.test.ts +194 -0
  102. package/skills/octocode-research/src/__tests__/integration/toolsRoutes.test.ts +501 -0
  103. package/skills/octocode-research/src/__tests__/unit/readiness.test.ts +61 -0
  104. package/skills/octocode-research/src/__tests__/unit/resilience.test.ts +192 -0
  105. package/skills/octocode-research/src/__tests__/unit/responseFactory.test.ts +172 -0
  106. package/skills/octocode-research/src/__tests__/unit/responseParser.test.ts +288 -0
  107. package/skills/octocode-research/src/__tests__/unit/schemas.test.ts +509 -0
  108. package/skills/octocode-research/src/index.ts +4 -124
  109. package/skills/octocode-research/src/middleware/queryParser.ts +0 -26
  110. package/skills/octocode-research/src/routes/lsp.ts +58 -59
  111. package/skills/octocode-research/src/routes/package.ts +35 -65
  112. package/skills/octocode-research/src/routes/prompts.ts +3 -3
  113. package/skills/octocode-research/src/routes/tools.ts +8 -20
  114. package/skills/octocode-research/src/server-init.ts +30 -237
  115. package/skills/octocode-research/src/server.ts +50 -23
  116. package/skills/octocode-research/src/types/errorGuards.ts +9 -80
  117. package/skills/octocode-research/src/types/guards.ts +0 -28
  118. package/skills/octocode-research/src/types/mcp.ts +11 -66
  119. package/skills/octocode-research/src/types/responses.ts +11 -129
  120. package/skills/octocode-research/src/utils/circuitBreaker.ts +0 -21
  121. package/skills/octocode-research/src/utils/logger.ts +1 -97
  122. package/skills/octocode-research/src/utils/resilience.ts +2 -12
  123. package/skills/octocode-research/src/utils/responseFactory.ts +0 -42
  124. package/skills/octocode-research/src/utils/responseParser.ts +3 -25
  125. package/skills/octocode-research/src/utils/retry.ts +0 -63
  126. package/skills/octocode-research/src/utils/routeFactory.ts +1 -1
  127. package/skills/octocode-research/src/validation/httpPreprocess.ts +0 -3
  128. package/skills/octocode-research/src/validation/index.ts +0 -1
  129. package/skills/octocode-research/src/validation/schemas.ts +0 -63
  130. package/skills/octocode-research/src/validation/toolCallSchema.ts +3 -3
  131. package/skills/octocode-research/tsdown.config.ts +4 -0
  132. package/skills/octocode-research/vitest.config.ts +3 -0
  133. package/skills/octocode-code-engineer/.plan/VALIDATED_PLAN.md +0 -223
  134. package/skills/octocode-code-engineer/README.md +0 -178
  135. package/skills/octocode-code-engineer/SKILL.md +0 -418
  136. package/skills/octocode-code-engineer/minify-scripts.mjs +0 -32
  137. package/skills/octocode-code-engineer/references/agent-ast-reading-rfc.md +0 -95
  138. package/skills/octocode-code-engineer/references/architecture-techniques.md +0 -121
  139. package/skills/octocode-code-engineer/references/ast-search.md +0 -210
  140. package/skills/octocode-code-engineer/references/ast-tree-search.md +0 -151
  141. package/skills/octocode-code-engineer/references/concepts.md +0 -107
  142. package/skills/octocode-code-engineer/references/finding-categories.md +0 -128
  143. package/skills/octocode-code-engineer/references/improvement-roadmap.md +0 -304
  144. package/skills/octocode-code-engineer/references/playbooks.md +0 -204
  145. package/skills/octocode-code-engineer/references/present-results.md +0 -136
  146. package/skills/octocode-code-engineer/references/tool-workflows.md +0 -566
  147. package/skills/octocode-code-engineer/references/validate-investigate.md +0 -225
  148. package/skills/octocode-code-engineer/scripts/analysis/dependencies.js +0 -1
  149. package/skills/octocode-code-engineer/scripts/analysis/dependency-summary.js +0 -1
  150. package/skills/octocode-code-engineer/scripts/analysis/discovery.js +0 -1
  151. package/skills/octocode-code-engineer/scripts/analysis/graph-analytics.js +0 -1
  152. package/skills/octocode-code-engineer/scripts/analysis/semantic.js +0 -1
  153. package/skills/octocode-code-engineer/scripts/ast/helpers.js +0 -1
  154. package/skills/octocode-code-engineer/scripts/ast/metrics.js +0 -1
  155. package/skills/octocode-code-engineer/scripts/ast/search.js +0 -2
  156. package/skills/octocode-code-engineer/scripts/ast/tree-search.js +0 -2
  157. package/skills/octocode-code-engineer/scripts/ast/tree-sitter.js +0 -1
  158. package/skills/octocode-code-engineer/scripts/ast/ts-analyzer.js +0 -1
  159. package/skills/octocode-code-engineer/scripts/collectors/chains.js +0 -1
  160. package/skills/octocode-code-engineer/scripts/collectors/effects.js +0 -1
  161. package/skills/octocode-code-engineer/scripts/collectors/input-sources.js +0 -1
  162. package/skills/octocode-code-engineer/scripts/collectors/performance.js +0 -1
  163. package/skills/octocode-code-engineer/scripts/collectors/prototype-pollution.js +0 -1
  164. package/skills/octocode-code-engineer/scripts/collectors/security.js +0 -1
  165. package/skills/octocode-code-engineer/scripts/collectors/test-profile.js +0 -1
  166. package/skills/octocode-code-engineer/scripts/common/is-direct-run.js +0 -1
  167. package/skills/octocode-code-engineer/scripts/common/utils.js +0 -1
  168. package/skills/octocode-code-engineer/scripts/detectors/code-quality.js +0 -1
  169. package/skills/octocode-code-engineer/scripts/detectors/cohesion.js +0 -1
  170. package/skills/octocode-code-engineer/scripts/detectors/coupling.js +0 -1
  171. package/skills/octocode-code-engineer/scripts/detectors/cycle.js +0 -1
  172. package/skills/octocode-code-engineer/scripts/detectors/dead-code.js +0 -1
  173. package/skills/octocode-code-engineer/scripts/detectors/import-style.js +0 -1
  174. package/skills/octocode-code-engineer/scripts/detectors/index.js +0 -1
  175. package/skills/octocode-code-engineer/scripts/detectors/security.js +0 -1
  176. package/skills/octocode-code-engineer/scripts/detectors/semantic.js +0 -1
  177. package/skills/octocode-code-engineer/scripts/detectors/shared.js +0 -1
  178. package/skills/octocode-code-engineer/scripts/detectors/test-quality.js +0 -1
  179. package/skills/octocode-code-engineer/scripts/index.js +0 -1
  180. package/skills/octocode-code-engineer/scripts/pipeline/cache.js +0 -1
  181. package/skills/octocode-code-engineer/scripts/pipeline/cli.js +0 -1
  182. package/skills/octocode-code-engineer/scripts/pipeline/main.js +0 -2
  183. package/skills/octocode-code-engineer/scripts/reporting/analysis.js +0 -1
  184. package/skills/octocode-code-engineer/scripts/reporting/summary-md.js +0 -1
  185. package/skills/octocode-code-engineer/scripts/reporting/writer.js +0 -1
  186. package/skills/octocode-code-engineer/scripts/types/constants.js +0 -1
  187. package/skills/octocode-code-engineer/scripts/types/index.js +0 -1
  188. package/skills/octocode-code-engineer/scripts/types/interfaces.js +0 -1
  189. package/skills/octocode-code-engineer/src/analysis/dependencies.ts +0 -406
  190. package/skills/octocode-code-engineer/src/index.ts +0 -403
  191. package/skills/octocode-code-engineer/src/reporting/summary-md.test.ts +0 -421
  192. package/skills/octocode-code-engineer/src/reporting/summary-md.ts +0 -714
  193. package/skills/octocode-code-engineer/src/types/interfaces.ts +0 -682
  194. package/skills/octocode-research/src/types/toolTypes.ts +0 -33
  195. package/skills/octocode-research/src/utils/logEmoji.ts +0 -103
  196. /package/skills/{octocode-code-engineer → octocode-engineer}/.octocode/rfc/RFC-code-engineer-weakness-fixes.md +0 -0
  197. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/architecture.ts.html +0 -0
  198. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/ast-helpers.ts.html +0 -0
  199. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/ast-search.ts.html +0 -0
  200. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/base.css +0 -0
  201. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/block-navigation.js +0 -0
  202. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/cache.ts.html +0 -0
  203. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/cli.ts.html +0 -0
  204. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/clover.xml +0 -0
  205. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-effects.ts.html +0 -0
  206. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-input-sources.ts.html +0 -0
  207. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-performance.ts.html +0 -0
  208. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-prototype-pollution.ts.html +0 -0
  209. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-security.ts.html +0 -0
  210. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-test-profile.ts.html +0 -0
  211. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/coverage-final.json +0 -0
  212. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/dependencies.ts.html +0 -0
  213. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/dependency-summary.ts.html +0 -0
  214. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/discovery.ts.html +0 -0
  215. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/favicon.png +0 -0
  216. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/graph-analytics.ts.html +0 -0
  217. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/index.html +0 -0
  218. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/index.ts.html +0 -0
  219. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/metrics.ts.html +0 -0
  220. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/pipeline.ts.html +0 -0
  221. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/prettify.css +0 -0
  222. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/prettify.js +0 -0
  223. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/report-analysis.ts.html +0 -0
  224. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/report-writer.ts.html +0 -0
  225. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/security-detectors.ts.html +0 -0
  226. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/semantic-detectors.ts.html +0 -0
  227. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/semantic.ts.html +0 -0
  228. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/sort-arrow-sprite.png +0 -0
  229. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/sorter.js +0 -0
  230. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/summary-md.ts.html +0 -0
  231. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/test-quality-detectors.ts.html +0 -0
  232. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/tree-sitter-analyzer.ts.html +0 -0
  233. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/ts-analyzer.ts.html +0 -0
  234. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/types.ts.html +0 -0
  235. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/utils.ts.html +0 -0
  236. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/dependencies.test.ts +0 -0
  237. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/dependency-summary.test.ts +0 -0
  238. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/dependency-summary.ts +0 -0
  239. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/graph-analytics.test.ts +0 -0
  240. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/graph-analytics.ts +0 -0
  241. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/semantic.test.ts +0 -0
  242. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/semantic.ts +0 -0
  243. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/helpers.test.ts +0 -0
  244. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/helpers.ts +0 -0
  245. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/metrics.test.ts +0 -0
  246. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/metrics.ts +0 -0
  247. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/tree-search.test.ts +0 -0
  248. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/tree-search.ts +0 -0
  249. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/chains.ts +0 -0
  250. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/effects.test.ts +0 -0
  251. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/effects.ts +0 -0
  252. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/input-sources.test.ts +0 -0
  253. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/input-sources.ts +0 -0
  254. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/performance.test.ts +0 -0
  255. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/performance.ts +0 -0
  256. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/prototype-pollution.test.ts +0 -0
  257. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/prototype-pollution.ts +0 -0
  258. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/test-profile.test.ts +0 -0
  259. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/test-profile.ts +0 -0
  260. /package/skills/{octocode-code-engineer → octocode-engineer}/src/common/is-direct-run.test.ts +0 -0
  261. /package/skills/{octocode-code-engineer → octocode-engineer}/src/common/is-direct-run.ts +0 -0
  262. /package/skills/{octocode-code-engineer → octocode-engineer}/src/common/utils.test.ts +0 -0
  263. /package/skills/{octocode-code-engineer → octocode-engineer}/src/common/utils.ts +0 -0
  264. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/cohesion.ts +0 -0
  265. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/coupling.ts +0 -0
  266. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/cycle.ts +0 -0
  267. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/dead-code.ts +0 -0
  268. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/import-style.ts +0 -0
  269. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/index.test.ts +0 -0
  270. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/security.test.ts +0 -0
  271. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/security.ts +0 -0
  272. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/semantic.ts +0 -0
  273. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/shared.ts +0 -0
  274. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/test-quality.test.ts +0 -0
  275. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/test-quality.ts +0 -0
  276. /package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/cache.test.ts +0 -0
  277. /package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/cache.ts +0 -0
  278. /package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/main.test.ts +0 -0
  279. /package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline.test.ts +0 -0
  280. /package/skills/{octocode-code-engineer → octocode-engineer}/src/reporting/analysis.test.ts +0 -0
  281. /package/skills/{octocode-code-engineer → octocode-engineer}/src/reporting/analysis.ts +0 -0
  282. /package/skills/{octocode-code-engineer → octocode-engineer}/vitest.config.ts +0 -0
@@ -0,0 +1 @@
1
+ {"schemaVersion":"1.1.0","generatedAt":"2026-03-22T10:40:13.784Z","findings":[{"id":"AST-ISSUE-0014","severity":"high","category":"dead-export","file":"src/types/errorGuards.ts","lineStart":68,"lineEnd":75,"title":"Unused export: hasMessage","reason":"Exported symbol \"hasMessage\" has no observed import or re-export usage in production or test files.","files":["src/types/errorGuards.ts:68-75"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"hasMessage","lineHint":68,"file":"src/types/errorGuards.ts","expectedResult":"confirm \"hasMessage\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/errorGuards.ts:68-75"},"correlatedSignals":["hot-file","paired:untested-critical-code","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"hasMessage\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0015","severity":"high","category":"dead-export","file":"src/types/errorGuards.ts","lineStart":80,"lineEnd":88,"title":"Unused export: hasHeaders","reason":"Exported symbol \"hasHeaders\" has no observed import or re-export usage in production or test files.","files":["src/types/errorGuards.ts:80-88"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"hasHeaders","lineHint":80,"file":"src/types/errorGuards.ts","expectedResult":"confirm \"hasHeaders\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/errorGuards.ts:80-88"},"correlatedSignals":["hot-file","paired:untested-critical-code","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"hasHeaders\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0016","severity":"high","category":"dead-export","file":"src/types/errorGuards.ts","lineStart":104,"lineEnd":106,"title":"Unused export: getErrorCode","reason":"Exported symbol \"getErrorCode\" has no observed import or re-export usage in production or test files.","files":["src/types/errorGuards.ts:104-106"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getErrorCode","lineHint":104,"file":"src/types/errorGuards.ts","expectedResult":"confirm \"getErrorCode\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/errorGuards.ts:104-106"},"correlatedSignals":["hot-file","paired:untested-critical-code","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"getErrorCode\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0017","severity":"high","category":"dead-export","file":"src/types/errorGuards.ts","lineStart":111,"lineEnd":113,"title":"Unused export: getErrorMessage","reason":"Exported symbol \"getErrorMessage\" has no observed import or re-export usage in production or test files.","files":["src/types/errorGuards.ts:111-113"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getErrorMessage","lineHint":111,"file":"src/types/errorGuards.ts","expectedResult":"confirm \"getErrorMessage\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/errorGuards.ts:111-113"},"correlatedSignals":["hot-file","paired:untested-critical-code","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"getErrorMessage\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0018","severity":"high","category":"dead-export","file":"src/types/guards.ts","lineStart":11,"lineEnd":13,"title":"Unused export: isNonEmptyString","reason":"Exported symbol \"isNonEmptyString\" has no observed import or re-export usage in production or test files.","files":["src/types/guards.ts:11-13"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isNonEmptyString","lineHint":11,"file":"src/types/guards.ts","expectedResult":"confirm \"isNonEmptyString\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/guards.ts:11-13"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"confirm \"isNonEmptyString\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0019","severity":"high","category":"dead-export","file":"src/types/guards.ts","lineStart":18,"lineEnd":20,"title":"Unused export: isPositiveNumber","reason":"Exported symbol \"isPositiveNumber\" has no observed import or re-export usage in production or test files.","files":["src/types/guards.ts:18-20"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isPositiveNumber","lineHint":18,"file":"src/types/guards.ts","expectedResult":"confirm \"isPositiveNumber\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/guards.ts:18-20"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"confirm \"isPositiveNumber\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0020","severity":"high","category":"dead-export","file":"src/types/guards.ts","lineStart":25,"lineEnd":27,"title":"Unused export: isNonNegativeNumber","reason":"Exported symbol \"isNonNegativeNumber\" has no observed import or re-export usage in production or test files.","files":["src/types/guards.ts:25-27"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isNonNegativeNumber","lineHint":25,"file":"src/types/guards.ts","expectedResult":"confirm \"isNonNegativeNumber\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/guards.ts:25-27"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"confirm \"isNonNegativeNumber\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0021","severity":"high","category":"dead-export","file":"src/types/guards.ts","lineStart":32,"lineEnd":34,"title":"Unused export: isStringArray","reason":"Exported symbol \"isStringArray\" has no observed import or re-export usage in production or test files.","files":["src/types/guards.ts:32-34"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isStringArray","lineHint":32,"file":"src/types/guards.ts","expectedResult":"confirm \"isStringArray\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/guards.ts:32-34"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"confirm \"isStringArray\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0022","severity":"high","category":"dead-export","file":"src/types/responses.ts","lineStart":150,"lineEnd":157,"title":"Unused export: isSearchResult","reason":"Exported symbol \"isSearchResult\" has no observed import or re-export usage in production or test files.","files":["src/types/responses.ts:150-157"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isSearchResult","lineHint":150,"file":"src/types/responses.ts","expectedResult":"confirm \"isSearchResult\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/responses.ts:150-157"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"isSearchResult\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0023","severity":"high","category":"dead-export","file":"src/types/responses.ts","lineStart":162,"lineEnd":170,"title":"Unused export: isLspDefinition","reason":"Exported symbol \"isLspDefinition\" has no observed import or re-export usage in production or test files.","files":["src/types/responses.ts:162-170"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isLspDefinition","lineHint":162,"file":"src/types/responses.ts","expectedResult":"confirm \"isLspDefinition\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/responses.ts:162-170"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"isLspDefinition\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0024","severity":"high","category":"dead-export","file":"src/types/toolTypes.ts","lineStart":29,"lineEnd":33,"title":"Unused export: toQueryParams","reason":"Exported symbol \"toQueryParams\" has no observed import or re-export usage in production or test files.","files":["src/types/toolTypes.ts:29-33"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"toQueryParams","lineHint":29,"file":"src/types/toolTypes.ts","expectedResult":"confirm \"toQueryParams\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/toolTypes.ts:29-33"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"toQueryParams\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0025","severity":"high","category":"dead-export","file":"src/utils/circuitBreaker.ts","lineStart":467,"lineEnd":474,"title":"Unused export: clearCircuit","reason":"Exported symbol \"clearCircuit\" has no observed import or re-export usage in production or test files.","files":["src/utils/circuitBreaker.ts:467-474"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"clearCircuit","lineHint":467,"file":"src/utils/circuitBreaker.ts","expectedResult":"confirm \"clearCircuit\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/circuitBreaker.ts:467-474"},"correlatedSignals":["hot-file","critical-path-context","paired:prototype-pollution-risk","paired:semantic-dead-export","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"clearCircuit\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0026","severity":"high","category":"dead-export","file":"src/utils/circuitBreaker.ts","lineStart":490,"lineEnd":492,"title":"Unused export: getCircuitCount","reason":"Exported symbol \"getCircuitCount\" has no observed import or re-export usage in production or test files.","files":["src/utils/circuitBreaker.ts:490-492"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getCircuitCount","lineHint":490,"file":"src/utils/circuitBreaker.ts","expectedResult":"confirm \"getCircuitCount\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/circuitBreaker.ts:490-492"},"correlatedSignals":["hot-file","critical-path-context","paired:prototype-pollution-risk","paired:semantic-dead-export","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"getCircuitCount\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0027","severity":"high","category":"dead-export","file":"src/utils/logEmoji.ts","lineStart":20,"lineEnd":25,"title":"Unused export: shouldUseEmoji","reason":"Exported symbol \"shouldUseEmoji\" has no observed import or re-export usage in production or test files.","files":["src/utils/logEmoji.ts:20-25"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"shouldUseEmoji","lineHint":20,"file":"src/utils/logEmoji.ts","expectedResult":"confirm \"shouldUseEmoji\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/logEmoji.ts:20-25"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"shouldUseEmoji\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0028","severity":"high","category":"dead-export","file":"src/utils/logEmoji.ts","lineStart":82,"lineEnd":85,"title":"Unused export: getLogEmoji","reason":"Exported symbol \"getLogEmoji\" has no observed import or re-export usage in production or test files.","files":["src/utils/logEmoji.ts:82-85"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getLogEmoji","lineHint":82,"file":"src/utils/logEmoji.ts","expectedResult":"confirm \"getLogEmoji\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/logEmoji.ts:82-85"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"getLogEmoji\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0029","severity":"high","category":"dead-export","file":"src/utils/logEmoji.ts","lineStart":101,"lineEnd":103,"title":"Unused export: prefixLog","reason":"Exported symbol \"prefixLog\" has no observed import or re-export usage in production or test files.","files":["src/utils/logEmoji.ts:101-103"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"prefixLog","lineHint":101,"file":"src/utils/logEmoji.ts","expectedResult":"confirm \"prefixLog\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/logEmoji.ts:101-103"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"prefixLog\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0030","severity":"high","category":"dead-export","file":"src/utils/logger.ts","lineStart":285,"lineEnd":302,"title":"Unused export: logToolSuccess","reason":"Exported symbol \"logToolSuccess\" has no observed import or re-export usage in production or test files.","files":["src/utils/logger.ts:285-302"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"logToolSuccess","lineHint":285,"file":"src/utils/logger.ts","expectedResult":"confirm \"logToolSuccess\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/logger.ts:285-302"},"correlatedSignals":["hot-file","critical-path-context","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"confirm \"logToolSuccess\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0031","severity":"high","category":"dead-export","file":"src/utils/logger.ts","lineStart":307,"lineEnd":324,"title":"Unused export: logToolError","reason":"Exported symbol \"logToolError\" has no observed import or re-export usage in production or test files.","files":["src/utils/logger.ts:307-324"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"logToolError","lineHint":307,"file":"src/utils/logger.ts","expectedResult":"confirm \"logToolError\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/logger.ts:307-324"},"correlatedSignals":["hot-file","critical-path-context","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"confirm \"logToolError\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0032","severity":"high","category":"dead-export","file":"src/utils/logger.ts","lineStart":340,"lineEnd":342,"title":"Unused export: getErrorLogPath","reason":"Exported symbol \"getErrorLogPath\" has no observed import or re-export usage in production or test files.","files":["src/utils/logger.ts:340-342"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getErrorLogPath","lineHint":340,"file":"src/utils/logger.ts","expectedResult":"confirm \"getErrorLogPath\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/logger.ts:340-342"},"correlatedSignals":["hot-file","critical-path-context","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"confirm \"getErrorLogPath\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0033","severity":"high","category":"dead-export","file":"src/utils/logger.ts","lineStart":347,"lineEnd":349,"title":"Unused export: getToolsLogPath","reason":"Exported symbol \"getToolsLogPath\" has no observed import or re-export usage in production or test files.","files":["src/utils/logger.ts:347-349"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getToolsLogPath","lineHint":347,"file":"src/utils/logger.ts","expectedResult":"confirm \"getToolsLogPath\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/logger.ts:347-349"},"correlatedSignals":["hot-file","critical-path-context","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"confirm \"getToolsLogPath\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0034","severity":"high","category":"dead-export","file":"src/utils/logger.ts","lineStart":367,"lineEnd":392,"title":"Unused export: createToolLogger","reason":"Exported symbol \"createToolLogger\" has no observed import or re-export usage in production or test files.","files":["src/utils/logger.ts:367-392"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"createToolLogger","lineHint":367,"file":"src/utils/logger.ts","expectedResult":"confirm \"createToolLogger\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/logger.ts:367-392"},"correlatedSignals":["hot-file","critical-path-context","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"confirm \"createToolLogger\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0035","severity":"high","category":"dead-export","file":"src/utils/responseFactory.ts","lineStart":19,"lineEnd":21,"title":"Unused export: extractFileMatches","reason":"Exported symbol \"extractFileMatches\" has no observed import or re-export usage in production or test files.","files":["src/utils/responseFactory.ts:19-21"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"extractFileMatches","lineHint":19,"file":"src/utils/responseFactory.ts","expectedResult":"confirm \"extractFileMatches\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/responseFactory.ts:19-21"},"correlatedSignals":["hot-file","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:architecture-sdp-violation","paired:feature-envy","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"confirm \"extractFileMatches\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0036","severity":"high","category":"dead-export","file":"src/utils/responseFactory.ts","lineStart":26,"lineEnd":28,"title":"Unused export: extractPaginationInfo","reason":"Exported symbol \"extractPaginationInfo\" has no observed import or re-export usage in production or test files.","files":["src/utils/responseFactory.ts:26-28"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"extractPaginationInfo","lineHint":26,"file":"src/utils/responseFactory.ts","expectedResult":"confirm \"extractPaginationInfo\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/responseFactory.ts:26-28"},"correlatedSignals":["hot-file","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:architecture-sdp-violation","paired:feature-envy","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"confirm \"extractPaginationInfo\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0037","severity":"high","category":"dead-export","file":"src/utils/responseFactory.ts","lineStart":33,"lineEnd":35,"title":"Unused export: extractMatchCount","reason":"Exported symbol \"extractMatchCount\" has no observed import or re-export usage in production or test files.","files":["src/utils/responseFactory.ts:33-35"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"extractMatchCount","lineHint":33,"file":"src/utils/responseFactory.ts","expectedResult":"confirm \"extractMatchCount\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/responseFactory.ts:33-35"},"correlatedSignals":["hot-file","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:architecture-sdp-violation","paired:feature-envy","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"confirm \"extractMatchCount\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0038","severity":"high","category":"dead-export","file":"src/utils/responseParser.ts","lineStart":178,"lineEnd":186,"title":"Unused export: getDataField","reason":"Exported symbol \"getDataField\" has no observed import or re-export usage in production or test files.","files":["src/utils/responseParser.ts:178-186"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getDataField","lineHint":178,"file":"src/utils/responseParser.ts","expectedResult":"confirm \"getDataField\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/responseParser.ts:178-186"},"correlatedSignals":["hot-file","paired:cognitive-complexity","paired:semantic-dead-export","paired:untested-critical-code","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"getDataField\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0039","severity":"high","category":"dead-export","file":"src/utils/retry.ts","lineStart":139,"lineEnd":145,"title":"Unused export: withCategoryRetry","reason":"Exported symbol \"withCategoryRetry\" has no observed import or re-export usage in production or test files.","files":["src/utils/retry.ts:139-145"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"withCategoryRetry","lineHint":139,"file":"src/utils/retry.ts","expectedResult":"confirm \"withCategoryRetry\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/retry.ts:139-145"},"correlatedSignals":["hot-file","paired:await-in-loop","paired:feature-envy","paired:semantic-dead-export"],"recommendedValidation":{"summary":"confirm \"withCategoryRetry\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0040","severity":"high","category":"dead-export","file":"src/utils/retry.ts","lineStart":232,"lineEnd":240,"title":"Unused export: isSymbolNotFound","reason":"Exported symbol \"isSymbolNotFound\" has no observed import or re-export usage in production or test files.","files":["src/utils/retry.ts:232-240"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isSymbolNotFound","lineHint":232,"file":"src/utils/retry.ts","expectedResult":"confirm \"isSymbolNotFound\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/retry.ts:232-240"},"correlatedSignals":["hot-file","paired:await-in-loop","paired:feature-envy","paired:semantic-dead-export"],"recommendedValidation":{"summary":"confirm \"isSymbolNotFound\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0041","severity":"high","category":"dead-export","file":"src/utils/retry.ts","lineStart":252,"lineEnd":266,"title":"Unused export: getRetryAfter","reason":"Exported symbol \"getRetryAfter\" has no observed import or re-export usage in production or test files.","files":["src/utils/retry.ts:252-266"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getRetryAfter","lineHint":252,"file":"src/utils/retry.ts","expectedResult":"confirm \"getRetryAfter\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/retry.ts:252-266"},"correlatedSignals":["hot-file","paired:await-in-loop","paired:feature-envy","paired:semantic-dead-export"],"recommendedValidation":{"summary":"confirm \"getRetryAfter\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0042","severity":"high","category":"dead-export","file":"src/utils/retry.ts","lineStart":271,"lineEnd":280,"title":"Unused export: isRecoverable","reason":"Exported symbol \"isRecoverable\" has no observed import or re-export usage in production or test files.","files":["src/utils/retry.ts:271-280"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isRecoverable","lineHint":271,"file":"src/utils/retry.ts","expectedResult":"confirm \"isRecoverable\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/retry.ts:271-280"},"correlatedSignals":["hot-file","paired:await-in-loop","paired:feature-envy","paired:semantic-dead-export"],"recommendedValidation":{"summary":"confirm \"isRecoverable\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0043","severity":"high","category":"dead-export","file":"src/validation/toolCallSchema.ts","lineStart":38,"lineEnd":43,"title":"Unused export: toolCallBodySchema","reason":"Exported symbol \"toolCallBodySchema\" has no observed import or re-export usage in production or test files.","files":["src/validation/toolCallSchema.ts:38-43"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"toolCallBodySchema","lineHint":38,"file":"src/validation/toolCallSchema.ts","expectedResult":"confirm \"toolCallBodySchema\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/validation/toolCallSchema.ts:38-43"},"correlatedSignals":["paired:input-passthrough-risk","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"toolCallBodySchema\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0058","severity":"high","category":"semantic-dead-export","file":"src/types/guards.ts","lineStart":18,"lineEnd":20,"title":"Semantically dead export: isPositiveNumber","reason":"Exported symbol \"isPositiveNumber\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/guards.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isPositiveNumber","lineHint":18,"file":"src/types/guards.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/guards.ts:18-20"},"correlatedSignals":["hot-file","paired:dead-export","paired:distance-from-main-sequence","paired:unreachable-module","paired:untested-critical-code","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0059","severity":"high","category":"semantic-dead-export","file":"src/types/guards.ts","lineStart":25,"lineEnd":27,"title":"Semantically dead export: isNonNegativeNumber","reason":"Exported symbol \"isNonNegativeNumber\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/guards.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isNonNegativeNumber","lineHint":25,"file":"src/types/guards.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/guards.ts:25-27"},"correlatedSignals":["hot-file","paired:dead-export","paired:distance-from-main-sequence","paired:unreachable-module","paired:untested-critical-code","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0060","severity":"high","category":"semantic-dead-export","file":"src/types/guards.ts","lineStart":32,"lineEnd":34,"title":"Semantically dead export: isStringArray","reason":"Exported symbol \"isStringArray\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/guards.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isStringArray","lineHint":32,"file":"src/types/guards.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/guards.ts:32-34"},"correlatedSignals":["hot-file","paired:dead-export","paired:distance-from-main-sequence","paired:unreachable-module","paired:untested-critical-code","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0061","severity":"high","category":"semantic-dead-export","file":"src/types/mcp.ts","lineStart":69,"lineEnd":72,"title":"Semantically dead export: ListToolsResponse","reason":"Exported symbol \"ListToolsResponse\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/mcp.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ListToolsResponse","lineHint":69,"file":"src/types/mcp.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/mcp.ts:69-72"},"correlatedSignals":["paired:dead-export","paired:over-abstraction","paired:move-to-caller","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0062","severity":"high","category":"semantic-dead-export","file":"src/types/mcp.ts","lineStart":77,"lineEnd":80,"title":"Semantically dead export: ListPromptsResponse","reason":"Exported symbol \"ListPromptsResponse\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/mcp.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ListPromptsResponse","lineHint":77,"file":"src/types/mcp.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/mcp.ts:77-80"},"correlatedSignals":["paired:dead-export","paired:over-abstraction","paired:move-to-caller","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0063","severity":"high","category":"semantic-dead-export","file":"src/types/responses.ts","lineStart":93,"lineEnd":95,"title":"Semantically dead export: LspReference","reason":"Exported symbol \"LspReference\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/responses.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LspReference","lineHint":93,"file":"src/types/responses.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/responses.ts:93-95"},"correlatedSignals":["paired:dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0064","severity":"high","category":"semantic-dead-export","file":"src/types/responses.ts","lineStart":100,"lineEnd":106,"title":"Semantically dead export: LspCallHierarchyItem","reason":"Exported symbol \"LspCallHierarchyItem\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/responses.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LspCallHierarchyItem","lineHint":100,"file":"src/types/responses.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/responses.ts:100-106"},"correlatedSignals":["paired:dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0065","severity":"high","category":"semantic-dead-export","file":"src/types/responses.ts","lineStart":115,"lineEnd":120,"title":"Semantically dead export: RepoStructure","reason":"Exported symbol \"RepoStructure\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/responses.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"RepoStructure","lineHint":115,"file":"src/types/responses.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/responses.ts:115-120"},"correlatedSignals":["paired:dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0066","severity":"high","category":"semantic-dead-export","file":"src/types/responses.ts","lineStart":150,"lineEnd":157,"title":"Semantically dead export: isSearchResult","reason":"Exported symbol \"isSearchResult\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/responses.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isSearchResult","lineHint":150,"file":"src/types/responses.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/responses.ts:150-157"},"correlatedSignals":["paired:dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0067","severity":"high","category":"semantic-dead-export","file":"src/types/responses.ts","lineStart":162,"lineEnd":170,"title":"Semantically dead export: isLspDefinition","reason":"Exported symbol \"isLspDefinition\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/responses.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isLspDefinition","lineHint":162,"file":"src/types/responses.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/responses.ts:162-170"},"correlatedSignals":["paired:dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0068","severity":"high","category":"semantic-dead-export","file":"src/types/toolTypes.ts","lineStart":29,"lineEnd":33,"title":"Semantically dead export: toQueryParams","reason":"Exported symbol \"toQueryParams\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/types/toolTypes.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"toQueryParams","lineHint":29,"file":"src/types/toolTypes.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/types/toolTypes.ts:29-33"},"correlatedSignals":["paired:dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0069","severity":"high","category":"semantic-dead-export","file":"src/utils/circuitBreaker.ts","lineStart":248,"lineEnd":261,"title":"Semantically dead export: getCircuitState","reason":"Exported symbol \"getCircuitState\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/circuitBreaker.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getCircuitState","lineHint":248,"file":"src/utils/circuitBreaker.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/circuitBreaker.ts:248-261"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:prototype-pollution-risk","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0070","severity":"high","category":"semantic-dead-export","file":"src/utils/circuitBreaker.ts","lineStart":266,"lineEnd":273,"title":"Semantically dead export: resetCircuit","reason":"Exported symbol \"resetCircuit\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/circuitBreaker.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"resetCircuit","lineHint":266,"file":"src/utils/circuitBreaker.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/circuitBreaker.ts:266-273"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:prototype-pollution-risk","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0071","severity":"high","category":"semantic-dead-export","file":"src/utils/circuitBreaker.ts","lineStart":467,"lineEnd":474,"title":"Semantically dead export: clearCircuit","reason":"Exported symbol \"clearCircuit\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/circuitBreaker.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"clearCircuit","lineHint":467,"file":"src/utils/circuitBreaker.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/circuitBreaker.ts:467-474"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:prototype-pollution-risk","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0072","severity":"high","category":"semantic-dead-export","file":"src/utils/circuitBreaker.ts","lineStart":490,"lineEnd":492,"title":"Semantically dead export: getCircuitCount","reason":"Exported symbol \"getCircuitCount\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/circuitBreaker.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getCircuitCount","lineHint":490,"file":"src/utils/circuitBreaker.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/circuitBreaker.ts:490-492"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:prototype-pollution-risk","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0073","severity":"high","category":"semantic-dead-export","file":"src/utils/logEmoji.ts","lineStart":101,"lineEnd":103,"title":"Semantically dead export: prefixLog","reason":"Exported symbol \"prefixLog\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/logEmoji.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"prefixLog","lineHint":101,"file":"src/utils/logEmoji.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/logEmoji.ts:101-103"},"correlatedSignals":["paired:dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0074","severity":"high","category":"semantic-dead-export","file":"src/utils/logger.ts","lineStart":285,"lineEnd":302,"title":"Semantically dead export: logToolSuccess","reason":"Exported symbol \"logToolSuccess\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/logger.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"logToolSuccess","lineHint":285,"file":"src/utils/logger.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/logger.ts:285-302"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0075","severity":"high","category":"semantic-dead-export","file":"src/utils/logger.ts","lineStart":307,"lineEnd":324,"title":"Semantically dead export: logToolError","reason":"Exported symbol \"logToolError\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/logger.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"logToolError","lineHint":307,"file":"src/utils/logger.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/logger.ts:307-324"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0076","severity":"high","category":"semantic-dead-export","file":"src/utils/logger.ts","lineStart":340,"lineEnd":342,"title":"Semantically dead export: getErrorLogPath","reason":"Exported symbol \"getErrorLogPath\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/logger.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getErrorLogPath","lineHint":340,"file":"src/utils/logger.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/logger.ts:340-342"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0077","severity":"high","category":"semantic-dead-export","file":"src/utils/logger.ts","lineStart":347,"lineEnd":349,"title":"Semantically dead export: getToolsLogPath","reason":"Exported symbol \"getToolsLogPath\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/logger.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getToolsLogPath","lineHint":347,"file":"src/utils/logger.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/logger.ts:347-349"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0078","severity":"high","category":"semantic-dead-export","file":"src/utils/logger.ts","lineStart":367,"lineEnd":392,"title":"Semantically dead export: createToolLogger","reason":"Exported symbol \"createToolLogger\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/logger.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"createToolLogger","lineHint":367,"file":"src/utils/logger.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/logger.ts:367-392"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0079","severity":"high","category":"semantic-dead-export","file":"src/utils/resilience.ts","lineStart":58,"lineEnd":63,"title":"Semantically dead export: ResilienceConfig","reason":"Exported symbol \"ResilienceConfig\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/resilience.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ResilienceConfig","lineHint":58,"file":"src/utils/resilience.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/resilience.ts:58-63"},"correlatedSignals":["hot-file","critical-path-context","paired:untested-critical-code","paired:dead-export"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0080","severity":"high","category":"semantic-dead-export","file":"src/utils/responseFactory.ts","lineStart":19,"lineEnd":21,"title":"Semantically dead export: extractFileMatches","reason":"Exported symbol \"extractFileMatches\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/responseFactory.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"extractFileMatches","lineHint":19,"file":"src/utils/responseFactory.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/responseFactory.ts:19-21"},"correlatedSignals":["hot-file","paired:dead-export","paired:unreachable-module","paired:untested-critical-code","paired:architecture-sdp-violation","paired:feature-envy","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0081","severity":"high","category":"semantic-dead-export","file":"src/utils/responseFactory.ts","lineStart":26,"lineEnd":28,"title":"Semantically dead export: extractPaginationInfo","reason":"Exported symbol \"extractPaginationInfo\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/responseFactory.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"extractPaginationInfo","lineHint":26,"file":"src/utils/responseFactory.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/responseFactory.ts:26-28"},"correlatedSignals":["hot-file","paired:dead-export","paired:unreachable-module","paired:untested-critical-code","paired:architecture-sdp-violation","paired:feature-envy","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0082","severity":"high","category":"semantic-dead-export","file":"src/utils/responseFactory.ts","lineStart":33,"lineEnd":35,"title":"Semantically dead export: extractMatchCount","reason":"Exported symbol \"extractMatchCount\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/responseFactory.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"extractMatchCount","lineHint":33,"file":"src/utils/responseFactory.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/responseFactory.ts:33-35"},"correlatedSignals":["hot-file","paired:dead-export","paired:unreachable-module","paired:untested-critical-code","paired:architecture-sdp-violation","paired:feature-envy","paired:move-to-caller","paired:narrowable-type"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0083","severity":"high","category":"semantic-dead-export","file":"src/utils/responseParser.ts","lineStart":178,"lineEnd":186,"title":"Semantically dead export: getDataField","reason":"Exported symbol \"getDataField\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/responseParser.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getDataField","lineHint":178,"file":"src/utils/responseParser.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/responseParser.ts:178-186"},"correlatedSignals":["hot-file","paired:cognitive-complexity","paired:dead-export","paired:untested-critical-code","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0084","severity":"high","category":"semantic-dead-export","file":"src/utils/retry.ts","lineStart":139,"lineEnd":145,"title":"Semantically dead export: withCategoryRetry","reason":"Exported symbol \"withCategoryRetry\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/retry.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"withCategoryRetry","lineHint":139,"file":"src/utils/retry.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/retry.ts:139-145"},"correlatedSignals":["hot-file","paired:await-in-loop","paired:dead-export","paired:feature-envy"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0085","severity":"high","category":"semantic-dead-export","file":"src/utils/retry.ts","lineStart":232,"lineEnd":240,"title":"Semantically dead export: isSymbolNotFound","reason":"Exported symbol \"isSymbolNotFound\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/retry.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isSymbolNotFound","lineHint":232,"file":"src/utils/retry.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/retry.ts:232-240"},"correlatedSignals":["hot-file","paired:await-in-loop","paired:dead-export","paired:feature-envy"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0086","severity":"high","category":"semantic-dead-export","file":"src/utils/retry.ts","lineStart":252,"lineEnd":266,"title":"Semantically dead export: getRetryAfter","reason":"Exported symbol \"getRetryAfter\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/retry.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getRetryAfter","lineHint":252,"file":"src/utils/retry.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/retry.ts:252-266"},"correlatedSignals":["hot-file","paired:await-in-loop","paired:dead-export","paired:feature-envy"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0087","severity":"high","category":"semantic-dead-export","file":"src/utils/retry.ts","lineStart":271,"lineEnd":280,"title":"Semantically dead export: isRecoverable","reason":"Exported symbol \"isRecoverable\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/utils/retry.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isRecoverable","lineHint":271,"file":"src/utils/retry.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/utils/retry.ts:271-280"},"correlatedSignals":["hot-file","paired:await-in-loop","paired:dead-export","paired:feature-envy"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0088","severity":"high","category":"semantic-dead-export","file":"src/validation/httpPreprocess.ts","lineStart":155,"lineEnd":155,"title":"Semantically dead export: researchDefaults","reason":"Exported symbol \"researchDefaults\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/httpPreprocess.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"researchDefaults","lineHint":155,"file":"src/validation/httpPreprocess.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/httpPreprocess.ts:155-155"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:move-to-caller"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0089","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":543,"lineEnd":543,"title":"Semantically dead export: LocalSearchQuery","reason":"Exported symbol \"LocalSearchQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LocalSearchQuery","lineHint":543,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:543-543"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0090","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":544,"lineEnd":544,"title":"Semantically dead export: LocalContentQuery","reason":"Exported symbol \"LocalContentQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LocalContentQuery","lineHint":544,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:544-544"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0091","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":545,"lineEnd":545,"title":"Semantically dead export: LocalFindQuery","reason":"Exported symbol \"LocalFindQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LocalFindQuery","lineHint":545,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:545-545"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0092","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":546,"lineEnd":546,"title":"Semantically dead export: LocalStructureQuery","reason":"Exported symbol \"LocalStructureQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LocalStructureQuery","lineHint":546,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:546-546"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0093","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":548,"lineEnd":548,"title":"Semantically dead export: LspDefinitionQuery","reason":"Exported symbol \"LspDefinitionQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LspDefinitionQuery","lineHint":548,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:548-548"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0094","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":549,"lineEnd":549,"title":"Semantically dead export: LspReferencesQuery","reason":"Exported symbol \"LspReferencesQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LspReferencesQuery","lineHint":549,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:549-549"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0095","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":550,"lineEnd":550,"title":"Semantically dead export: LspCallsQuery","reason":"Exported symbol \"LspCallsQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LspCallsQuery","lineHint":550,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:550-550"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0096","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":552,"lineEnd":552,"title":"Semantically dead export: GithubSearchQuery","reason":"Exported symbol \"GithubSearchQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"GithubSearchQuery","lineHint":552,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:552-552"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0097","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":553,"lineEnd":553,"title":"Semantically dead export: GithubContentQuery","reason":"Exported symbol \"GithubContentQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"GithubContentQuery","lineHint":553,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:553-553"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0098","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":554,"lineEnd":554,"title":"Semantically dead export: GithubReposQuery","reason":"Exported symbol \"GithubReposQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"GithubReposQuery","lineHint":554,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:554-554"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0099","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":555,"lineEnd":555,"title":"Semantically dead export: GithubStructureQuery","reason":"Exported symbol \"GithubStructureQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"GithubStructureQuery","lineHint":555,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:555-555"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0100","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":556,"lineEnd":556,"title":"Semantically dead export: GithubPRsQuery","reason":"Exported symbol \"GithubPRsQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"GithubPRsQuery","lineHint":556,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:556-556"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0101","severity":"high","category":"semantic-dead-export","file":"src/validation/schemas.ts","lineStart":558,"lineEnd":558,"title":"Semantically dead export: PackageSearchQuery","reason":"Exported symbol \"PackageSearchQuery\" has zero semantic references across the entire program (confirmed via TypeChecker, not just import matching).","files":["src/validation/schemas.ts"],"suggestedFix":{"strategy":"Remove the export or delete the symbol if unused internally.","steps":["Verify the symbol is not used via dynamic imports or runtime reflection.","Remove the export keyword, or delete the symbol entirely if also unused locally.","Re-run scan to confirm finding is resolved."]},"impact":"Dead exports bloat the public API surface and confuse contributors.","tags":["architecture","dead-code","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"PackageSearchQuery","lineHint":558,"file":"src/validation/schemas.ts","expectedResult":"zero references confirms dead export"}],"ruleId":"hybrid.semantic-dead-export","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"semantic-dead-export","location":"src/validation/schemas.ts:558-558"},"correlatedSignals":["hot-file","paired:feature-envy","paired:god-module"],"recommendedValidation":{"summary":"zero references confirms dead export","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0137","severity":"medium","category":"dead-export","file":"src/types/errorGuards.ts","lineStart":17,"lineEnd":20,"title":"Unused export: ErrorWithStatus","reason":"Exported symbol \"ErrorWithStatus\" has no observed import or re-export usage in production or test files.","files":["src/types/errorGuards.ts:17-20"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ErrorWithStatus","lineHint":17,"file":"src/types/errorGuards.ts","expectedResult":"confirm \"ErrorWithStatus\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/errorGuards.ts:17-20"},"correlatedSignals":["hot-file","paired:untested-critical-code","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"ErrorWithStatus\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0138","severity":"medium","category":"dead-export","file":"src/types/errorGuards.ts","lineStart":25,"lineEnd":28,"title":"Unused export: ErrorWithCode","reason":"Exported symbol \"ErrorWithCode\" has no observed import or re-export usage in production or test files.","files":["src/types/errorGuards.ts:25-28"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ErrorWithCode","lineHint":25,"file":"src/types/errorGuards.ts","expectedResult":"confirm \"ErrorWithCode\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/errorGuards.ts:25-28"},"correlatedSignals":["hot-file","paired:untested-critical-code","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"ErrorWithCode\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0139","severity":"medium","category":"dead-export","file":"src/types/errorGuards.ts","lineStart":33,"lineEnd":35,"title":"Unused export: ErrorWithHeaders","reason":"Exported symbol \"ErrorWithHeaders\" has no observed import or re-export usage in production or test files.","files":["src/types/errorGuards.ts:33-35"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ErrorWithHeaders","lineHint":33,"file":"src/types/errorGuards.ts","expectedResult":"confirm \"ErrorWithHeaders\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/errorGuards.ts:33-35"},"correlatedSignals":["hot-file","paired:untested-critical-code","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"ErrorWithHeaders\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0140","severity":"medium","category":"dead-export","file":"src/types/mcp.ts","lineStart":7,"lineEnd":13,"title":"Unused export: JsonSchema","reason":"Exported symbol \"JsonSchema\" has no observed import or re-export usage in production or test files.","files":["src/types/mcp.ts:7-13"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"JsonSchema","lineHint":7,"file":"src/types/mcp.ts","expectedResult":"confirm \"JsonSchema\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/mcp.ts:7-13"},"correlatedSignals":["paired:semantic-dead-export","paired:over-abstraction","paired:move-to-caller","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"confirm \"JsonSchema\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0141","severity":"medium","category":"dead-export","file":"src/types/mcp.ts","lineStart":15,"lineEnd":29,"title":"Unused export: JsonSchemaProperty","reason":"Exported symbol \"JsonSchemaProperty\" has no observed import or re-export usage in production or test files.","files":["src/types/mcp.ts:15-29"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"JsonSchemaProperty","lineHint":15,"file":"src/types/mcp.ts","expectedResult":"confirm \"JsonSchemaProperty\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/mcp.ts:15-29"},"correlatedSignals":["paired:semantic-dead-export","paired:over-abstraction","paired:move-to-caller","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"confirm \"JsonSchemaProperty\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0142","severity":"medium","category":"dead-export","file":"src/types/mcp.ts","lineStart":43,"lineEnd":47,"title":"Unused export: McpPromptArgument","reason":"Exported symbol \"McpPromptArgument\" has no observed import or re-export usage in production or test files.","files":["src/types/mcp.ts:43-47"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"McpPromptArgument","lineHint":43,"file":"src/types/mcp.ts","expectedResult":"confirm \"McpPromptArgument\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/mcp.ts:43-47"},"correlatedSignals":["paired:semantic-dead-export","paired:over-abstraction","paired:move-to-caller","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"confirm \"McpPromptArgument\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0143","severity":"medium","category":"dead-export","file":"src/types/mcp.ts","lineStart":52,"lineEnd":56,"title":"Unused export: McpPrompt","reason":"Exported symbol \"McpPrompt\" has no observed import or re-export usage in production or test files.","files":["src/types/mcp.ts:52-56"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"McpPrompt","lineHint":52,"file":"src/types/mcp.ts","expectedResult":"confirm \"McpPrompt\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/mcp.ts:52-56"},"correlatedSignals":["paired:semantic-dead-export","paired:over-abstraction","paired:move-to-caller","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"confirm \"McpPrompt\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0144","severity":"medium","category":"dead-export","file":"src/types/mcp.ts","lineStart":61,"lineEnd":64,"title":"Unused export: ListResponseMeta","reason":"Exported symbol \"ListResponseMeta\" has no observed import or re-export usage in production or test files.","files":["src/types/mcp.ts:61-64"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ListResponseMeta","lineHint":61,"file":"src/types/mcp.ts","expectedResult":"confirm \"ListResponseMeta\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/mcp.ts:61-64"},"correlatedSignals":["paired:semantic-dead-export","paired:over-abstraction","paired:move-to-caller","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"confirm \"ListResponseMeta\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0145","severity":"medium","category":"dead-export","file":"src/types/mcp.ts","lineStart":69,"lineEnd":72,"title":"Unused export: ListToolsResponse","reason":"Exported symbol \"ListToolsResponse\" has no observed import or re-export usage in production or test files.","files":["src/types/mcp.ts:69-72"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ListToolsResponse","lineHint":69,"file":"src/types/mcp.ts","expectedResult":"confirm \"ListToolsResponse\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/mcp.ts:69-72"},"correlatedSignals":["paired:semantic-dead-export","paired:over-abstraction","paired:move-to-caller","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"confirm \"ListToolsResponse\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0146","severity":"medium","category":"dead-export","file":"src/types/mcp.ts","lineStart":77,"lineEnd":80,"title":"Unused export: ListPromptsResponse","reason":"Exported symbol \"ListPromptsResponse\" has no observed import or re-export usage in production or test files.","files":["src/types/mcp.ts:77-80"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ListPromptsResponse","lineHint":77,"file":"src/types/mcp.ts","expectedResult":"confirm \"ListPromptsResponse\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/mcp.ts:77-80"},"correlatedSignals":["paired:semantic-dead-export","paired:over-abstraction","paired:move-to-caller","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"confirm \"ListPromptsResponse\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0147","severity":"medium","category":"dead-export","file":"src/types/responses.ts","lineStart":17,"lineEnd":23,"title":"Unused export: MatchLocation","reason":"Exported symbol \"MatchLocation\" has no observed import or re-export usage in production or test files.","files":["src/types/responses.ts:17-23"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"MatchLocation","lineHint":17,"file":"src/types/responses.ts","expectedResult":"confirm \"MatchLocation\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/responses.ts:17-23"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"MatchLocation\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0148","severity":"medium","category":"dead-export","file":"src/types/responses.ts","lineStart":93,"lineEnd":95,"title":"Unused export: LspReference","reason":"Exported symbol \"LspReference\" has no observed import or re-export usage in production or test files.","files":["src/types/responses.ts:93-95"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LspReference","lineHint":93,"file":"src/types/responses.ts","expectedResult":"confirm \"LspReference\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/responses.ts:93-95"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"LspReference\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0149","severity":"medium","category":"dead-export","file":"src/types/responses.ts","lineStart":100,"lineEnd":106,"title":"Unused export: LspCallHierarchyItem","reason":"Exported symbol \"LspCallHierarchyItem\" has no observed import or re-export usage in production or test files.","files":["src/types/responses.ts:100-106"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LspCallHierarchyItem","lineHint":100,"file":"src/types/responses.ts","expectedResult":"confirm \"LspCallHierarchyItem\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/responses.ts:100-106"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"LspCallHierarchyItem\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0150","severity":"medium","category":"dead-export","file":"src/types/responses.ts","lineStart":115,"lineEnd":120,"title":"Unused export: RepoStructure","reason":"Exported symbol \"RepoStructure\" has no observed import or re-export usage in production or test files.","files":["src/types/responses.ts:115-120"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"RepoStructure","lineHint":115,"file":"src/types/responses.ts","expectedResult":"confirm \"RepoStructure\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/responses.ts:115-120"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"RepoStructure\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0151","severity":"medium","category":"dead-export","file":"src/types/toolTypes.ts","lineStart":11,"lineEnd":16,"title":"Unused export: BaseQueryParams","reason":"Exported symbol \"BaseQueryParams\" has no observed import or re-export usage in production or test files.","files":["src/types/toolTypes.ts:11-16"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"BaseQueryParams","lineHint":11,"file":"src/types/toolTypes.ts","expectedResult":"confirm \"BaseQueryParams\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/toolTypes.ts:11-16"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"BaseQueryParams\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0152","severity":"medium","category":"dead-export","file":"src/types/toolTypes.ts","lineStart":21,"lineEnd":23,"title":"Unused export: QueryParamsResult","reason":"Exported symbol \"QueryParamsResult\" has no observed import or re-export usage in production or test files.","files":["src/types/toolTypes.ts:21-23"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"QueryParamsResult","lineHint":21,"file":"src/types/toolTypes.ts","expectedResult":"confirm \"QueryParamsResult\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/types/toolTypes.ts:21-23"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"QueryParamsResult\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0153","severity":"medium","category":"dead-export","file":"src/utils/logEmoji.ts","lineStart":34,"lineEnd":49,"title":"Unused export: LogEmojiKey","reason":"Exported symbol \"LogEmojiKey\" has no observed import or re-export usage in production or test files.","files":["src/utils/logEmoji.ts:34-49"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LogEmojiKey","lineHint":34,"file":"src/utils/logEmoji.ts","expectedResult":"confirm \"LogEmojiKey\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/logEmoji.ts:34-49"},"correlatedSignals":["paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"LogEmojiKey\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0154","severity":"medium","category":"dead-export","file":"src/utils/logger.ts","lineStart":262,"lineEnd":272,"title":"Unused export: ToolLogEntry","reason":"Exported symbol \"ToolLogEntry\" has no observed import or re-export usage in production or test files.","files":["src/utils/logger.ts:262-272"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ToolLogEntry","lineHint":262,"file":"src/utils/logger.ts","expectedResult":"confirm \"ToolLogEntry\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/logger.ts:262-272"},"correlatedSignals":["hot-file","critical-path-context","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk","paired:listener-leak-risk"],"recommendedValidation":{"summary":"confirm \"ToolLogEntry\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0155","severity":"medium","category":"dead-export","file":"src/utils/resilience.ts","lineStart":58,"lineEnd":63,"title":"Unused export: ResilienceConfig","reason":"Exported symbol \"ResilienceConfig\" has no observed import or re-export usage in production or test files.","files":["src/utils/resilience.ts:58-63"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ResilienceConfig","lineHint":58,"file":"src/utils/resilience.ts","expectedResult":"confirm \"ResilienceConfig\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/resilience.ts:58-63"},"correlatedSignals":["hot-file","critical-path-context","paired:semantic-dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"confirm \"ResilienceConfig\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0156","severity":"medium","category":"dead-export","file":"src/utils/responseParser.ts","lineStart":30,"lineEnd":34,"title":"Unused export: ResearchContext","reason":"Exported symbol \"ResearchContext\" has no observed import or re-export usage in production or test files.","files":["src/utils/responseParser.ts:30-34"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ResearchContext","lineHint":30,"file":"src/utils/responseParser.ts","expectedResult":"confirm \"ResearchContext\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/responseParser.ts:30-34"},"correlatedSignals":["hot-file","paired:cognitive-complexity","paired:semantic-dead-export","paired:untested-critical-code","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"ResearchContext\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0157","severity":"medium","category":"dead-export","file":"src/utils/responseParser.ts","lineStart":39,"lineEnd":44,"title":"Unused export: BulkResultItem","reason":"Exported symbol \"BulkResultItem\" has no observed import or re-export usage in production or test files.","files":["src/utils/responseParser.ts:39-44"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"BulkResultItem","lineHint":39,"file":"src/utils/responseParser.ts","expectedResult":"confirm \"BulkResultItem\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/responseParser.ts:39-44"},"correlatedSignals":["hot-file","paired:cognitive-complexity","paired:semantic-dead-export","paired:untested-critical-code","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"BulkResultItem\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0158","severity":"medium","category":"dead-export","file":"src/utils/responseParser.ts","lineStart":63,"lineEnd":83,"title":"Unused export: ParsedBulkResponse","reason":"Exported symbol \"ParsedBulkResponse\" has no observed import or re-export usage in production or test files.","files":["src/utils/responseParser.ts:63-83"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ParsedBulkResponse","lineHint":63,"file":"src/utils/responseParser.ts","expectedResult":"confirm \"ParsedBulkResponse\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/responseParser.ts:63-83"},"correlatedSignals":["hot-file","paired:cognitive-complexity","paired:semantic-dead-export","paired:untested-critical-code","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"ParsedBulkResponse\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0159","severity":"medium","category":"dead-export","file":"src/utils/routeFactory.ts","lineStart":52,"lineEnd":67,"title":"Unused export: RouteConfig","reason":"Exported symbol \"RouteConfig\" has no observed import or re-export usage in production or test files.","files":["src/utils/routeFactory.ts:52-67"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"RouteConfig","lineHint":52,"file":"src/utils/routeFactory.ts","expectedResult":"confirm \"RouteConfig\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/utils/routeFactory.ts:52-67"},"correlatedSignals":["paired:unreachable-module","paired:unvalidated-input-sink","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"RouteConfig\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0160","severity":"medium","category":"dead-export","file":"src/validation/toolCallSchema.ts","lineStart":48,"lineEnd":48,"title":"Unused export: ToolCallBody","reason":"Exported symbol \"ToolCallBody\" has no observed import or re-export usage in production or test files.","files":["src/validation/toolCallSchema.ts:48-48"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ToolCallBody","lineHint":48,"file":"src/validation/toolCallSchema.ts","expectedResult":"confirm \"ToolCallBody\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/validation/toolCallSchema.ts:48-48"},"correlatedSignals":["paired:input-passthrough-risk","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"ToolCallBody\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0161","severity":"medium","category":"dead-export","file":"src/validation/toolCallSchema.ts","lineStart":57,"lineEnd":64,"title":"Unused export: ValidationResult","reason":"Exported symbol \"ValidationResult\" has no observed import or re-export usage in production or test files.","files":["src/validation/toolCallSchema.ts:57-64"],"suggestedFix":{"strategy":"Remove or internalize unused exports.","steps":["Confirm symbol is not part of intentional public API surface.","Remove export modifier or delete symbol if truly unused.","Re-run scan and tests to ensure no hidden runtime usage."]},"impact":"Shrinks public API surface and reduces accidental coupling.","tags":["dead-code","api-surface","cleanup"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ValidationResult","lineHint":57,"file":"src/validation/toolCallSchema.ts","expectedResult":"confirm \"ValidationResult\" has no import references before removing"}],"ruleId":"ast.dead-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-export","location":"src/validation/toolCallSchema.ts:57-64"},"correlatedSignals":["paired:input-passthrough-risk","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm \"ValidationResult\" has no import references before removing","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0162","severity":"medium","category":"dead-file","file":"src/server-init.ts","lineStart":1,"lineEnd":1,"title":"Potential dead file: src/server-init.ts","reason":"File has no inbound imports and no outbound dependencies. It may be stale or orphaned.","files":["src/server-init.ts"],"suggestedFix":{"strategy":"Validate ownership and remove if truly unused.","steps":["Confirm the file is not an explicit runtime entrypoint.","Search runtime config/router/bootstrap references for this file path.","Delete file if confirmed dead and re-run scan."]},"impact":"Reduces dead surface area and maintenance overhead.","tags":["dead-code","cleanup","hygiene"],"lspHints":[{"tool":"lspFindReferences","symbolName":"server-init.ts","lineHint":1,"file":"src/server-init.ts","expectedResult":"confirm zero references exist before deletion"}],"ruleId":"ast.dead-file","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-file","location":"src/server-init.ts:1-1"},"correlatedSignals":["top-level-effects","paired:await-in-loop","paired:unreachable-module","paired:untested-critical-code","paired:empty-catch","paired:import-side-effect-risk","paired:listener-leak-risk","paired:missing-error-boundary"],"recommendedValidation":{"summary":"confirm zero references exist before deletion","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0163","severity":"medium","category":"dead-file","file":"src/types/toolTypes.ts","lineStart":1,"lineEnd":1,"title":"Potential dead file: src/types/toolTypes.ts","reason":"File has no inbound imports and no outbound dependencies. It may be stale or orphaned.","files":["src/types/toolTypes.ts"],"suggestedFix":{"strategy":"Validate ownership and remove if truly unused.","steps":["Confirm the file is not an explicit runtime entrypoint.","Search runtime config/router/bootstrap references for this file path.","Delete file if confirmed dead and re-run scan."]},"impact":"Reduces dead surface area and maintenance overhead.","tags":["dead-code","cleanup","hygiene"],"lspHints":[{"tool":"lspFindReferences","symbolName":"toolTypes.ts","lineHint":1,"file":"src/types/toolTypes.ts","expectedResult":"confirm zero references exist before deletion"}],"ruleId":"ast.dead-file","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-file","location":"src/types/toolTypes.ts:1-1"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:orphan-module","paired:over-abstraction","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm zero references exist before deletion","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0164","severity":"medium","category":"dead-file","file":"src/utils/logEmoji.ts","lineStart":1,"lineEnd":1,"title":"Potential dead file: src/utils/logEmoji.ts","reason":"File has no inbound imports and no outbound dependencies. It may be stale or orphaned.","files":["src/utils/logEmoji.ts"],"suggestedFix":{"strategy":"Validate ownership and remove if truly unused.","steps":["Confirm the file is not an explicit runtime entrypoint.","Search runtime config/router/bootstrap references for this file path.","Delete file if confirmed dead and re-run scan."]},"impact":"Reduces dead surface area and maintenance overhead.","tags":["dead-code","cleanup","hygiene"],"lspHints":[{"tool":"lspFindReferences","symbolName":"logEmoji.ts","lineHint":1,"file":"src/utils/logEmoji.ts","expectedResult":"confirm zero references exist before deletion"}],"ruleId":"ast.dead-file","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-file","location":"src/utils/logEmoji.ts:1-1"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:orphan-module","paired:move-to-caller"],"recommendedValidation":{"summary":"confirm zero references exist before deletion","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0165","severity":"medium","category":"dead-re-export","file":"src/index.ts","lineStart":72,"lineEnd":72,"title":"Unused re-export: ResearchResponse","reason":"Re-exported symbol \"ResearchResponse\" from ./utils/responseBuilder.js has no observed downstream imports from this module.","files":["src/index.ts:72-72"],"suggestedFix":{"strategy":"Remove stale barrel re-exports.","steps":["Verify no dynamic import/runtime reflection depends on this export.","Remove the re-export clause.","Re-run scan to confirm barrel surface is still complete."]},"impact":"Keeps barrel modules focused and easier to reason about.","tags":["dead-code","barrel","cleanup"],"ruleId":"ast.dead-re-export","analysisLens":"ast","confidence":"low","evidence":{"category":"dead-re-export","location":"src/index.ts:72-72"},"correlatedSignals":["hot-file","critical-path-context","paired:untested-critical-code"],"recommendedValidation":{"summary":"Confirm the code location and inspect the matched structure before proposing a refactor.","tools":["localSearchCode"]}},{"id":"AST-ISSUE-0212","severity":"medium","category":"re-export-duplication","file":"src/validation/index.ts","lineStart":1,"lineEnd":1,"title":"Duplicate re-export paths: *","reason":"Symbol \"*\" is re-exported from multiple sources in the same barrel.","files":["src/validation/index.ts"],"suggestedFix":{"strategy":"Keep one canonical re-export source per symbol.","steps":["Select a canonical module for the symbol.","Remove duplicate re-export paths.","Document intended public export map for the barrel."]},"impact":"Reduces API ambiguity and import inconsistency.","tags":["duplication","barrel","api-surface"],"ruleId":"ast.re-export-duplication","analysisLens":"ast","confidence":"low","evidence":{"category":"re-export-duplication","location":"src/validation/index.ts:1-1"},"correlatedSignals":["paired:export-star-leak"],"recommendedValidation":{"summary":"Confirm the code location and inspect the matched structure before proposing a refactor.","tools":["localSearchCode"]}},{"id":"AST-ISSUE-0227","severity":"low","category":"move-to-caller","file":"src/mcpCache.ts","lineStart":18,"lineEnd":31,"title":"Single-consumer export: initializeMcpContent (used by 1 file)","reason":"Exported symbol \"initializeMcpContent\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/mcpCache.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"initializeMcpContent","lineHint":18,"file":"src/mcpCache.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/mcpCache.ts:18-31"},"correlatedSignals":["paired:distance-from-main-sequence","paired:low-cohesion","paired:missing-error-boundary","paired:promise-misuse"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0228","severity":"low","category":"move-to-caller","file":"src/middleware/errorHandler.ts","lineStart":7,"lineEnd":11,"title":"Single-consumer export: ApiError (used by 1 file)","reason":"Exported symbol \"ApiError\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/middleware/errorHandler.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ApiError","lineHint":7,"file":"src/middleware/errorHandler.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/middleware/errorHandler.ts:7-11"},"correlatedSignals":["paired:unvalidated-input-sink"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0229","severity":"low","category":"move-to-caller","file":"src/middleware/errorHandler.ts","lineStart":15,"lineEnd":65,"title":"Single-consumer export: errorHandler (used by 1 file)","reason":"Exported symbol \"errorHandler\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/middleware/errorHandler.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"errorHandler","lineHint":15,"file":"src/middleware/errorHandler.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/middleware/errorHandler.ts:15-65"},"correlatedSignals":["paired:unvalidated-input-sink"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0230","severity":"low","category":"move-to-caller","file":"src/middleware/logger.ts","lineStart":19,"lineEnd":60,"title":"Single-consumer export: requestLogger (used by 1 file)","reason":"Exported symbol \"requestLogger\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/middleware/logger.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"requestLogger","lineHint":19,"file":"src/middleware/logger.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/middleware/logger.ts:19-60"},"correlatedSignals":["critical-path-context","paired:input-passthrough-risk","paired:listener-leak-risk","paired:similar-function-body"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0231","severity":"low","category":"move-to-caller","file":"src/routes/github.ts","lineStart":33,"lineEnd":33,"title":"Single-consumer export: githubRoutes (used by 1 file)","reason":"Exported symbol \"githubRoutes\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/routes/github.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"githubRoutes","lineHint":33,"file":"src/routes/github.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/routes/github.ts:33-33"},"correlatedSignals":["hot-file","critical-path-context","paired:dependency-critical-path","paired:unreachable-module","paired:dependency-test-only"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0232","severity":"low","category":"move-to-caller","file":"src/routes/local.ts","lineStart":32,"lineEnd":32,"title":"Single-consumer export: localRoutes (used by 1 file)","reason":"Exported symbol \"localRoutes\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/routes/local.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"localRoutes","lineHint":32,"file":"src/routes/local.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/routes/local.ts:32-32"},"correlatedSignals":["hot-file","critical-path-context","paired:dependency-critical-path","paired:unreachable-module","paired:dependency-test-only"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0233","severity":"low","category":"move-to-caller","file":"src/routes/lsp.ts","lineStart":24,"lineEnd":24,"title":"Single-consumer export: lspRoutes (used by 1 file)","reason":"Exported symbol \"lspRoutes\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/routes/lsp.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"lspRoutes","lineHint":24,"file":"src/routes/lsp.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/routes/lsp.ts:24-24"},"correlatedSignals":["hot-file","critical-path-context","paired:unreachable-module","paired:dependency-test-only"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0234","severity":"low","category":"move-to-caller","file":"src/routes/package.ts","lineStart":12,"lineEnd":12,"title":"Single-consumer export: packageRoutes (used by 1 file)","reason":"Exported symbol \"packageRoutes\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/routes/package.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"packageRoutes","lineHint":12,"file":"src/routes/package.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/routes/package.ts:12-12"},"correlatedSignals":["hot-file","critical-path-context","paired:dependency-critical-path","paired:unreachable-module","paired:unvalidated-input-sink","paired:dependency-test-only","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0235","severity":"low","category":"move-to-caller","file":"src/server.ts","lineStart":85,"lineEnd":170,"title":"Single-consumer export: createServer (used by 1 file)","reason":"Exported symbol \"createServer\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/server.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"createServer","lineHint":85,"file":"src/server.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/server.ts:85-170"},"correlatedSignals":["hot-file","critical-path-context","top-level-effects","paired:dependency-critical-path","paired:untested-critical-code","paired:import-side-effect-risk","paired:listener-leak-risk","paired:missing-error-boundary"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0236","severity":"low","category":"move-to-caller","file":"src/server.ts","lineStart":219,"lineEnd":266,"title":"Single-consumer export: startServer (used by 1 file)","reason":"Exported symbol \"startServer\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/server.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"startServer","lineHint":219,"file":"src/server.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/server.ts:219-266"},"correlatedSignals":["hot-file","critical-path-context","top-level-effects","paired:dependency-critical-path","paired:untested-critical-code","paired:import-side-effect-risk","paired:listener-leak-risk","paired:missing-error-boundary"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0237","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":17,"lineEnd":20,"title":"Single-consumer export: ErrorWithStatus (used by 1 file)","reason":"Exported symbol \"ErrorWithStatus\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ErrorWithStatus","lineHint":17,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:17-20"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0238","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":25,"lineEnd":28,"title":"Single-consumer export: ErrorWithCode (used by 1 file)","reason":"Exported symbol \"ErrorWithCode\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ErrorWithCode","lineHint":25,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:25-28"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0239","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":33,"lineEnd":35,"title":"Single-consumer export: ErrorWithHeaders (used by 1 file)","reason":"Exported symbol \"ErrorWithHeaders\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ErrorWithHeaders","lineHint":33,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:33-35"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0240","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":68,"lineEnd":75,"title":"Single-consumer export: hasMessage (used by 1 file)","reason":"Exported symbol \"hasMessage\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"hasMessage","lineHint":68,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:68-75"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0241","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":80,"lineEnd":88,"title":"Single-consumer export: hasHeaders (used by 1 file)","reason":"Exported symbol \"hasHeaders\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"hasHeaders","lineHint":80,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:80-88"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0242","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":104,"lineEnd":106,"title":"Single-consumer export: getErrorCode (used by 1 file)","reason":"Exported symbol \"getErrorCode\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getErrorCode","lineHint":104,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:104-106"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0243","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":111,"lineEnd":113,"title":"Single-consumer export: getErrorMessage (used by 1 file)","reason":"Exported symbol \"getErrorMessage\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getErrorMessage","lineHint":111,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:111-113"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0244","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":118,"lineEnd":123,"title":"Single-consumer export: getErrorHeader (used by 1 file)","reason":"Exported symbol \"getErrorHeader\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getErrorHeader","lineHint":118,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:118-123"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0245","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":132,"lineEnd":135,"title":"Single-consumer export: hasStatusIn (used by 1 file)","reason":"Exported symbol \"hasStatusIn\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"hasStatusIn","lineHint":132,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:132-135"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0246","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":140,"lineEnd":143,"title":"Single-consumer export: hasCodeIn (used by 1 file)","reason":"Exported symbol \"hasCodeIn\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"hasCodeIn","lineHint":140,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:140-143"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0247","severity":"low","category":"move-to-caller","file":"src/types/errorGuards.ts","lineStart":148,"lineEnd":151,"title":"Single-consumer export: messageMatches (used by 1 file)","reason":"Exported symbol \"messageMatches\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/errorGuards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"messageMatches","lineHint":148,"file":"src/types/errorGuards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/errorGuards.ts:148-151"},"correlatedSignals":["hot-file","paired:dead-export","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0248","severity":"low","category":"move-to-caller","file":"src/types/guards.ts","lineStart":11,"lineEnd":13,"title":"Single-consumer export: isNonEmptyString (used by 1 file)","reason":"Exported symbol \"isNonEmptyString\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/guards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isNonEmptyString","lineHint":11,"file":"src/types/guards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/guards.ts:11-13"},"correlatedSignals":["hot-file","paired:dead-export","paired:distance-from-main-sequence","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:narrowable-type"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0249","severity":"low","category":"move-to-caller","file":"src/types/guards.ts","lineStart":39,"lineEnd":41,"title":"Single-consumer export: isArray (used by 1 file)","reason":"Exported symbol \"isArray\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/guards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"isArray","lineHint":39,"file":"src/types/guards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/guards.ts:39-41"},"correlatedSignals":["hot-file","paired:dead-export","paired:distance-from-main-sequence","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:narrowable-type"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0250","severity":"low","category":"move-to-caller","file":"src/types/guards.ts","lineStart":93,"lineEnd":98,"title":"Single-consumer export: hasArrayProperty (used by 1 file)","reason":"Exported symbol \"hasArrayProperty\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/guards.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"hasArrayProperty","lineHint":93,"file":"src/types/guards.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/guards.ts:93-98"},"correlatedSignals":["hot-file","paired:dead-export","paired:distance-from-main-sequence","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:narrowable-type"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0251","severity":"low","category":"move-to-caller","file":"src/types/mcp.ts","lineStart":7,"lineEnd":13,"title":"Single-consumer export: JsonSchema (used by 1 file)","reason":"Exported symbol \"JsonSchema\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/mcp.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"JsonSchema","lineHint":7,"file":"src/types/mcp.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/mcp.ts:7-13"},"correlatedSignals":["paired:semantic-dead-export","paired:dead-export","paired:over-abstraction","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0252","severity":"low","category":"move-to-caller","file":"src/types/mcp.ts","lineStart":15,"lineEnd":29,"title":"Single-consumer export: JsonSchemaProperty (used by 1 file)","reason":"Exported symbol \"JsonSchemaProperty\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/mcp.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"JsonSchemaProperty","lineHint":15,"file":"src/types/mcp.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/mcp.ts:15-29"},"correlatedSignals":["paired:semantic-dead-export","paired:dead-export","paired:over-abstraction","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0253","severity":"low","category":"move-to-caller","file":"src/types/mcp.ts","lineStart":43,"lineEnd":47,"title":"Single-consumer export: McpPromptArgument (used by 1 file)","reason":"Exported symbol \"McpPromptArgument\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/mcp.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"McpPromptArgument","lineHint":43,"file":"src/types/mcp.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/mcp.ts:43-47"},"correlatedSignals":["paired:semantic-dead-export","paired:dead-export","paired:over-abstraction","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0254","severity":"low","category":"move-to-caller","file":"src/types/mcp.ts","lineStart":52,"lineEnd":56,"title":"Single-consumer export: McpPrompt (used by 1 file)","reason":"Exported symbol \"McpPrompt\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/mcp.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"McpPrompt","lineHint":52,"file":"src/types/mcp.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/mcp.ts:52-56"},"correlatedSignals":["paired:semantic-dead-export","paired:dead-export","paired:over-abstraction","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0255","severity":"low","category":"move-to-caller","file":"src/types/mcp.ts","lineStart":61,"lineEnd":64,"title":"Single-consumer export: ListResponseMeta (used by 1 file)","reason":"Exported symbol \"ListResponseMeta\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/mcp.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ListResponseMeta","lineHint":61,"file":"src/types/mcp.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/mcp.ts:61-64"},"correlatedSignals":["paired:semantic-dead-export","paired:dead-export","paired:over-abstraction","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0256","severity":"low","category":"move-to-caller","file":"src/types/mcp.ts","lineStart":86,"lineEnd":119,"title":"Single-consumer export: transformToJsonSchema (used by 1 file)","reason":"Exported symbol \"transformToJsonSchema\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/mcp.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"transformToJsonSchema","lineHint":86,"file":"src/types/mcp.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/mcp.ts:86-119"},"correlatedSignals":["paired:semantic-dead-export","paired:dead-export","paired:over-abstraction","paired:prototype-pollution-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0257","severity":"low","category":"move-to-caller","file":"src/types/responses.ts","lineStart":17,"lineEnd":23,"title":"Single-consumer export: MatchLocation (used by 1 file)","reason":"Exported symbol \"MatchLocation\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/responses.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"MatchLocation","lineHint":17,"file":"src/types/responses.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/responses.ts:17-23"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0258","severity":"low","category":"move-to-caller","file":"src/types/responses.ts","lineStart":175,"lineEnd":178,"title":"Single-consumer export: extractFiles (used by 1 file)","reason":"Exported symbol \"extractFiles\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/responses.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"extractFiles","lineHint":175,"file":"src/types/responses.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/responses.ts:175-178"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0259","severity":"low","category":"move-to-caller","file":"src/types/responses.ts","lineStart":183,"lineEnd":186,"title":"Single-consumer export: extractPagination (used by 1 file)","reason":"Exported symbol \"extractPagination\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/responses.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"extractPagination","lineHint":183,"file":"src/types/responses.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/responses.ts:183-186"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0260","severity":"low","category":"move-to-caller","file":"src/types/responses.ts","lineStart":191,"lineEnd":199,"title":"Single-consumer export: extractTotalMatches (used by 1 file)","reason":"Exported symbol \"extractTotalMatches\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/responses.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"extractTotalMatches","lineHint":191,"file":"src/types/responses.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/responses.ts:191-199"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0261","severity":"low","category":"move-to-caller","file":"src/types/toolTypes.ts","lineStart":11,"lineEnd":16,"title":"Single-consumer export: BaseQueryParams (used by 1 file)","reason":"Exported symbol \"BaseQueryParams\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/toolTypes.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"BaseQueryParams","lineHint":11,"file":"src/types/toolTypes.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/toolTypes.ts:11-16"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0262","severity":"low","category":"move-to-caller","file":"src/types/toolTypes.ts","lineStart":21,"lineEnd":23,"title":"Single-consumer export: QueryParamsResult (used by 1 file)","reason":"Exported symbol \"QueryParamsResult\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/types/toolTypes.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"QueryParamsResult","lineHint":21,"file":"src/types/toolTypes.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/types/toolTypes.ts:21-23"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0263","severity":"low","category":"move-to-caller","file":"src/utils/asyncTimeout.ts","lineStart":94,"lineEnd":116,"title":"Single-consumer export: withTimeout (used by 1 file)","reason":"Exported symbol \"withTimeout\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/asyncTimeout.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"withTimeout","lineHint":94,"file":"src/utils/asyncTimeout.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/asyncTimeout.ts:94-116"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:listener-leak-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0264","severity":"low","category":"move-to-caller","file":"src/utils/circuitBreaker.ts","lineStart":128,"lineEnd":133,"title":"Single-consumer export: configureCircuit (used by 1 file)","reason":"Exported symbol \"configureCircuit\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/circuitBreaker.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"configureCircuit","lineHint":128,"file":"src/utils/circuitBreaker.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/circuitBreaker.ts:128-133"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:prototype-pollution-risk","paired:semantic-dead-export","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0265","severity":"low","category":"move-to-caller","file":"src/utils/circuitBreaker.ts","lineStart":153,"lineEnd":243,"title":"Single-consumer export: withCircuitBreaker (used by 1 file)","reason":"Exported symbol \"withCircuitBreaker\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/circuitBreaker.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"withCircuitBreaker","lineHint":153,"file":"src/utils/circuitBreaker.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/circuitBreaker.ts:153-243"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:prototype-pollution-risk","paired:semantic-dead-export","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0266","severity":"low","category":"move-to-caller","file":"src/utils/circuitBreaker.ts","lineStart":278,"lineEnd":296,"title":"Single-consumer export: getAllCircuitStates (used by 1 file)","reason":"Exported symbol \"getAllCircuitStates\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/circuitBreaker.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getAllCircuitStates","lineHint":278,"file":"src/utils/circuitBreaker.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/circuitBreaker.ts:278-296"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:prototype-pollution-risk","paired:semantic-dead-export","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0267","severity":"low","category":"move-to-caller","file":"src/utils/circuitBreaker.ts","lineStart":301,"lineEnd":311,"title":"Single-consumer export: CircuitOpenError (used by 1 file)","reason":"Exported symbol \"CircuitOpenError\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/circuitBreaker.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"CircuitOpenError","lineHint":301,"file":"src/utils/circuitBreaker.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/circuitBreaker.ts:301-311"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:prototype-pollution-risk","paired:semantic-dead-export","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0268","severity":"low","category":"move-to-caller","file":"src/utils/circuitBreaker.ts","lineStart":447,"lineEnd":452,"title":"Single-consumer export: stopCircuitCleanup (used by 1 file)","reason":"Exported symbol \"stopCircuitCleanup\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/circuitBreaker.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"stopCircuitCleanup","lineHint":447,"file":"src/utils/circuitBreaker.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/circuitBreaker.ts:447-452"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:prototype-pollution-risk","paired:semantic-dead-export","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0269","severity":"low","category":"move-to-caller","file":"src/utils/circuitBreaker.ts","lineStart":480,"lineEnd":485,"title":"Single-consumer export: clearAllCircuits (used by 1 file)","reason":"Exported symbol \"clearAllCircuits\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/circuitBreaker.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"clearAllCircuits","lineHint":480,"file":"src/utils/circuitBreaker.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/circuitBreaker.ts:480-485"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:prototype-pollution-risk","paired:semantic-dead-export","paired:over-abstraction","paired:type-assertion-escape","paired:uncleared-timer"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0270","severity":"low","category":"move-to-caller","file":"src/utils/colors.ts","lineStart":35,"lineEnd":37,"title":"Single-consumer export: resultLog (used by 1 file)","reason":"Exported symbol \"resultLog\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/colors.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"resultLog","lineHint":35,"file":"src/utils/colors.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/colors.ts:35-37"},"correlatedSignals":["hot-file","critical-path-context","paired:distance-from-main-sequence","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0271","severity":"low","category":"move-to-caller","file":"src/utils/colors.ts","lineStart":51,"lineEnd":53,"title":"Single-consumer export: dimLog (used by 1 file)","reason":"Exported symbol \"dimLog\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/colors.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"dimLog","lineHint":51,"file":"src/utils/colors.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/colors.ts:51-53"},"correlatedSignals":["hot-file","critical-path-context","paired:distance-from-main-sequence","paired:untested-critical-code"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0272","severity":"low","category":"move-to-caller","file":"src/utils/logEmoji.ts","lineStart":20,"lineEnd":25,"title":"Single-consumer export: shouldUseEmoji (used by 1 file)","reason":"Exported symbol \"shouldUseEmoji\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/logEmoji.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"shouldUseEmoji","lineHint":20,"file":"src/utils/logEmoji.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/logEmoji.ts:20-25"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0273","severity":"low","category":"move-to-caller","file":"src/utils/logEmoji.ts","lineStart":34,"lineEnd":49,"title":"Single-consumer export: LogEmojiKey (used by 1 file)","reason":"Exported symbol \"LogEmojiKey\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/logEmoji.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"LogEmojiKey","lineHint":34,"file":"src/utils/logEmoji.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/logEmoji.ts:34-49"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0274","severity":"low","category":"move-to-caller","file":"src/utils/logEmoji.ts","lineStart":82,"lineEnd":85,"title":"Single-consumer export: getLogEmoji (used by 1 file)","reason":"Exported symbol \"getLogEmoji\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/logEmoji.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getLogEmoji","lineHint":82,"file":"src/utils/logEmoji.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/logEmoji.ts:82-85"},"correlatedSignals":["paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:dead-file","paired:orphan-module"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0275","severity":"low","category":"move-to-caller","file":"src/utils/logger.ts","lineStart":231,"lineEnd":246,"title":"Single-consumer export: logError (used by 1 file)","reason":"Exported symbol \"logError\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/logger.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"logError","lineHint":231,"file":"src/utils/logger.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/logger.ts:231-246"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0276","severity":"low","category":"move-to-caller","file":"src/utils/logger.ts","lineStart":251,"lineEnd":256,"title":"Single-consumer export: logWarn (used by 1 file)","reason":"Exported symbol \"logWarn\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/logger.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"logWarn","lineHint":251,"file":"src/utils/logger.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/logger.ts:251-256"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0277","severity":"low","category":"move-to-caller","file":"src/utils/logger.ts","lineStart":262,"lineEnd":272,"title":"Single-consumer export: ToolLogEntry (used by 1 file)","reason":"Exported symbol \"ToolLogEntry\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/logger.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ToolLogEntry","lineHint":262,"file":"src/utils/logger.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/logger.ts:262-272"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0278","severity":"low","category":"move-to-caller","file":"src/utils/logger.ts","lineStart":333,"lineEnd":335,"title":"Single-consumer export: getLogsPath (used by 1 file)","reason":"Exported symbol \"getLogsPath\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/logger.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getLogsPath","lineHint":333,"file":"src/utils/logger.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/logger.ts:333-335"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0279","severity":"low","category":"move-to-caller","file":"src/utils/logger.ts","lineStart":355,"lineEnd":357,"title":"Single-consumer export: initializeLogger (used by 1 file)","reason":"Exported symbol \"initializeLogger\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/logger.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"initializeLogger","lineHint":355,"file":"src/utils/logger.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/logger.ts:355-357"},"correlatedSignals":["hot-file","critical-path-context","paired:dead-export","paired:semantic-dead-export","paired:sql-injection-risk","paired:empty-catch","paired:excessive-parameters","paired:input-passthrough-risk"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0280","severity":"low","category":"move-to-caller","file":"src/utils/responseFactory.ts","lineStart":70,"lineEnd":87,"title":"Single-consumer export: extractMatchLocations (used by 1 file)","reason":"Exported symbol \"extractMatchLocations\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/responseFactory.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"extractMatchLocations","lineHint":70,"file":"src/utils/responseFactory.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/responseFactory.ts:70-87"},"correlatedSignals":["hot-file","paired:dead-export","paired:semantic-dead-export","paired:unreachable-module","paired:untested-critical-code","paired:architecture-sdp-violation","paired:feature-envy","paired:narrowable-type"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0281","severity":"low","category":"move-to-caller","file":"src/utils/responseParser.ts","lineStart":30,"lineEnd":34,"title":"Single-consumer export: ResearchContext (used by 1 file)","reason":"Exported symbol \"ResearchContext\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/responseParser.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ResearchContext","lineHint":30,"file":"src/utils/responseParser.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/responseParser.ts:30-34"},"correlatedSignals":["hot-file","paired:cognitive-complexity","paired:dead-export","paired:semantic-dead-export","paired:untested-critical-code","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0282","severity":"low","category":"move-to-caller","file":"src/utils/responseParser.ts","lineStart":39,"lineEnd":44,"title":"Single-consumer export: BulkResultItem (used by 1 file)","reason":"Exported symbol \"BulkResultItem\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/responseParser.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"BulkResultItem","lineHint":39,"file":"src/utils/responseParser.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/responseParser.ts:39-44"},"correlatedSignals":["hot-file","paired:cognitive-complexity","paired:dead-export","paired:semantic-dead-export","paired:untested-critical-code","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0283","severity":"low","category":"move-to-caller","file":"src/utils/responseParser.ts","lineStart":63,"lineEnd":83,"title":"Single-consumer export: ParsedBulkResponse (used by 1 file)","reason":"Exported symbol \"ParsedBulkResponse\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/responseParser.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ParsedBulkResponse","lineHint":63,"file":"src/utils/responseParser.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/responseParser.ts:63-83"},"correlatedSignals":["hot-file","paired:cognitive-complexity","paired:dead-export","paired:semantic-dead-export","paired:untested-critical-code","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0284","severity":"low","category":"move-to-caller","file":"src/utils/responseParser.ts","lineStart":195,"lineEnd":272,"title":"Single-consumer export: parseToolResponseBulk (used by 1 file)","reason":"Exported symbol \"parseToolResponseBulk\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/responseParser.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"parseToolResponseBulk","lineHint":195,"file":"src/utils/responseParser.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/responseParser.ts:195-272"},"correlatedSignals":["hot-file","paired:cognitive-complexity","paired:dead-export","paired:semantic-dead-export","paired:untested-critical-code","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0285","severity":"low","category":"move-to-caller","file":"src/utils/routeFactory.ts","lineStart":52,"lineEnd":67,"title":"Single-consumer export: RouteConfig (used by 1 file)","reason":"Exported symbol \"RouteConfig\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/utils/routeFactory.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"RouteConfig","lineHint":52,"file":"src/utils/routeFactory.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/utils/routeFactory.ts:52-67"},"correlatedSignals":["paired:unreachable-module","paired:unvalidated-input-sink","paired:dead-export"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0286","severity":"low","category":"move-to-caller","file":"src/validation/httpPreprocess.ts","lineStart":21,"lineEnd":25,"title":"Single-consumer export: toNumber (used by 1 file)","reason":"Exported symbol \"toNumber\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/httpPreprocess.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"toNumber","lineHint":21,"file":"src/validation/httpPreprocess.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/httpPreprocess.ts:21-25"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0287","severity":"low","category":"move-to-caller","file":"src/validation/httpPreprocess.ts","lineStart":30,"lineEnd":35,"title":"Single-consumer export: toBoolean (used by 1 file)","reason":"Exported symbol \"toBoolean\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/httpPreprocess.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"toBoolean","lineHint":30,"file":"src/validation/httpPreprocess.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/httpPreprocess.ts:30-35"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0288","severity":"low","category":"move-to-caller","file":"src/validation/httpPreprocess.ts","lineStart":54,"lineEnd":54,"title":"Single-consumer export: numericString (used by 1 file)","reason":"Exported symbol \"numericString\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/httpPreprocess.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"numericString","lineHint":54,"file":"src/validation/httpPreprocess.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/httpPreprocess.ts:54-54"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0289","severity":"low","category":"move-to-caller","file":"src/validation/httpPreprocess.ts","lineStart":57,"lineEnd":57,"title":"Single-consumer export: requiredNumber (used by 1 file)","reason":"Exported symbol \"requiredNumber\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/httpPreprocess.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"requiredNumber","lineHint":57,"file":"src/validation/httpPreprocess.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/httpPreprocess.ts:57-57"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0290","severity":"low","category":"move-to-caller","file":"src/validation/httpPreprocess.ts","lineStart":60,"lineEnd":60,"title":"Single-consumer export: booleanString (used by 1 file)","reason":"Exported symbol \"booleanString\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/httpPreprocess.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"booleanString","lineHint":60,"file":"src/validation/httpPreprocess.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/httpPreprocess.ts:60-60"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0291","severity":"low","category":"move-to-caller","file":"src/validation/httpPreprocess.ts","lineStart":63,"lineEnd":63,"title":"Single-consumer export: stringArray (used by 1 file)","reason":"Exported symbol \"stringArray\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/httpPreprocess.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"stringArray","lineHint":63,"file":"src/validation/httpPreprocess.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/httpPreprocess.ts:63-63"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0292","severity":"low","category":"move-to-caller","file":"src/validation/httpPreprocess.ts","lineStart":86,"lineEnd":111,"title":"Single-consumer export: safePath (used by 1 file)","reason":"Exported symbol \"safePath\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/httpPreprocess.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"safePath","lineHint":86,"file":"src/validation/httpPreprocess.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/httpPreprocess.ts:86-111"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0293","severity":"low","category":"move-to-caller","file":"src/validation/httpPreprocess.ts","lineStart":132,"lineEnd":152,"title":"Single-consumer export: withResearchDefaults (used by 1 file)","reason":"Exported symbol \"withResearchDefaults\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/httpPreprocess.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"withResearchDefaults","lineHint":132,"file":"src/validation/httpPreprocess.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/httpPreprocess.ts:132-152"},"correlatedSignals":["hot-file","paired:distance-from-main-sequence","paired:semantic-dead-export"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0294","severity":"low","category":"move-to-caller","file":"src/validation/toolCallSchema.ts","lineStart":19,"lineEnd":19,"title":"Single-consumer export: MAX_QUERIES (used by 1 file)","reason":"Exported symbol \"MAX_QUERIES\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/toolCallSchema.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"MAX_QUERIES","lineHint":19,"file":"src/validation/toolCallSchema.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/toolCallSchema.ts:19-19"},"correlatedSignals":["paired:dead-export","paired:input-passthrough-risk","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0295","severity":"low","category":"move-to-caller","file":"src/validation/toolCallSchema.ts","lineStart":38,"lineEnd":43,"title":"Single-consumer export: toolCallBodySchema (used by 1 file)","reason":"Exported symbol \"toolCallBodySchema\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/toolCallSchema.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"toolCallBodySchema","lineHint":38,"file":"src/validation/toolCallSchema.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/toolCallSchema.ts:38-43"},"correlatedSignals":["paired:dead-export","paired:input-passthrough-risk","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0296","severity":"low","category":"move-to-caller","file":"src/validation/toolCallSchema.ts","lineStart":48,"lineEnd":48,"title":"Single-consumer export: ToolCallBody (used by 1 file)","reason":"Exported symbol \"ToolCallBody\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/toolCallSchema.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ToolCallBody","lineHint":48,"file":"src/validation/toolCallSchema.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/toolCallSchema.ts:48-48"},"correlatedSignals":["paired:dead-export","paired:input-passthrough-risk","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0297","severity":"low","category":"move-to-caller","file":"src/validation/toolCallSchema.ts","lineStart":57,"lineEnd":64,"title":"Single-consumer export: ValidationResult (used by 1 file)","reason":"Exported symbol \"ValidationResult\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/toolCallSchema.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"ValidationResult","lineHint":57,"file":"src/validation/toolCallSchema.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/toolCallSchema.ts:57-64"},"correlatedSignals":["paired:dead-export","paired:input-passthrough-risk","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0298","severity":"low","category":"move-to-caller","file":"src/validation/toolCallSchema.ts","lineStart":85,"lineEnd":105,"title":"Single-consumer export: validateToolCallBody (used by 1 file)","reason":"Exported symbol \"validateToolCallBody\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/toolCallSchema.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"validateToolCallBody","lineHint":85,"file":"src/validation/toolCallSchema.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/toolCallSchema.ts:85-105"},"correlatedSignals":["paired:dead-export","paired:input-passthrough-risk","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}},{"id":"AST-ISSUE-0299","severity":"low","category":"move-to-caller","file":"src/validation/toolCallSchema.ts","lineStart":114,"lineEnd":132,"title":"Single-consumer export: getValidationHints (used by 1 file)","reason":"Exported symbol \"getValidationHints\" is consumed by exactly 1 file. Consider moving it to the consumer or inlining it to reduce module surface.","files":["src/validation/toolCallSchema.ts"],"suggestedFix":{"strategy":"Move the symbol to its only consumer or inline it.","steps":["Verify no dynamic or reflection-based usage exists.","Move the function/class/constant to the consumer file.","Remove the export and the import from the consumer.","If the symbol is large, keep it but remove the export keyword."]},"impact":"Single-consumer exports add unnecessary module surface and indirection.","tags":["dead-code","module-surface","refactoring","semantic"],"lspHints":[{"tool":"lspFindReferences","symbolName":"getValidationHints","lineHint":114,"file":"src/validation/toolCallSchema.ts","expectedResult":"exactly 1 referencing file confirms single-consumer"}],"ruleId":"hybrid.move-to-caller","analysisLens":"hybrid","confidence":"medium","evidence":{"category":"move-to-caller","location":"src/validation/toolCallSchema.ts:114-132"},"correlatedSignals":["paired:dead-export","paired:input-passthrough-risk","paired:over-abstraction"],"recommendedValidation":{"summary":"exactly 1 referencing file confirms single-consumer","tools":["localSearchCode","lspFindReferences"]}}],"findingsCount":177,"severityBreakdown":{"critical":0,"high":74,"medium":30,"low":73,"info":0},"categoryBreakdown":{"dead-export":55,"semantic-dead-export":44,"dead-file":3,"dead-re-export":1,"re-export-duplication":1,"move-to-caller":73}}