slopbrick 0.18.7 → 0.18.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.
- package/dist/engine/worker.cjs +2406 -809
- package/dist/engine/worker.js +2397 -809
- package/dist/index.cjs +2558 -983
- package/dist/index.d.cts +86 -0
- package/dist/index.d.ts +86 -0
- package/dist/index.js +2558 -983
- package/package.json +4 -2
package/dist/engine/worker.js
CHANGED
|
@@ -1,9 +1,415 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __esm = (fn, res) => function __init() {
|
|
4
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
5
|
+
};
|
|
2
6
|
var __export = (target, all) => {
|
|
3
7
|
for (var name in all)
|
|
4
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
9
|
};
|
|
6
10
|
|
|
11
|
+
// src/engine/parser-rust.ts
|
|
12
|
+
import Parser from "tree-sitter";
|
|
13
|
+
import Rust from "tree-sitter-rust";
|
|
14
|
+
function getRustParser() {
|
|
15
|
+
if (cachedParser) return { ok: true, parser: cachedParser };
|
|
16
|
+
if (loadError) return { ok: false, error: loadError };
|
|
17
|
+
try {
|
|
18
|
+
rustLanguage = Rust;
|
|
19
|
+
if (!rustLanguage || typeof rustLanguage !== "object") {
|
|
20
|
+
throw new Error("tree-sitter-rust: language export is missing or malformed");
|
|
21
|
+
}
|
|
22
|
+
const parser = new Parser();
|
|
23
|
+
parser.setLanguage(rustLanguage);
|
|
24
|
+
cachedParser = parser;
|
|
25
|
+
return { ok: true, parser };
|
|
26
|
+
} catch (err) {
|
|
27
|
+
loadError = err instanceof Error ? err : new Error(String(err));
|
|
28
|
+
return { ok: false, error: loadError };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function effectiveParser() {
|
|
32
|
+
if (forcedFailure) return { ok: false, error: forcedFailure };
|
|
33
|
+
return getRustParser();
|
|
34
|
+
}
|
|
35
|
+
function parseRust(source) {
|
|
36
|
+
const result = effectiveParser();
|
|
37
|
+
if (!result.ok) return null;
|
|
38
|
+
if (!source || source.trim() === "") return null;
|
|
39
|
+
try {
|
|
40
|
+
const rawTree = result.parser.parse(source);
|
|
41
|
+
if (!rawTree) return null;
|
|
42
|
+
const tree = rawTree;
|
|
43
|
+
if (!tree || !tree.rootNode) return null;
|
|
44
|
+
if (tree.rootNode.type === "ERROR" && tree.rootNode.childCount === 0) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return tree;
|
|
48
|
+
} catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function isRustParserAvailable() {
|
|
53
|
+
const result = getRustParser();
|
|
54
|
+
return result.ok;
|
|
55
|
+
}
|
|
56
|
+
var cachedParser, rustLanguage, loadError, forcedFailure;
|
|
57
|
+
var init_parser_rust = __esm({
|
|
58
|
+
"src/engine/parser-rust.ts"() {
|
|
59
|
+
"use strict";
|
|
60
|
+
cachedParser = null;
|
|
61
|
+
rustLanguage = null;
|
|
62
|
+
loadError = null;
|
|
63
|
+
forcedFailure = null;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// src/engine/visitors/rust.ts
|
|
68
|
+
function parseRustFile(filePath, source, options = {}) {
|
|
69
|
+
const empty = {
|
|
70
|
+
imports: [],
|
|
71
|
+
functions: [],
|
|
72
|
+
structs: [],
|
|
73
|
+
traits: [],
|
|
74
|
+
impls: []
|
|
75
|
+
};
|
|
76
|
+
if (!isRustParserAvailable() || options.forceFallback) {
|
|
77
|
+
return empty;
|
|
78
|
+
}
|
|
79
|
+
const tree = parseRust(source);
|
|
80
|
+
if (!tree) return empty;
|
|
81
|
+
return walkRustTree(tree);
|
|
82
|
+
}
|
|
83
|
+
function walkRustTree(tree) {
|
|
84
|
+
const ctx = { inTestConfig: false };
|
|
85
|
+
const out = {
|
|
86
|
+
imports: [],
|
|
87
|
+
functions: [],
|
|
88
|
+
structs: [],
|
|
89
|
+
traits: [],
|
|
90
|
+
impls: []
|
|
91
|
+
};
|
|
92
|
+
walkChildren(tree.rootNode, ctx, out);
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
function walkChildren(node, ctx, out) {
|
|
96
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
97
|
+
const child = node.namedChild(i);
|
|
98
|
+
if (!child) continue;
|
|
99
|
+
visitNode(child, ctx, out);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function visitNode(node, ctx, out) {
|
|
103
|
+
const innerCtx = { ...ctx };
|
|
104
|
+
const attrState = readPrecedingAttributes(node);
|
|
105
|
+
switch (node.type) {
|
|
106
|
+
case "use_declaration": {
|
|
107
|
+
out.imports.push(extractUse(node));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
case "function_item": {
|
|
111
|
+
const isMethod = isInImplBlock(node);
|
|
112
|
+
out.functions.push(extractFunction(node, attrState, innerCtx.inTestConfig, isMethod));
|
|
113
|
+
walkChildren(getField(node, "body") ?? node, innerCtx, out);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
case "struct_item": {
|
|
117
|
+
out.structs.push(extractStruct(node, attrState));
|
|
118
|
+
const body = getField(node, "body");
|
|
119
|
+
if (body) walkChildren(body, innerCtx, out);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
case "trait_item": {
|
|
123
|
+
out.traits.push(extractTrait(node, attrState));
|
|
124
|
+
const body = getField(node, "body");
|
|
125
|
+
if (body) walkChildren(body, innerCtx, out);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
case "impl_item": {
|
|
129
|
+
const implEntry = extractImpl(node, attrState, innerCtx);
|
|
130
|
+
out.impls.push(implEntry.entry);
|
|
131
|
+
const body = getField(node, "body");
|
|
132
|
+
if (body) walkChildren(body, innerCtx, out);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
case "mod_item": {
|
|
136
|
+
const modIsTest = innerCtx.inTestConfig || attrState.isTestCfg;
|
|
137
|
+
const modCtx = { ...innerCtx, inTestConfig: modIsTest };
|
|
138
|
+
const body = getField(node, "body");
|
|
139
|
+
if (body) walkChildren(body, modCtx, out);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
default: {
|
|
143
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
144
|
+
const child = node.namedChild(i);
|
|
145
|
+
if (child) visitNode(child, innerCtx, out);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function readPrecedingAttributes(node) {
|
|
151
|
+
const state = {
|
|
152
|
+
isTestCfg: false,
|
|
153
|
+
isTest: false,
|
|
154
|
+
isPub: false,
|
|
155
|
+
derives: []
|
|
156
|
+
};
|
|
157
|
+
const parent = node.parent;
|
|
158
|
+
if (!parent) return state;
|
|
159
|
+
for (let i = 0; i < parent.namedChildCount; i++) {
|
|
160
|
+
const sibling = parent.namedChild(i);
|
|
161
|
+
if (!sibling || sibling === node) continue;
|
|
162
|
+
if (sibling.endIndex > node.startIndex) continue;
|
|
163
|
+
if (sibling.type !== "attribute_item") continue;
|
|
164
|
+
decodeAttribute(sibling, state);
|
|
165
|
+
}
|
|
166
|
+
return state;
|
|
167
|
+
}
|
|
168
|
+
function decodeAttribute(attr, state) {
|
|
169
|
+
for (let i = 0; i < attr.namedChildCount; i++) {
|
|
170
|
+
const child = attr.namedChild(i);
|
|
171
|
+
if (!child || child.type !== "attribute") continue;
|
|
172
|
+
const name = firstIdentifier(child);
|
|
173
|
+
if (!name) continue;
|
|
174
|
+
if (name === "cfg") {
|
|
175
|
+
const cfgText = child.text;
|
|
176
|
+
if (/\btest\b/.test(cfgText) && !/\bnot\(test\)/.test(cfgText)) {
|
|
177
|
+
state.isTestCfg = true;
|
|
178
|
+
}
|
|
179
|
+
} else if (name === "test") {
|
|
180
|
+
state.isTest = true;
|
|
181
|
+
} else if (name === "derive") {
|
|
182
|
+
for (let j = 0; j < child.namedChildCount; j++) {
|
|
183
|
+
const inner = child.namedChild(j);
|
|
184
|
+
if (inner) {
|
|
185
|
+
const matches = inner.text.matchAll(/\b([A-Z][A-Za-z0-9_]*)\b/g);
|
|
186
|
+
for (const m of matches) state.derives.push(m[1]);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
function firstIdentifier(node) {
|
|
193
|
+
const text = node.text;
|
|
194
|
+
const idMatch = text.match(/^([a-zA-Z_][a-zA-Z0-9_]*)/);
|
|
195
|
+
return idMatch ? idMatch[1] : null;
|
|
196
|
+
}
|
|
197
|
+
function extractUse(node) {
|
|
198
|
+
const text = node.text;
|
|
199
|
+
const argument = node.namedChild(0);
|
|
200
|
+
const argField = node.childForFieldName("argument");
|
|
201
|
+
const path = argField?.text ?? argument?.text ?? "";
|
|
202
|
+
const names = [];
|
|
203
|
+
let isGlob = false;
|
|
204
|
+
const useListNode = findUseListNode(argument);
|
|
205
|
+
if (useListNode) {
|
|
206
|
+
for (let i = 0; i < useListNode.namedChildCount; i++) {
|
|
207
|
+
const item = useListNode.namedChild(i);
|
|
208
|
+
if (item.type === "use_wildcard") {
|
|
209
|
+
isGlob = true;
|
|
210
|
+
} else if (item.type === "identifier") {
|
|
211
|
+
names.push({ name: item.text });
|
|
212
|
+
} else if (item.type === "use_as_clause") {
|
|
213
|
+
const alias = item.childForFieldName("alias");
|
|
214
|
+
const binding = item.childForFieldName("path");
|
|
215
|
+
if (binding) {
|
|
216
|
+
names.push({ name: binding.text, alias: alias?.text });
|
|
217
|
+
} else {
|
|
218
|
+
names.push({ name: item.text });
|
|
219
|
+
}
|
|
220
|
+
} else if (item.type === "scoped_identifier") {
|
|
221
|
+
const idents = collectIdentifiers(item);
|
|
222
|
+
names.push({ name: idents[idents.length - 1] ?? item.text });
|
|
223
|
+
} else if (item.text.includes(" as ")) {
|
|
224
|
+
const [head, alias] = item.text.split(/\s+as\s+/);
|
|
225
|
+
names.push({ name: (head ?? "").trim(), alias: alias?.trim() });
|
|
226
|
+
} else {
|
|
227
|
+
names.push({ name: item.text });
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
} else if (argument?.type === "use_wildcard") {
|
|
231
|
+
isGlob = true;
|
|
232
|
+
} else if (argument) {
|
|
233
|
+
const idents = collectIdentifiers(argument);
|
|
234
|
+
const last = idents[idents.length - 1] ?? argument.text;
|
|
235
|
+
names.push({ name: last });
|
|
236
|
+
const asMatch = text.match(/\s+as\s+(\w+)\s*;?\s*$/);
|
|
237
|
+
if (asMatch) names[0].alias = asMatch[1];
|
|
238
|
+
}
|
|
239
|
+
return {
|
|
240
|
+
path: path.trim(),
|
|
241
|
+
names,
|
|
242
|
+
isGlob,
|
|
243
|
+
line: node.startPosition.row + 1,
|
|
244
|
+
column: node.startPosition.column
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
function extractFunction(node, attrs, inheritedTestConfig, isMethod) {
|
|
248
|
+
const nameNode = node.childForFieldName("name");
|
|
249
|
+
const name = nameNode?.text ?? "<anon>";
|
|
250
|
+
const params = node.childForFieldName("parameters");
|
|
251
|
+
const body = node.childForFieldName("body");
|
|
252
|
+
const visibilityMod = node.namedChild(0);
|
|
253
|
+
const isPublic = visibilityMod?.type === "visibility_modifier";
|
|
254
|
+
let receiver;
|
|
255
|
+
if (isMethod && params) {
|
|
256
|
+
const selfParam = findSelfParameter(params);
|
|
257
|
+
if (selfParam) receiver = selfParam.text;
|
|
258
|
+
}
|
|
259
|
+
const bodyLines = body ? body.endPosition.row - body.startPosition.row + 1 : 0;
|
|
260
|
+
const inTestConfig = inheritedTestConfig || attrs.isTest || attrs.isTestCfg || isFunctionAttrTest(node);
|
|
261
|
+
return {
|
|
262
|
+
name,
|
|
263
|
+
line: node.startPosition.row + 1,
|
|
264
|
+
column: node.startPosition.column,
|
|
265
|
+
isPublic,
|
|
266
|
+
isMethod,
|
|
267
|
+
receiver,
|
|
268
|
+
bodyLines,
|
|
269
|
+
inTestConfig
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
function extractStruct(node, attrs) {
|
|
273
|
+
const nameNode = node.childForFieldName("name");
|
|
274
|
+
return {
|
|
275
|
+
name: nameNode?.text ?? "<anon>",
|
|
276
|
+
line: node.startPosition.row + 1,
|
|
277
|
+
column: node.startPosition.column,
|
|
278
|
+
isPublic: hasVisibility(node),
|
|
279
|
+
isDerive: attrs.derives.length > 0,
|
|
280
|
+
derives: [...attrs.derives]
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
function extractTrait(node, _attrs) {
|
|
284
|
+
const nameNode = node.childForFieldName("name");
|
|
285
|
+
return {
|
|
286
|
+
name: nameNode?.text ?? "<anon>",
|
|
287
|
+
line: node.startPosition.row + 1,
|
|
288
|
+
column: node.startPosition.column,
|
|
289
|
+
isPublic: hasVisibility(node)
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
function extractImpl(node, _attrs, _ctx) {
|
|
293
|
+
const traitNode = node.childForFieldName("trait");
|
|
294
|
+
const typeNode = node.childForFieldName("type");
|
|
295
|
+
const typeText = typeNode?.text ?? "<anon>";
|
|
296
|
+
const traitText = traitNode?.text;
|
|
297
|
+
const body = node.childForFieldName("body");
|
|
298
|
+
const methods = [];
|
|
299
|
+
if (body) {
|
|
300
|
+
for (let i = 0; i < body.namedChildCount; i++) {
|
|
301
|
+
const child = body.namedChild(i);
|
|
302
|
+
if (child?.type === "function_item") {
|
|
303
|
+
const m = child.childForFieldName("name");
|
|
304
|
+
if (m) methods.push(m.text);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return {
|
|
309
|
+
entry: {
|
|
310
|
+
type: typeText,
|
|
311
|
+
trait: traitText ?? void 0,
|
|
312
|
+
methods,
|
|
313
|
+
line: node.startPosition.row + 1,
|
|
314
|
+
column: node.startPosition.column
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
function findUseListNode(argument) {
|
|
319
|
+
if (!argument) return null;
|
|
320
|
+
if (argument.type === "use_list") return argument;
|
|
321
|
+
if (argument.type === "scoped_use_list") {
|
|
322
|
+
for (let i = 0; i < argument.namedChildCount; i++) {
|
|
323
|
+
const c = argument.namedChild(i);
|
|
324
|
+
if (c?.type === "use_list") return c;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return null;
|
|
328
|
+
}
|
|
329
|
+
function getField(node, fieldName) {
|
|
330
|
+
return node.childForFieldName(fieldName);
|
|
331
|
+
}
|
|
332
|
+
function collectIdentifiers(node) {
|
|
333
|
+
const out = [];
|
|
334
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
335
|
+
const child = node.namedChild(i);
|
|
336
|
+
if (!child) continue;
|
|
337
|
+
if (child.type === "identifier" || child.type === "type_identifier") {
|
|
338
|
+
out.push(child.text);
|
|
339
|
+
} else if (child.type === "scoped_identifier" || child.type === "nested_identifier") {
|
|
340
|
+
out.push(...collectIdentifiers(child));
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return out;
|
|
344
|
+
}
|
|
345
|
+
function hasVisibility(node) {
|
|
346
|
+
return node.namedChild(0)?.type === "visibility_modifier";
|
|
347
|
+
}
|
|
348
|
+
function isInImplBlock(node) {
|
|
349
|
+
for (let p = node.parent; p; p = p.parent) {
|
|
350
|
+
if (p.type === "impl_item") return true;
|
|
351
|
+
if (p.type === "function_item" || p.type === "source_file") return false;
|
|
352
|
+
}
|
|
353
|
+
return false;
|
|
354
|
+
}
|
|
355
|
+
function findSelfParameter(params) {
|
|
356
|
+
for (let i = 0; i < params.namedChildCount; i++) {
|
|
357
|
+
const child = params.namedChild(i);
|
|
358
|
+
if (child?.type === "self_parameter") return child;
|
|
359
|
+
}
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
function isFunctionAttrTest(node) {
|
|
363
|
+
void node;
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
var SERVICE_SUFFIXES, SERVICE_SUFFIX_GROUP, RUST_SERVICE_STRUCT_RE, RUST_SERVICE_IMPL_RE;
|
|
367
|
+
var init_rust = __esm({
|
|
368
|
+
"src/engine/visitors/rust.ts"() {
|
|
369
|
+
"use strict";
|
|
370
|
+
init_parser_rust();
|
|
371
|
+
SERVICE_SUFFIXES = [
|
|
372
|
+
"Service",
|
|
373
|
+
"Manager",
|
|
374
|
+
"Handler",
|
|
375
|
+
"Repository",
|
|
376
|
+
"Controller",
|
|
377
|
+
"Helper",
|
|
378
|
+
"Factory",
|
|
379
|
+
"Provider",
|
|
380
|
+
"Store",
|
|
381
|
+
"API",
|
|
382
|
+
"Client",
|
|
383
|
+
"Adapter",
|
|
384
|
+
"Resolver",
|
|
385
|
+
"Mapper",
|
|
386
|
+
"Transformer",
|
|
387
|
+
"Serializer",
|
|
388
|
+
"Validator",
|
|
389
|
+
"Strategy",
|
|
390
|
+
"Facade",
|
|
391
|
+
"Decorator",
|
|
392
|
+
"Observer",
|
|
393
|
+
"Builder",
|
|
394
|
+
"Command",
|
|
395
|
+
"Processor",
|
|
396
|
+
"Worker",
|
|
397
|
+
"Job",
|
|
398
|
+
"Actor",
|
|
399
|
+
"Executor"
|
|
400
|
+
];
|
|
401
|
+
SERVICE_SUFFIX_GROUP = `(?:${SERVICE_SUFFIXES.join("|")})`;
|
|
402
|
+
RUST_SERVICE_STRUCT_RE = new RegExp(
|
|
403
|
+
`^(?:pub(?:\\(crate\\)|\\(super\\))?\\s+)?struct\\s+(\\w+?)${SERVICE_SUFFIX_GROUP}?\\b`,
|
|
404
|
+
"gm"
|
|
405
|
+
);
|
|
406
|
+
RUST_SERVICE_IMPL_RE = new RegExp(
|
|
407
|
+
`^impl(?:<[^>]+>)?\\s+(?:${SERVICE_SUFFIX_GROUP}\\s+for\\s+)?(\\w+?)${SERVICE_SUFFIX_GROUP}?\\b`,
|
|
408
|
+
"gm"
|
|
409
|
+
);
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
|
|
7
413
|
// src/engine/worker.ts
|
|
8
414
|
import { isMainThread, parentPort, workerData } from "worker_threads";
|
|
9
415
|
import { extname as extname6 } from "path";
|
|
@@ -4239,7 +4645,7 @@ function parseBlankModule(source) {
|
|
|
4239
4645
|
tsx: false,
|
|
4240
4646
|
target: "es2022"
|
|
4241
4647
|
});
|
|
4242
|
-
return { ast, source
|
|
4648
|
+
return { ast, source };
|
|
4243
4649
|
}
|
|
4244
4650
|
function parseScriptContent(content, isTypeScript) {
|
|
4245
4651
|
if (isTypeScript) {
|
|
@@ -4325,8 +4731,16 @@ function parseSource(source, filePath) {
|
|
|
4325
4731
|
// but no SWC support. Return a blank-padded empty module so
|
|
4326
4732
|
// regex-only rules can still fire (markdown-leakage, comment-
|
|
4327
4733
|
// ratio, etc.) without burning the parseError path.
|
|
4734
|
+
// v0.18.9: `.rs` is in the same bucket. The visitor layer
|
|
4735
|
+
// (`engine/visitors/rust.ts`) carries the tree-sitter-backed
|
|
4736
|
+
// parse + extractFacts attaches the result to `facts.v2.rustFile`.
|
|
4737
|
+
// The rule layer (`rules/rust/*.ts`) reads that field. parseBlankModule
|
|
4738
|
+
// lets the worker continue past the parser — without this, parseWithSwc
|
|
4739
|
+
// would throw on every .rs file, the worker would count it as a
|
|
4740
|
+
// parseError, and the v2-build's buildRustFileRecord would never run.
|
|
4328
4741
|
case "py":
|
|
4329
4742
|
case "go":
|
|
4743
|
+
case "rs":
|
|
4330
4744
|
return parseBlankModule(source);
|
|
4331
4745
|
default:
|
|
4332
4746
|
return parseWithSwc(source, filePath);
|
|
@@ -6891,6 +7305,7 @@ function dispatchNode(node, parent, path, vctx) {
|
|
|
6891
7305
|
}
|
|
6892
7306
|
|
|
6893
7307
|
// src/engine/visitors/v2-build.ts
|
|
7308
|
+
init_rust();
|
|
6894
7309
|
var TAILWIND_COLOR_RE = /^(?:bg|text|border|ring|from|to|via|fill|stroke)-([a-z]+-\d+|white|black|transparent|current|\[.+?\])$/;
|
|
6895
7310
|
var TAILWIND_SPACING_RE = /^(?:[pm][xytrbl]?|gap|space-[xy])-(\d+(?:\.\d+)?)$/;
|
|
6896
7311
|
var TAILWIND_RADIUS_RE = /^(?:rounded(?:-[a-z]+)?)-(.+)$/;
|
|
@@ -7071,9 +7486,60 @@ function buildV2Facts(facts, source, ext, framework, config, templateClassNames
|
|
|
7071
7486
|
})),
|
|
7072
7487
|
disabledRules: extractDisabledRules(source),
|
|
7073
7488
|
templateClassNames,
|
|
7489
|
+
// v0.18.9 — populate the Rust AST record when the file is `.rs`.
|
|
7490
|
+
// Calling `parseRustFile` here keeps the dead-code detector's
|
|
7491
|
+
// import-binding pass a pure function over the same source the
|
|
7492
|
+
// walker saw. The native-binding guard lives inside
|
|
7493
|
+
// `parseRustFile` (returns an empty record when tree-sitter is
|
|
7494
|
+
// unavailable).
|
|
7495
|
+
rustFile: buildRustFileRecord(facts.filePath, source),
|
|
7074
7496
|
_source: source
|
|
7075
7497
|
};
|
|
7076
7498
|
}
|
|
7499
|
+
function buildRustFileRecord(filePath, source) {
|
|
7500
|
+
if (!filePath.toLowerCase().endsWith(".rs")) return void 0;
|
|
7501
|
+
const structure = parseRustFile(filePath, source);
|
|
7502
|
+
return {
|
|
7503
|
+
imports: structure.imports.map((i) => ({
|
|
7504
|
+
path: i.path,
|
|
7505
|
+
names: i.names.map((n) => ({ name: n.name, ...n.alias ? { alias: n.alias } : {} })),
|
|
7506
|
+
isGlob: i.isGlob,
|
|
7507
|
+
line: i.line,
|
|
7508
|
+
column: i.column
|
|
7509
|
+
})),
|
|
7510
|
+
functions: structure.functions.map((f) => ({
|
|
7511
|
+
name: f.name,
|
|
7512
|
+
line: f.line,
|
|
7513
|
+
column: f.column,
|
|
7514
|
+
isPublic: f.isPublic,
|
|
7515
|
+
isMethod: f.isMethod,
|
|
7516
|
+
...f.receiver ? { receiver: f.receiver } : {},
|
|
7517
|
+
bodyLines: f.bodyLines,
|
|
7518
|
+
inTestConfig: f.inTestConfig
|
|
7519
|
+
})),
|
|
7520
|
+
structs: structure.structs.map((s) => ({
|
|
7521
|
+
name: s.name,
|
|
7522
|
+
line: s.line,
|
|
7523
|
+
column: s.column,
|
|
7524
|
+
isPublic: s.isPublic,
|
|
7525
|
+
isDerive: s.isDerive,
|
|
7526
|
+
derives: [...s.derives]
|
|
7527
|
+
})),
|
|
7528
|
+
traits: structure.traits.map((t) => ({
|
|
7529
|
+
name: t.name,
|
|
7530
|
+
line: t.line,
|
|
7531
|
+
column: t.column,
|
|
7532
|
+
isPublic: t.isPublic
|
|
7533
|
+
})),
|
|
7534
|
+
impls: structure.impls.map((ip) => ({
|
|
7535
|
+
...ip.trait ? { trait: ip.trait } : {},
|
|
7536
|
+
type: ip.type,
|
|
7537
|
+
methods: [...ip.methods],
|
|
7538
|
+
line: ip.line,
|
|
7539
|
+
column: ip.column
|
|
7540
|
+
}))
|
|
7541
|
+
};
|
|
7542
|
+
}
|
|
7077
7543
|
function splitFilePath(filePath) {
|
|
7078
7544
|
const baseName = filePath.split("/").pop() ?? filePath;
|
|
7079
7545
|
const dotIdx = baseName.lastIndexOf(".");
|
|
@@ -34575,9 +35041,43 @@ var unusedImportRule = createRule({
|
|
|
34575
35041
|
advice: `Remove the import or use '${binding.name}' somewhere in the file. This is the most common AI-iteration rot \u2014 the model added the import when it introduced a feature, then rewrote the function without cleaning up.`
|
|
34576
35042
|
});
|
|
34577
35043
|
}
|
|
35044
|
+
if (facts.v2.rustFile) {
|
|
35045
|
+
const strippedSource = stripUseDeclarations(facts.v2._source ?? "");
|
|
35046
|
+
const referenced = collectRustReferencedNames(strippedSource);
|
|
35047
|
+
for (const imp of facts.v2.rustFile.imports) {
|
|
35048
|
+
for (const nameEntry of imp.names) {
|
|
35049
|
+
if (referenced.has(nameEntry.name)) continue;
|
|
35050
|
+
const source = ` from '${imp.path}'`;
|
|
35051
|
+
issues.push({
|
|
35052
|
+
ruleId: "dead/unused-import",
|
|
35053
|
+
category: "logic",
|
|
35054
|
+
severity: "low",
|
|
35055
|
+
aiSpecific: true,
|
|
35056
|
+
message: `Unused import: '${nameEntry.name}'${source}`,
|
|
35057
|
+
line: imp.line,
|
|
35058
|
+
column: imp.column,
|
|
35059
|
+
advice: `Remove the '${imp.path}' import or use '${nameEntry.name}' somewhere in the file. Rust's compiler only flags unused imports per module \u2014 the tree-sitter-backed walker here surfaces them for slopbrick's dead-code rules regardless of #[allow(unused_imports)].`
|
|
35060
|
+
});
|
|
35061
|
+
}
|
|
35062
|
+
}
|
|
35063
|
+
}
|
|
34578
35064
|
return issues;
|
|
34579
35065
|
}
|
|
34580
35066
|
});
|
|
35067
|
+
function collectRustReferencedNames(source) {
|
|
35068
|
+
const out = /* @__PURE__ */ new Set();
|
|
35069
|
+
for (const m of source.matchAll(/\b([A-Za-z_][A-Za-z0-9_]*)\b/g)) {
|
|
35070
|
+
out.add(m[1]);
|
|
35071
|
+
}
|
|
35072
|
+
return out;
|
|
35073
|
+
}
|
|
35074
|
+
function stripUseDeclarations(source) {
|
|
35075
|
+
let out = source;
|
|
35076
|
+
out = out.replace(/^\s*use\s+[\s\S]*?;\s*$/gm, "");
|
|
35077
|
+
out = out.replace(/\/\/[^\n]*/g, "");
|
|
35078
|
+
out = out.replace(/\/\*[\s\S]*?\*\//g, "");
|
|
35079
|
+
return out;
|
|
35080
|
+
}
|
|
34581
35081
|
|
|
34582
35082
|
// src/rules/dead/unused-local.ts
|
|
34583
35083
|
var SKIP_NAMES = /* @__PURE__ */ new Set(["React", "_"]);
|
|
@@ -37490,6 +37990,326 @@ var uxPatternFragmentationRule = createRule({
|
|
|
37490
37990
|
}
|
|
37491
37991
|
});
|
|
37492
37992
|
|
|
37993
|
+
// src/rules/rust/stringly-typed.ts
|
|
37994
|
+
var SUSPECT_PARAM_NAMES = /* @__PURE__ */ new Set([
|
|
37995
|
+
"kind",
|
|
37996
|
+
"type",
|
|
37997
|
+
"mode",
|
|
37998
|
+
"event",
|
|
37999
|
+
"status",
|
|
38000
|
+
"category",
|
|
38001
|
+
"action",
|
|
38002
|
+
"state",
|
|
38003
|
+
"level",
|
|
38004
|
+
"role",
|
|
38005
|
+
"tier",
|
|
38006
|
+
"phase",
|
|
38007
|
+
"tag",
|
|
38008
|
+
"format",
|
|
38009
|
+
"shape",
|
|
38010
|
+
"direction",
|
|
38011
|
+
"side",
|
|
38012
|
+
"method"
|
|
38013
|
+
]);
|
|
38014
|
+
var MAX_VARIANT_COUNT = 32;
|
|
38015
|
+
var rustStringlyTypedRule = createRule({
|
|
38016
|
+
id: "rust/stringly-typed",
|
|
38017
|
+
category: "logic",
|
|
38018
|
+
severity: "medium",
|
|
38019
|
+
aiSpecific: true,
|
|
38020
|
+
description: "String / &str parameter where a typed enum exists in the same file",
|
|
38021
|
+
create(_context) {
|
|
38022
|
+
return {};
|
|
38023
|
+
},
|
|
38024
|
+
analyze(_context, facts) {
|
|
38025
|
+
const issues = [];
|
|
38026
|
+
if (!facts.v2?.rustFile) return issues;
|
|
38027
|
+
const source = facts.v2._source ?? "";
|
|
38028
|
+
if (!source) return issues;
|
|
38029
|
+
const lineOffsets = buildLineOffsets2(source);
|
|
38030
|
+
const enumCandidates = collectEnumCandidates(source);
|
|
38031
|
+
if (enumCandidates.length === 0) return issues;
|
|
38032
|
+
for (const fn of facts.v2.rustFile.functions) {
|
|
38033
|
+
const paramText = extractParameterText(source, lineOffsets, fn);
|
|
38034
|
+
if (!paramText) continue;
|
|
38035
|
+
const matches = scanForStringlyParams(paramText);
|
|
38036
|
+
if (matches.length === 0) continue;
|
|
38037
|
+
issues.push({
|
|
38038
|
+
ruleId: "rust/stringly-typed",
|
|
38039
|
+
category: "logic",
|
|
38040
|
+
severity: "medium",
|
|
38041
|
+
aiSpecific: true,
|
|
38042
|
+
message: matches.length === 1 ? `Parameter '${matches[0].name}' typed as '${matches[0].type}', but enum ${enumCandidates[0].name} exists in the file` : `Function has ${matches.length} stringly-typed parameters; enum ${enumCandidates[0].name} exists in the file`,
|
|
38043
|
+
line: fn.line,
|
|
38044
|
+
column: fn.column,
|
|
38045
|
+
advice: `Replace the String/&str parameter with the typed enum. Stringly-typed APIs lose type information at the boundary; a typo ('Click' vs 'click') only fails at runtime. AI agents introduce these during exploratory scaffolding, then never replace them with the existing enum.`
|
|
38046
|
+
});
|
|
38047
|
+
}
|
|
38048
|
+
return issues;
|
|
38049
|
+
}
|
|
38050
|
+
});
|
|
38051
|
+
function collectEnumCandidates(source) {
|
|
38052
|
+
const out = [];
|
|
38053
|
+
const enumRe = /^(?:pub(?:\([^)]+\))?\s+)?enum\s+(\w+)\s*\{([^}]*)\}/gm;
|
|
38054
|
+
for (const m of source.matchAll(enumRe)) {
|
|
38055
|
+
const body = m[2] ?? "";
|
|
38056
|
+
const variants = body.split(/,(?![^()]*\))/).map((s) => s.trim()).filter((s) => /^[A-Za-z_][A-Za-z0-9_]*$/.test(s.split(/\s+/)[0] ?? ""));
|
|
38057
|
+
if (variants.length > MAX_VARIANT_COUNT) continue;
|
|
38058
|
+
if (variants.length < 2) continue;
|
|
38059
|
+
out.push({ name: m[1], variantCount: variants.length, line: lineOfMatch(source, m.index ?? 0) });
|
|
38060
|
+
}
|
|
38061
|
+
return out;
|
|
38062
|
+
}
|
|
38063
|
+
function lineOfMatch(source, index) {
|
|
38064
|
+
let line = 1;
|
|
38065
|
+
for (let i = 0; i < index && i < source.length; i++) {
|
|
38066
|
+
if (source[i] === "\n") line++;
|
|
38067
|
+
}
|
|
38068
|
+
return line;
|
|
38069
|
+
}
|
|
38070
|
+
function buildLineOffsets2(source) {
|
|
38071
|
+
const out = [0];
|
|
38072
|
+
for (let i = 0; i < source.length; i++) {
|
|
38073
|
+
if (source[i] === "\n") out.push(i + 1);
|
|
38074
|
+
}
|
|
38075
|
+
return out;
|
|
38076
|
+
}
|
|
38077
|
+
function extractParameterText(source, lineOffsets, fn) {
|
|
38078
|
+
const start = lineOffsets[Math.max(0, fn.line - 1)] ?? 0;
|
|
38079
|
+
const head = source.slice(start, start + 400);
|
|
38080
|
+
const openIdx = head.indexOf("(");
|
|
38081
|
+
if (openIdx < 0) return "";
|
|
38082
|
+
let closeIdx = -1;
|
|
38083
|
+
let depth = 0;
|
|
38084
|
+
for (let i = openIdx; i < head.length; i++) {
|
|
38085
|
+
if (head[i] === "(") depth++;
|
|
38086
|
+
else if (head[i] === ")") {
|
|
38087
|
+
depth--;
|
|
38088
|
+
if (depth === 0) {
|
|
38089
|
+
closeIdx = i;
|
|
38090
|
+
break;
|
|
38091
|
+
}
|
|
38092
|
+
}
|
|
38093
|
+
}
|
|
38094
|
+
if (closeIdx < 0) return "";
|
|
38095
|
+
return head.slice(openIdx + 1, closeIdx);
|
|
38096
|
+
}
|
|
38097
|
+
function scanForStringlyParams(paramText) {
|
|
38098
|
+
const out = [];
|
|
38099
|
+
for (const m of paramText.matchAll(
|
|
38100
|
+
/\b([a-z_][a-zA-Z0-9_]*)\s*:\s*(&\s*(?:mut\s+)?(?:str|String)\b)/g
|
|
38101
|
+
)) {
|
|
38102
|
+
const name = m[1];
|
|
38103
|
+
const type = m[2];
|
|
38104
|
+
if (!SUSPECT_PARAM_NAMES.has(name)) continue;
|
|
38105
|
+
out.push({ name, type });
|
|
38106
|
+
}
|
|
38107
|
+
return out;
|
|
38108
|
+
}
|
|
38109
|
+
|
|
38110
|
+
// src/rules/rust/todo-macro.ts
|
|
38111
|
+
init_parser_rust();
|
|
38112
|
+
var TODO_MACROS = /* @__PURE__ */ new Set(["todo", "unimplemented", "todo_unimplemented"]);
|
|
38113
|
+
var rustTodoMacroRule = createRule({
|
|
38114
|
+
id: "rust/todo-macro",
|
|
38115
|
+
category: "logic",
|
|
38116
|
+
severity: "medium",
|
|
38117
|
+
aiSpecific: true,
|
|
38118
|
+
description: "todo!() / unimplemented!() macro invocation in production code",
|
|
38119
|
+
create(_context) {
|
|
38120
|
+
return {};
|
|
38121
|
+
},
|
|
38122
|
+
analyze(_context, facts) {
|
|
38123
|
+
const issues = [];
|
|
38124
|
+
if (!facts.v2?.rustFile) return issues;
|
|
38125
|
+
const source = facts.v2._source ?? "";
|
|
38126
|
+
if (!source) return issues;
|
|
38127
|
+
const tree = parseRust(source);
|
|
38128
|
+
if (!tree) return issues;
|
|
38129
|
+
const testScopes = /* @__PURE__ */ new Set();
|
|
38130
|
+
for (const fn of facts.v2.rustFile.functions) {
|
|
38131
|
+
if (fn.inTestConfig && fn.name) testScopes.add(fn.name);
|
|
38132
|
+
}
|
|
38133
|
+
collectMacroIssues(tree.rootNode, testScopes, issues);
|
|
38134
|
+
return issues;
|
|
38135
|
+
}
|
|
38136
|
+
});
|
|
38137
|
+
function collectMacroIssues(node, testScopes, issues) {
|
|
38138
|
+
if (node.type === "macro_invocation") {
|
|
38139
|
+
const text = node.text;
|
|
38140
|
+
const m = text.match(/^([A-Za-z_][A-Za-z0-9_]*)/);
|
|
38141
|
+
const macroName = m?.[1] ?? "";
|
|
38142
|
+
if (TODO_MACROS.has(macroName)) {
|
|
38143
|
+
if (!isInsideMacroDefinition(node) && !isInsideTestFunction(node, testScopes)) {
|
|
38144
|
+
issues.push({
|
|
38145
|
+
ruleId: "rust/todo-macro",
|
|
38146
|
+
category: "logic",
|
|
38147
|
+
severity: "medium",
|
|
38148
|
+
aiSpecific: true,
|
|
38149
|
+
message: `'${macroName}!()' in production code \u2014 both expand to panic!()`,
|
|
38150
|
+
line: node.startPosition.row + 1,
|
|
38151
|
+
column: node.startPosition.column,
|
|
38152
|
+
advice: `Implement the function body or remove the stub. '${macroName}!()' is fine in test scaffolding (#[cfg(test)]); here it is a panic risk. AI agents commonly leave these behind after iterative refactors when the placeholder branch is never filled in.`
|
|
38153
|
+
});
|
|
38154
|
+
}
|
|
38155
|
+
}
|
|
38156
|
+
}
|
|
38157
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
38158
|
+
const child = node.namedChild(i);
|
|
38159
|
+
if (child) collectMacroIssues(child, testScopes, issues);
|
|
38160
|
+
}
|
|
38161
|
+
}
|
|
38162
|
+
function isInsideMacroDefinition(node) {
|
|
38163
|
+
for (let p = node.parent; p; p = p.parent) {
|
|
38164
|
+
if (p.type === "macro_definition") return true;
|
|
38165
|
+
if (p.type === "source_file") return false;
|
|
38166
|
+
}
|
|
38167
|
+
return false;
|
|
38168
|
+
}
|
|
38169
|
+
function isInsideTestFunction(node, testScopes) {
|
|
38170
|
+
for (let p = node.parent; p; p = p.parent) {
|
|
38171
|
+
if (p.type === "function_item") {
|
|
38172
|
+
const nameField = p.childForFieldName("name");
|
|
38173
|
+
const name = nameField?.text;
|
|
38174
|
+
if (name && testScopes.has(name)) return true;
|
|
38175
|
+
if (p.text.startsWith("#[test]") || p.text.startsWith("#[cfg(test)]")) return true;
|
|
38176
|
+
return false;
|
|
38177
|
+
}
|
|
38178
|
+
if (p.type === "source_file") return false;
|
|
38179
|
+
}
|
|
38180
|
+
return false;
|
|
38181
|
+
}
|
|
38182
|
+
|
|
38183
|
+
// src/rules/rust/unused-pub-fn.ts
|
|
38184
|
+
var API_CONVENTION_NAMES = /* @__PURE__ */ new Set([
|
|
38185
|
+
"new",
|
|
38186
|
+
"default",
|
|
38187
|
+
"from",
|
|
38188
|
+
"from_str",
|
|
38189
|
+
"from_iter",
|
|
38190
|
+
"try_from",
|
|
38191
|
+
"into",
|
|
38192
|
+
"into_iter",
|
|
38193
|
+
"try_into",
|
|
38194
|
+
"as_ref",
|
|
38195
|
+
"as_mut",
|
|
38196
|
+
"clone",
|
|
38197
|
+
"fmt",
|
|
38198
|
+
"eq",
|
|
38199
|
+
"hash",
|
|
38200
|
+
"partial_cmp",
|
|
38201
|
+
"cmp",
|
|
38202
|
+
"ord",
|
|
38203
|
+
"partial_eq"
|
|
38204
|
+
]);
|
|
38205
|
+
var rustUnusedPubFnRule = createRule({
|
|
38206
|
+
id: "rust/unused-pub-fn",
|
|
38207
|
+
category: "logic",
|
|
38208
|
+
severity: "low",
|
|
38209
|
+
aiSpecific: true,
|
|
38210
|
+
description: "Public function in a Rust file that has no in-file references",
|
|
38211
|
+
create(_context) {
|
|
38212
|
+
return {};
|
|
38213
|
+
},
|
|
38214
|
+
analyze(_context, facts) {
|
|
38215
|
+
const issues = [];
|
|
38216
|
+
if (!facts.v2?.rustFile) return issues;
|
|
38217
|
+
const rust = facts.v2.rustFile;
|
|
38218
|
+
const referenced = collectReferencedNames(facts.v2._source ?? "");
|
|
38219
|
+
for (const fn of rust.functions) {
|
|
38220
|
+
if (!fn.isPublic) continue;
|
|
38221
|
+
if (API_CONVENTION_NAMES.has(fn.name)) continue;
|
|
38222
|
+
if (fn.inTestConfig) continue;
|
|
38223
|
+
if (referenced.has(fn.name)) continue;
|
|
38224
|
+
issues.push({
|
|
38225
|
+
ruleId: "rust/unused-pub-fn",
|
|
38226
|
+
category: "logic",
|
|
38227
|
+
severity: "low",
|
|
38228
|
+
aiSpecific: true,
|
|
38229
|
+
message: `Public function '${fn.name}' is not referenced anywhere in the file`,
|
|
38230
|
+
line: fn.line,
|
|
38231
|
+
column: fn.column,
|
|
38232
|
+
advice: `Remove the function or call it somewhere. Rust's compiler doesn't warn on pub fns missing consumers unless \`#![warn(dead_code)]\` is set at the crate root. AI agents that iterate on a file often leave these behind \u2014 the most common AI-rotation signature for Rust after unused-imports.`
|
|
38233
|
+
});
|
|
38234
|
+
}
|
|
38235
|
+
return issues;
|
|
38236
|
+
}
|
|
38237
|
+
});
|
|
38238
|
+
function collectReferencedNames(source) {
|
|
38239
|
+
const out = /* @__PURE__ */ new Set();
|
|
38240
|
+
for (const m of source.matchAll(/\b([A-Za-z_][A-Za-z0-9_]*)\b/g)) {
|
|
38241
|
+
out.add(m[1]);
|
|
38242
|
+
}
|
|
38243
|
+
return out;
|
|
38244
|
+
}
|
|
38245
|
+
|
|
38246
|
+
// src/rules/rust/unwrap-in-production.ts
|
|
38247
|
+
init_parser_rust();
|
|
38248
|
+
var UNWRAP_METHODS = /* @__PURE__ */ new Set(["unwrap", "expect", "unwrap_or_else"]);
|
|
38249
|
+
var rustUnwrapInProductionRule = createRule({
|
|
38250
|
+
id: "rust/unwrap-in-production",
|
|
38251
|
+
category: "logic",
|
|
38252
|
+
severity: "medium",
|
|
38253
|
+
aiSpecific: true,
|
|
38254
|
+
description: ".unwrap() / .expect() called outside of #[cfg(test)] / #[test] scope",
|
|
38255
|
+
create(_context) {
|
|
38256
|
+
return {};
|
|
38257
|
+
},
|
|
38258
|
+
analyze(_context, facts) {
|
|
38259
|
+
const issues = [];
|
|
38260
|
+
if (!facts.v2?.rustFile) return issues;
|
|
38261
|
+
const source = facts.v2._source ?? "";
|
|
38262
|
+
if (!source) return issues;
|
|
38263
|
+
const tree = parseRust(source);
|
|
38264
|
+
if (!tree) return issues;
|
|
38265
|
+
const testScopes = /* @__PURE__ */ new Set();
|
|
38266
|
+
for (const fn of facts.v2.rustFile.functions) {
|
|
38267
|
+
if (fn.inTestConfig && fn.name) testScopes.add(fn.name);
|
|
38268
|
+
}
|
|
38269
|
+
collectUnwrapIssues(tree.rootNode, testScopes, issues);
|
|
38270
|
+
return issues;
|
|
38271
|
+
}
|
|
38272
|
+
});
|
|
38273
|
+
function collectUnwrapIssues(node, testScopes, issues) {
|
|
38274
|
+
if (node.type === "call_expression") {
|
|
38275
|
+
const fn = node.childForFieldName("function");
|
|
38276
|
+
if (fn && fn.type === "field_expression") {
|
|
38277
|
+
const field = fn.childForFieldName("field");
|
|
38278
|
+
if (field && field.type === "field_identifier" && UNWRAP_METHODS.has(field.text)) {
|
|
38279
|
+
if (!isInsideTestFunction2(node, testScopes)) {
|
|
38280
|
+
issues.push({
|
|
38281
|
+
ruleId: "rust/unwrap-in-production",
|
|
38282
|
+
category: "logic",
|
|
38283
|
+
severity: "medium",
|
|
38284
|
+
aiSpecific: true,
|
|
38285
|
+
message: `'.${field.text}()' called in production code \u2014 panic risk on Err/None`,
|
|
38286
|
+
line: node.startPosition.row + 1,
|
|
38287
|
+
column: node.startPosition.column,
|
|
38288
|
+
advice: `Replace with '?' (early-return on Err), '.map_err(...)' for conversion, or an explicit 'match'. '.${field.text}()' is fine in tests \u2014 wrap with '#[cfg(test)]' or move into a '#[cfg(test)] mod tests' block to suppress.`
|
|
38289
|
+
});
|
|
38290
|
+
}
|
|
38291
|
+
}
|
|
38292
|
+
}
|
|
38293
|
+
}
|
|
38294
|
+
for (let i = 0; i < node.namedChildCount; i++) {
|
|
38295
|
+
const child = node.namedChild(i);
|
|
38296
|
+
if (child) collectUnwrapIssues(child, testScopes, issues);
|
|
38297
|
+
}
|
|
38298
|
+
}
|
|
38299
|
+
function isInsideTestFunction2(node, testScopes) {
|
|
38300
|
+
for (let p = node.parent; p; p = p.parent) {
|
|
38301
|
+
if (p.type === "function_item") {
|
|
38302
|
+
const nameField = p.childForFieldName("name");
|
|
38303
|
+
const name = nameField?.text;
|
|
38304
|
+
if (name && testScopes.has(name)) return true;
|
|
38305
|
+
if (p.text.startsWith("#[test]") || p.text.startsWith("#[cfg(test)]")) return true;
|
|
38306
|
+
return false;
|
|
38307
|
+
}
|
|
38308
|
+
if (p.type === "source_file") return false;
|
|
38309
|
+
}
|
|
38310
|
+
return false;
|
|
38311
|
+
}
|
|
38312
|
+
|
|
37493
38313
|
// src/rules/security/dangerous-cors.ts
|
|
37494
38314
|
var HEADER_LITERAL_RE = /['"]Access-Control-Allow-Origin['"]\s*[,:=]\s*['"]\*['"]/g;
|
|
37495
38315
|
var CORS_BLOCK_RE = /\bcors\s*\(\s*\{([^}]*)\}\s*\)/g;
|
|
@@ -40521,6 +41341,10 @@ var builtinRules = [
|
|
|
40521
41341
|
halsteadAnomalyRule,
|
|
40522
41342
|
terminologyDriftRule,
|
|
40523
41343
|
uxPatternFragmentationRule,
|
|
41344
|
+
rustStringlyTypedRule,
|
|
41345
|
+
rustTodoMacroRule,
|
|
41346
|
+
rustUnusedPubFnRule,
|
|
41347
|
+
rustUnwrapInProductionRule,
|
|
40524
41348
|
dangerousCorsRule,
|
|
40525
41349
|
evalRule,
|
|
40526
41350
|
exposedEnvVarRule,
|
|
@@ -40595,6 +41419,22 @@ var RuleRegistry = class {
|
|
|
40595
41419
|
if (!filter) return list;
|
|
40596
41420
|
return list.filter((r) => filter.kind === "ai" ? r.aiSpecific : !r.aiSpecific);
|
|
40597
41421
|
}
|
|
41422
|
+
/** v0.18.8: remove every rule where `predicate(rule)` returns true.
|
|
41423
|
+
* Used by focused calibration scripts to scan a single category
|
|
41424
|
+
* without instantiating all 99 rules. */
|
|
41425
|
+
removeWhere(predicate) {
|
|
41426
|
+
let removed = 0;
|
|
41427
|
+
for (const [id, rule] of this.rules) {
|
|
41428
|
+
if (predicate(rule)) {
|
|
41429
|
+
this.rules.delete(id);
|
|
41430
|
+
removed++;
|
|
41431
|
+
}
|
|
41432
|
+
}
|
|
41433
|
+
return removed;
|
|
41434
|
+
}
|
|
41435
|
+
all() {
|
|
41436
|
+
return Array.from(this.rules.values());
|
|
41437
|
+
}
|
|
40598
41438
|
createContexts(config, filePath, cwd, hotspotIssues = []) {
|
|
40599
41439
|
const context = {
|
|
40600
41440
|
config,
|
|
@@ -40615,1044 +41455,1793 @@ var RuleRegistry = class {
|
|
|
40615
41455
|
|
|
40616
41456
|
// src/rules/signal-strength.json
|
|
40617
41457
|
var signal_strength_default = {
|
|
40618
|
-
"
|
|
40619
|
-
recall:
|
|
40620
|
-
fpRate:
|
|
40621
|
-
ratio:
|
|
40622
|
-
precision: 0.
|
|
40623
|
-
lastCalibratedAt: "2026-
|
|
41458
|
+
"ai/any-density": {
|
|
41459
|
+
recall: 6e-3,
|
|
41460
|
+
fpRate: 37e-4,
|
|
41461
|
+
ratio: 175.31,
|
|
41462
|
+
precision: 0.6523,
|
|
41463
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40624
41464
|
verdict: "USEFUL",
|
|
40625
|
-
_calibrationNote: "
|
|
40626
|
-
aiSpecific: true
|
|
41465
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=1760, FP=938, P=65.2%, FPR=0.37%, lift=175.31. v7 was USEFUL (TP=1313, FP=758, lift=153.41). v8 was USEFUL (TP=447, FP=180).",
|
|
41466
|
+
aiSpecific: true,
|
|
41467
|
+
_v7Verdict: "USEFUL",
|
|
41468
|
+
_v7Lift: 153.41,
|
|
41469
|
+
_v7Recall: 55e-4,
|
|
41470
|
+
_v7FpRate: 41e-4,
|
|
41471
|
+
_v7Precision: 0.634,
|
|
41472
|
+
_v8Verdict: "USEFUL",
|
|
41473
|
+
_v8Lift: 271.97
|
|
40627
41474
|
},
|
|
40628
|
-
"
|
|
40629
|
-
recall:
|
|
40630
|
-
fpRate:
|
|
40631
|
-
ratio:
|
|
40632
|
-
precision: 0.
|
|
40633
|
-
lastCalibratedAt: "2026-
|
|
40634
|
-
verdict: "
|
|
40635
|
-
_calibrationNote: "
|
|
40636
|
-
|
|
40637
|
-
|
|
41475
|
+
"ai/comment-ratio": {
|
|
41476
|
+
recall: 0.2771,
|
|
41477
|
+
fpRate: 0.1578,
|
|
41478
|
+
ratio: 4.26,
|
|
41479
|
+
precision: 0.6721,
|
|
41480
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41481
|
+
verdict: "USEFUL",
|
|
41482
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=81513, FP=39766, P=67.2%, FPR=15.78%, lift=4.26. v7 was USEFUL (TP=60308, FP=29876, lift=4.11). v8 was USEFUL (TP=21205, FP=9890).",
|
|
41483
|
+
aiSpecific: true,
|
|
41484
|
+
_v7Verdict: "USEFUL",
|
|
41485
|
+
_v7Lift: 4.11,
|
|
41486
|
+
_v7Recall: 0.2545,
|
|
41487
|
+
_v7FpRate: 0.1629,
|
|
41488
|
+
_v7Precision: 0.6687,
|
|
41489
|
+
_v8Verdict: "USEFUL",
|
|
41490
|
+
_v8Lift: 4.73
|
|
40638
41491
|
},
|
|
40639
|
-
"
|
|
40640
|
-
recall: 0.
|
|
40641
|
-
fpRate: 0.
|
|
40642
|
-
ratio:
|
|
40643
|
-
precision: 0.
|
|
40644
|
-
lastCalibratedAt: "2026-
|
|
40645
|
-
verdict: "
|
|
40646
|
-
_calibrationNote: "
|
|
40647
|
-
aiSpecific:
|
|
41492
|
+
"ai/compression-profile": {
|
|
41493
|
+
recall: 0.3478,
|
|
41494
|
+
fpRate: 0.1488,
|
|
41495
|
+
ratio: 4.92,
|
|
41496
|
+
precision: 0.7318,
|
|
41497
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41498
|
+
verdict: "USEFUL",
|
|
41499
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=102328, FP=37511, P=73.2%, FPR=14.88%, lift=4.92. v7 was USEFUL (TP=75031, FP=27473, lift=4.89). v8 was USEFUL (TP=27297, FP=10038).",
|
|
41500
|
+
aiSpecific: true,
|
|
41501
|
+
_v7Verdict: "USEFUL",
|
|
41502
|
+
_v7Lift: 4.89,
|
|
41503
|
+
_v7Recall: 0.3166,
|
|
41504
|
+
_v7FpRate: 0.1498,
|
|
41505
|
+
_v7Precision: 0.732,
|
|
41506
|
+
_v8Verdict: "USEFUL",
|
|
41507
|
+
_v8Lift: 5
|
|
40648
41508
|
},
|
|
40649
|
-
"
|
|
40650
|
-
recall:
|
|
41509
|
+
"ai/console-debug-storm": {
|
|
41510
|
+
recall: 73e-4,
|
|
40651
41511
|
fpRate: 9e-4,
|
|
40652
|
-
ratio:
|
|
40653
|
-
precision: 0.
|
|
40654
|
-
lastCalibratedAt: "2026-
|
|
41512
|
+
ratio: 949.21,
|
|
41513
|
+
precision: 0.9,
|
|
41514
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40655
41515
|
verdict: "USEFUL",
|
|
40656
|
-
_calibrationNote: "
|
|
40657
|
-
aiSpecific: true
|
|
41516
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=2150, FP=239, P=90.0%, FPR=0.09%, lift=949.21. v7 was USEFUL (TP=1912, FP=175, lift=960.19). v8 was USEFUL (TP=238, FP=64).",
|
|
41517
|
+
aiSpecific: true,
|
|
41518
|
+
_v7Verdict: "USEFUL",
|
|
41519
|
+
_v7Lift: 960.19,
|
|
41520
|
+
_v7Recall: 81e-4,
|
|
41521
|
+
_v7FpRate: 1e-3,
|
|
41522
|
+
_v7Precision: 0.9161,
|
|
41523
|
+
_v8Verdict: "USEFUL",
|
|
41524
|
+
_v8Lift: 845.55
|
|
40658
41525
|
},
|
|
40659
|
-
"
|
|
40660
|
-
recall:
|
|
40661
|
-
fpRate:
|
|
40662
|
-
ratio:
|
|
40663
|
-
precision: 0.
|
|
40664
|
-
lastCalibratedAt: "2026-
|
|
41526
|
+
"ai/default-react-stack": {
|
|
41527
|
+
recall: 1e-3,
|
|
41528
|
+
fpRate: 0,
|
|
41529
|
+
ratio: 251225.49,
|
|
41530
|
+
precision: 0.9966,
|
|
41531
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40665
41532
|
verdict: "USEFUL",
|
|
40666
|
-
_calibrationNote: "
|
|
40667
|
-
aiSpecific: true
|
|
41533
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=294, FP=1, P=99.7%, FPR=0.00%, lift=251225.49. v7 was USEFUL (TP=231, FP=1, lift=182622.43). v8 was USEFUL (TP=63, FP=0).",
|
|
41534
|
+
aiSpecific: true,
|
|
41535
|
+
_v7Verdict: "USEFUL",
|
|
41536
|
+
_v7Lift: 182622.43,
|
|
41537
|
+
_v7Recall: 1e-3,
|
|
41538
|
+
_v7FpRate: 0,
|
|
41539
|
+
_v7Precision: 0.9957,
|
|
41540
|
+
_v8Verdict: "USEFUL",
|
|
41541
|
+
_v8Lift: 99999
|
|
40668
41542
|
},
|
|
40669
|
-
"
|
|
40670
|
-
recall:
|
|
40671
|
-
fpRate: 0,
|
|
40672
|
-
ratio:
|
|
40673
|
-
precision: 0.
|
|
40674
|
-
lastCalibratedAt: "2026-
|
|
41543
|
+
"ai/errors-near-eof": {
|
|
41544
|
+
recall: 0.0948,
|
|
41545
|
+
fpRate: 0.052,
|
|
41546
|
+
ratio: 13.09,
|
|
41547
|
+
precision: 0.6803,
|
|
41548
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40675
41549
|
verdict: "USEFUL",
|
|
40676
|
-
_calibrationNote: "
|
|
40677
|
-
aiSpecific: true
|
|
41550
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=27874, FP=13097, P=68.0%, FPR=5.20%, lift=13.09. v7 was USEFUL (TP=16673, FP=10112, lift=11.29). v8 was USEFUL (TP=11201, FP=2985).",
|
|
41551
|
+
aiSpecific: true,
|
|
41552
|
+
_v7Verdict: "USEFUL",
|
|
41553
|
+
_v7Lift: 11.29,
|
|
41554
|
+
_v7Recall: 0.0704,
|
|
41555
|
+
_v7FpRate: 0.0551,
|
|
41556
|
+
_v7Precision: 0.6225,
|
|
41557
|
+
_v8Verdict: "USEFUL",
|
|
41558
|
+
_v8Lift: 18.16
|
|
40678
41559
|
},
|
|
40679
|
-
"
|
|
40680
|
-
recall:
|
|
41560
|
+
"ai/fetch-default-overuse": {
|
|
41561
|
+
recall: 27e-4,
|
|
40681
41562
|
fpRate: 3e-4,
|
|
40682
|
-
ratio:
|
|
40683
|
-
precision: 0.
|
|
40684
|
-
lastCalibratedAt: "2026-
|
|
41563
|
+
ratio: 2679.84,
|
|
41564
|
+
precision: 0.9036,
|
|
41565
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40685
41566
|
verdict: "USEFUL",
|
|
40686
|
-
_calibrationNote: "
|
|
40687
|
-
aiSpecific: true
|
|
41567
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=797, FP=85, P=90.4%, FPR=0.03%, lift=2679.84. v7 was USEFUL (TP=666, FP=76, lift=2166.14). v8 was USEFUL (TP=131, FP=9).",
|
|
41568
|
+
aiSpecific: true,
|
|
41569
|
+
_v7Verdict: "USEFUL",
|
|
41570
|
+
_v7Lift: 2166.14,
|
|
41571
|
+
_v7Recall: 28e-4,
|
|
41572
|
+
_v7FpRate: 4e-4,
|
|
41573
|
+
_v7Precision: 0.8976,
|
|
41574
|
+
_v8Verdict: "USEFUL",
|
|
41575
|
+
_v8Lift: 7139.19
|
|
40688
41576
|
},
|
|
40689
|
-
"
|
|
40690
|
-
recall:
|
|
41577
|
+
"ai/library-reinvention": {
|
|
41578
|
+
recall: 3e-4,
|
|
40691
41579
|
fpRate: 0,
|
|
40692
|
-
ratio:
|
|
40693
|
-
precision: 0.
|
|
40694
|
-
lastCalibratedAt: "2026-
|
|
41580
|
+
ratio: 47415.05,
|
|
41581
|
+
precision: 0.9405,
|
|
41582
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40695
41583
|
verdict: "USEFUL",
|
|
40696
|
-
_calibrationNote: "
|
|
40697
|
-
aiSpecific: true
|
|
41584
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=79, FP=5, P=94.0%, FPR=0.00%, lift=47415.05. v7 was USEFUL (TP=64, FP=5, lift=34024.44). v8 was USEFUL (TP=15, FP=0).",
|
|
41585
|
+
aiSpecific: true,
|
|
41586
|
+
_v7Verdict: "USEFUL",
|
|
41587
|
+
_v7Lift: 34024.44,
|
|
41588
|
+
_v7Recall: 3e-4,
|
|
41589
|
+
_v7FpRate: 0,
|
|
41590
|
+
_v7Precision: 0.9275,
|
|
41591
|
+
_v8Verdict: "USEFUL",
|
|
41592
|
+
_v8Lift: 99999
|
|
40698
41593
|
},
|
|
40699
|
-
"
|
|
40700
|
-
recall: 13e-4,
|
|
40701
|
-
fpRate: 4e-4,
|
|
40702
|
-
ratio: 3.4,
|
|
40703
|
-
precision: 0.8151,
|
|
40704
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
40705
|
-
verdict: "USEFUL",
|
|
40706
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. USEFUL \u2014 TP=313, FP=71, P=81.5%, FPR=0.04%, lift=3.4. aiSpecific=True.",
|
|
40707
|
-
aiSpecific: true
|
|
40708
|
-
},
|
|
40709
|
-
"visual/math-gradient-hue-rotation": {
|
|
41594
|
+
"ai/log-rank-histogram": {
|
|
40710
41595
|
recall: 0,
|
|
40711
41596
|
fpRate: 0,
|
|
40712
41597
|
ratio: 0,
|
|
40713
41598
|
precision: 0,
|
|
40714
|
-
lastCalibratedAt: "2026-
|
|
41599
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40715
41600
|
verdict: "DORMANT",
|
|
40716
|
-
|
|
40717
|
-
|
|
40718
|
-
|
|
41601
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=OK, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
41602
|
+
aiSpecific: true,
|
|
41603
|
+
_v7Verdict: "OK",
|
|
41604
|
+
_v7Lift: 0,
|
|
41605
|
+
_v7Recall: 0,
|
|
41606
|
+
_v7FpRate: 0,
|
|
41607
|
+
_v7Precision: 0,
|
|
41608
|
+
_v8Verdict: "DORMANT",
|
|
41609
|
+
_v8Lift: 1,
|
|
41610
|
+
defaultOff: true
|
|
40719
41611
|
},
|
|
40720
|
-
"
|
|
40721
|
-
recall:
|
|
40722
|
-
fpRate:
|
|
40723
|
-
ratio:
|
|
40724
|
-
precision: 0.
|
|
40725
|
-
lastCalibratedAt: "2026-
|
|
40726
|
-
verdict: "
|
|
40727
|
-
_calibrationNote: "
|
|
40728
|
-
aiSpecific: true
|
|
40729
|
-
|
|
40730
|
-
|
|
40731
|
-
|
|
40732
|
-
|
|
40733
|
-
|
|
40734
|
-
|
|
40735
|
-
|
|
40736
|
-
verdict: "USEFUL",
|
|
40737
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. USEFUL \u2014 TP=1067, FP=248, P=81.1%, FPR=0.13%, lift=3.3. aiSpecific=True.",
|
|
40738
|
-
aiSpecific: true
|
|
40739
|
-
},
|
|
40740
|
-
"visual/math-spacing-entropy": {
|
|
40741
|
-
recall: 18e-4,
|
|
40742
|
-
fpRate: 6e-4,
|
|
40743
|
-
ratio: 3.01,
|
|
40744
|
-
precision: 0.7959,
|
|
40745
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
40746
|
-
verdict: "USEFUL",
|
|
40747
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. USEFUL \u2014 TP=425, FP=109, P=79.6%, FPR=0.06%, lift=3.0. aiSpecific=True.",
|
|
40748
|
-
aiSpecific: true
|
|
41612
|
+
"ai/markdown-leakage": {
|
|
41613
|
+
recall: 0,
|
|
41614
|
+
fpRate: 0,
|
|
41615
|
+
ratio: 10003.17,
|
|
41616
|
+
precision: 0.3571,
|
|
41617
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41618
|
+
verdict: "OK",
|
|
41619
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=5, FP=9, P=35.7%, FPR=0.00%, lift=10003.17. v7 was USEFUL (TP=5, FP=2, lift=65504.64). v8 was INVERTED (TP=0, FP=7).",
|
|
41620
|
+
aiSpecific: true,
|
|
41621
|
+
_v7Verdict: "USEFUL",
|
|
41622
|
+
_v7Lift: 65504.64,
|
|
41623
|
+
_v7Recall: 0,
|
|
41624
|
+
_v7FpRate: 0,
|
|
41625
|
+
_v7Precision: 0.7143,
|
|
41626
|
+
_v8Verdict: "INVERTED",
|
|
41627
|
+
_v8Lift: 0
|
|
40749
41628
|
},
|
|
40750
|
-
"
|
|
41629
|
+
"ai/renyi-profile": {
|
|
40751
41630
|
recall: 0,
|
|
40752
41631
|
fpRate: 0,
|
|
40753
|
-
ratio:
|
|
40754
|
-
precision: 0,
|
|
40755
|
-
lastCalibratedAt: "2026-
|
|
40756
|
-
verdict: "
|
|
40757
|
-
|
|
40758
|
-
|
|
40759
|
-
|
|
41632
|
+
ratio: 5251.67,
|
|
41633
|
+
precision: 0.25,
|
|
41634
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41635
|
+
verdict: "OK",
|
|
41636
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=4, FP=12, P=25.0%, FPR=0.00%, lift=5251.67. v7 was OK (TP=3, FP=9, lift=5094.81). v8 was OK (TP=1, FP=3).",
|
|
41637
|
+
aiSpecific: true,
|
|
41638
|
+
_v7Verdict: "OK",
|
|
41639
|
+
_v7Lift: 5094.81,
|
|
41640
|
+
_v7Recall: 0,
|
|
41641
|
+
_v7FpRate: 0,
|
|
41642
|
+
_v7Precision: 0.25,
|
|
41643
|
+
_v8Verdict: "OK",
|
|
41644
|
+
_v8Lift: 5722.25
|
|
40760
41645
|
},
|
|
40761
|
-
"
|
|
40762
|
-
recall: 0.
|
|
40763
|
-
fpRate:
|
|
40764
|
-
ratio:
|
|
40765
|
-
precision: 0.
|
|
40766
|
-
lastCalibratedAt: "2026-
|
|
41646
|
+
"ai/segment-surprisal-cv": {
|
|
41647
|
+
recall: 0.2019,
|
|
41648
|
+
fpRate: 0.0787,
|
|
41649
|
+
ratio: 9.52,
|
|
41650
|
+
precision: 0.7495,
|
|
41651
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40767
41652
|
verdict: "USEFUL",
|
|
40768
|
-
_calibrationNote: "
|
|
40769
|
-
aiSpecific: true
|
|
41653
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=59390, FP=19849, P=75.0%, FPR=7.87%, lift=9.52. v7 was USEFUL (TP=43498, FP=14983, lift=9.11). v8 was USEFUL (TP=15892, FP=4866).",
|
|
41654
|
+
aiSpecific: true,
|
|
41655
|
+
_v7Verdict: "USEFUL",
|
|
41656
|
+
_v7Lift: 9.11,
|
|
41657
|
+
_v7Recall: 0.1836,
|
|
41658
|
+
_v7FpRate: 0.0817,
|
|
41659
|
+
_v7Precision: 0.7438,
|
|
41660
|
+
_v8Verdict: "USEFUL",
|
|
41661
|
+
_v8Lift: 10.8
|
|
40770
41662
|
},
|
|
40771
|
-
"
|
|
40772
|
-
recall:
|
|
40773
|
-
fpRate:
|
|
40774
|
-
ratio:
|
|
40775
|
-
precision: 0.
|
|
40776
|
-
lastCalibratedAt: "2026-
|
|
41663
|
+
"ai/state-default-overuse": {
|
|
41664
|
+
recall: 3e-3,
|
|
41665
|
+
fpRate: 6e-4,
|
|
41666
|
+
ratio: 1315.06,
|
|
41667
|
+
precision: 0.8451,
|
|
41668
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40777
41669
|
verdict: "USEFUL",
|
|
40778
|
-
_calibrationNote: "
|
|
40779
|
-
aiSpecific: true
|
|
40780
|
-
|
|
40781
|
-
|
|
40782
|
-
|
|
40783
|
-
|
|
40784
|
-
|
|
40785
|
-
|
|
40786
|
-
|
|
40787
|
-
verdict: "OK",
|
|
40788
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. OK \u2014 TP=67, FP=30, P=69.1%, FPR=0.02%, lift=1.7. aiSpecific=True.",
|
|
40789
|
-
aiSpecific: true
|
|
41670
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=884, FP=162, P=84.5%, FPR=0.06%, lift=1315.06. v7 was USEFUL (TP=701, FP=158, lift=947.32). v8 was USEFUL (TP=183, FP=4).",
|
|
41671
|
+
aiSpecific: true,
|
|
41672
|
+
_v7Verdict: "USEFUL",
|
|
41673
|
+
_v7Lift: 947.32,
|
|
41674
|
+
_v7Recall: 3e-3,
|
|
41675
|
+
_v7FpRate: 9e-4,
|
|
41676
|
+
_v7Precision: 0.8161,
|
|
41677
|
+
_v8Verdict: "USEFUL",
|
|
41678
|
+
_v8Lift: 16799.55
|
|
40790
41679
|
},
|
|
40791
|
-
"
|
|
40792
|
-
recall:
|
|
40793
|
-
fpRate:
|
|
40794
|
-
ratio:
|
|
40795
|
-
precision: 0.
|
|
40796
|
-
lastCalibratedAt: "2026-
|
|
41680
|
+
"ai/tailwind-color-overuse": {
|
|
41681
|
+
recall: 0.0264,
|
|
41682
|
+
fpRate: 38e-4,
|
|
41683
|
+
ratio: 230.97,
|
|
41684
|
+
precision: 0.8888,
|
|
41685
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40797
41686
|
verdict: "USEFUL",
|
|
40798
|
-
_calibrationNote: "
|
|
40799
|
-
aiSpecific: true
|
|
41687
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=7752, FP=970, P=88.9%, FPR=0.38%, lift=230.97. v7 was USEFUL (TP=5169, FP=958, lift=161.52). v8 was USEFUL (TP=2583, FP=12).",
|
|
41688
|
+
aiSpecific: true,
|
|
41689
|
+
_v7Verdict: "USEFUL",
|
|
41690
|
+
_v7Lift: 161.52,
|
|
41691
|
+
_v7Recall: 0.0218,
|
|
41692
|
+
_v7FpRate: 52e-4,
|
|
41693
|
+
_v7Precision: 0.8436,
|
|
41694
|
+
_v8Verdict: "USEFUL",
|
|
41695
|
+
_v8Lift: 5695.79
|
|
40800
41696
|
},
|
|
40801
|
-
"
|
|
40802
|
-
recall:
|
|
40803
|
-
fpRate:
|
|
40804
|
-
ratio:
|
|
40805
|
-
precision: 0.
|
|
40806
|
-
lastCalibratedAt: "2026-
|
|
40807
|
-
verdict: "
|
|
40808
|
-
_calibrationNote: "
|
|
40809
|
-
aiSpecific:
|
|
40810
|
-
|
|
40811
|
-
|
|
40812
|
-
|
|
40813
|
-
|
|
40814
|
-
|
|
40815
|
-
|
|
40816
|
-
|
|
40817
|
-
verdict: "HYGIENE",
|
|
40818
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=2790, FP=591, P=82.5%, FPR=0.32%, lift=3.6. aiSpecific=False.",
|
|
40819
|
-
aiSpecific: false
|
|
41697
|
+
"ai/text-like-ratio": {
|
|
41698
|
+
recall: 0,
|
|
41699
|
+
fpRate: 0,
|
|
41700
|
+
ratio: 201664,
|
|
41701
|
+
precision: 0.8,
|
|
41702
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41703
|
+
verdict: "USEFUL",
|
|
41704
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=4, FP=1, P=80.0%, FPR=0.00%, lift=201664.00. v7 was USEFUL (TP=3, FP=1, lift=137559.75). v8 was USEFUL (TP=1, FP=0).",
|
|
41705
|
+
aiSpecific: true,
|
|
41706
|
+
_v7Verdict: "USEFUL",
|
|
41707
|
+
_v7Lift: 137559.75,
|
|
41708
|
+
_v7Recall: 0,
|
|
41709
|
+
_v7FpRate: 0,
|
|
41710
|
+
_v7Precision: 0.75,
|
|
41711
|
+
_v8Verdict: "USEFUL",
|
|
41712
|
+
_v8Lift: 99999
|
|
40820
41713
|
},
|
|
40821
|
-
"
|
|
40822
|
-
recall:
|
|
40823
|
-
fpRate:
|
|
40824
|
-
ratio:
|
|
40825
|
-
precision: 0.
|
|
40826
|
-
lastCalibratedAt: "2026-
|
|
40827
|
-
verdict: "
|
|
40828
|
-
_calibrationNote: "
|
|
40829
|
-
aiSpecific:
|
|
41714
|
+
"ai/whitespace-regularity": {
|
|
41715
|
+
recall: 0.0733,
|
|
41716
|
+
fpRate: 0.0677,
|
|
41717
|
+
ratio: 8.25,
|
|
41718
|
+
precision: 0.5583,
|
|
41719
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41720
|
+
verdict: "USEFUL",
|
|
41721
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=21567, FP=17061, P=55.8%, FPR=6.77%, lift=8.25. v7 was USEFUL (TP=17466, FP=13438, lift=7.71). v8 was USEFUL (TP=4101, FP=3623).",
|
|
41722
|
+
aiSpecific: true,
|
|
41723
|
+
_v7Verdict: "USEFUL",
|
|
41724
|
+
_v7Lift: 7.71,
|
|
41725
|
+
_v7Recall: 0.0737,
|
|
41726
|
+
_v7FpRate: 0.0733,
|
|
41727
|
+
_v7Precision: 0.5652,
|
|
41728
|
+
_v8Verdict: "USEFUL",
|
|
41729
|
+
_v8Lift: 10.06
|
|
40830
41730
|
},
|
|
40831
|
-
"
|
|
41731
|
+
"arch/astro-island-leak": {
|
|
40832
41732
|
recall: 0,
|
|
40833
41733
|
fpRate: 0,
|
|
40834
41734
|
ratio: 0,
|
|
40835
41735
|
precision: 0,
|
|
40836
|
-
lastCalibratedAt: "2026-
|
|
41736
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40837
41737
|
verdict: "DORMANT",
|
|
40838
|
-
|
|
40839
|
-
|
|
40840
|
-
|
|
40841
|
-
|
|
40842
|
-
|
|
40843
|
-
|
|
40844
|
-
|
|
40845
|
-
|
|
40846
|
-
|
|
40847
|
-
|
|
40848
|
-
verdict: "HYGIENE",
|
|
40849
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=16288, FP=9589, P=62.9%, FPR=5.20%, lift=1.3. aiSpecific=False.",
|
|
40850
|
-
aiSpecific: false
|
|
41738
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
41739
|
+
aiSpecific: true,
|
|
41740
|
+
_v7Verdict: "DORMANT",
|
|
41741
|
+
_v7Lift: 0,
|
|
41742
|
+
_v7Recall: 0,
|
|
41743
|
+
_v7FpRate: 0,
|
|
41744
|
+
_v7Precision: 0,
|
|
41745
|
+
_v8Verdict: "DORMANT",
|
|
41746
|
+
_v8Lift: 1,
|
|
41747
|
+
defaultOff: true
|
|
40851
41748
|
},
|
|
40852
|
-
"
|
|
40853
|
-
recall: 0.
|
|
40854
|
-
fpRate:
|
|
40855
|
-
ratio:
|
|
40856
|
-
precision: 0.
|
|
40857
|
-
lastCalibratedAt: "2026-
|
|
40858
|
-
verdict: "
|
|
40859
|
-
_calibrationNote: "
|
|
40860
|
-
aiSpecific:
|
|
41749
|
+
"component/giant-component": {
|
|
41750
|
+
recall: 0.0181,
|
|
41751
|
+
fpRate: 59e-4,
|
|
41752
|
+
ratio: 132.31,
|
|
41753
|
+
precision: 0.7815,
|
|
41754
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41755
|
+
verdict: "USEFUL",
|
|
41756
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=5326, FP=1489, P=78.2%, FPR=0.59%, lift=132.31. v7 was USEFUL (TP=4205, FP=1413, lift=97.16). v8 was USEFUL (TP=1121, FP=76).",
|
|
41757
|
+
aiSpecific: true,
|
|
41758
|
+
_v7Verdict: "USEFUL",
|
|
41759
|
+
_v7Lift: 97.16,
|
|
41760
|
+
_v7Recall: 0.0177,
|
|
41761
|
+
_v7FpRate: 77e-4,
|
|
41762
|
+
_v7Precision: 0.7485,
|
|
41763
|
+
_v8Verdict: "USEFUL",
|
|
41764
|
+
_v8Lift: 846.15
|
|
40861
41765
|
},
|
|
40862
|
-
"
|
|
40863
|
-
recall:
|
|
40864
|
-
fpRate:
|
|
40865
|
-
ratio:
|
|
40866
|
-
precision: 0.
|
|
40867
|
-
lastCalibratedAt: "2026-
|
|
40868
|
-
verdict: "
|
|
40869
|
-
_calibrationNote: "
|
|
40870
|
-
aiSpecific: false
|
|
41766
|
+
"component/multiple-components-per-file": {
|
|
41767
|
+
recall: 0.0751,
|
|
41768
|
+
fpRate: 0.0423,
|
|
41769
|
+
ratio: 15.96,
|
|
41770
|
+
precision: 0.6747,
|
|
41771
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41772
|
+
verdict: "USEFUL",
|
|
41773
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=22103, FP=10655, P=67.5%, FPR=4.23%, lift=15.96. v7 was USEFUL (TP=16288, FP=9589, lift=12.04). v8 was USEFUL (TP=5815, FP=1066).",
|
|
41774
|
+
aiSpecific: false,
|
|
41775
|
+
_v7Verdict: "USEFUL",
|
|
41776
|
+
_v7Lift: 12.04,
|
|
41777
|
+
_v7Recall: 0.0687,
|
|
41778
|
+
_v7FpRate: 0.0523,
|
|
41779
|
+
_v7Precision: 0.6294,
|
|
41780
|
+
_v8Verdict: "USEFUL",
|
|
41781
|
+
_v8Lift: 54.44
|
|
40871
41782
|
},
|
|
40872
|
-
"
|
|
40873
|
-
recall:
|
|
41783
|
+
"component/shadcn-prop-mismatch": {
|
|
41784
|
+
recall: 16e-4,
|
|
40874
41785
|
fpRate: 1e-4,
|
|
40875
|
-
ratio:
|
|
40876
|
-
precision: 0.
|
|
40877
|
-
lastCalibratedAt: "2026-
|
|
40878
|
-
verdict: "HYGIENE",
|
|
40879
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=36, FP=26, P=58.1%, FPR=0.01%, lift=1.1. aiSpecific=False.",
|
|
40880
|
-
aiSpecific: false
|
|
40881
|
-
},
|
|
40882
|
-
"security/public-admin-route": {
|
|
40883
|
-
recall: 28e-4,
|
|
40884
|
-
fpRate: 78e-4,
|
|
40885
|
-
ratio: 0.4,
|
|
40886
|
-
precision: 0.2251,
|
|
40887
|
-
lastCalibratedAt: "2026-06-26T22:30:00Z",
|
|
40888
|
-
verdict: "HYGIENE",
|
|
40889
|
-
_calibrationNote: "v4 corpus (2026-06-25): 95,599 neg + 76,550 pos (frontend, TS/TSX/JS/JSX). INVERTED \u2014 TP=217, FP=747, P=22.5%, FPR=0.78%, lift=0.4. [v0.12.2: reclassified to HYGIENE because rule is aiSpecific: false]",
|
|
40890
|
-
defaultOff: true,
|
|
40891
|
-
aiSpecific: false
|
|
40892
|
-
},
|
|
40893
|
-
"security/unsafe-html-render": {
|
|
40894
|
-
recall: 13e-4,
|
|
40895
|
-
fpRate: 9e-4,
|
|
40896
|
-
ratio: 1.5,
|
|
40897
|
-
precision: 0.661,
|
|
40898
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
40899
|
-
verdict: "HYGIENE",
|
|
40900
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=312, FP=160, P=66.1%, FPR=0.09%, lift=1.5. aiSpecific=False.",
|
|
40901
|
-
aiSpecific: false
|
|
40902
|
-
},
|
|
40903
|
-
"visual/naturalness-anomaly": {
|
|
40904
|
-
recall: 0.1645,
|
|
40905
|
-
fpRate: 0.0617,
|
|
40906
|
-
ratio: 2.67,
|
|
40907
|
-
precision: 0.7755,
|
|
40908
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
41786
|
+
ratio: 9990.98,
|
|
41787
|
+
precision: 0.9512,
|
|
41788
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40909
41789
|
verdict: "USEFUL",
|
|
40910
|
-
_calibrationNote: "
|
|
40911
|
-
aiSpecific: true
|
|
41790
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=468, FP=24, P=95.1%, FPR=0.01%, lift=9990.98. v7 was USEFUL (TP=314, FP=24, lift=7099.57). v8 was USEFUL (TP=154, FP=0).",
|
|
41791
|
+
aiSpecific: true,
|
|
41792
|
+
_v7Verdict: "USEFUL",
|
|
41793
|
+
_v7Lift: 7099.57,
|
|
41794
|
+
_v7Recall: 13e-4,
|
|
41795
|
+
_v7FpRate: 1e-4,
|
|
41796
|
+
_v7Precision: 0.929,
|
|
41797
|
+
_v8Verdict: "USEFUL",
|
|
41798
|
+
_v8Lift: 99999
|
|
40912
41799
|
},
|
|
40913
|
-
"
|
|
40914
|
-
recall: 0,
|
|
40915
|
-
fpRate: 0,
|
|
40916
|
-
ratio:
|
|
40917
|
-
precision: 0.
|
|
40918
|
-
lastCalibratedAt: "2026-
|
|
41800
|
+
"context/import-path-mismatch": {
|
|
41801
|
+
recall: 0.0681,
|
|
41802
|
+
fpRate: 0.0167,
|
|
41803
|
+
ratio: 49.48,
|
|
41804
|
+
precision: 0.8263,
|
|
41805
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40919
41806
|
verdict: "USEFUL",
|
|
40920
|
-
_calibrationNote: "
|
|
40921
|
-
aiSpecific:
|
|
41807
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=20032, FP=4210, P=82.6%, FPR=1.67%, lift=49.48. v7 was USEFUL (TP=17672, FP=4202, lift=35.26). v8 was USEFUL (TP=2360, FP=8).",
|
|
41808
|
+
aiSpecific: false,
|
|
41809
|
+
_v7Verdict: "USEFUL",
|
|
41810
|
+
_v7Lift: 35.26,
|
|
41811
|
+
_v7Recall: 0.0746,
|
|
41812
|
+
_v7FpRate: 0.0229,
|
|
41813
|
+
_v7Precision: 0.8079,
|
|
41814
|
+
_v8Verdict: "USEFUL",
|
|
41815
|
+
_v8Lift: 8554.38
|
|
40922
41816
|
},
|
|
40923
|
-
"
|
|
41817
|
+
"db/duplicate-index": {
|
|
40924
41818
|
recall: 0,
|
|
40925
41819
|
fpRate: 0,
|
|
40926
41820
|
ratio: 0,
|
|
40927
41821
|
precision: 0,
|
|
40928
|
-
lastCalibratedAt: "2026-
|
|
41822
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40929
41823
|
verdict: "DORMANT",
|
|
40930
|
-
|
|
40931
|
-
|
|
40932
|
-
|
|
41824
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
41825
|
+
aiSpecific: false,
|
|
41826
|
+
_v7Verdict: "DORMANT",
|
|
41827
|
+
_v7Lift: 0,
|
|
41828
|
+
_v7Recall: 0,
|
|
41829
|
+
_v7FpRate: 0,
|
|
41830
|
+
_v7Precision: 0,
|
|
41831
|
+
_v8Verdict: "DORMANT",
|
|
41832
|
+
_v8Lift: 1,
|
|
41833
|
+
defaultOff: true
|
|
40933
41834
|
},
|
|
40934
|
-
"
|
|
41835
|
+
"db/enum-sprawl": {
|
|
40935
41836
|
recall: 0,
|
|
40936
41837
|
fpRate: 0,
|
|
40937
41838
|
ratio: 0,
|
|
40938
41839
|
precision: 0,
|
|
40939
|
-
lastCalibratedAt: "2026-
|
|
41840
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40940
41841
|
verdict: "DORMANT",
|
|
40941
|
-
|
|
40942
|
-
|
|
40943
|
-
|
|
41842
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
41843
|
+
aiSpecific: false,
|
|
41844
|
+
_v7Verdict: "DORMANT",
|
|
41845
|
+
_v7Lift: 0,
|
|
41846
|
+
_v7Recall: 0,
|
|
41847
|
+
_v7FpRate: 0,
|
|
41848
|
+
_v7Precision: 0,
|
|
41849
|
+
_v8Verdict: "DORMANT",
|
|
41850
|
+
_v8Lift: 1,
|
|
41851
|
+
defaultOff: true
|
|
40944
41852
|
},
|
|
40945
|
-
"
|
|
41853
|
+
"db/missing-fk-index": {
|
|
40946
41854
|
recall: 0,
|
|
40947
41855
|
fpRate: 0,
|
|
40948
41856
|
ratio: 0,
|
|
40949
41857
|
precision: 0,
|
|
40950
|
-
lastCalibratedAt: "2026-
|
|
41858
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40951
41859
|
verdict: "DORMANT",
|
|
40952
|
-
|
|
40953
|
-
|
|
40954
|
-
|
|
41860
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
41861
|
+
aiSpecific: false,
|
|
41862
|
+
_v7Verdict: "DORMANT",
|
|
41863
|
+
_v7Lift: 0,
|
|
41864
|
+
_v7Recall: 0,
|
|
41865
|
+
_v7FpRate: 0,
|
|
41866
|
+
_v7Precision: 0,
|
|
41867
|
+
_v8Verdict: "DORMANT",
|
|
41868
|
+
_v8Lift: 1,
|
|
41869
|
+
defaultOff: true
|
|
40955
41870
|
},
|
|
40956
|
-
"
|
|
41871
|
+
"db/missing-not-null": {
|
|
40957
41872
|
recall: 0,
|
|
40958
41873
|
fpRate: 0,
|
|
40959
41874
|
ratio: 0,
|
|
40960
41875
|
precision: 0,
|
|
40961
|
-
lastCalibratedAt: "2026-
|
|
41876
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40962
41877
|
verdict: "DORMANT",
|
|
40963
|
-
|
|
40964
|
-
|
|
40965
|
-
|
|
41878
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
41879
|
+
aiSpecific: false,
|
|
41880
|
+
_v7Verdict: "DORMANT",
|
|
41881
|
+
_v7Lift: 0,
|
|
41882
|
+
_v7Recall: 0,
|
|
41883
|
+
_v7FpRate: 0,
|
|
41884
|
+
_v7Precision: 0,
|
|
41885
|
+
_v8Verdict: "DORMANT",
|
|
41886
|
+
_v8Lift: 1,
|
|
41887
|
+
defaultOff: true
|
|
40966
41888
|
},
|
|
40967
|
-
"
|
|
41889
|
+
"db/naming-inconsistency": {
|
|
40968
41890
|
recall: 0,
|
|
40969
41891
|
fpRate: 0,
|
|
40970
41892
|
ratio: 0,
|
|
40971
41893
|
precision: 0,
|
|
40972
|
-
lastCalibratedAt: "2026-
|
|
41894
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40973
41895
|
verdict: "DORMANT",
|
|
40974
|
-
|
|
40975
|
-
|
|
40976
|
-
|
|
41896
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
41897
|
+
aiSpecific: false,
|
|
41898
|
+
_v7Verdict: "DORMANT",
|
|
41899
|
+
_v7Lift: 0,
|
|
41900
|
+
_v7Recall: 0,
|
|
41901
|
+
_v7FpRate: 0,
|
|
41902
|
+
_v7Precision: 0,
|
|
41903
|
+
_v8Verdict: "DORMANT",
|
|
41904
|
+
_v8Lift: 1,
|
|
41905
|
+
defaultOff: true
|
|
40977
41906
|
},
|
|
40978
|
-
"
|
|
41907
|
+
"db/sql-concat": {
|
|
41908
|
+
recall: 5e-4,
|
|
41909
|
+
fpRate: 1e-4,
|
|
41910
|
+
ratio: 7511.26,
|
|
41911
|
+
precision: 0.8343,
|
|
41912
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41913
|
+
verdict: "USEFUL",
|
|
41914
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=141, FP=28, P=83.4%, FPR=0.01%, lift=7511.26. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was USEFUL (TP=141, FP=28).",
|
|
41915
|
+
aiSpecific: true,
|
|
41916
|
+
_v7Verdict: "DORMANT",
|
|
41917
|
+
_v7Lift: 1,
|
|
41918
|
+
_v7Recall: 0,
|
|
41919
|
+
_v7FpRate: 0,
|
|
41920
|
+
_v7Precision: 0,
|
|
41921
|
+
_v8Verdict: "USEFUL",
|
|
41922
|
+
_v8Lift: 2046.08
|
|
41923
|
+
},
|
|
41924
|
+
"dead/dead-branch": {
|
|
41925
|
+
recall: 2e-4,
|
|
41926
|
+
fpRate: 4e-4,
|
|
41927
|
+
ratio: 1080.68,
|
|
41928
|
+
precision: 0.4244,
|
|
41929
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41930
|
+
verdict: "OK",
|
|
41931
|
+
_calibrationNote: "v8.5 (v0.18.9): v85 verdict=OK, v7 was DORMANT, v8 was OK. v0.18.8 v8a first measurement (1000 files): see docs/research/v0.18.8-dead-rules-measurement.md.",
|
|
41932
|
+
aiSpecific: true,
|
|
41933
|
+
_v7Verdict: "DORMANT",
|
|
41934
|
+
_v7Lift: 1,
|
|
41935
|
+
_v7Recall: 0,
|
|
41936
|
+
_v7FpRate: 0,
|
|
41937
|
+
_v7Precision: 0,
|
|
41938
|
+
_v8Verdict: "OK",
|
|
41939
|
+
_v8Lift: 294.38
|
|
41940
|
+
},
|
|
41941
|
+
"dead/unreachable": {
|
|
41942
|
+
recall: 1e-4,
|
|
41943
|
+
fpRate: 6e-4,
|
|
41944
|
+
ratio: 153.14,
|
|
41945
|
+
precision: 0.0966,
|
|
41946
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41947
|
+
verdict: "OK",
|
|
41948
|
+
_calibrationNote: "v8.5 (v0.18.9): v85 verdict=OK, v7 was DORMANT, v8 was OK. v0.18.8 v8a first measurement (1000 files): see docs/research/v0.18.8-dead-rules-measurement.md.",
|
|
41949
|
+
aiSpecific: true,
|
|
41950
|
+
_v7Verdict: "DORMANT",
|
|
41951
|
+
_v7Lift: 1,
|
|
41952
|
+
_v7Recall: 0,
|
|
41953
|
+
_v7FpRate: 0,
|
|
41954
|
+
_v7Precision: 0,
|
|
41955
|
+
_v8Verdict: "OK",
|
|
41956
|
+
_v8Lift: 41.71
|
|
41957
|
+
},
|
|
41958
|
+
"dead/unused-import": {
|
|
41959
|
+
recall: 0.0379,
|
|
41960
|
+
fpRate: 0.0222,
|
|
41961
|
+
ratio: 30.06,
|
|
41962
|
+
precision: 0.6662,
|
|
41963
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41964
|
+
verdict: "USEFUL",
|
|
41965
|
+
_calibrationNote: "v8.5 (v0.18.9): v85 verdict=USEFUL, v7 was DORMANT, v8 was USEFUL. v0.18.8 v8a first measurement (1000 files): see docs/research/v0.18.8-dead-rules-measurement.md.",
|
|
41966
|
+
aiSpecific: true,
|
|
41967
|
+
_v7Verdict: "DORMANT",
|
|
41968
|
+
_v7Lift: 1,
|
|
41969
|
+
_v7Recall: 0,
|
|
41970
|
+
_v7FpRate: 0,
|
|
41971
|
+
_v7Precision: 0,
|
|
41972
|
+
_v8Verdict: "USEFUL",
|
|
41973
|
+
_v8Lift: 8.19
|
|
41974
|
+
},
|
|
41975
|
+
"dead/unused-local": {
|
|
41976
|
+
recall: 0.0477,
|
|
41977
|
+
fpRate: 74e-4,
|
|
41978
|
+
ratio: 120.18,
|
|
41979
|
+
precision: 0.8834,
|
|
41980
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41981
|
+
verdict: "USEFUL",
|
|
41982
|
+
_calibrationNote: "v8.5 (v0.18.9): v85 verdict=USEFUL, v7 was DORMANT, v8 was USEFUL. v0.18.8 v8a first measurement (1000 files): see docs/research/v0.18.8-dead-rules-measurement.md.",
|
|
41983
|
+
aiSpecific: true,
|
|
41984
|
+
_v7Verdict: "DORMANT",
|
|
41985
|
+
_v7Lift: 1,
|
|
41986
|
+
_v7Recall: 0,
|
|
41987
|
+
_v7FpRate: 0,
|
|
41988
|
+
_v7Precision: 0,
|
|
41989
|
+
_v8Verdict: "USEFUL",
|
|
41990
|
+
_v8Lift: 32.74
|
|
41991
|
+
},
|
|
41992
|
+
"dead/unused-parameter": {
|
|
41993
|
+
recall: 8e-4,
|
|
41994
|
+
fpRate: 27e-4,
|
|
41995
|
+
ratio: 98,
|
|
41996
|
+
precision: 0.2628,
|
|
41997
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41998
|
+
verdict: "OK",
|
|
41999
|
+
_calibrationNote: "v8.5 (v0.18.9): v85 verdict=OK, v7 was DORMANT, v8 was OK. v0.18.8 v8a first measurement (1000 files): see docs/research/v0.18.8-dead-rules-measurement.md.",
|
|
42000
|
+
aiSpecific: true,
|
|
42001
|
+
_v7Verdict: "DORMANT",
|
|
42002
|
+
_v7Lift: 1,
|
|
42003
|
+
_v7Recall: 0,
|
|
42004
|
+
_v7FpRate: 0,
|
|
42005
|
+
_v7Precision: 0,
|
|
42006
|
+
_v8Verdict: "OK",
|
|
42007
|
+
_v8Lift: 26.7
|
|
42008
|
+
},
|
|
42009
|
+
"docs/broken-link": {
|
|
42010
|
+
recall: 14e-4,
|
|
42011
|
+
fpRate: 23e-4,
|
|
42012
|
+
ratio: 178.13,
|
|
42013
|
+
precision: 0.4155,
|
|
42014
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42015
|
+
verdict: "OK",
|
|
42016
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=418, FP=588, P=41.6%, FPR=0.23%, lift=178.13. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was OK (TP=418, FP=588).",
|
|
42017
|
+
aiSpecific: false,
|
|
42018
|
+
_v7Verdict: "DORMANT",
|
|
42019
|
+
_v7Lift: 1,
|
|
42020
|
+
_v7Recall: 0,
|
|
42021
|
+
_v7FpRate: 0,
|
|
42022
|
+
_v7Precision: 0,
|
|
42023
|
+
_v8Verdict: "OK",
|
|
42024
|
+
_v8Lift: 48.52
|
|
42025
|
+
},
|
|
42026
|
+
"docs/expired-code-example": {
|
|
40979
42027
|
recall: 0,
|
|
40980
42028
|
fpRate: 0,
|
|
40981
42029
|
ratio: 0,
|
|
40982
42030
|
precision: 0,
|
|
40983
|
-
lastCalibratedAt: "2026-
|
|
40984
|
-
verdict: "
|
|
40985
|
-
|
|
40986
|
-
|
|
40987
|
-
|
|
42031
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42032
|
+
verdict: "INVERTED",
|
|
42033
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=0, FP=3, P=0.0%, FPR=0.00%, lift=0.00. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was INVERTED (TP=0, FP=3).",
|
|
42034
|
+
aiSpecific: false,
|
|
42035
|
+
_v7Verdict: "DORMANT",
|
|
42036
|
+
_v7Lift: 1,
|
|
42037
|
+
_v7Recall: 0,
|
|
42038
|
+
_v7FpRate: 0,
|
|
42039
|
+
_v7Precision: 0,
|
|
42040
|
+
_v8Verdict: "INVERTED",
|
|
42041
|
+
_v8Lift: 0,
|
|
42042
|
+
defaultOff: true
|
|
42043
|
+
},
|
|
42044
|
+
"docs/stale-function-reference": {
|
|
42045
|
+
recall: 26e-4,
|
|
42046
|
+
fpRate: 5e-4,
|
|
42047
|
+
ratio: 1638.47,
|
|
42048
|
+
precision: 0.8515,
|
|
42049
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42050
|
+
verdict: "USEFUL",
|
|
42051
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=751, FP=131, P=85.1%, FPR=0.05%, lift=1638.47. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was USEFUL (TP=751, FP=131).",
|
|
42052
|
+
aiSpecific: false,
|
|
42053
|
+
_v7Verdict: "DORMANT",
|
|
42054
|
+
_v7Lift: 1,
|
|
42055
|
+
_v7Recall: 0,
|
|
42056
|
+
_v7FpRate: 0,
|
|
42057
|
+
_v7Precision: 0,
|
|
42058
|
+
_v8Verdict: "USEFUL",
|
|
42059
|
+
_v8Lift: 446.32
|
|
42060
|
+
},
|
|
42061
|
+
"docs/stale-package-reference": {
|
|
42062
|
+
recall: 2e-4,
|
|
42063
|
+
fpRate: 4e-4,
|
|
42064
|
+
ratio: 939.43,
|
|
42065
|
+
precision: 0.3429,
|
|
42066
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42067
|
+
verdict: "OK",
|
|
42068
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=48, FP=92, P=34.3%, FPR=0.04%, lift=939.43. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was OK (TP=48, FP=92).",
|
|
42069
|
+
aiSpecific: false,
|
|
42070
|
+
_v7Verdict: "DORMANT",
|
|
42071
|
+
_v7Lift: 1,
|
|
42072
|
+
_v7Recall: 0,
|
|
42073
|
+
_v7FpRate: 0,
|
|
42074
|
+
_v7Precision: 0,
|
|
42075
|
+
_v8Verdict: "OK",
|
|
42076
|
+
_v8Lift: 255.9
|
|
40988
42077
|
},
|
|
40989
42078
|
"layout/forced-layout": {
|
|
40990
42079
|
recall: 0,
|
|
40991
42080
|
fpRate: 0,
|
|
40992
42081
|
ratio: 0,
|
|
40993
42082
|
precision: 0,
|
|
40994
|
-
lastCalibratedAt: "2026-
|
|
42083
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
40995
42084
|
verdict: "DORMANT",
|
|
40996
|
-
|
|
40997
|
-
|
|
40998
|
-
|
|
42085
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
42086
|
+
aiSpecific: true,
|
|
42087
|
+
_v7Verdict: "DORMANT",
|
|
42088
|
+
_v7Lift: 0,
|
|
42089
|
+
_v7Recall: 0,
|
|
42090
|
+
_v7FpRate: 0,
|
|
42091
|
+
_v7Precision: 0,
|
|
42092
|
+
_v8Verdict: "DORMANT",
|
|
42093
|
+
_v8Lift: 1,
|
|
42094
|
+
defaultOff: true
|
|
40999
42095
|
},
|
|
41000
|
-
"
|
|
42096
|
+
"layout/gap-monopoly": {
|
|
42097
|
+
recall: 3e-4,
|
|
42098
|
+
fpRate: 1e-4,
|
|
42099
|
+
ratio: 8859.33,
|
|
42100
|
+
precision: 0.8083,
|
|
42101
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42102
|
+
verdict: "USEFUL",
|
|
42103
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=97, FP=23, P=80.8%, FPR=0.01%, lift=8859.33. v7 was USEFUL (TP=88, FP=23, lift=6322.11). v8 was USEFUL (TP=9, FP=0).",
|
|
42104
|
+
aiSpecific: false,
|
|
42105
|
+
_v7Verdict: "USEFUL",
|
|
42106
|
+
_v7Lift: 6322.11,
|
|
42107
|
+
_v7Recall: 4e-4,
|
|
42108
|
+
_v7FpRate: 1e-4,
|
|
42109
|
+
_v7Precision: 0.7928,
|
|
42110
|
+
_v8Verdict: "USEFUL",
|
|
42111
|
+
_v8Lift: 99999
|
|
42112
|
+
},
|
|
42113
|
+
"layout/math-element-uniformity": {
|
|
42114
|
+
recall: 29e-4,
|
|
42115
|
+
fpRate: 1e-3,
|
|
42116
|
+
ratio: 770.74,
|
|
42117
|
+
precision: 0.7705,
|
|
42118
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42119
|
+
verdict: "USEFUL",
|
|
42120
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=846, FP=252, P=77.0%, FPR=0.10%, lift=770.74. v7 was USEFUL (TP=666, FP=225, lift=609.32). v8 was USEFUL (TP=180, FP=27).",
|
|
42121
|
+
aiSpecific: true,
|
|
42122
|
+
_v7Verdict: "USEFUL",
|
|
42123
|
+
_v7Lift: 609.32,
|
|
42124
|
+
_v7Recall: 28e-4,
|
|
42125
|
+
_v7FpRate: 12e-4,
|
|
42126
|
+
_v7Precision: 0.7475,
|
|
42127
|
+
_v8Verdict: "USEFUL",
|
|
42128
|
+
_v8Lift: 2211.5
|
|
42129
|
+
},
|
|
42130
|
+
"layout/math-grid-uniformity": {
|
|
42131
|
+
recall: 3e-4,
|
|
42132
|
+
fpRate: 1e-4,
|
|
42133
|
+
ratio: 5839.98,
|
|
42134
|
+
precision: 0.7182,
|
|
42135
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42136
|
+
verdict: "USEFUL",
|
|
42137
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=79, FP=31, P=71.8%, FPR=0.01%, lift=5839.98. v7 was USEFUL (TP=67, FP=30, lift=4222.91). v8 was USEFUL (TP=12, FP=1).",
|
|
42138
|
+
aiSpecific: true,
|
|
42139
|
+
_v7Verdict: "USEFUL",
|
|
42140
|
+
_v7Lift: 4222.91,
|
|
42141
|
+
_v7Recall: 3e-4,
|
|
42142
|
+
_v7FpRate: 2e-4,
|
|
42143
|
+
_v7Precision: 0.6907,
|
|
42144
|
+
_v8Verdict: "USEFUL",
|
|
42145
|
+
_v8Lift: 63384.92
|
|
42146
|
+
},
|
|
42147
|
+
"layout/spacing-grid": {
|
|
42148
|
+
recall: 2e-4,
|
|
42149
|
+
fpRate: 2e-4,
|
|
42150
|
+
ratio: 4051.29,
|
|
42151
|
+
precision: 0.6429,
|
|
42152
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42153
|
+
verdict: "USEFUL",
|
|
42154
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=72, FP=40, P=64.3%, FPR=0.02%, lift=4051.29. v7 was USEFUL (TP=39, FP=15, lift=8831.00). v8 was USEFUL (TP=33, FP=25).",
|
|
42155
|
+
aiSpecific: false,
|
|
42156
|
+
_v7Verdict: "USEFUL",
|
|
42157
|
+
_v7Lift: 8831,
|
|
42158
|
+
_v7Recall: 2e-4,
|
|
42159
|
+
_v7FpRate: 1e-4,
|
|
42160
|
+
_v7Precision: 0.7222,
|
|
42161
|
+
_v8Verdict: "USEFUL",
|
|
42162
|
+
_v8Lift: 1562.77
|
|
42163
|
+
},
|
|
42164
|
+
"logic/bayesian-conditional": {
|
|
41001
42165
|
recall: 0,
|
|
41002
42166
|
fpRate: 0,
|
|
41003
42167
|
ratio: 0,
|
|
41004
42168
|
precision: 0,
|
|
41005
|
-
lastCalibratedAt: "2026-
|
|
42169
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41006
42170
|
verdict: "DORMANT",
|
|
41007
|
-
|
|
41008
|
-
|
|
41009
|
-
|
|
42171
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
42172
|
+
aiSpecific: true,
|
|
42173
|
+
_v7Verdict: "DORMANT",
|
|
42174
|
+
_v7Lift: 0,
|
|
42175
|
+
_v7Recall: 0,
|
|
42176
|
+
_v7FpRate: 0,
|
|
42177
|
+
_v7Precision: 0,
|
|
42178
|
+
_v8Verdict: "DORMANT",
|
|
42179
|
+
_v8Lift: 1,
|
|
42180
|
+
defaultOff: true
|
|
41010
42181
|
},
|
|
41011
|
-
"
|
|
41012
|
-
recall:
|
|
41013
|
-
fpRate:
|
|
41014
|
-
ratio:
|
|
41015
|
-
precision: 0.
|
|
41016
|
-
lastCalibratedAt: "2026-
|
|
41017
|
-
verdict: "
|
|
41018
|
-
_calibrationNote: "
|
|
41019
|
-
aiSpecific: false
|
|
42182
|
+
"logic/boundary-violation": {
|
|
42183
|
+
recall: 0.0274,
|
|
42184
|
+
fpRate: 0.0137,
|
|
42185
|
+
ratio: 51.32,
|
|
42186
|
+
precision: 0.7006,
|
|
42187
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42188
|
+
verdict: "USEFUL",
|
|
42189
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=8051, FP=3441, P=70.1%, FPR=1.37%, lift=51.32. v7 was USEFUL (TP=6282, FP=3235, lift=37.42). v8 was USEFUL (TP=1769, FP=206).",
|
|
42190
|
+
aiSpecific: false,
|
|
42191
|
+
_v7Verdict: "USEFUL",
|
|
42192
|
+
_v7Lift: 37.42,
|
|
42193
|
+
_v7Recall: 0.0265,
|
|
42194
|
+
_v7FpRate: 0.0176,
|
|
42195
|
+
_v7Precision: 0.6601,
|
|
42196
|
+
_v8Verdict: "USEFUL",
|
|
42197
|
+
_v8Lift: 298.57
|
|
41020
42198
|
},
|
|
41021
|
-
"
|
|
42199
|
+
"logic/ghost-defensive": {
|
|
41022
42200
|
recall: 1e-4,
|
|
41023
42201
|
fpRate: 0,
|
|
41024
|
-
ratio:
|
|
41025
|
-
precision: 0.
|
|
41026
|
-
lastCalibratedAt: "2026-
|
|
42202
|
+
ratio: 112035.56,
|
|
42203
|
+
precision: 0.8889,
|
|
42204
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41027
42205
|
verdict: "USEFUL",
|
|
41028
|
-
_calibrationNote: "
|
|
41029
|
-
aiSpecific: true
|
|
42206
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=16, FP=2, P=88.9%, FPR=0.00%, lift=112035.56. v7 was USEFUL (TP=15, FP=2, lift=80917.50). v8 was USEFUL (TP=1, FP=0).",
|
|
42207
|
+
aiSpecific: true,
|
|
42208
|
+
_v7Verdict: "USEFUL",
|
|
42209
|
+
_v7Lift: 80917.5,
|
|
42210
|
+
_v7Recall: 1e-4,
|
|
42211
|
+
_v7FpRate: 0,
|
|
42212
|
+
_v7Precision: 0.8824,
|
|
42213
|
+
_v8Verdict: "USEFUL",
|
|
42214
|
+
_v8Lift: 99999
|
|
41030
42215
|
},
|
|
41031
|
-
"
|
|
41032
|
-
recall:
|
|
41033
|
-
fpRate:
|
|
41034
|
-
ratio:
|
|
41035
|
-
precision: 0.
|
|
41036
|
-
lastCalibratedAt: "2026-
|
|
42216
|
+
"logic/heaps-deviation": {
|
|
42217
|
+
recall: 0.0126,
|
|
42218
|
+
fpRate: 0.0178,
|
|
42219
|
+
ratio: 25.54,
|
|
42220
|
+
precision: 0.4536,
|
|
42221
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41037
42222
|
verdict: "OK",
|
|
41038
|
-
_calibrationNote: "
|
|
41039
|
-
aiSpecific:
|
|
42223
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=3716, FP=4477, P=45.4%, FPR=1.78%, lift=25.54. v7 was USEFUL (TP=2924, FP=2430, lift=41.22). v8 was OK (TP=792, FP=2047).",
|
|
42224
|
+
aiSpecific: false,
|
|
42225
|
+
_v7Verdict: "USEFUL",
|
|
42226
|
+
_v7Lift: 41.22,
|
|
42227
|
+
_v7Recall: 0.0123,
|
|
42228
|
+
_v7FpRate: 0.0132,
|
|
42229
|
+
_v7Precision: 0.5461,
|
|
42230
|
+
_v8Verdict: "OK",
|
|
42231
|
+
_v8Lift: 9.36
|
|
41040
42232
|
},
|
|
41041
|
-
"
|
|
41042
|
-
recall:
|
|
41043
|
-
fpRate:
|
|
41044
|
-
ratio:
|
|
41045
|
-
precision: 0.
|
|
41046
|
-
lastCalibratedAt: "2026-
|
|
42233
|
+
"logic/key-prop-missing": {
|
|
42234
|
+
recall: 16e-4,
|
|
42235
|
+
fpRate: 11e-4,
|
|
42236
|
+
ratio: 574.52,
|
|
42237
|
+
precision: 0.629,
|
|
42238
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41047
42239
|
verdict: "USEFUL",
|
|
41048
|
-
_calibrationNote: "
|
|
41049
|
-
aiSpecific: false
|
|
42240
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=468, FP=276, P=62.9%, FPR=0.11%, lift=574.52. v7 was USEFUL (TP=416, FP=250, lift=458.26). v8 was USEFUL (TP=52, FP=26).",
|
|
42241
|
+
aiSpecific: false,
|
|
42242
|
+
_v7Verdict: "USEFUL",
|
|
42243
|
+
_v7Lift: 458.26,
|
|
42244
|
+
_v7Recall: 18e-4,
|
|
42245
|
+
_v7FpRate: 14e-4,
|
|
42246
|
+
_v7Precision: 0.6246,
|
|
42247
|
+
_v8Verdict: "USEFUL",
|
|
42248
|
+
_v8Lift: 1760.69
|
|
41050
42249
|
},
|
|
41051
|
-
"
|
|
41052
|
-
recall:
|
|
41053
|
-
fpRate:
|
|
41054
|
-
ratio: 1.
|
|
41055
|
-
precision: 0.
|
|
41056
|
-
lastCalibratedAt: "2026-
|
|
42250
|
+
"logic/ks-distribution-shift": {
|
|
42251
|
+
recall: 0.6889,
|
|
42252
|
+
fpRate: 0.4411,
|
|
42253
|
+
ratio: 1.46,
|
|
42254
|
+
precision: 0.6457,
|
|
42255
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41057
42256
|
verdict: "NOISY",
|
|
41058
|
-
_calibrationNote: "
|
|
41059
|
-
|
|
41060
|
-
|
|
41061
|
-
|
|
41062
|
-
|
|
41063
|
-
|
|
41064
|
-
|
|
41065
|
-
|
|
41066
|
-
|
|
41067
|
-
|
|
41068
|
-
verdict: "USEFUL",
|
|
41069
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. USEFUL \u2014 TP=14, FP=3, P=82.4%, FPR=0.00%, lift=3.6. aiSpecific=True.",
|
|
41070
|
-
aiSpecific: true
|
|
41071
|
-
},
|
|
41072
|
-
"logic/ghost-defensive": {
|
|
41073
|
-
recall: 1e-4,
|
|
41074
|
-
fpRate: 0,
|
|
41075
|
-
ratio: 5.79,
|
|
41076
|
-
precision: 0.8824,
|
|
41077
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
41078
|
-
verdict: "USEFUL",
|
|
41079
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. USEFUL \u2014 TP=15, FP=2, P=88.2%, FPR=0.00%, lift=5.8. aiSpecific=True.",
|
|
41080
|
-
aiSpecific: true
|
|
41081
|
-
},
|
|
41082
|
-
"typo/calc-raw-px": {
|
|
41083
|
-
recall: 0,
|
|
41084
|
-
fpRate: 0,
|
|
41085
|
-
ratio: 2.32,
|
|
41086
|
-
precision: 0.75,
|
|
41087
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
41088
|
-
verdict: "HYGIENE",
|
|
41089
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=3, FP=1, P=75.0%, FPR=0.00%, lift=2.3. aiSpecific=False.",
|
|
41090
|
-
aiSpecific: false
|
|
42257
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=202658, FP=111193, P=64.6%, FPR=44.11%, lift=1.46. v7 was USEFUL (TP=152391, FP=62358, lift=2.09). v8 was INVERTED (TP=50267, FP=48835).",
|
|
42258
|
+
aiSpecific: false,
|
|
42259
|
+
_v7Verdict: "USEFUL",
|
|
42260
|
+
_v7Lift: 2.09,
|
|
42261
|
+
_v7Recall: 0.6431,
|
|
42262
|
+
_v7FpRate: 0.34,
|
|
42263
|
+
_v7Precision: 0.7096,
|
|
42264
|
+
_v8Verdict: "INVERTED",
|
|
42265
|
+
_v8Lift: 0.71,
|
|
42266
|
+
defaultOff: true
|
|
41091
42267
|
},
|
|
41092
|
-
"
|
|
41093
|
-
recall:
|
|
41094
|
-
fpRate:
|
|
41095
|
-
ratio:
|
|
41096
|
-
precision:
|
|
41097
|
-
lastCalibratedAt: "2026-
|
|
42268
|
+
"logic/math-any-density": {
|
|
42269
|
+
recall: 17e-4,
|
|
42270
|
+
fpRate: 13e-4,
|
|
42271
|
+
ratio: 464.59,
|
|
42272
|
+
precision: 0.6027,
|
|
42273
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41098
42274
|
verdict: "USEFUL",
|
|
41099
|
-
_calibrationNote: "
|
|
41100
|
-
aiSpecific: true
|
|
42275
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=496, FP=327, P=60.3%, FPR=0.13%, lift=464.59. v7 was USEFUL (TP=376, FP=247, lift=448.16). v8 was USEFUL (TP=120, FP=80).",
|
|
42276
|
+
aiSpecific: true,
|
|
42277
|
+
_v7Verdict: "USEFUL",
|
|
42278
|
+
_v7Lift: 448.16,
|
|
42279
|
+
_v7Recall: 16e-4,
|
|
42280
|
+
_v7FpRate: 13e-4,
|
|
42281
|
+
_v7Precision: 0.6035,
|
|
42282
|
+
_v8Verdict: "USEFUL",
|
|
42283
|
+
_v8Lift: 515
|
|
41101
42284
|
},
|
|
41102
|
-
"
|
|
41103
|
-
recall:
|
|
41104
|
-
fpRate:
|
|
41105
|
-
ratio:
|
|
41106
|
-
precision: 0.
|
|
41107
|
-
lastCalibratedAt: "2026-
|
|
41108
|
-
verdict: "HYGIENE",
|
|
41109
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=797, FP=175, P=82.0%, FPR=0.09%, lift=3.5. aiSpecific=False.",
|
|
41110
|
-
aiSpecific: false
|
|
41111
|
-
},
|
|
41112
|
-
"visual/arbitrary-escape": {
|
|
41113
|
-
recall: 25e-4,
|
|
41114
|
-
fpRate: 9e-4,
|
|
41115
|
-
ratio: 2.74,
|
|
41116
|
-
precision: 0.7802,
|
|
41117
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
42285
|
+
"logic/math-console-log-storm": {
|
|
42286
|
+
recall: 65e-4,
|
|
42287
|
+
fpRate: 11e-4,
|
|
42288
|
+
ratio: 794.4,
|
|
42289
|
+
precision: 0.8729,
|
|
42290
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41118
42291
|
verdict: "USEFUL",
|
|
41119
|
-
_calibrationNote: "
|
|
41120
|
-
aiSpecific: true
|
|
42292
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=1903, FP=277, P=87.3%, FPR=0.11%, lift=794.40. v7 was USEFUL (TP=1678, FP=193, lift=852.30). v8 was USEFUL (TP=225, FP=84).",
|
|
42293
|
+
aiSpecific: true,
|
|
42294
|
+
_v7Verdict: "USEFUL",
|
|
42295
|
+
_v7Lift: 852.3,
|
|
42296
|
+
_v7Recall: 71e-4,
|
|
42297
|
+
_v7FpRate: 11e-4,
|
|
42298
|
+
_v7Precision: 0.8968,
|
|
42299
|
+
_v8Verdict: "USEFUL",
|
|
42300
|
+
_v8Lift: 595.24
|
|
41121
42301
|
},
|
|
41122
|
-
"
|
|
42302
|
+
"logic/math-gini-class-usage": {
|
|
41123
42303
|
recall: 13e-4,
|
|
41124
|
-
fpRate:
|
|
41125
|
-
ratio:
|
|
41126
|
-
precision: 0.
|
|
41127
|
-
lastCalibratedAt: "2026-
|
|
41128
|
-
verdict: "OK",
|
|
41129
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. OK \u2014 TP=307, FP=138, P=69.0%, FPR=0.07%, lift=1.7. aiSpecific=True.",
|
|
41130
|
-
aiSpecific: true
|
|
41131
|
-
},
|
|
41132
|
-
"visual/radius-scale-violation": {
|
|
41133
|
-
recall: 4e-4,
|
|
41134
|
-
fpRate: 0,
|
|
41135
|
-
ratio: 24.7,
|
|
41136
|
-
precision: 0.9697,
|
|
41137
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
41138
|
-
verdict: "HYGIENE",
|
|
41139
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=96, FP=3, P=97.0%, FPR=0.00%, lift=24.7. aiSpecific=False.",
|
|
41140
|
-
aiSpecific: false
|
|
41141
|
-
},
|
|
41142
|
-
"test/fake-placeholder": {
|
|
41143
|
-
recall: 53e-4,
|
|
41144
|
-
fpRate: 19e-4,
|
|
41145
|
-
ratio: 2.82,
|
|
41146
|
-
precision: 0.7854,
|
|
41147
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
42304
|
+
fpRate: 2e-4,
|
|
42305
|
+
ratio: 4648.6,
|
|
42306
|
+
precision: 0.8852,
|
|
42307
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41148
42308
|
verdict: "USEFUL",
|
|
41149
|
-
_calibrationNote: "
|
|
41150
|
-
aiSpecific: true
|
|
41151
|
-
|
|
41152
|
-
|
|
41153
|
-
|
|
41154
|
-
|
|
41155
|
-
|
|
41156
|
-
|
|
41157
|
-
|
|
41158
|
-
verdict: "HYGIENE",
|
|
41159
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=146, FP=125, P=53.9%, FPR=0.07%, lift=0.9. aiSpecific=False.",
|
|
41160
|
-
aiSpecific: false
|
|
41161
|
-
},
|
|
41162
|
-
"perf/cls-image": {
|
|
41163
|
-
recall: 2e-4,
|
|
41164
|
-
fpRate: 3e-4,
|
|
41165
|
-
ratio: 0.8,
|
|
41166
|
-
precision: 0.5104,
|
|
41167
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
41168
|
-
verdict: "HYGIENE",
|
|
41169
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=49, FP=47, P=51.0%, FPR=0.03%, lift=0.8. aiSpecific=False.",
|
|
41170
|
-
aiSpecific: false
|
|
41171
|
-
},
|
|
41172
|
-
"layout/gap-monopoly": {
|
|
41173
|
-
recall: 4e-4,
|
|
41174
|
-
fpRate: 1e-4,
|
|
41175
|
-
ratio: 2.95,
|
|
41176
|
-
precision: 0.7928,
|
|
41177
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
41178
|
-
verdict: "HYGIENE",
|
|
41179
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=88, FP=23, P=79.3%, FPR=0.01%, lift=3.0. aiSpecific=False.",
|
|
41180
|
-
aiSpecific: false
|
|
42309
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=370, FP=48, P=88.5%, FPR=0.02%, lift=4648.60. v7 was USEFUL (TP=310, FP=47, lift=3388.64). v8 was USEFUL (TP=60, FP=1).",
|
|
42310
|
+
aiSpecific: true,
|
|
42311
|
+
_v7Verdict: "USEFUL",
|
|
42312
|
+
_v7Lift: 3388.64,
|
|
42313
|
+
_v7Recall: 13e-4,
|
|
42314
|
+
_v7FpRate: 3e-4,
|
|
42315
|
+
_v7Precision: 0.8683,
|
|
42316
|
+
_v8Verdict: "USEFUL",
|
|
42317
|
+
_v8Lift: 67541.31
|
|
41181
42318
|
},
|
|
41182
|
-
"
|
|
41183
|
-
recall: 83e-4,
|
|
41184
|
-
fpRate: 39e-4,
|
|
41185
|
-
ratio: 2.13,
|
|
41186
|
-
precision: 0.7342,
|
|
41187
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
41188
|
-
verdict: "HYGIENE",
|
|
41189
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=1981, FP=717, P=73.4%, FPR=0.39%, lift=2.1. aiSpecific=False.",
|
|
41190
|
-
aiSpecific: false
|
|
41191
|
-
},
|
|
41192
|
-
"visual/inline-style-dominance": {
|
|
41193
|
-
recall: 96e-4,
|
|
41194
|
-
fpRate: 66e-4,
|
|
41195
|
-
ratio: 1.46,
|
|
41196
|
-
precision: 0.6535,
|
|
41197
|
-
lastCalibratedAt: "2026-06-27T12:00:00Z",
|
|
41198
|
-
verdict: "HYGIENE",
|
|
41199
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=2303, FP=1221, P=65.4%, FPR=0.66%, lift=1.5. aiSpecific=False.",
|
|
41200
|
-
aiSpecific: false
|
|
41201
|
-
},
|
|
41202
|
-
"layout/spacing-grid": {
|
|
42319
|
+
"logic/math-variable-name-entropy": {
|
|
41203
42320
|
recall: 2e-4,
|
|
41204
42321
|
fpRate: 1e-4,
|
|
41205
|
-
ratio:
|
|
41206
|
-
precision: 0.
|
|
41207
|
-
lastCalibratedAt: "2026-
|
|
41208
|
-
verdict: "
|
|
41209
|
-
_calibrationNote: "
|
|
41210
|
-
aiSpecific: false
|
|
41211
|
-
|
|
41212
|
-
|
|
41213
|
-
|
|
41214
|
-
|
|
41215
|
-
|
|
41216
|
-
|
|
41217
|
-
|
|
41218
|
-
verdict: "HYGIENE",
|
|
41219
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=2, FP=3, P=40.0%, FPR=0.00%, lift=0.5. aiSpecific=False.",
|
|
41220
|
-
aiSpecific: false
|
|
42322
|
+
ratio: 4548.81,
|
|
42323
|
+
precision: 0.6316,
|
|
42324
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42325
|
+
verdict: "USEFUL",
|
|
42326
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=60, FP=35, P=63.2%, FPR=0.01%, lift=4548.81. v7 was USEFUL (TP=36, FP=26, lift=4096.07). v8 was USEFUL (TP=24, FP=9).",
|
|
42327
|
+
aiSpecific: false,
|
|
42328
|
+
_v7Verdict: "USEFUL",
|
|
42329
|
+
_v7Lift: 4096.07,
|
|
42330
|
+
_v7Recall: 2e-4,
|
|
42331
|
+
_v7FpRate: 1e-4,
|
|
42332
|
+
_v7Precision: 0.5806,
|
|
42333
|
+
_v8Verdict: "USEFUL",
|
|
42334
|
+
_v8Lift: 5548.85
|
|
41221
42335
|
},
|
|
41222
|
-
"
|
|
41223
|
-
recall:
|
|
41224
|
-
fpRate:
|
|
41225
|
-
ratio:
|
|
41226
|
-
precision: 0.
|
|
41227
|
-
lastCalibratedAt: "2026-
|
|
42336
|
+
"logic/optimistic-no-rollback": {
|
|
42337
|
+
recall: 12e-4,
|
|
42338
|
+
fpRate: 2e-4,
|
|
42339
|
+
ratio: 3523.57,
|
|
42340
|
+
precision: 0.8527,
|
|
42341
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41228
42342
|
verdict: "USEFUL",
|
|
41229
|
-
_calibrationNote: "
|
|
41230
|
-
aiSpecific: true
|
|
42343
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=353, FP=61, P=85.3%, FPR=0.02%, lift=3523.57. v7 was USEFUL (TP=281, FP=60, lift=2519.02). v8 was USEFUL (TP=72, FP=1).",
|
|
42344
|
+
aiSpecific: true,
|
|
42345
|
+
_v7Verdict: "USEFUL",
|
|
42346
|
+
_v7Lift: 2519.02,
|
|
42347
|
+
_v7Recall: 12e-4,
|
|
42348
|
+
_v7FpRate: 3e-4,
|
|
42349
|
+
_v7Precision: 0.824,
|
|
42350
|
+
_v8Verdict: "USEFUL",
|
|
42351
|
+
_v8Lift: 67726.36
|
|
41231
42352
|
},
|
|
41232
|
-
"logic/
|
|
42353
|
+
"logic/qwik-hook-leak": {
|
|
41233
42354
|
recall: 0,
|
|
41234
42355
|
fpRate: 0,
|
|
41235
42356
|
ratio: 0,
|
|
41236
42357
|
precision: 0,
|
|
41237
|
-
lastCalibratedAt: "2026-
|
|
42358
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41238
42359
|
verdict: "DORMANT",
|
|
41239
|
-
|
|
41240
|
-
|
|
41241
|
-
|
|
41242
|
-
|
|
41243
|
-
|
|
41244
|
-
|
|
41245
|
-
|
|
41246
|
-
|
|
41247
|
-
|
|
41248
|
-
|
|
41249
|
-
verdict: "HYGIENE",
|
|
41250
|
-
_calibrationNote: "v7 corpus re-calibration (2026-06-27, min-date=2025-01-01): 184488 neg + 239054 pos. HYGIENE \u2014 TP=2924, FP=2430, P=54.6%, FPR=1.32%, lift=0.9. aiSpecific=False.",
|
|
41251
|
-
aiSpecific: false
|
|
42360
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
42361
|
+
aiSpecific: true,
|
|
42362
|
+
_v7Verdict: "DORMANT",
|
|
42363
|
+
_v7Lift: 0,
|
|
42364
|
+
_v7Recall: 0,
|
|
42365
|
+
_v7FpRate: 0,
|
|
42366
|
+
_v7Precision: 0,
|
|
42367
|
+
_v8Verdict: "DORMANT",
|
|
42368
|
+
_v8Lift: 1,
|
|
42369
|
+
defaultOff: true
|
|
41252
42370
|
},
|
|
41253
|
-
"logic/
|
|
41254
|
-
recall:
|
|
41255
|
-
fpRate:
|
|
41256
|
-
ratio:
|
|
41257
|
-
precision: 0.
|
|
41258
|
-
lastCalibratedAt: "2026-
|
|
41259
|
-
verdict: "
|
|
41260
|
-
_calibrationNote: "
|
|
41261
|
-
aiSpecific:
|
|
42371
|
+
"logic/reactive-hook-soup": {
|
|
42372
|
+
recall: 41e-4,
|
|
42373
|
+
fpRate: 6e-4,
|
|
42374
|
+
ratio: 1370.15,
|
|
42375
|
+
precision: 0.8805,
|
|
42376
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42377
|
+
verdict: "USEFUL",
|
|
42378
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=1194, FP=162, P=88.1%, FPR=0.06%, lift=1370.15. v7 was USEFUL (TP=901, FP=162, lift=959.64). v8 was USEFUL (TP=293, FP=0).",
|
|
42379
|
+
aiSpecific: true,
|
|
42380
|
+
_v7Verdict: "USEFUL",
|
|
42381
|
+
_v7Lift: 959.64,
|
|
42382
|
+
_v7Recall: 38e-4,
|
|
42383
|
+
_v7FpRate: 9e-4,
|
|
42384
|
+
_v7Precision: 0.8476,
|
|
42385
|
+
_v8Verdict: "USEFUL",
|
|
42386
|
+
_v8Lift: 99999
|
|
41262
42387
|
},
|
|
41263
42388
|
"logic/zipf-slope-anomaly": {
|
|
41264
|
-
recall: 0.
|
|
41265
|
-
fpRate:
|
|
41266
|
-
ratio:
|
|
41267
|
-
precision: 0.
|
|
41268
|
-
lastCalibratedAt: "2026-
|
|
41269
|
-
verdict: "
|
|
41270
|
-
_calibrationNote: "
|
|
41271
|
-
aiSpecific: false
|
|
42389
|
+
recall: 0.0168,
|
|
42390
|
+
fpRate: 0.0111,
|
|
42391
|
+
ratio: 57.13,
|
|
42392
|
+
precision: 0.6369,
|
|
42393
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42394
|
+
verdict: "USEFUL",
|
|
42395
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=4928, FP=2810, P=63.7%, FPR=1.11%, lift=57.13. v7 was USEFUL (TP=3718, FP=1606, lift=79.75). v8 was USEFUL (TP=1210, FP=1204).",
|
|
42396
|
+
aiSpecific: false,
|
|
42397
|
+
_v7Verdict: "USEFUL",
|
|
42398
|
+
_v7Lift: 79.75,
|
|
42399
|
+
_v7Recall: 0.0157,
|
|
42400
|
+
_v7FpRate: 88e-4,
|
|
42401
|
+
_v7Precision: 0.6983,
|
|
42402
|
+
_v8Verdict: "USEFUL",
|
|
42403
|
+
_v8Lift: 28.59
|
|
41272
42404
|
},
|
|
41273
|
-
"
|
|
41274
|
-
recall:
|
|
42405
|
+
"logic/zombie-state": {
|
|
42406
|
+
recall: 1e-4,
|
|
41275
42407
|
fpRate: 0,
|
|
41276
|
-
ratio:
|
|
41277
|
-
precision: 0.
|
|
41278
|
-
lastCalibratedAt: "2026-
|
|
41279
|
-
verdict: "
|
|
41280
|
-
_calibrationNote: "
|
|
41281
|
-
aiSpecific: true
|
|
42408
|
+
ratio: 119891.71,
|
|
42409
|
+
precision: 0.9512,
|
|
42410
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42411
|
+
verdict: "USEFUL",
|
|
42412
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=39, FP=2, P=95.1%, FPR=0.00%, lift=119891.71. v7 was USEFUL (TP=24, FP=2, lift=84652.15). v8 was USEFUL (TP=15, FP=0).",
|
|
42413
|
+
aiSpecific: true,
|
|
42414
|
+
_v7Verdict: "USEFUL",
|
|
42415
|
+
_v7Lift: 84652.15,
|
|
42416
|
+
_v7Recall: 1e-4,
|
|
42417
|
+
_v7FpRate: 0,
|
|
42418
|
+
_v7Precision: 0.9231,
|
|
42419
|
+
_v8Verdict: "USEFUL",
|
|
42420
|
+
_v8Lift: 99999
|
|
41282
42421
|
},
|
|
41283
|
-
"
|
|
41284
|
-
recall:
|
|
41285
|
-
fpRate:
|
|
41286
|
-
ratio:
|
|
41287
|
-
precision: 0.
|
|
41288
|
-
lastCalibratedAt: "2026-
|
|
41289
|
-
verdict: "
|
|
41290
|
-
_calibrationNote: "
|
|
41291
|
-
aiSpecific:
|
|
42422
|
+
"perf/cls-image": {
|
|
42423
|
+
recall: 2e-4,
|
|
42424
|
+
fpRate: 2e-4,
|
|
42425
|
+
ratio: 2895.78,
|
|
42426
|
+
precision: 0.5514,
|
|
42427
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42428
|
+
verdict: "USEFUL",
|
|
42429
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=59, FP=48, P=55.1%, FPR=0.02%, lift=2895.78. v7 was USEFUL (TP=49, FP=47, lift=1991.85). v8 was USEFUL (TP=10, FP=1).",
|
|
42430
|
+
aiSpecific: false,
|
|
42431
|
+
_v7Verdict: "USEFUL",
|
|
42432
|
+
_v7Lift: 1991.85,
|
|
42433
|
+
_v7Recall: 2e-4,
|
|
42434
|
+
_v7FpRate: 3e-4,
|
|
42435
|
+
_v7Precision: 0.5104,
|
|
42436
|
+
_v8Verdict: "USEFUL",
|
|
42437
|
+
_v8Lift: 62424.55
|
|
41292
42438
|
},
|
|
41293
|
-
"
|
|
41294
|
-
recall: 0.
|
|
41295
|
-
fpRate:
|
|
41296
|
-
ratio:
|
|
41297
|
-
precision: 0.
|
|
41298
|
-
lastCalibratedAt: "2026-
|
|
41299
|
-
verdict: "
|
|
41300
|
-
_calibrationNote: "
|
|
41301
|
-
|
|
41302
|
-
|
|
42439
|
+
"perf/css-bloat": {
|
|
42440
|
+
recall: 0.0126,
|
|
42441
|
+
fpRate: 24e-4,
|
|
42442
|
+
ratio: 365.63,
|
|
42443
|
+
precision: 0.8616,
|
|
42444
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42445
|
+
verdict: "USEFUL",
|
|
42446
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=3697, FP=594, P=86.2%, FPR=0.24%, lift=365.63. v7 was USEFUL (TP=2790, FP=591, lift=256.10). v8 was USEFUL (TP=907, FP=3).",
|
|
42447
|
+
aiSpecific: false,
|
|
42448
|
+
_v7Verdict: "USEFUL",
|
|
42449
|
+
_v7Lift: 256.1,
|
|
42450
|
+
_v7Recall: 0.0118,
|
|
42451
|
+
_v7FpRate: 32e-4,
|
|
42452
|
+
_v7Precision: 0.8252,
|
|
42453
|
+
_v8Verdict: "USEFUL",
|
|
42454
|
+
_v8Lift: 22813.54
|
|
41303
42455
|
},
|
|
41304
|
-
"
|
|
42456
|
+
"perf/halstead-anomaly": {
|
|
41305
42457
|
recall: 0,
|
|
41306
42458
|
fpRate: 0,
|
|
41307
|
-
ratio:
|
|
41308
|
-
precision: 0.
|
|
41309
|
-
lastCalibratedAt: "2026-
|
|
42459
|
+
ratio: 75624,
|
|
42460
|
+
precision: 0.6,
|
|
42461
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41310
42462
|
verdict: "USEFUL",
|
|
41311
|
-
_calibrationNote: "
|
|
41312
|
-
aiSpecific: true
|
|
42463
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=3, FP=2, P=60.0%, FPR=0.00%, lift=75624.00. v7 was USEFUL (TP=3, FP=1, lift=137559.75). v8 was INVERTED (TP=0, FP=1).",
|
|
42464
|
+
aiSpecific: true,
|
|
42465
|
+
_v7Verdict: "USEFUL",
|
|
42466
|
+
_v7Lift: 137559.75,
|
|
42467
|
+
_v7Recall: 0,
|
|
42468
|
+
_v7FpRate: 0,
|
|
42469
|
+
_v7Precision: 0.75,
|
|
42470
|
+
_v8Verdict: "INVERTED",
|
|
42471
|
+
_v8Lift: 0
|
|
41313
42472
|
},
|
|
41314
|
-
"
|
|
41315
|
-
recall:
|
|
41316
|
-
fpRate:
|
|
41317
|
-
ratio:
|
|
41318
|
-
precision: 0.
|
|
41319
|
-
lastCalibratedAt: "2026-
|
|
41320
|
-
verdict: "
|
|
41321
|
-
_calibrationNote: "
|
|
41322
|
-
|
|
41323
|
-
|
|
42473
|
+
"product/terminology-drift": {
|
|
42474
|
+
recall: 91e-4,
|
|
42475
|
+
fpRate: 21e-4,
|
|
42476
|
+
ratio: 397.75,
|
|
42477
|
+
precision: 0.8347,
|
|
42478
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42479
|
+
verdict: "USEFUL",
|
|
42480
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=2671, FP=529, P=83.5%, FPR=0.21%, lift=397.75. v7 was USEFUL (TP=2028, FP=521, lift=280.09). v8 was USEFUL (TP=643, FP=8).",
|
|
42481
|
+
aiSpecific: false,
|
|
42482
|
+
_v7Verdict: "USEFUL",
|
|
42483
|
+
_v7Lift: 280.09,
|
|
42484
|
+
_v7Recall: 86e-4,
|
|
42485
|
+
_v7FpRate: 28e-4,
|
|
42486
|
+
_v7Precision: 0.7956,
|
|
42487
|
+
_v8Verdict: "USEFUL",
|
|
42488
|
+
_v8Lift: 8477.9
|
|
41324
42489
|
},
|
|
41325
|
-
"
|
|
41326
|
-
recall:
|
|
41327
|
-
fpRate:
|
|
41328
|
-
ratio:
|
|
41329
|
-
precision: 0.
|
|
41330
|
-
lastCalibratedAt: "2026-
|
|
41331
|
-
verdict: "
|
|
41332
|
-
_calibrationNote: "
|
|
41333
|
-
|
|
41334
|
-
|
|
42490
|
+
"product/ux-pattern-fragmentation": {
|
|
42491
|
+
recall: 1e-4,
|
|
42492
|
+
fpRate: 0,
|
|
42493
|
+
ratio: 22864.4,
|
|
42494
|
+
precision: 0.8163,
|
|
42495
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42496
|
+
verdict: "USEFUL",
|
|
42497
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=40, FP=9, P=81.6%, FPR=0.00%, lift=22864.40. v7 was USEFUL (TP=32, FP=8, lift=18341.30). v8 was USEFUL (TP=8, FP=1).",
|
|
42498
|
+
aiSpecific: true,
|
|
42499
|
+
_v7Verdict: "USEFUL",
|
|
42500
|
+
_v7Lift: 18341.3,
|
|
42501
|
+
_v7Recall: 1e-4,
|
|
42502
|
+
_v7FpRate: 0,
|
|
42503
|
+
_v7Precision: 0.8,
|
|
42504
|
+
_v8Verdict: "USEFUL",
|
|
42505
|
+
_v8Lift: 61037.33
|
|
41335
42506
|
},
|
|
41336
|
-
"
|
|
41337
|
-
recall:
|
|
42507
|
+
"rust/stringly-typed": {
|
|
42508
|
+
recall: 2e-4,
|
|
41338
42509
|
fpRate: 0,
|
|
41339
|
-
ratio:
|
|
41340
|
-
precision: 0.
|
|
41341
|
-
lastCalibratedAt: "2026-
|
|
41342
|
-
verdict: "
|
|
41343
|
-
_calibrationNote: "
|
|
41344
|
-
|
|
41345
|
-
|
|
42510
|
+
ratio: 24735.12,
|
|
42511
|
+
precision: 0.8831,
|
|
42512
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42513
|
+
verdict: "USEFUL",
|
|
42514
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=68, FP=9, P=88.3%, FPR=0.00%, lift=24735.12. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was USEFUL (TP=68, FP=9).",
|
|
42515
|
+
aiSpecific: true,
|
|
42516
|
+
_v7Verdict: "DORMANT",
|
|
42517
|
+
_v7Lift: 1,
|
|
42518
|
+
_v7Recall: 0,
|
|
42519
|
+
_v7FpRate: 0,
|
|
42520
|
+
_v7Precision: 0,
|
|
42521
|
+
_v8Verdict: "USEFUL",
|
|
42522
|
+
_v8Lift: 6737.89
|
|
41346
42523
|
},
|
|
41347
|
-
"
|
|
42524
|
+
"rust/todo-macro": {
|
|
42525
|
+
recall: 1e-4,
|
|
42526
|
+
fpRate: 7e-4,
|
|
42527
|
+
ratio: 210.08,
|
|
42528
|
+
precision: 0.1392,
|
|
42529
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42530
|
+
verdict: "OK",
|
|
42531
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=27, FP=167, P=13.9%, FPR=0.07%, lift=210.08. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was OK (TP=27, FP=167).",
|
|
42532
|
+
aiSpecific: true,
|
|
42533
|
+
_v7Verdict: "DORMANT",
|
|
42534
|
+
_v7Lift: 1,
|
|
42535
|
+
_v7Recall: 0,
|
|
42536
|
+
_v7FpRate: 0,
|
|
42537
|
+
_v7Precision: 0,
|
|
42538
|
+
_v8Verdict: "OK",
|
|
42539
|
+
_v8Lift: 57.23
|
|
42540
|
+
},
|
|
42541
|
+
"rust/unused-pub-fn": {
|
|
41348
42542
|
recall: 0,
|
|
41349
42543
|
fpRate: 0,
|
|
41350
|
-
ratio:
|
|
41351
|
-
precision: 0,
|
|
41352
|
-
lastCalibratedAt: "2026-
|
|
42544
|
+
ratio: 10803.43,
|
|
42545
|
+
precision: 0.3,
|
|
42546
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41353
42547
|
verdict: "OK",
|
|
41354
|
-
_calibrationNote: "v0.
|
|
41355
|
-
aiSpecific: true
|
|
42548
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=3, FP=7, P=30.0%, FPR=0.00%, lift=10803.43. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was OK (TP=3, FP=7).",
|
|
42549
|
+
aiSpecific: true,
|
|
42550
|
+
_v7Verdict: "DORMANT",
|
|
42551
|
+
_v7Lift: 1,
|
|
42552
|
+
_v7Recall: 0,
|
|
42553
|
+
_v7FpRate: 0,
|
|
42554
|
+
_v7Precision: 0,
|
|
42555
|
+
_v8Verdict: "OK",
|
|
42556
|
+
_v8Lift: 2942.87
|
|
41356
42557
|
},
|
|
41357
|
-
"
|
|
41358
|
-
recall:
|
|
41359
|
-
fpRate:
|
|
41360
|
-
ratio:
|
|
41361
|
-
precision: 0.
|
|
41362
|
-
lastCalibratedAt: "2026-
|
|
42558
|
+
"rust/unwrap-in-production": {
|
|
42559
|
+
recall: 8e-3,
|
|
42560
|
+
fpRate: 77e-4,
|
|
42561
|
+
ratio: 70.81,
|
|
42562
|
+
precision: 0.5475,
|
|
42563
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41363
42564
|
verdict: "USEFUL",
|
|
41364
|
-
_calibrationNote: "
|
|
41365
|
-
aiSpecific: true
|
|
42565
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=2358, FP=1949, P=54.7%, FPR=0.77%, lift=70.81. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was USEFUL (TP=2358, FP=1949).",
|
|
42566
|
+
aiSpecific: true,
|
|
42567
|
+
_v7Verdict: "DORMANT",
|
|
42568
|
+
_v7Lift: 1,
|
|
42569
|
+
_v7Recall: 0,
|
|
42570
|
+
_v7FpRate: 0,
|
|
42571
|
+
_v7Precision: 0,
|
|
42572
|
+
_v8Verdict: "USEFUL",
|
|
42573
|
+
_v8Lift: 19.29
|
|
41366
42574
|
},
|
|
41367
|
-
"
|
|
41368
|
-
recall:
|
|
41369
|
-
fpRate:
|
|
41370
|
-
ratio:
|
|
41371
|
-
precision: 0.
|
|
41372
|
-
lastCalibratedAt: "2026-
|
|
42575
|
+
"security/dangerous-cors": {
|
|
42576
|
+
recall: 5e-4,
|
|
42577
|
+
fpRate: 4e-4,
|
|
42578
|
+
ratio: 1721.87,
|
|
42579
|
+
precision: 0.6079,
|
|
42580
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41373
42581
|
verdict: "USEFUL",
|
|
41374
|
-
_calibrationNote: "
|
|
41375
|
-
aiSpecific: true
|
|
42582
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=138, FP=89, P=60.8%, FPR=0.04%, lift=1721.87. v7 was USEFUL (TP=114, FP=84, lift=1257.16). v8 was USEFUL (TP=24, FP=5).",
|
|
42583
|
+
aiSpecific: true,
|
|
42584
|
+
_v7Verdict: "USEFUL",
|
|
42585
|
+
_v7Lift: 1257.16,
|
|
42586
|
+
_v7Recall: 5e-4,
|
|
42587
|
+
_v7FpRate: 5e-4,
|
|
42588
|
+
_v7Precision: 0.5758,
|
|
42589
|
+
_v8Verdict: "USEFUL",
|
|
42590
|
+
_v8Lift: 11365.57
|
|
41376
42591
|
},
|
|
41377
|
-
"
|
|
41378
|
-
recall:
|
|
41379
|
-
fpRate:
|
|
41380
|
-
ratio:
|
|
41381
|
-
precision: 0.
|
|
41382
|
-
lastCalibratedAt: "2026-
|
|
42592
|
+
"security/eval": {
|
|
42593
|
+
recall: 1e-4,
|
|
42594
|
+
fpRate: 2e-4,
|
|
42595
|
+
ratio: 1929.18,
|
|
42596
|
+
precision: 0.4286,
|
|
42597
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42598
|
+
verdict: "OK",
|
|
42599
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=42, FP=56, P=42.9%, FPR=0.02%, lift=1929.18. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was OK (TP=42, FP=56).",
|
|
42600
|
+
aiSpecific: false,
|
|
42601
|
+
_v7Verdict: "DORMANT",
|
|
42602
|
+
_v7Lift: 1,
|
|
42603
|
+
_v7Recall: 0,
|
|
42604
|
+
_v7FpRate: 0,
|
|
42605
|
+
_v7Precision: 0,
|
|
42606
|
+
_v8Verdict: "OK",
|
|
42607
|
+
_v8Lift: 525.51
|
|
42608
|
+
},
|
|
42609
|
+
"security/exposed-env-var": {
|
|
42610
|
+
recall: 6e-4,
|
|
42611
|
+
fpRate: 5e-4,
|
|
42612
|
+
ratio: 1055.81,
|
|
42613
|
+
precision: 0.5696,
|
|
42614
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41383
42615
|
verdict: "USEFUL",
|
|
41384
|
-
_calibrationNote: "
|
|
41385
|
-
aiSpecific:
|
|
42616
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=180, FP=136, P=57.0%, FPR=0.05%, lift=1055.81. v7 was USEFUL (TP=146, FP=125, lift=790.50). v8 was USEFUL (TP=34, FP=11).",
|
|
42617
|
+
aiSpecific: false,
|
|
42618
|
+
_v7Verdict: "USEFUL",
|
|
42619
|
+
_v7Lift: 790.5,
|
|
42620
|
+
_v7Recall: 6e-4,
|
|
42621
|
+
_v7FpRate: 7e-4,
|
|
42622
|
+
_v7Precision: 0.5387,
|
|
42623
|
+
_v8Verdict: "USEFUL",
|
|
42624
|
+
_v8Lift: 4716.52
|
|
41386
42625
|
},
|
|
41387
|
-
"
|
|
41388
|
-
recall:
|
|
42626
|
+
"security/fail-open-auth": {
|
|
42627
|
+
recall: 0,
|
|
41389
42628
|
fpRate: 0,
|
|
41390
|
-
ratio:
|
|
41391
|
-
precision:
|
|
41392
|
-
lastCalibratedAt: "2026-
|
|
42629
|
+
ratio: 99999,
|
|
42630
|
+
precision: 1,
|
|
42631
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41393
42632
|
verdict: "USEFUL",
|
|
41394
|
-
_calibrationNote: "
|
|
41395
|
-
aiSpecific: true
|
|
42633
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=1, FP=0, P=100.0%, FPR=0.00%, lift=inf. v7 was USEFUL (TP=1, FP=0, lift=inf). v8 was DORMANT (TP=0, FP=0).",
|
|
42634
|
+
aiSpecific: true,
|
|
42635
|
+
_v7Verdict: "USEFUL",
|
|
42636
|
+
_v7Lift: 99999,
|
|
42637
|
+
_v7Recall: 0,
|
|
42638
|
+
_v7FpRate: 0,
|
|
42639
|
+
_v7Precision: 1,
|
|
42640
|
+
_v8Verdict: "DORMANT",
|
|
42641
|
+
_v8Lift: 1
|
|
41396
42642
|
},
|
|
41397
|
-
"
|
|
41398
|
-
recall:
|
|
42643
|
+
"security/hardcoded-secret": {
|
|
42644
|
+
recall: 14e-4,
|
|
42645
|
+
fpRate: 6e-4,
|
|
42646
|
+
ratio: 1269.08,
|
|
42647
|
+
precision: 0.735,
|
|
42648
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42649
|
+
verdict: "USEFUL",
|
|
42650
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=405, FP=146, P=73.5%, FPR=0.06%, lift=1269.08. v7 was USEFUL (TP=307, FP=138, lift=916.92). v8 was USEFUL (TP=98, FP=8).",
|
|
42651
|
+
aiSpecific: true,
|
|
42652
|
+
_v7Verdict: "USEFUL",
|
|
42653
|
+
_v7Lift: 916.92,
|
|
42654
|
+
_v7Recall: 13e-4,
|
|
42655
|
+
_v7FpRate: 8e-4,
|
|
42656
|
+
_v7Precision: 0.6899,
|
|
42657
|
+
_v8Verdict: "USEFUL",
|
|
42658
|
+
_v8Lift: 7935.57
|
|
42659
|
+
},
|
|
42660
|
+
"security/localstorage-token": {
|
|
42661
|
+
recall: 1e-4,
|
|
41399
42662
|
fpRate: 0,
|
|
41400
|
-
ratio:
|
|
41401
|
-
precision:
|
|
41402
|
-
lastCalibratedAt: "2026-
|
|
42663
|
+
ratio: 99999,
|
|
42664
|
+
precision: 1,
|
|
42665
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41403
42666
|
verdict: "USEFUL",
|
|
41404
|
-
_calibrationNote: "
|
|
41405
|
-
aiSpecific:
|
|
42667
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=17, FP=0, P=100.0%, FPR=0.00%, lift=inf. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was USEFUL (TP=17, FP=0).",
|
|
42668
|
+
aiSpecific: false,
|
|
42669
|
+
_v7Verdict: "DORMANT",
|
|
42670
|
+
_v7Lift: 1,
|
|
42671
|
+
_v7Recall: 0,
|
|
42672
|
+
_v7FpRate: 0,
|
|
42673
|
+
_v7Precision: 0,
|
|
42674
|
+
_v8Verdict: "USEFUL",
|
|
42675
|
+
_v8Lift: 99999
|
|
41406
42676
|
},
|
|
41407
|
-
"
|
|
41408
|
-
recall:
|
|
41409
|
-
fpRate:
|
|
41410
|
-
ratio:
|
|
41411
|
-
precision:
|
|
41412
|
-
lastCalibratedAt: "2026-
|
|
42677
|
+
"security/missing-auth-check": {
|
|
42678
|
+
recall: 5e-4,
|
|
42679
|
+
fpRate: 0,
|
|
42680
|
+
ratio: 99999,
|
|
42681
|
+
precision: 1,
|
|
42682
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41413
42683
|
verdict: "USEFUL",
|
|
41414
|
-
_calibrationNote: "
|
|
41415
|
-
aiSpecific:
|
|
42684
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=157, FP=0, P=100.0%, FPR=0.00%, lift=inf. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was USEFUL (TP=157, FP=0).",
|
|
42685
|
+
aiSpecific: false,
|
|
42686
|
+
_v7Verdict: "DORMANT",
|
|
42687
|
+
_v7Lift: 1,
|
|
42688
|
+
_v7Recall: 0,
|
|
42689
|
+
_v7FpRate: 0,
|
|
42690
|
+
_v7Precision: 0,
|
|
42691
|
+
_v8Verdict: "USEFUL",
|
|
42692
|
+
_v8Lift: 99999
|
|
41416
42693
|
},
|
|
41417
|
-
"
|
|
41418
|
-
recall:
|
|
41419
|
-
fpRate:
|
|
41420
|
-
ratio:
|
|
41421
|
-
precision: 0.
|
|
41422
|
-
lastCalibratedAt: "2026-
|
|
42694
|
+
"security/public-admin-route": {
|
|
42695
|
+
recall: 38e-4,
|
|
42696
|
+
fpRate: 38e-4,
|
|
42697
|
+
ratio: 142.2,
|
|
42698
|
+
precision: 0.5376,
|
|
42699
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41423
42700
|
verdict: "USEFUL",
|
|
41424
|
-
_calibrationNote: "
|
|
41425
|
-
aiSpecific:
|
|
42701
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=1108, FP=953, P=53.8%, FPR=0.38%, lift=142.20. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was USEFUL (TP=1108, FP=953).",
|
|
42702
|
+
aiSpecific: false,
|
|
42703
|
+
_v7Verdict: "DORMANT",
|
|
42704
|
+
_v7Lift: 1,
|
|
42705
|
+
_v7Recall: 0,
|
|
42706
|
+
_v7FpRate: 0,
|
|
42707
|
+
_v7Precision: 0,
|
|
42708
|
+
_v8Verdict: "USEFUL",
|
|
42709
|
+
_v8Lift: 38.74
|
|
41426
42710
|
},
|
|
41427
|
-
"
|
|
41428
|
-
recall:
|
|
41429
|
-
fpRate:
|
|
41430
|
-
ratio:
|
|
41431
|
-
precision: 0.
|
|
41432
|
-
lastCalibratedAt: "2026-
|
|
42711
|
+
"security/sql-construction": {
|
|
42712
|
+
recall: 32e-4,
|
|
42713
|
+
fpRate: 15e-4,
|
|
42714
|
+
ratio: 485.42,
|
|
42715
|
+
precision: 0.7183,
|
|
42716
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41433
42717
|
verdict: "USEFUL",
|
|
41434
|
-
_calibrationNote: "
|
|
41435
|
-
aiSpecific: true
|
|
42718
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=951, FP=373, P=71.8%, FPR=0.15%, lift=485.42. v7 was USEFUL (TP=710, FP=336, lift=370.52). v8 was USEFUL (TP=241, FP=37).",
|
|
42719
|
+
aiSpecific: true,
|
|
42720
|
+
_v7Verdict: "USEFUL",
|
|
42721
|
+
_v7Lift: 370.52,
|
|
42722
|
+
_v7Recall: 3e-3,
|
|
42723
|
+
_v7FpRate: 18e-4,
|
|
42724
|
+
_v7Precision: 0.6788,
|
|
42725
|
+
_v8Verdict: "USEFUL",
|
|
42726
|
+
_v8Lift: 1608.86
|
|
41436
42727
|
},
|
|
41437
|
-
"
|
|
41438
|
-
recall:
|
|
42728
|
+
"security/target-blank-no-noopener": {
|
|
42729
|
+
recall: 4e-4,
|
|
41439
42730
|
fpRate: 0,
|
|
41440
|
-
ratio:
|
|
41441
|
-
precision: 0,
|
|
41442
|
-
lastCalibratedAt: "2026-
|
|
41443
|
-
verdict: "
|
|
41444
|
-
|
|
41445
|
-
|
|
41446
|
-
|
|
42731
|
+
ratio: 26141.63,
|
|
42732
|
+
precision: 0.9333,
|
|
42733
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42734
|
+
verdict: "USEFUL",
|
|
42735
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=126, FP=9, P=93.3%, FPR=0.00%, lift=26141.63. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was USEFUL (TP=126, FP=9).",
|
|
42736
|
+
aiSpecific: false,
|
|
42737
|
+
_v7Verdict: "DORMANT",
|
|
42738
|
+
_v7Lift: 1,
|
|
42739
|
+
_v7Recall: 0,
|
|
42740
|
+
_v7FpRate: 0,
|
|
42741
|
+
_v7Precision: 0,
|
|
42742
|
+
_v8Verdict: "USEFUL",
|
|
42743
|
+
_v8Lift: 7121.02
|
|
41447
42744
|
},
|
|
41448
|
-
"
|
|
41449
|
-
recall:
|
|
41450
|
-
fpRate:
|
|
41451
|
-
ratio:
|
|
41452
|
-
precision: 0,
|
|
41453
|
-
lastCalibratedAt: "2026-
|
|
41454
|
-
verdict: "
|
|
41455
|
-
|
|
41456
|
-
|
|
41457
|
-
|
|
42745
|
+
"security/unsafe-html-render": {
|
|
42746
|
+
recall: 13e-4,
|
|
42747
|
+
fpRate: 11e-4,
|
|
42748
|
+
ratio: 513.12,
|
|
42749
|
+
precision: 0.574,
|
|
42750
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42751
|
+
verdict: "USEFUL",
|
|
42752
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=380, FP=282, P=57.4%, FPR=0.11%, lift=513.12. v7 was USEFUL (TP=312, FP=160, lift=757.74). v8 was OK (TP=68, FP=122).",
|
|
42753
|
+
aiSpecific: false,
|
|
42754
|
+
_v7Verdict: "USEFUL",
|
|
42755
|
+
_v7Lift: 757.74,
|
|
42756
|
+
_v7Recall: 13e-4,
|
|
42757
|
+
_v7FpRate: 9e-4,
|
|
42758
|
+
_v7Precision: 0.661,
|
|
42759
|
+
_v8Verdict: "OK",
|
|
42760
|
+
_v8Lift: 201.44
|
|
41458
42761
|
},
|
|
41459
|
-
"
|
|
41460
|
-
recall:
|
|
42762
|
+
"test/duplicate-setup": {
|
|
42763
|
+
recall: 1e-4,
|
|
41461
42764
|
fpRate: 0,
|
|
41462
|
-
ratio:
|
|
41463
|
-
precision: 0,
|
|
41464
|
-
lastCalibratedAt: "2026-
|
|
41465
|
-
verdict: "
|
|
41466
|
-
|
|
41467
|
-
|
|
41468
|
-
|
|
42765
|
+
ratio: 51016.19,
|
|
42766
|
+
precision: 0.8095,
|
|
42767
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42768
|
+
verdict: "USEFUL",
|
|
42769
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=17, FP=4, P=81.0%, FPR=0.00%, lift=51016.19. v7 was USEFUL (TP=14, FP=3, lift=50348.67). v8 was USEFUL (TP=3, FP=1).",
|
|
42770
|
+
aiSpecific: true,
|
|
42771
|
+
_v7Verdict: "USEFUL",
|
|
42772
|
+
_v7Lift: 50348.67,
|
|
42773
|
+
_v7Recall: 1e-4,
|
|
42774
|
+
_v7FpRate: 0,
|
|
42775
|
+
_v7Precision: 0.8235,
|
|
42776
|
+
_v8Verdict: "USEFUL",
|
|
42777
|
+
_v8Lift: 51500.25
|
|
41469
42778
|
},
|
|
41470
|
-
"
|
|
41471
|
-
recall:
|
|
41472
|
-
fpRate:
|
|
41473
|
-
ratio:
|
|
41474
|
-
precision: 0,
|
|
41475
|
-
lastCalibratedAt: "2026-
|
|
41476
|
-
verdict: "
|
|
41477
|
-
|
|
41478
|
-
|
|
41479
|
-
|
|
42779
|
+
"test/fake-placeholder": {
|
|
42780
|
+
recall: 51e-4,
|
|
42781
|
+
fpRate: 15e-4,
|
|
42782
|
+
ratio: 547.47,
|
|
42783
|
+
precision: 0.8014,
|
|
42784
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42785
|
+
verdict: "USEFUL",
|
|
42786
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=1489, FP=369, P=80.1%, FPR=0.15%, lift=547.47. v7 was USEFUL (TP=1259, FP=344, lift=418.76). v8 was USEFUL (TP=230, FP=25).",
|
|
42787
|
+
aiSpecific: true,
|
|
42788
|
+
_v7Verdict: "USEFUL",
|
|
42789
|
+
_v7Lift: 418.76,
|
|
42790
|
+
_v7Recall: 53e-4,
|
|
42791
|
+
_v7FpRate: 19e-4,
|
|
42792
|
+
_v7Precision: 0.7854,
|
|
42793
|
+
_v8Verdict: "USEFUL",
|
|
42794
|
+
_v8Lift: 2477.4
|
|
41480
42795
|
},
|
|
41481
|
-
"
|
|
42796
|
+
"test/missing-edge-case": {
|
|
41482
42797
|
recall: 0,
|
|
41483
42798
|
fpRate: 0,
|
|
41484
42799
|
ratio: 0,
|
|
41485
42800
|
precision: 0,
|
|
41486
|
-
lastCalibratedAt: "2026-
|
|
42801
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41487
42802
|
verdict: "DORMANT",
|
|
41488
|
-
|
|
41489
|
-
|
|
41490
|
-
|
|
42803
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
42804
|
+
aiSpecific: true,
|
|
42805
|
+
_v7Verdict: "DORMANT",
|
|
42806
|
+
_v7Lift: 0,
|
|
42807
|
+
_v7Recall: 0,
|
|
42808
|
+
_v7FpRate: 0,
|
|
42809
|
+
_v7Precision: 0,
|
|
42810
|
+
_v8Verdict: "DORMANT",
|
|
42811
|
+
_v8Lift: 1,
|
|
42812
|
+
defaultOff: true
|
|
41491
42813
|
},
|
|
41492
|
-
"
|
|
41493
|
-
recall: 0,
|
|
41494
|
-
fpRate:
|
|
41495
|
-
ratio:
|
|
41496
|
-
precision: 0,
|
|
41497
|
-
lastCalibratedAt: "2026-
|
|
41498
|
-
verdict: "
|
|
41499
|
-
|
|
41500
|
-
|
|
41501
|
-
|
|
42814
|
+
"test/weak-assertion": {
|
|
42815
|
+
recall: 0.0417,
|
|
42816
|
+
fpRate: 67e-4,
|
|
42817
|
+
ratio: 131.62,
|
|
42818
|
+
precision: 0.8793,
|
|
42819
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42820
|
+
verdict: "USEFUL",
|
|
42821
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=12263, FP=1684, P=87.9%, FPR=0.67%, lift=131.62. v7 was USEFUL (TP=9906, FP=1583, lift=99.90). v8 was USEFUL (TP=2357, FP=101).",
|
|
42822
|
+
aiSpecific: true,
|
|
42823
|
+
_v7Verdict: "USEFUL",
|
|
42824
|
+
_v7Lift: 99.9,
|
|
42825
|
+
_v7Recall: 0.0418,
|
|
42826
|
+
_v7FpRate: 86e-4,
|
|
42827
|
+
_v7Precision: 0.8622,
|
|
42828
|
+
_v8Verdict: "USEFUL",
|
|
42829
|
+
_v8Lift: 651.94
|
|
41502
42830
|
},
|
|
41503
|
-
"
|
|
42831
|
+
"typo/calc-fontsize": {
|
|
41504
42832
|
recall: 0,
|
|
41505
42833
|
fpRate: 0,
|
|
41506
42834
|
ratio: 0,
|
|
41507
42835
|
precision: 0,
|
|
41508
|
-
lastCalibratedAt: "2026-
|
|
42836
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41509
42837
|
verdict: "DORMANT",
|
|
41510
|
-
|
|
41511
|
-
|
|
41512
|
-
|
|
42838
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
42839
|
+
aiSpecific: false,
|
|
42840
|
+
_v7Verdict: "DORMANT",
|
|
42841
|
+
_v7Lift: 0,
|
|
42842
|
+
_v7Recall: 0,
|
|
42843
|
+
_v7FpRate: 0,
|
|
42844
|
+
_v7Precision: 0,
|
|
42845
|
+
_v8Verdict: "DORMANT",
|
|
42846
|
+
_v8Lift: 1,
|
|
42847
|
+
defaultOff: true
|
|
41513
42848
|
},
|
|
41514
|
-
"
|
|
42849
|
+
"typo/calc-raw-px": {
|
|
41515
42850
|
recall: 0,
|
|
41516
42851
|
fpRate: 0,
|
|
41517
|
-
ratio:
|
|
41518
|
-
precision: 0,
|
|
41519
|
-
lastCalibratedAt: "2026-
|
|
41520
|
-
verdict: "
|
|
41521
|
-
|
|
41522
|
-
|
|
41523
|
-
|
|
42852
|
+
ratio: 210066.67,
|
|
42853
|
+
precision: 0.8333,
|
|
42854
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42855
|
+
verdict: "USEFUL",
|
|
42856
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=5, FP=1, P=83.3%, FPR=0.00%, lift=210066.67. v7 was USEFUL (TP=3, FP=1, lift=137559.75). v8 was USEFUL (TP=2, FP=0).",
|
|
42857
|
+
aiSpecific: false,
|
|
42858
|
+
_v7Verdict: "USEFUL",
|
|
42859
|
+
_v7Lift: 137559.75,
|
|
42860
|
+
_v7Recall: 0,
|
|
42861
|
+
_v7FpRate: 0,
|
|
42862
|
+
_v7Precision: 0.75,
|
|
42863
|
+
_v8Verdict: "USEFUL",
|
|
42864
|
+
_v8Lift: 99999
|
|
41524
42865
|
},
|
|
41525
|
-
"
|
|
42866
|
+
"typo/clamp-offscale": {
|
|
41526
42867
|
recall: 0,
|
|
41527
42868
|
fpRate: 0,
|
|
41528
42869
|
ratio: 0,
|
|
41529
42870
|
precision: 0,
|
|
41530
|
-
lastCalibratedAt: "2026-
|
|
42871
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41531
42872
|
verdict: "DORMANT",
|
|
41532
|
-
|
|
41533
|
-
|
|
41534
|
-
|
|
42873
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
42874
|
+
aiSpecific: false,
|
|
42875
|
+
_v7Verdict: "DORMANT",
|
|
42876
|
+
_v7Lift: 0,
|
|
42877
|
+
_v7Recall: 0,
|
|
42878
|
+
_v7FpRate: 0,
|
|
42879
|
+
_v7Precision: 0,
|
|
42880
|
+
_v8Verdict: "DORMANT",
|
|
42881
|
+
_v8Lift: 1,
|
|
42882
|
+
defaultOff: true
|
|
41535
42883
|
},
|
|
41536
|
-
"
|
|
41537
|
-
recall:
|
|
41538
|
-
fpRate:
|
|
41539
|
-
ratio:
|
|
41540
|
-
precision: 0,
|
|
41541
|
-
lastCalibratedAt: "2026-
|
|
41542
|
-
verdict: "
|
|
41543
|
-
|
|
41544
|
-
|
|
41545
|
-
|
|
42884
|
+
"typo/math-button-label-uniformity": {
|
|
42885
|
+
recall: 1e-4,
|
|
42886
|
+
fpRate: 1e-4,
|
|
42887
|
+
ratio: 6894.19,
|
|
42888
|
+
precision: 0.629,
|
|
42889
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42890
|
+
verdict: "USEFUL",
|
|
42891
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=39, FP=23, P=62.9%, FPR=0.01%, lift=6894.19. v7 was USEFUL (TP=37, FP=21, lift=5571.66). v8 was USEFUL (TP=2, FP=2).",
|
|
42892
|
+
aiSpecific: false,
|
|
42893
|
+
_v7Verdict: "USEFUL",
|
|
42894
|
+
_v7Lift: 5571.66,
|
|
42895
|
+
_v7Recall: 2e-4,
|
|
42896
|
+
_v7FpRate: 1e-4,
|
|
42897
|
+
_v7Precision: 0.6379,
|
|
42898
|
+
_v8Verdict: "USEFUL",
|
|
42899
|
+
_v8Lift: 17166.75
|
|
41546
42900
|
},
|
|
41547
|
-
"
|
|
42901
|
+
"typo/math-cta-vocabulary": {
|
|
41548
42902
|
recall: 0,
|
|
41549
42903
|
fpRate: 0,
|
|
41550
42904
|
ratio: 0,
|
|
41551
42905
|
precision: 0,
|
|
41552
|
-
lastCalibratedAt: "2026-
|
|
42906
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41553
42907
|
verdict: "DORMANT",
|
|
41554
|
-
|
|
41555
|
-
|
|
41556
|
-
|
|
42908
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
42909
|
+
aiSpecific: true,
|
|
42910
|
+
_v7Verdict: "DORMANT",
|
|
42911
|
+
_v7Lift: 0,
|
|
42912
|
+
_v7Recall: 0,
|
|
42913
|
+
_v7FpRate: 0,
|
|
42914
|
+
_v7Precision: 0,
|
|
42915
|
+
_v8Verdict: "DORMANT",
|
|
42916
|
+
_v8Lift: 1,
|
|
42917
|
+
defaultOff: true
|
|
41557
42918
|
},
|
|
41558
|
-
"
|
|
41559
|
-
recall:
|
|
42919
|
+
"typo/placeholder-text": {
|
|
42920
|
+
recall: 1e-4,
|
|
41560
42921
|
fpRate: 0,
|
|
41561
|
-
ratio:
|
|
41562
|
-
precision: 0,
|
|
41563
|
-
lastCalibratedAt: "2026-
|
|
41564
|
-
verdict: "
|
|
41565
|
-
|
|
41566
|
-
|
|
41567
|
-
|
|
42922
|
+
ratio: 17330.5,
|
|
42923
|
+
precision: 0.6875,
|
|
42924
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42925
|
+
verdict: "USEFUL",
|
|
42926
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=22, FP=10, P=68.8%, FPR=0.00%, lift=17330.50. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was USEFUL (TP=22, FP=10).",
|
|
42927
|
+
aiSpecific: false,
|
|
42928
|
+
_v7Verdict: "DORMANT",
|
|
42929
|
+
_v7Lift: 1,
|
|
42930
|
+
_v7Recall: 0,
|
|
42931
|
+
_v7FpRate: 0,
|
|
42932
|
+
_v7Precision: 0,
|
|
42933
|
+
_v8Verdict: "USEFUL",
|
|
42934
|
+
_v8Lift: 4720.86
|
|
41568
42935
|
},
|
|
41569
|
-
"
|
|
42936
|
+
"visual/arbitrary-escape": {
|
|
42937
|
+
recall: 26e-4,
|
|
42938
|
+
fpRate: 7e-4,
|
|
42939
|
+
ratio: 1219.67,
|
|
42940
|
+
precision: 0.8177,
|
|
42941
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42942
|
+
verdict: "USEFUL",
|
|
42943
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=758, FP=169, P=81.8%, FPR=0.07%, lift=1219.67. v7 was USEFUL (TP=600, FP=169, lift=846.78). v8 was USEFUL (TP=158, FP=0).",
|
|
42944
|
+
aiSpecific: true,
|
|
42945
|
+
_v7Verdict: "USEFUL",
|
|
42946
|
+
_v7Lift: 846.78,
|
|
42947
|
+
_v7Recall: 25e-4,
|
|
42948
|
+
_v7FpRate: 9e-4,
|
|
42949
|
+
_v7Precision: 0.7802,
|
|
42950
|
+
_v8Verdict: "USEFUL",
|
|
42951
|
+
_v8Lift: 99999
|
|
42952
|
+
},
|
|
42953
|
+
"visual/clamp-soup": {
|
|
41570
42954
|
recall: 0,
|
|
41571
42955
|
fpRate: 0,
|
|
41572
42956
|
ratio: 0,
|
|
41573
42957
|
precision: 0,
|
|
41574
|
-
lastCalibratedAt: "2026-
|
|
42958
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41575
42959
|
verdict: "DORMANT",
|
|
41576
|
-
|
|
41577
|
-
|
|
41578
|
-
|
|
42960
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
42961
|
+
aiSpecific: true,
|
|
42962
|
+
_v7Verdict: "DORMANT",
|
|
42963
|
+
_v7Lift: 0,
|
|
42964
|
+
_v7Recall: 0,
|
|
42965
|
+
_v7FpRate: 0,
|
|
42966
|
+
_v7Precision: 0,
|
|
42967
|
+
_v8Verdict: "DORMANT",
|
|
42968
|
+
_v8Lift: 1,
|
|
42969
|
+
defaultOff: true
|
|
41579
42970
|
},
|
|
41580
|
-
"
|
|
42971
|
+
"visual/generic-centering": {
|
|
41581
42972
|
recall: 0,
|
|
41582
42973
|
fpRate: 0,
|
|
41583
42974
|
ratio: 0,
|
|
41584
42975
|
precision: 0,
|
|
41585
|
-
lastCalibratedAt: "2026-
|
|
42976
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41586
42977
|
verdict: "DORMANT",
|
|
41587
|
-
|
|
41588
|
-
|
|
41589
|
-
|
|
42978
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
42979
|
+
aiSpecific: true,
|
|
42980
|
+
_v7Verdict: "DORMANT",
|
|
42981
|
+
_v7Lift: 0,
|
|
42982
|
+
_v7Recall: 0,
|
|
42983
|
+
_v7FpRate: 0,
|
|
42984
|
+
_v7Precision: 0,
|
|
42985
|
+
_v8Verdict: "DORMANT",
|
|
42986
|
+
_v8Lift: 1,
|
|
42987
|
+
defaultOff: true
|
|
41590
42988
|
},
|
|
41591
|
-
"
|
|
41592
|
-
recall: 0,
|
|
42989
|
+
"visual/inline-style-dominance": {
|
|
42990
|
+
recall: 0.0103,
|
|
42991
|
+
fpRate: 52e-4,
|
|
42992
|
+
ratio: 134.59,
|
|
42993
|
+
precision: 0.6983,
|
|
42994
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
42995
|
+
verdict: "USEFUL",
|
|
42996
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=3028, FP=1308, P=69.8%, FPR=0.52%, lift=134.59. v7 was USEFUL (TP=2303, FP=1221, lift=98.17). v8 was USEFUL (TP=725, FP=87).",
|
|
42997
|
+
aiSpecific: false,
|
|
42998
|
+
_v7Verdict: "USEFUL",
|
|
42999
|
+
_v7Lift: 98.17,
|
|
43000
|
+
_v7Recall: 97e-4,
|
|
43001
|
+
_v7FpRate: 67e-4,
|
|
43002
|
+
_v7Precision: 0.6535,
|
|
43003
|
+
_v8Verdict: "USEFUL",
|
|
43004
|
+
_v8Lift: 704.71
|
|
43005
|
+
},
|
|
43006
|
+
"visual/math-color-cluster": {
|
|
43007
|
+
recall: 2e-4,
|
|
41593
43008
|
fpRate: 0,
|
|
41594
|
-
ratio:
|
|
41595
|
-
precision: 0,
|
|
41596
|
-
lastCalibratedAt: "2026-
|
|
41597
|
-
verdict: "
|
|
41598
|
-
|
|
41599
|
-
|
|
41600
|
-
|
|
43009
|
+
ratio: 46814.86,
|
|
43010
|
+
precision: 0.9286,
|
|
43011
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43012
|
+
verdict: "USEFUL",
|
|
43013
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=65, FP=5, P=92.9%, FPR=0.00%, lift=46814.86. v7 was USEFUL (TP=58, FP=5, lift=33771.28). v8 was USEFUL (TP=7, FP=0).",
|
|
43014
|
+
aiSpecific: true,
|
|
43015
|
+
_v7Verdict: "USEFUL",
|
|
43016
|
+
_v7Lift: 33771.28,
|
|
43017
|
+
_v7Recall: 2e-4,
|
|
43018
|
+
_v7FpRate: 0,
|
|
43019
|
+
_v7Precision: 0.9206,
|
|
43020
|
+
_v8Verdict: "USEFUL",
|
|
43021
|
+
_v8Lift: 99999
|
|
41601
43022
|
},
|
|
41602
|
-
"
|
|
43023
|
+
"visual/math-default-font": {
|
|
43024
|
+
recall: 16e-4,
|
|
43025
|
+
fpRate: 3e-4,
|
|
43026
|
+
ratio: 3035.16,
|
|
43027
|
+
precision: 0.8669,
|
|
43028
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43029
|
+
verdict: "USEFUL",
|
|
43030
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=469, FP=72, P=86.7%, FPR=0.03%, lift=3035.16. v7 was USEFUL (TP=313, FP=71, lift=2105.64). v8 was USEFUL (TP=156, FP=1).",
|
|
43031
|
+
aiSpecific: true,
|
|
43032
|
+
_v7Verdict: "USEFUL",
|
|
43033
|
+
_v7Lift: 2105.64,
|
|
43034
|
+
_v7Recall: 13e-4,
|
|
43035
|
+
_v7FpRate: 4e-4,
|
|
43036
|
+
_v7Precision: 0.8151,
|
|
43037
|
+
_v8Verdict: "USEFUL",
|
|
43038
|
+
_v8Lift: 68229.63
|
|
43039
|
+
},
|
|
43040
|
+
"visual/math-font-entropy": {
|
|
43041
|
+
recall: 52e-4,
|
|
43042
|
+
fpRate: 1e-3,
|
|
43043
|
+
ratio: 869.95,
|
|
43044
|
+
precision: 0.8593,
|
|
43045
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43046
|
+
verdict: "USEFUL",
|
|
43047
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=1521, FP=249, P=85.9%, FPR=0.10%, lift=869.95. v7 was USEFUL (TP=1067, FP=248, lift=600.09). v8 was USEFUL (TP=454, FP=1).",
|
|
43048
|
+
aiSpecific: true,
|
|
43049
|
+
_v7Verdict: "USEFUL",
|
|
43050
|
+
_v7Lift: 600.09,
|
|
43051
|
+
_v7Recall: 45e-4,
|
|
43052
|
+
_v7FpRate: 14e-4,
|
|
43053
|
+
_v7Precision: 0.8114,
|
|
43054
|
+
_v8Verdict: "USEFUL",
|
|
43055
|
+
_v8Lift: 68516.08
|
|
43056
|
+
},
|
|
43057
|
+
"visual/math-gradient-hue-rotation": {
|
|
41603
43058
|
recall: 0,
|
|
41604
43059
|
fpRate: 0,
|
|
41605
43060
|
ratio: 0,
|
|
41606
43061
|
precision: 0,
|
|
41607
|
-
lastCalibratedAt: "2026-
|
|
43062
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41608
43063
|
verdict: "DORMANT",
|
|
41609
|
-
|
|
41610
|
-
|
|
41611
|
-
|
|
43064
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
43065
|
+
aiSpecific: true,
|
|
43066
|
+
_v7Verdict: "DORMANT",
|
|
43067
|
+
_v7Lift: 0,
|
|
43068
|
+
_v7Recall: 0,
|
|
43069
|
+
_v7FpRate: 0,
|
|
43070
|
+
_v7Precision: 0,
|
|
43071
|
+
_v8Verdict: "DORMANT",
|
|
43072
|
+
_v8Lift: 1,
|
|
43073
|
+
defaultOff: true
|
|
41612
43074
|
},
|
|
41613
|
-
"
|
|
41614
|
-
recall:
|
|
43075
|
+
"visual/math-rounded-entropy": {
|
|
43076
|
+
recall: 38e-4,
|
|
43077
|
+
fpRate: 2e-4,
|
|
43078
|
+
ratio: 3785.45,
|
|
43079
|
+
precision: 0.9461,
|
|
43080
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43081
|
+
verdict: "USEFUL",
|
|
43082
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=1105, FP=63, P=94.6%, FPR=0.02%, lift=3785.45. v7 was USEFUL (TP=876, FP=62, lift=2762.74). v8 was USEFUL (TP=229, FP=1).",
|
|
43083
|
+
aiSpecific: true,
|
|
43084
|
+
_v7Verdict: "USEFUL",
|
|
43085
|
+
_v7Lift: 2762.74,
|
|
43086
|
+
_v7Recall: 37e-4,
|
|
43087
|
+
_v7FpRate: 3e-4,
|
|
43088
|
+
_v7Precision: 0.9339,
|
|
43089
|
+
_v8Verdict: "USEFUL",
|
|
43090
|
+
_v8Lift: 68368.45
|
|
43091
|
+
},
|
|
43092
|
+
"visual/math-spacing-entropy": {
|
|
43093
|
+
recall: 18e-4,
|
|
43094
|
+
fpRate: 4e-4,
|
|
43095
|
+
ratio: 1898.99,
|
|
43096
|
+
precision: 0.8287,
|
|
43097
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43098
|
+
verdict: "USEFUL",
|
|
43099
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=532, FP=110, P=82.9%, FPR=0.04%, lift=1898.99. v7 was USEFUL (TP=425, FP=109, lift=1339.22). v8 was USEFUL (TP=107, FP=1).",
|
|
43100
|
+
aiSpecific: true,
|
|
43101
|
+
_v7Verdict: "USEFUL",
|
|
43102
|
+
_v7Lift: 1339.22,
|
|
43103
|
+
_v7Recall: 18e-4,
|
|
43104
|
+
_v7FpRate: 6e-4,
|
|
43105
|
+
_v7Precision: 0.7959,
|
|
43106
|
+
_v8Verdict: "USEFUL",
|
|
43107
|
+
_v8Lift: 68031.19
|
|
43108
|
+
},
|
|
43109
|
+
"visual/naturalness-anomaly": {
|
|
43110
|
+
recall: 0.1729,
|
|
43111
|
+
fpRate: 0.0687,
|
|
43112
|
+
ratio: 10.86,
|
|
43113
|
+
precision: 0.746,
|
|
43114
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43115
|
+
verdict: "USEFUL",
|
|
43116
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=50852, FP=17316, P=74.6%, FPR=6.87%, lift=10.86. v7 was USEFUL (TP=39319, FP=11382, lift=12.50). v8 was USEFUL (TP=11533, FP=5934).",
|
|
43117
|
+
aiSpecific: true,
|
|
43118
|
+
_v7Verdict: "USEFUL",
|
|
43119
|
+
_v7Lift: 12.5,
|
|
43120
|
+
_v7Recall: 0.1659,
|
|
43121
|
+
_v7FpRate: 0.0621,
|
|
43122
|
+
_v7Precision: 0.7755,
|
|
43123
|
+
_v8Verdict: "USEFUL",
|
|
43124
|
+
_v8Lift: 7.64
|
|
43125
|
+
},
|
|
43126
|
+
"visual/radius-scale-violation": {
|
|
43127
|
+
recall: 4e-4,
|
|
41615
43128
|
fpRate: 0,
|
|
41616
|
-
ratio:
|
|
41617
|
-
precision: 0,
|
|
41618
|
-
lastCalibratedAt: "2026-
|
|
41619
|
-
verdict: "
|
|
41620
|
-
|
|
41621
|
-
|
|
41622
|
-
|
|
43129
|
+
ratio: 82131.33,
|
|
43130
|
+
precision: 0.9774,
|
|
43131
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43132
|
+
verdict: "USEFUL",
|
|
43133
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=130, FP=3, P=97.7%, FPR=0.00%, lift=82131.33. v7 was USEFUL (TP=96, FP=3, lift=59285.01). v8 was USEFUL (TP=34, FP=0).",
|
|
43134
|
+
aiSpecific: false,
|
|
43135
|
+
_v7Verdict: "USEFUL",
|
|
43136
|
+
_v7Lift: 59285.01,
|
|
43137
|
+
_v7Recall: 4e-4,
|
|
43138
|
+
_v7FpRate: 0,
|
|
43139
|
+
_v7Precision: 0.9697,
|
|
43140
|
+
_v8Verdict: "USEFUL",
|
|
43141
|
+
_v8Lift: 99999
|
|
41623
43142
|
},
|
|
41624
|
-
"
|
|
43143
|
+
"visual/spacing-scale-violation": {
|
|
43144
|
+
recall: 86e-4,
|
|
43145
|
+
fpRate: 28e-4,
|
|
43146
|
+
ratio: 273.97,
|
|
43147
|
+
precision: 0.7792,
|
|
43148
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43149
|
+
verdict: "USEFUL",
|
|
43150
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=2531, FP=717, P=77.9%, FPR=0.28%, lift=273.97. v7 was USEFUL (TP=1981, FP=717, lift=187.83). v8 was USEFUL (TP=550, FP=0).",
|
|
43151
|
+
aiSpecific: false,
|
|
43152
|
+
_v7Verdict: "USEFUL",
|
|
43153
|
+
_v7Lift: 187.83,
|
|
43154
|
+
_v7Recall: 84e-4,
|
|
43155
|
+
_v7FpRate: 39e-4,
|
|
43156
|
+
_v7Precision: 0.7342,
|
|
43157
|
+
_v8Verdict: "USEFUL",
|
|
43158
|
+
_v8Lift: 99999
|
|
43159
|
+
},
|
|
43160
|
+
"wcag/dragging-movements": {
|
|
41625
43161
|
recall: 0,
|
|
41626
43162
|
fpRate: 0,
|
|
41627
|
-
ratio:
|
|
41628
|
-
precision: 0,
|
|
41629
|
-
lastCalibratedAt: "2026-
|
|
41630
|
-
verdict: "
|
|
41631
|
-
|
|
41632
|
-
|
|
41633
|
-
|
|
43163
|
+
ratio: 33610.67,
|
|
43164
|
+
precision: 0.4,
|
|
43165
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43166
|
+
verdict: "OK",
|
|
43167
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=2, FP=3, P=40.0%, FPR=0.00%, lift=33610.67. v7 was OK (TP=2, FP=3, lift=24455.07). v8 was DORMANT (TP=0, FP=0).",
|
|
43168
|
+
aiSpecific: false,
|
|
43169
|
+
_v7Verdict: "OK",
|
|
43170
|
+
_v7Lift: 24455.07,
|
|
43171
|
+
_v7Recall: 0,
|
|
43172
|
+
_v7FpRate: 0,
|
|
43173
|
+
_v7Precision: 0.4,
|
|
43174
|
+
_v8Verdict: "DORMANT",
|
|
43175
|
+
_v8Lift: 1
|
|
43176
|
+
},
|
|
43177
|
+
"wcag/focus-appearance": {
|
|
43178
|
+
recall: 28e-4,
|
|
43179
|
+
fpRate: 1e-4,
|
|
43180
|
+
ratio: 8397.24,
|
|
43181
|
+
precision: 0.966,
|
|
43182
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43183
|
+
verdict: "USEFUL",
|
|
43184
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=825, FP=29, P=96.6%, FPR=0.01%, lift=8397.24. v7 was USEFUL (TP=612, FP=24, lift=7353.82). v8 was USEFUL (TP=213, FP=5).",
|
|
43185
|
+
aiSpecific: false,
|
|
43186
|
+
_v7Verdict: "USEFUL",
|
|
43187
|
+
_v7Lift: 7353.82,
|
|
43188
|
+
_v7Recall: 26e-4,
|
|
43189
|
+
_v7FpRate: 1e-4,
|
|
43190
|
+
_v7Precision: 0.9623,
|
|
43191
|
+
_v8Verdict: "USEFUL",
|
|
43192
|
+
_v8Lift: 13418.41
|
|
43193
|
+
},
|
|
43194
|
+
"wcag/focus-obscured": {
|
|
43195
|
+
recall: 33e-4,
|
|
43196
|
+
fpRate: 7e-4,
|
|
43197
|
+
ratio: 1214.21,
|
|
43198
|
+
precision: 0.8478,
|
|
43199
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43200
|
+
verdict: "USEFUL",
|
|
43201
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=980, FP=176, P=84.8%, FPR=0.07%, lift=1214.21. v7 was USEFUL (TP=797, FP=175, lift=859.38). v8 was USEFUL (TP=183, FP=1).",
|
|
43202
|
+
aiSpecific: false,
|
|
43203
|
+
_v7Verdict: "USEFUL",
|
|
43204
|
+
_v7Lift: 859.38,
|
|
43205
|
+
_v7Recall: 34e-4,
|
|
43206
|
+
_v7FpRate: 1e-3,
|
|
43207
|
+
_v7Precision: 0.82,
|
|
43208
|
+
_v8Verdict: "USEFUL",
|
|
43209
|
+
_v8Lift: 68293.81
|
|
41634
43210
|
},
|
|
41635
43211
|
"wcag/missing-alt": {
|
|
41636
|
-
recall:
|
|
41637
|
-
fpRate:
|
|
41638
|
-
ratio:
|
|
41639
|
-
precision: 0,
|
|
41640
|
-
lastCalibratedAt: "2026-
|
|
41641
|
-
verdict: "
|
|
41642
|
-
|
|
41643
|
-
|
|
41644
|
-
|
|
43212
|
+
recall: 11e-4,
|
|
43213
|
+
fpRate: 7e-4,
|
|
43214
|
+
ratio: 935.33,
|
|
43215
|
+
precision: 0.6456,
|
|
43216
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
43217
|
+
verdict: "USEFUL",
|
|
43218
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): v7+v8 combined corpus (252080 neg + 294178 pos). v8.5 TP=317, FP=174, P=64.6%, FPR=0.07%, lift=935.33. v7 was DORMANT (TP=0, FP=0, lift=1.00). v8 was USEFUL (TP=317, FP=174).",
|
|
43219
|
+
aiSpecific: false,
|
|
43220
|
+
_v7Verdict: "DORMANT",
|
|
43221
|
+
_v7Lift: 1,
|
|
43222
|
+
_v7Recall: 0,
|
|
43223
|
+
_v7FpRate: 0,
|
|
43224
|
+
_v7Precision: 0,
|
|
43225
|
+
_v8Verdict: "USEFUL",
|
|
43226
|
+
_v8Lift: 254.79
|
|
41645
43227
|
},
|
|
41646
|
-
"
|
|
43228
|
+
"wcag/target-size": {
|
|
41647
43229
|
recall: 0,
|
|
41648
43230
|
fpRate: 0,
|
|
41649
43231
|
ratio: 0,
|
|
41650
43232
|
precision: 0,
|
|
41651
|
-
lastCalibratedAt: "2026-
|
|
43233
|
+
lastCalibratedAt: "2026-07-01T00:00:00Z",
|
|
41652
43234
|
verdict: "DORMANT",
|
|
41653
|
-
|
|
41654
|
-
|
|
41655
|
-
|
|
43235
|
+
_calibrationNote: "v8.5 calibration (v0.18.9, 2026-07-01): rule did not fire on v8.5 corpus (252080 neg + 294178 pos = 546258 files). Preserved v7 data. v7 verdict=DORMANT, v7 lift=0, v7 recall=0, v7 FPR=0, v7 precision=0.",
|
|
43236
|
+
aiSpecific: false,
|
|
43237
|
+
_v7Verdict: "DORMANT",
|
|
43238
|
+
_v7Lift: 0,
|
|
43239
|
+
_v7Recall: 0,
|
|
43240
|
+
_v7FpRate: 0,
|
|
43241
|
+
_v7Precision: 0,
|
|
43242
|
+
_v8Verdict: "DORMANT",
|
|
43243
|
+
_v8Lift: 1,
|
|
43244
|
+
defaultOff: true
|
|
41656
43245
|
}
|
|
41657
43246
|
};
|
|
41658
43247
|
|
|
@@ -41691,7 +43280,6 @@ async function scanFile(filePath, config, registry, cwd = process.cwd()) {
|
|
|
41691
43280
|
".kt",
|
|
41692
43281
|
".kts",
|
|
41693
43282
|
".dart",
|
|
41694
|
-
".rs",
|
|
41695
43283
|
".cpp",
|
|
41696
43284
|
".cc",
|
|
41697
43285
|
".cxx",
|