code-auditor-mcp 3.9.11 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +200 -0
  3. package/dist/analyzers/analyzerUtils.js +2 -2
  4. package/dist/analyzers/analyzerUtils.js.map +1 -1
  5. package/dist/analyzers/applicability.d.ts.map +1 -1
  6. package/dist/analyzers/applicability.js +1 -0
  7. package/dist/analyzers/applicability.js.map +1 -1
  8. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +1 -1
  9. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
  10. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +3 -3
  11. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
  12. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +2 -2
  13. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
  14. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +39 -15
  15. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
  16. package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
  17. package/dist/analyzers/documentationAnalyzer.js +14 -16
  18. package/dist/analyzers/documentationAnalyzer.js.map +1 -1
  19. package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
  20. package/dist/analyzers/invariantsAnalyzer.js +30 -25
  21. package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
  22. package/dist/analyzers/reactAnalyzer.d.ts +1 -1
  23. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
  24. package/dist/analyzers/reactAnalyzer.js +34 -116
  25. package/dist/analyzers/reactAnalyzer.js.map +1 -1
  26. package/dist/analyzers/ruleRegistry.d.ts +5 -3
  27. package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
  28. package/dist/analyzers/ruleRegistry.js +198 -54
  29. package/dist/analyzers/ruleRegistry.js.map +1 -1
  30. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +2 -2
  31. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
  32. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +10 -17
  33. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
  34. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +6 -6
  35. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +13 -13
  36. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  37. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  38. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +22 -64
  39. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  40. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +3 -2
  41. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  42. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +14 -13
  43. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  44. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +11 -11
  45. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  46. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +1 -1
  47. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  48. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +18 -7
  49. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  50. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +2 -2
  51. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  52. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +38 -26
  53. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  54. package/dist/analyzers/universal/schema/codeAnalysis.d.ts +37 -13
  55. package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
  56. package/dist/analyzers/universal/schema/codeAnalysis.js +42 -54
  57. package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
  58. package/dist/analyzers/universal/schema/jsonSchema.js +1 -1
  59. package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -1
  60. package/dist/analyzers/universal/schema/violations.d.ts +1 -1
  61. package/dist/analyzers/universal/schema/violations.d.ts.map +1 -1
  62. package/dist/auditRouter.js +7 -7
  63. package/dist/auditRouter.js.map +1 -1
  64. package/dist/auditRunner.d.ts.map +1 -1
  65. package/dist/auditRunner.js +36 -6
  66. package/dist/auditRunner.js.map +1 -1
  67. package/dist/cli.js +23 -17
  68. package/dist/cli.js.map +1 -1
  69. package/dist/codeIndexDB.d.ts +1 -1
  70. package/dist/codeIndexDB.d.ts.map +1 -1
  71. package/dist/codeIndexDB.js +148 -18
  72. package/dist/codeIndexDB.js.map +1 -1
  73. package/dist/componentScanner.d.ts.map +1 -1
  74. package/dist/componentScanner.js +89 -28
  75. package/dist/componentScanner.js.map +1 -1
  76. package/dist/config/configLoader.js +1 -1
  77. package/dist/config/configLoader.js.map +1 -1
  78. package/dist/config/defaults.js +3 -3
  79. package/dist/config/defaults.js.map +1 -1
  80. package/dist/constants.d.ts +1 -1
  81. package/dist/constants.d.ts.map +1 -1
  82. package/dist/conventions/conventionMiner.d.ts.map +1 -1
  83. package/dist/conventions/conventionMiner.js +3 -10
  84. package/dist/conventions/conventionMiner.js.map +1 -1
  85. package/dist/daemon/core.d.ts.map +1 -1
  86. package/dist/daemon/core.js +33 -38
  87. package/dist/daemon/core.js.map +1 -1
  88. package/dist/daemon/lspServer.js +1 -1
  89. package/dist/daemon/lspServer.js.map +1 -1
  90. package/dist/daemon/main.d.ts.map +1 -1
  91. package/dist/daemon/main.js +14 -4
  92. package/dist/daemon/main.js.map +1 -1
  93. package/dist/enforcement/gate.js +2 -2
  94. package/dist/functionScanner.d.ts.map +1 -1
  95. package/dist/functionScanner.js +47 -42
  96. package/dist/functionScanner.js.map +1 -1
  97. package/dist/graph/importClassification.d.ts +76 -0
  98. package/dist/graph/importClassification.d.ts.map +1 -0
  99. package/dist/graph/importClassification.js +221 -0
  100. package/dist/graph/importClassification.js.map +1 -0
  101. package/dist/graph/importGraph.d.ts +1 -0
  102. package/dist/graph/importGraph.d.ts.map +1 -1
  103. package/dist/graph/importGraph.js +1 -1
  104. package/dist/graph/importGraph.js.map +1 -1
  105. package/dist/hooks/codex.d.ts.map +1 -1
  106. package/dist/hooks/codex.js +1 -1
  107. package/dist/hooks/codex.js.map +1 -1
  108. package/dist/hooks/core.d.ts +1 -1
  109. package/dist/hooks/core.d.ts.map +1 -1
  110. package/dist/hooks/core.js +4 -4
  111. package/dist/hooks/core.js.map +1 -1
  112. package/dist/hooks/cursor.d.ts.map +1 -1
  113. package/dist/hooks/cursor.js +2 -2
  114. package/dist/hooks/cursor.js.map +1 -1
  115. package/dist/index.d.ts +1 -1
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js.map +1 -1
  118. package/dist/installer.d.ts +20 -0
  119. package/dist/installer.d.ts.map +1 -1
  120. package/dist/installer.js +58 -0
  121. package/dist/installer.js.map +1 -1
  122. package/dist/invariants/invariant-rules.schema.json +1 -1
  123. package/dist/invariants/ruleValidator.js +1 -1
  124. package/dist/invariants/ruleValidator.js.map +1 -1
  125. package/dist/invariants/types.d.ts +1 -1
  126. package/dist/invariants/types.d.ts.map +1 -1
  127. package/dist/languages/LanguageOrchestrator.d.ts +3 -2
  128. package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
  129. package/dist/languages/LanguageOrchestrator.js +1 -1
  130. package/dist/languages/LanguageOrchestrator.js.map +1 -1
  131. package/dist/languages/RuntimeManager.d.ts +20 -11
  132. package/dist/languages/RuntimeManager.d.ts.map +1 -1
  133. package/dist/languages/RuntimeManager.js +151 -51
  134. package/dist/languages/RuntimeManager.js.map +1 -1
  135. package/dist/languages/adapterBridge.d.ts +10 -0
  136. package/dist/languages/adapterBridge.d.ts.map +1 -1
  137. package/dist/languages/adapterBridge.js +30 -7
  138. package/dist/languages/adapterBridge.js.map +1 -1
  139. package/dist/languages/go/GoAdapter.d.ts +1 -19
  140. package/dist/languages/go/GoAdapter.d.ts.map +1 -1
  141. package/dist/languages/go/GoAdapter.js +33 -116
  142. package/dist/languages/go/GoAdapter.js.map +1 -1
  143. package/dist/languages/go/analyzer +0 -0
  144. package/dist/languages/go/analyzer-src/analyzer.go +8 -8
  145. package/dist/languages/go/analyzer-src/solid.go +5 -5
  146. package/dist/languages/goBinary.d.ts +46 -0
  147. package/dist/languages/goBinary.d.ts.map +1 -0
  148. package/dist/languages/goBinary.js +169 -0
  149. package/dist/languages/goBinary.js.map +1 -0
  150. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +1 -28
  151. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -1
  152. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +3 -42
  153. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
  154. package/dist/languages/tree-sitter/converter.d.ts.map +1 -1
  155. package/dist/languages/tree-sitter/converter.js +2 -1
  156. package/dist/languages/tree-sitter/converter.js.map +1 -1
  157. package/dist/languages/tree-sitter/rawNode.d.ts +31 -0
  158. package/dist/languages/tree-sitter/rawNode.d.ts.map +1 -0
  159. package/dist/languages/tree-sitter/rawNode.js +38 -0
  160. package/dist/languages/tree-sitter/rawNode.js.map +1 -0
  161. package/dist/languages/types.d.ts +0 -21
  162. package/dist/languages/types.d.ts.map +1 -1
  163. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +1 -32
  164. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  165. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +69 -203
  166. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  167. package/dist/ledger.d.ts +3 -0
  168. package/dist/ledger.d.ts.map +1 -1
  169. package/dist/ledger.js +45 -9
  170. package/dist/ledger.js.map +1 -1
  171. package/dist/mcp-tools/projectTasks.js +2 -2
  172. package/dist/mcp-tools/projectTasks.js.map +1 -1
  173. package/dist/mcp-tools/workflowGuide.js +3 -3
  174. package/dist/mcp-tools/workflowGuide.js.map +1 -1
  175. package/dist/mcp-tools-shared.js +13 -13
  176. package/dist/mcp-tools-shared.js.map +1 -1
  177. package/dist/mcp-ui-simple.js +7 -7
  178. package/dist/mcp-ui-simple.js.map +1 -1
  179. package/dist/mcp.js +14 -14
  180. package/dist/mcp.js.map +1 -1
  181. package/dist/mcpAuditJobs.js +7 -7
  182. package/dist/mcpAuditJobs.js.map +1 -1
  183. package/dist/mcpAutoIndex.js +1 -1
  184. package/dist/mcpAutoIndex.js.map +1 -1
  185. package/dist/nextFile.d.ts +2 -2
  186. package/dist/nextFile.d.ts.map +1 -1
  187. package/dist/nextFile.js +19 -5
  188. package/dist/nextFile.js.map +1 -1
  189. package/dist/nextFileIncremental.d.ts +3 -2
  190. package/dist/nextFileIncremental.d.ts.map +1 -1
  191. package/dist/nextFileIncremental.js +20 -7
  192. package/dist/nextFileIncremental.js.map +1 -1
  193. package/dist/pipelineAdapters.d.ts +17 -0
  194. package/dist/pipelineAdapters.d.ts.map +1 -1
  195. package/dist/pipelineAdapters.js +279 -178
  196. package/dist/pipelineAdapters.js.map +1 -1
  197. package/dist/reporting/csvReportGenerator.js +6 -6
  198. package/dist/reporting/csvReportGenerator.js.map +1 -1
  199. package/dist/reporting/htmlReportGenerator.js +11 -11
  200. package/dist/reporting/htmlReportGenerator.js.map +1 -1
  201. package/dist/reporting/jsonReportGenerator.js +2 -2
  202. package/dist/reporting/jsonReportGenerator.js.map +1 -1
  203. package/dist/reporting/sarifReportGenerator.js +1 -1
  204. package/dist/reporting/sarifReportGenerator.js.map +1 -1
  205. package/dist/scripts/benchmarkWorkers.js +1 -1
  206. package/dist/scripts/benchmarkWorkers.js.map +1 -1
  207. package/dist/styles/cssAstExtractor.d.ts +2 -2
  208. package/dist/styles/cssAstExtractor.d.ts.map +1 -1
  209. package/dist/styles/cssAstExtractor.js +67 -111
  210. package/dist/styles/cssAstExtractor.js.map +1 -1
  211. package/dist/styles/styleIndexer.d.ts.map +1 -1
  212. package/dist/styles/styleIndexer.js +19 -6
  213. package/dist/styles/styleIndexer.js.map +1 -1
  214. package/dist/telemetry.d.ts +1 -1
  215. package/dist/telemetry.d.ts.map +1 -1
  216. package/dist/types/crossLanguage.d.ts +1 -1
  217. package/dist/types/crossLanguage.d.ts.map +1 -1
  218. package/dist/types.d.ts +59 -19
  219. package/dist/types.d.ts.map +1 -1
  220. package/dist/types.js +6 -5
  221. package/dist/types.js.map +1 -1
  222. package/dist/utils/astParser.d.ts +1 -17
  223. package/dist/utils/astParser.d.ts.map +1 -1
  224. package/dist/utils/astParser.js +18 -60
  225. package/dist/utils/astParser.js.map +1 -1
  226. package/dist/utils/astUtils.d.ts +12 -12
  227. package/dist/utils/astUtils.d.ts.map +1 -1
  228. package/dist/utils/astUtils.js +83 -82
  229. package/dist/utils/astUtils.js.map +1 -1
  230. package/dist/utils/componentResponsibility.d.ts +8 -8
  231. package/dist/utils/componentResponsibility.d.ts.map +1 -1
  232. package/dist/utils/componentResponsibility.js +33 -38
  233. package/dist/utils/componentResponsibility.js.map +1 -1
  234. package/dist/utils/dependencyExtractor.d.ts +3 -3
  235. package/dist/utils/dependencyExtractor.d.ts.map +1 -1
  236. package/dist/utils/dependencyExtractor.js +26 -30
  237. package/dist/utils/dependencyExtractor.js.map +1 -1
  238. package/dist/utils/fileDiscovery.d.ts.map +1 -1
  239. package/dist/utils/fileDiscovery.js +65 -0
  240. package/dist/utils/fileDiscovery.js.map +1 -1
  241. package/dist/utils/jsDocParser.d.ts +6 -6
  242. package/dist/utils/jsDocParser.d.ts.map +1 -1
  243. package/dist/utils/jsDocParser.js +18 -21
  244. package/dist/utils/jsDocParser.js.map +1 -1
  245. package/dist/utils/reactDetection.d.ts +7 -7
  246. package/dist/utils/reactDetection.d.ts.map +1 -1
  247. package/dist/utils/reactDetection.js +42 -49
  248. package/dist/utils/reactDetection.js.map +1 -1
  249. package/dist/version.generated.d.ts +1 -1
  250. package/dist/version.generated.d.ts.map +1 -1
  251. package/dist/version.generated.js +1 -1
  252. package/dist/version.generated.js.map +1 -1
  253. package/package.json +1 -1
  254. package/plugin/.claude-plugin/plugin.json +1 -1
  255. package/plugin/README.md +5 -4
  256. package/plugin/hooks/hooks.json +11 -0
  257. package/plugin/scripts/hook-common.sh +129 -26
  258. package/plugin/scripts/hook-warm.sh +44 -0
  259. package/plugin/skills/code-auditor/SKILL-RULE-KINDS.md +28 -21
  260. package/plugin/skills/code-auditor/SKILL.md +10 -10
  261. package/server.json +2 -2
@@ -74,7 +74,7 @@ function checkComponentComplexity(component, config) {
74
74
  return [{
75
75
  file: component.filePath,
76
76
  line: component.lineNumber,
77
- severity: 'high',
77
+ severity: 'severe',
78
78
  message: `Component '${component.name}' has high complexity (${component.complexity})`,
79
79
  componentName: component.name,
80
80
  rule: 'complexity',
@@ -94,7 +94,7 @@ function checkPropsValidation(component, config) {
94
94
  return [{
95
95
  file: component.filePath,
96
96
  line: component.lineNumber,
97
- severity: 'high',
97
+ severity: 'advisory',
98
98
  message: `Component '${component.name}' is missing prop type definitions`,
99
99
  componentName: component.name,
100
100
  rule: 'missing-props',
@@ -121,7 +121,7 @@ function checkHooksRules(component) {
121
121
  violations.push({
122
122
  file: component.filePath,
123
123
  line: hook.line,
124
- severity: 'high',
124
+ severity: 'advisory',
125
125
  message: `Custom hook '${hook.name}' should start with 'use'`,
126
126
  componentName: component.name,
127
127
  rule: 'hooks-naming',
@@ -157,7 +157,7 @@ function checkPerformanceIssues(component, config) {
157
157
  violations.push({
158
158
  file: component.filePath,
159
159
  line: component.lineNumber,
160
- severity: 'high',
160
+ severity: 'severe',
161
161
  message: `Consider memoizing component '${component.name}' for better performance`,
162
162
  componentName: component.name,
163
163
  rule: 'performance',
@@ -172,15 +172,16 @@ function checkPerformanceIssues(component, config) {
172
172
  // Check for inline function props (causes re-renders).
173
173
  // Honest, per-element signal: an `onClick` attribute whose value is an inline
174
174
  // arrow/function expression (`onClick={() => …}` / `onClick={function …}`),
175
- // not a bare identifier reference (`onClick={handleClick}`). The old check
176
- // (a `=>` anywhere in a truncated context window + `onClick={`) fired on
177
- // unrelated arrows and identifier handlers alike.
178
- const source = componentSource(component);
179
- if (source && hasInlineFunctionProp(source, 'onClick')) {
175
+ // not a bare identifier reference (`onClick={handleClick}`). Read from the
176
+ // AST-derived element details, so commented-out JSX never counts and the
177
+ // finding anchors to the `onClick` attribute's own line.
178
+ const onClickInline = (component.jsxElementDetails ?? []).find(el => el.attributes.some(a => a.name === 'onClick' && (a.valueKind === 'arrow' || a.valueKind === 'function')));
179
+ if (onClickInline) {
180
+ const attr = onClickInline.attributes.find(a => a.name === 'onClick' && (a.valueKind === 'arrow' || a.valueKind === 'function'));
180
181
  violations.push({
181
182
  file: component.filePath,
182
- line: component.lineNumber,
183
- severity: 'high',
183
+ line: attr.line,
184
+ severity: 'severe',
184
185
  message: `Component '${component.name}' passes an inline function prop (onClick) causing unnecessary re-renders`,
185
186
  componentName: component.name,
186
187
  rule: 'performance',
@@ -195,18 +196,19 @@ function checkPerformanceIssues(component, config) {
195
196
  */
196
197
  function checkAccessibility(component) {
197
198
  const violations = [];
198
- const source = componentSource(component);
199
- if (!source)
199
+ // Structured, AST-derived elements: JSX inside comments/strings is absent
200
+ // (it is never a `jsx_element` node), and each element carries its own line.
201
+ const elements = component.jsxElementDetails ?? [];
202
+ if (elements.length === 0)
200
203
  return violations;
201
204
  // Per-element <img> alt check: flag only when a specific <img> opening tag
202
- // lacks an alt attribute. The old check (`jsxElements.includes('img')` &&
203
- // `!context.includes('alt=')`) suppressed a finding whenever ANY `alt=` text
204
- // appeared anywhere in a truncated context window — one <img> with alt hid a
205
- // second <img> without it.
206
- if (hasImgWithoutAlt(source)) {
205
+ // lacks an alt attribute. Anchored to the offending <img> element's line, not
206
+ // the component declaration.
207
+ const imgWithoutAlt = elements.find(el => el.tagName === 'img' && !el.attributes.some(a => a.name === 'alt'));
208
+ if (imgWithoutAlt) {
207
209
  violations.push({
208
210
  file: component.filePath,
209
- line: component.lineNumber,
211
+ line: imgWithoutAlt.line,
210
212
  severity: 'severe',
211
213
  message: `Component '${component.name}' has an <img> element without an alt attribute`,
212
214
  componentName: component.name,
@@ -216,14 +218,14 @@ function checkAccessibility(component) {
216
218
  });
217
219
  }
218
220
  // Per-element click-handler check on non-interactive elements: the element's
219
- // own opening tag carries `onClick`. The old check matched `onClick` anywhere
220
- // in the component, not on the specific element.
221
+ // own opening tag carries `onClick`. Anchored to that element's line.
221
222
  const nonInteractiveElements = ['div', 'span', 'section'];
222
223
  for (const element of nonInteractiveElements) {
223
- if (hasOnClickOnElement(source, element)) {
224
+ const offending = elements.find(el => el.tagName === element && el.attributes.some(a => a.name === 'onClick'));
225
+ if (offending) {
224
226
  violations.push({
225
227
  file: component.filePath,
226
- line: component.lineNumber,
228
+ line: offending.line,
227
229
  severity: 'severe',
228
230
  message: `Component '${component.name}' has onClick on a non-interactive <${element}> element`,
229
231
  componentName: component.name,
@@ -250,7 +252,7 @@ function checkMissingKeys(component) {
250
252
  violations.push({
251
253
  file: component.filePath,
252
254
  line: component.lineNumber,
253
- severity: 'high',
255
+ severity: 'severe',
254
256
  message: `Component '${component.name}' may be rendering lists without keys`,
255
257
  componentName: component.name,
256
258
  rule: 'performance',
@@ -260,97 +262,10 @@ function checkMissingKeys(component) {
260
262
  }
261
263
  return violations;
262
264
  }
263
- /** Full component source for per-element JSX checks, falling back to context. */
265
+ /** Full component source for the component-level list-key heuristic. */
264
266
  function componentSource(component) {
265
267
  return component.body ?? component.context ?? '';
266
268
  }
267
- /**
268
- * True when any `<img ...>` opening tag in the source lacks an `alt` attribute.
269
- * Each tag is scanned in isolation, so a component with two images — one with
270
- * alt and one without — is correctly flagged.
271
- */
272
- function hasImgWithoutAlt(source) {
273
- const imgRe = /<img\b/ig;
274
- let match;
275
- while ((match = imgRe.exec(source)) !== null) {
276
- const tag = source.slice(match.index, findJsxTagEnd(source, match.index));
277
- if (!/\balt\b\s*=/.test(tag))
278
- return true;
279
- }
280
- return false;
281
- }
282
- /**
283
- * True when an opening tag `<element … onClick …>` carries an onClick handler.
284
- * Scans each `<element` opening tag's own attribute span (skipping nested
285
- * braces/strings/arrow `=>`) so an onClick on a *different* element never
286
- * counts.
287
- */
288
- function hasOnClickOnElement(source, element) {
289
- const openRe = new RegExp(`<${element}\\b`, 'ig');
290
- let match;
291
- while ((match = openRe.exec(source)) !== null) {
292
- const tag = source.slice(match.index, findJsxTagEnd(source, match.index));
293
- if (/\bonClick\b/.test(tag))
294
- return true;
295
- }
296
- return false;
297
- }
298
- /**
299
- * True when an event handler attribute (`onClick={…}`) is assigned an inline
300
- * function — an arrow or `function` expression — rather than an identifier
301
- * reference. Identifiers (`onClick={handleClick}`) are not inline props.
302
- */
303
- function hasInlineFunctionProp(source, prop) {
304
- const attrRe = new RegExp(`\\b${prop}\\s*=\\s*\\{`, 'g');
305
- let match;
306
- while ((match = attrRe.exec(source)) !== null) {
307
- const rest = source.slice(match.index + match[0].length);
308
- // Inline arrow `() =>` / `(...) =>` / `x =>` or `function` expression.
309
- if (/^\s*(?:\([^)]*\)|[A-Za-z_$][\w$]*)\s*=>/.test(rest) || /^\s*function\b/.test(rest)) {
310
- return true;
311
- }
312
- }
313
- return false;
314
- }
315
- /**
316
- * Find the index just past the `>` that closes a JSX opening tag starting at
317
- * `start`, skipping over string literals, `{…}` expression braces, and the `>`
318
- * of an arrow function (`=>`) nested inside an expression. Returns the source
319
- * length when no unbraced `>` is found (a malformed tag).
320
- */
321
- function findJsxTagEnd(source, start) {
322
- let i = start;
323
- let inString = null;
324
- let braceDepth = 0;
325
- while (i < source.length) {
326
- const ch = source[i];
327
- if (inString) {
328
- if (ch === inString)
329
- inString = null;
330
- i++;
331
- continue;
332
- }
333
- if (ch === '"' || ch === "'" || ch === '`') {
334
- inString = ch;
335
- i++;
336
- continue;
337
- }
338
- if (ch === '{') {
339
- braceDepth++;
340
- i++;
341
- continue;
342
- }
343
- if (ch === '}') {
344
- braceDepth = Math.max(0, braceDepth - 1);
345
- i++;
346
- continue;
347
- }
348
- if (ch === '>' && braceDepth === 0)
349
- return i + 1;
350
- i++;
351
- }
352
- return source.length;
353
- }
354
269
  /** Recursively search for a cycle reachable from `component`. */
355
270
  function findCycle(ctx, component, path = []) {
356
271
  if (ctx.recursionStack.has(component)) {
@@ -391,7 +306,7 @@ export function checkCircularDependencies(componentTree) {
391
306
  if (cycle) {
392
307
  violations.push({
393
308
  file: 'component-dependencies',
394
- severity: 'high',
309
+ severity: 'severe',
395
310
  message: `Circular dependency detected: ${cycle.join(' → ')}`,
396
311
  rule: 'complexity',
397
312
  violationType: 'complexity',
@@ -545,11 +460,14 @@ function collectRawElementUsages(scanResults, watchSet, wrapperMap) {
545
460
  continue;
546
461
  }
547
462
  rawUsageCounts.set(jsxEl, (rawUsageCounts.get(jsxEl) || 0) + 1);
463
+ // Anchor to the raw element's own line (first occurrence in the
464
+ // component), not the component declaration.
465
+ const detail = component.jsxElementDetails?.find(d => d.tagName === jsxEl);
548
466
  rawUsageLocations.push({
549
467
  element: jsxEl,
550
468
  componentName: component.name,
551
469
  filePath: component.filePath,
552
- line: component.lineNumber ?? 0,
470
+ line: detail?.line ?? component.lineNumber ?? 0,
553
471
  wrapperName: wrapper.wrapperName,
554
472
  wrapperFile: wrapper.wrapperFile,
555
473
  });
@@ -564,7 +482,7 @@ function collectRawElementUsages(scanResults, watchSet, wrapperMap) {
564
482
  * Auto-detects wrapper components (exported components whose rendered root is a single
565
483
  * intrinsic element from the watch list) and flags raw usages of that element outside
566
484
  * the wrapper's definition. A {@link ReactAnalyzerConfig.componentMap} overrides
567
- * auto-detection, making every raw usage a high-severity finding.
485
+ * auto-detection, making every raw usage a finding.
568
486
  * @param config
569
487
  * @param scanResults
570
488
  * @returns
@@ -582,7 +500,7 @@ export function checkRawElements(scanResults, config) {
582
500
  const { rawUsageCounts, rawUsageLocations } = collectRawElementUsages(scanResults, watchSet, wrapperMap);
583
501
  // ── Phase 3: Emit violations ──────────────────────────────────────────
584
502
  const minUsages = config.wrapperMinUsages ?? 5;
585
- const severity = 'high';
503
+ const severity = 'advisory';
586
504
  for (const loc of rawUsageLocations) {
587
505
  const count = rawUsageCounts.get(loc.element) || 0;
588
506
  if (count < minUsages)
@@ -1 +1 @@
1
- {"version":3,"file":"reactAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/reactAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/reactAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,8 @@ import type { Resolution } from '../types.js';
19
19
  * They are listed here for collision detection nonetheless.
20
20
  *
21
21
  * NOTE: invariants analyzer rule IDs are user-defined and variable —
22
- * `config-error` and `engine-error` are the only fixed, internal ones.
22
+ * `config-error` and `engine-error` are diagnostics (not violations), see
23
+ * `CoverageDiagnostic.kind`; they no longer have registry entries.
23
24
  *
24
25
  * Spec 37 R2: every entry carries `resolvable`, `message`, `docs`, and
25
26
  * `thresholds`. Missing any field is a build failure (the interface makes
@@ -128,8 +129,9 @@ export interface RuleSamples {
128
129
  * Every known rule/violation-type ID → analyzer.
129
130
  *
130
131
  * Invariant IDs (user-defined from .codeauditor.json rules) are NOT
131
- * listed — they vary per project. The two fixed invariant IDs
132
- * (`config-error`, `engine-error`) are listed.
132
+ * listed — they vary per project. The fixed invariant IDs (`config-error`,
133
+ * `engine-error`) are diagnostics (see `CoverageDiagnostic.kind`), not
134
+ * violation rules, so they have no registry entry.
133
135
  */
134
136
  export declare const RULE_REGISTRY: Record<string, Readonly<RuleRegistryEntry>>;
135
137
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ruleRegistry.d.ts","sourceRoot":"","sources":["../../src/analyzers/ruleRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/F;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,+FAA+F;IAC/F,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CA61DrE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAEnC,CAAC;AAET;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAMlD,CAAC;AAEF;;;GAGG;AACH,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAQ/F"}
1
+ {"version":3,"file":"ruleRegistry.d.ts","sourceRoot":"","sources":["../../src/analyzers/ruleRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/F;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,+FAA+F;IAC/F,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CA4+DrE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAEnC,CAAC;AAET;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAMlD,CAAC;AAEF;;;GAGG;AACH,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAQ/F"}
@@ -2,8 +2,9 @@
2
2
  * Every known rule/violation-type ID → analyzer.
3
3
  *
4
4
  * Invariant IDs (user-defined from .codeauditor.json rules) are NOT
5
- * listed — they vary per project. The two fixed invariant IDs
6
- * (`config-error`, `engine-error`) are listed.
5
+ * listed — they vary per project. The fixed invariant IDs (`config-error`,
6
+ * `engine-error`) are diagnostics (see `CoverageDiagnostic.kind`), not
7
+ * violation rules, so they have no registry entry.
7
8
  */
8
9
  export const RULE_REGISTRY = {
9
10
  // ── solid (UniversalSOLIDAnalyzer) ──────────────────────────────────────
@@ -234,6 +235,117 @@ export const RULE_REGISTRY = {
234
235
  ],
235
236
  },
236
237
  },
238
+ // ── Go non-SOLID rules (Spec-54 severity) ──────────────────────────────
239
+ // The Go subprocess emits these under a single `go` analyzer namespace: the
240
+ // subprocess's internal `imports`/`errors`/`goroutines`/`channels` dispatch is
241
+ // collapsed to `go` at emit time so its structure does not surface as four
242
+ // analyzer names a user has to learn. Registered here so coverage and
243
+ // describeRuleId see them, and so their severities carry a registry entry.
244
+ 'channel-deadlock': {
245
+ analyzer: 'go',
246
+ field: 'rule',
247
+ input: ['files'],
248
+ resolvable: false,
249
+ message: 'Guaranteed deadlock: an unbuffered channel is both sent to and received from in the same goroutine.',
250
+ docs: 'channel-deadlock',
251
+ thresholds: [],
252
+ thresholdRationale: 'Go analyzer: deadlock is a structural property (unbuffered send + receive in one goroutine with no `go`), not a size. Hardcoded in the Go analyzer (not a TS config key).',
253
+ samples: {
254
+ valid: [
255
+ {
256
+ code: 'package main\n\nfunc buffered() {\n\tch := make(chan int, 1)\n\tch <- 1\n\t<-ch\n}',
257
+ nearMiss: true,
258
+ },
259
+ ],
260
+ invalid: [
261
+ { code: 'package main\n\nfunc deadlock() {\n\tch := make(chan int)\n\tch <- 1\n\t<-ch\n}' },
262
+ ],
263
+ },
264
+ },
265
+ 'error-handling': {
266
+ analyzer: 'go',
267
+ field: 'rule',
268
+ input: ['files'],
269
+ resolvable: false,
270
+ message: 'Function assigns an error that is never checked, returned, or propagated.',
271
+ docs: 'error-handling',
272
+ thresholds: [],
273
+ thresholdRationale: 'Go analyzer: dropped-error detection is structural (an assigned error never compared/returned/passed/ignored), not a count. Hardcoded in the Go analyzer (not a TS config key).',
274
+ samples: {
275
+ valid: [
276
+ {
277
+ code: 'package main\n\nimport "os"\n\nfunc checked() {\n\tf, err := os.Open("x")\n\tif err != nil {\n\t\treturn\n\t}\n\tf.Close()\n}',
278
+ nearMiss: true,
279
+ },
280
+ ],
281
+ invalid: [
282
+ { code: 'package main\n\nimport "os"\n\nfunc dropped() {\n\tf, err := os.Open("x")\n\tf.Close()\n}' },
283
+ ],
284
+ },
285
+ },
286
+ 'concurrency': {
287
+ analyzer: 'go',
288
+ field: 'rule',
289
+ input: ['files'],
290
+ resolvable: false,
291
+ message: 'Function launches a goroutine without synchronization.',
292
+ docs: 'concurrency',
293
+ thresholds: [],
294
+ thresholdRationale: 'Go analyzer: unsynchronized-goroutine detection is structural (a `go` statement with no sync primitive/channel in the function), not a count. Hardcoded in the Go analyzer (not a TS config key).',
295
+ samples: {
296
+ valid: [
297
+ {
298
+ code: 'package main\n\nimport "sync"\n\nfunc safe() {\n\tvar wg sync.WaitGroup\n\twg.Add(1)\n\tgo func() {\n\t\tdefer wg.Done()\n\t}()\n\twg.Wait()\n}',
299
+ nearMiss: true,
300
+ },
301
+ ],
302
+ invalid: [
303
+ { code: 'package main\n\nfunc fire() {\n\tgo background()\n}\n\nfunc background() {}' },
304
+ ],
305
+ },
306
+ },
307
+ 'import-organization': {
308
+ analyzer: 'go',
309
+ field: 'rule',
310
+ input: ['files'],
311
+ resolvable: false,
312
+ message: 'Import block mixes standard library and third-party imports without grouping.',
313
+ docs: 'import-organization',
314
+ thresholds: [],
315
+ thresholdRationale: 'Go analyzer: grouping is a structural check (stdlib vs third-party block separation), not a count. Hardcoded in the Go analyzer (not a TS config key).',
316
+ samples: {
317
+ valid: [
318
+ {
319
+ code: 'package main\n\nimport (\n\t"os"\n\n\t"github.com/gin-gonic/gin"\n)',
320
+ nearMiss: true,
321
+ },
322
+ ],
323
+ invalid: [
324
+ { code: 'package main\n\nimport (\n\t"os"\n\t"github.com/gin-gonic/gin"\n)' },
325
+ ],
326
+ },
327
+ },
328
+ 'import-style': {
329
+ analyzer: 'go',
330
+ field: 'rule',
331
+ input: ['files'],
332
+ resolvable: false,
333
+ message: 'Dot import detected — can lead to namespace pollution.',
334
+ docs: 'import-style',
335
+ thresholds: [],
336
+ thresholdRationale: 'Go analyzer: dot-import detection is structural (an import whose local name is "."), not a count. Hardcoded in the Go analyzer (not a TS config key).',
337
+ samples: {
338
+ valid: [
339
+ {
340
+ code: 'package main\n\nimport f "fmt"',
341
+ nearMiss: true,
342
+ },
343
+ ],
344
+ invalid: [
345
+ { code: 'package main\n\nimport . "fmt"' },
346
+ ],
347
+ },
348
+ },
237
349
  'solid/liskov-substitution': {
238
350
  analyzer: 'solid',
239
351
  field: 'rule',
@@ -343,6 +455,29 @@ export const RULE_REGISTRY = {
343
455
  ],
344
456
  },
345
457
  },
458
+ // Spec 13 R5 — a previously-identical clone pair whose similarity has fallen
459
+ // across consecutive runs (copy-paste then edit one side). Cross-run: emitted
460
+ // by the divergence-tracking pass in auditRunner, not the per-file DRY visitor.
461
+ 'dry/diverging-clone': {
462
+ analyzer: 'dry',
463
+ field: 'rule',
464
+ input: ['files'],
465
+ resolvable: false,
466
+ message: 'Clone pair has diverged: similarity dropped {drop} (from {previous} to {current}) across {runs} consecutive runs. Review {file1}:{line1} and {file2}:{line2} for diverged logic.',
467
+ docs: 'dry/diverging-clone',
468
+ // No thresholds: the divergence knobs (divergenceThreshold, divergenceRuns,
469
+ // minPairSimilarity) live in DivergenceConfig (types.ts), read by auditRunner's
470
+ // cross-run pass — not keys the dry analyzer's own DEFAULT_DRY_CONFIG reads.
471
+ thresholds: [],
472
+ samples: {
473
+ valid: [
474
+ { code: '// pair similarity 0.82 → 0.81 → 0.80 (below the 0.05 drop over 2 runs)', nearMiss: true },
475
+ ],
476
+ invalid: [
477
+ { code: '// pair similarity 0.82 → 0.70 → 0.58: a ≥0.05 drop for 2 consecutive runs' },
478
+ ],
479
+ },
480
+ },
346
481
  'duplicate-string-literal': {
347
482
  analyzer: 'dry',
348
483
  field: 'rule',
@@ -993,6 +1128,53 @@ export const RULE_REGISTRY = {
993
1128
  ],
994
1129
  },
995
1130
  },
1131
+ // Cross-file stale-table-reference detection → emitted by the schema Stage 3
1132
+ // reducer. Distinguishes "never existed" (unknown-table) from "existed and was
1133
+ // dropped in a migration" (stale-table-reference): the latter is a stale code
1134
+ // reference, not a typo, so the message names the dropping migration and the
1135
+ // tables it created in its place.
1136
+ 'stale-table-reference': {
1137
+ analyzer: 'schema',
1138
+ field: 'rule',
1139
+ input: ['schema-code'],
1140
+ resolvable: true,
1141
+ message: 'Reference to dropped table "{table}" — dropped in {migration}.',
1142
+ docs: 'stale-table-reference',
1143
+ thresholds: [],
1144
+ samples: {
1145
+ valid: [
1146
+ { code: 'db.query("SELECT * FROM users")', nearMiss: true },
1147
+ ],
1148
+ invalid: [
1149
+ {
1150
+ code: 'db.query("SELECT * FROM legacy_orders")',
1151
+ resolution: { action: 'update-stale-reference', summary: 'The table "legacy_orders" was dropped in 002_drop_legacy.sql. That migration creates "orders" — update this reference to a table that still exists.', symbols: ['orders'] },
1152
+ },
1153
+ ],
1154
+ },
1155
+ },
1156
+ // Per-function query-count ceiling → emitted by the schema-code visitor.
1157
+ // Tunable via maxQueriesPerFunction (default 5); listed under `schema`, which
1158
+ // (like the other schema rules) has no config shape in the threshold-validation
1159
+ // test, so the knob is documented here rather than declared in `thresholds`.
1160
+ 'too-many-queries': {
1161
+ analyzer: 'schema',
1162
+ field: 'rule',
1163
+ configGate: 'validateQueryPatterns',
1164
+ input: ['schema-code'],
1165
+ resolvable: false,
1166
+ message: 'Function "{name}" has {count} queries, exceeding the maximum of {max}.',
1167
+ docs: 'too-many-queries',
1168
+ thresholds: [],
1169
+ samples: {
1170
+ valid: [
1171
+ { code: 'function getUser(id) {\n return db.query("SELECT * FROM users WHERE id = ?", [id]);\n}', nearMiss: true },
1172
+ ],
1173
+ invalid: [
1174
+ { code: 'function loadDashboard() {\n db.query("SELECT * FROM users");\n db.query("SELECT * FROM orders");\n db.query("SELECT * FROM products");\n db.query("SELECT * FROM reviews");\n db.query("SELECT * FROM events");\n db.query("SELECT * FROM alerts");\n}' },
1175
+ ],
1176
+ },
1177
+ },
996
1178
  // Spec 58 R1 — DB-call SQL held in an unresolvable identifier (imported
997
1179
  // constant, computed/concatenated expression, call result) is no longer a
998
1180
  // violation rule. It moved to the coverage-diagnostics channel
@@ -1127,41 +1309,14 @@ export const RULE_REGISTRY = {
1127
1309
  ],
1128
1310
  },
1129
1311
  },
1130
- // ── invariants (invariantsAnalyzer) — fixed internal IDs only ──────────
1131
- 'config-error': {
1132
- analyzer: 'invariants',
1133
- field: 'rule',
1134
- input: ['files'],
1135
- resolvable: false,
1136
- message: 'Invalid invariant config: {error}.',
1137
- docs: 'config-error',
1138
- thresholds: [],
1139
- samples: {
1140
- valid: [
1141
- { code: 'export default { rules: [] };', nearMiss: true },
1142
- ],
1143
- invalid: [
1144
- { code: 'export default { rules: [{ kind: "not-a-kind" }] };' },
1145
- ],
1146
- },
1147
- },
1148
- 'engine-error': {
1149
- analyzer: 'invariants',
1150
- field: 'rule',
1151
- input: ['files'],
1152
- resolvable: false,
1153
- message: 'Invariant rule engine error: {error}.',
1154
- docs: 'engine-error',
1155
- thresholds: [],
1156
- samples: {
1157
- valid: [
1158
- { code: 'runRules([], { rules: [] });', nearMiss: true },
1159
- ],
1160
- invalid: [
1161
- { code: 'runRules(null, { rules: [] });' },
1162
- ],
1163
- },
1164
- },
1312
+ // ── invariants (invariantsAnalyzer) — no fixed violation IDs ────────────
1313
+ // Spec 59 — `config-error` / `engine-error` moved off the severity ladder to
1314
+ // the coverage-diagnostics channel (`CoverageDiagnostic`, kinds `config-error`
1315
+ // / `engine-error`). A bad `.codeauditor.json` or a rule-engine failure is a
1316
+ // tool-side "couldn't do its job", not a defect in the audited code. The
1317
+ // registry entries are removed so `buildCoverageReport` doesn't classify them
1318
+ // `clean` (which would assert the tool checked something it no longer checks
1319
+ // as a finding).
1165
1320
  // ── schema-validator (SchemaValidator) ──────────────────────────────────
1166
1321
  'field-mismatch': {
1167
1322
  analyzer: 'schema-validator',
@@ -1583,23 +1738,12 @@ export const RULE_REGISTRY = {
1583
1738
  ],
1584
1739
  },
1585
1740
  },
1586
- 'styles/undefined-class-disabled': {
1587
- analyzer: 'styles',
1588
- field: 'rule',
1589
- input: ['styles-css'],
1590
- resolvable: false,
1591
- message: 'Undefined-class detection skipped: {reason}.',
1592
- docs: 'styles/undefined-class-disabled',
1593
- thresholds: [],
1594
- samples: {
1595
- valid: [
1596
- { code: '// detection enabled, corpus present', nearMiss: true },
1597
- ],
1598
- invalid: [
1599
- { code: '// no stylesheet corpus available' },
1600
- ],
1601
- },
1602
- },
1741
+ // Spec 59 — `styles/undefined-class-disabled` moved off the severity ladder
1742
+ // to the coverage-diagnostics channel (`CoverageDiagnostic`, kind
1743
+ // `undefined-class-disabled`). A Tailwind probe failure (with a Tailwind
1744
+ // config present) disables undefined-class detection — a tool-side "couldn't
1745
+ // do its job", not a defect. The registry entry is removed so coverage never
1746
+ // asserts the tool checked something it no longer checks as a finding.
1603
1747
  'styles/token-bypass': {
1604
1748
  analyzer: 'styles',
1605
1749
  field: 'rule',