slopbrick 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -43567,14 +43567,14 @@ var RuleRegistry = class {
43567
43567
  }
43568
43568
  };
43569
43569
 
43570
- // src/rules/signal-strength.json
43570
+ // src/rules/signal-strength.json with { type: 'json' }
43571
43571
  var signal_strength_default = {
43572
43572
  "ai/any-density": {
43573
43573
  recall: 6e-3,
43574
43574
  fpRate: 37e-4,
43575
43575
  ratio: 175.31,
43576
43576
  precision: 0.6523,
43577
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43577
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43578
43578
  verdict: "USEFUL",
43579
43579
  _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).",
43580
43580
  aiSpecific: true,
@@ -43584,14 +43584,25 @@ var signal_strength_default = {
43584
43584
  _v7FpRate: 41e-4,
43585
43585
  _v7Precision: 0.634,
43586
43586
  _v8Verdict: "USEFUL",
43587
- _v8Lift: 271.97
43587
+ _v8Lift: 271.97,
43588
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43589
+ _v10PositiveFires: 1913,
43590
+ _v10NegativeFires: 1116,
43591
+ _v10PositiveFiles: 1913,
43592
+ _v10NegativeFiles: 1116,
43593
+ _v10Precision: 0.63156,
43594
+ _v10Recall: 623e-5,
43595
+ _v10F1: 0.01235,
43596
+ _v10Signal: "weak",
43597
+ _v10Category: "ai",
43598
+ _v10Severity: "medium"
43588
43599
  },
43589
43600
  "ai/comment-ratio": {
43590
43601
  recall: 0.2771,
43591
43602
  fpRate: 0.1578,
43592
43603
  ratio: 4.26,
43593
43604
  precision: 0.6721,
43594
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43605
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43595
43606
  verdict: "USEFUL",
43596
43607
  _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).",
43597
43608
  aiSpecific: true,
@@ -43601,14 +43612,25 @@ var signal_strength_default = {
43601
43612
  _v7FpRate: 0.1629,
43602
43613
  _v7Precision: 0.6687,
43603
43614
  _v8Verdict: "USEFUL",
43604
- _v8Lift: 4.73
43615
+ _v8Lift: 4.73,
43616
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43617
+ _v10PositiveFires: 94857,
43618
+ _v10NegativeFires: 57270,
43619
+ _v10PositiveFiles: 94857,
43620
+ _v10NegativeFiles: 57270,
43621
+ _v10Precision: 0.62354,
43622
+ _v10Recall: 0.30913,
43623
+ _v10F1: 0.41334,
43624
+ _v10Signal: "weak",
43625
+ _v10Category: "ai",
43626
+ _v10Severity: "medium"
43605
43627
  },
43606
43628
  "ai/compression-profile": {
43607
43629
  recall: 0.3478,
43608
43630
  fpRate: 0.1488,
43609
43631
  ratio: 4.92,
43610
43632
  precision: 0.7318,
43611
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43633
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43612
43634
  verdict: "USEFUL",
43613
43635
  _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).",
43614
43636
  aiSpecific: true,
@@ -43618,14 +43640,25 @@ var signal_strength_default = {
43618
43640
  _v7FpRate: 0.1498,
43619
43641
  _v7Precision: 0.732,
43620
43642
  _v8Verdict: "USEFUL",
43621
- _v8Lift: 5
43643
+ _v8Lift: 5,
43644
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43645
+ _v10PositiveFires: 142747,
43646
+ _v10NegativeFires: 47910,
43647
+ _v10PositiveFiles: 142747,
43648
+ _v10NegativeFiles: 47910,
43649
+ _v10Precision: 0.74871,
43650
+ _v10Recall: 0.4652,
43651
+ _v10F1: 0.57385,
43652
+ _v10Signal: "strong",
43653
+ _v10Category: "ai",
43654
+ _v10Severity: "low"
43622
43655
  },
43623
43656
  "ai/console-debug-storm": {
43624
43657
  recall: 73e-4,
43625
43658
  fpRate: 9e-4,
43626
43659
  ratio: 949.21,
43627
43660
  precision: 0.9,
43628
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43661
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43629
43662
  verdict: "USEFUL",
43630
43663
  _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).",
43631
43664
  aiSpecific: true,
@@ -43635,14 +43668,25 @@ var signal_strength_default = {
43635
43668
  _v7FpRate: 1e-3,
43636
43669
  _v7Precision: 0.9161,
43637
43670
  _v8Verdict: "USEFUL",
43638
- _v8Lift: 845.55
43671
+ _v8Lift: 845.55,
43672
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43673
+ _v10PositiveFires: 2767,
43674
+ _v10NegativeFires: 544,
43675
+ _v10PositiveFiles: 2767,
43676
+ _v10NegativeFiles: 544,
43677
+ _v10Precision: 0.8357,
43678
+ _v10Recall: 902e-5,
43679
+ _v10F1: 0.01784,
43680
+ _v10Signal: "strong",
43681
+ _v10Category: "ai",
43682
+ _v10Severity: "low"
43639
43683
  },
43640
43684
  "ai/default-react-stack": {
43641
43685
  recall: 1e-3,
43642
43686
  fpRate: 0,
43643
43687
  ratio: 251225.49,
43644
43688
  precision: 0.9966,
43645
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43689
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43646
43690
  verdict: "USEFUL",
43647
43691
  _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). v0.19 default-on (explicit defaultOff: false): P 99.7% / 251k lift \u2014 core AI fingerprint.",
43648
43692
  aiSpecific: true,
@@ -43653,14 +43697,25 @@ var signal_strength_default = {
43653
43697
  _v7Precision: 0.9957,
43654
43698
  _v8Verdict: "USEFUL",
43655
43699
  _v8Lift: 99999,
43656
- defaultOff: false
43700
+ defaultOff: false,
43701
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43702
+ _v10PositiveFires: 241,
43703
+ _v10NegativeFires: 1,
43704
+ _v10PositiveFiles: 241,
43705
+ _v10NegativeFiles: 1,
43706
+ _v10Precision: 0.99587,
43707
+ _v10Recall: 79e-5,
43708
+ _v10F1: 157e-5,
43709
+ _v10Signal: "strong",
43710
+ _v10Category: "ai",
43711
+ _v10Severity: "low"
43657
43712
  },
43658
43713
  "ai/errors-near-eof": {
43659
43714
  recall: 0.0948,
43660
43715
  fpRate: 0.052,
43661
43716
  ratio: 13.09,
43662
43717
  precision: 0.6803,
43663
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43718
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43664
43719
  verdict: "USEFUL",
43665
43720
  defaultOff: true,
43666
43721
  _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). v0.21.0: marked defaultOff because the v0.21.0 self-scan fires 109 times across 47 files \u2014 the heuristic counts `{`, `}`, `(`, `)` as raw characters without skipping string contents, template literals, regex literals, or comments. Files with normal closing-brace tails (the last 4-5 lines of a function definition) consistently fire because the tail has 0 opens and 3-4 closes. The corpus-level 13.09 lift doesn't translate to per-file discrimination. v0.22.0 should re-implement the count with a token-aware state machine (string/comment/regex skip) or switch to a parse-error-based signal.",
@@ -43671,14 +43726,25 @@ var signal_strength_default = {
43671
43726
  _v7FpRate: 0.0551,
43672
43727
  _v7Precision: 0.6225,
43673
43728
  _v8Verdict: "USEFUL",
43674
- _v8Lift: 18.16
43729
+ _v8Lift: 18.16,
43730
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43731
+ _v10PositiveFires: 23948,
43732
+ _v10NegativeFires: 21900,
43733
+ _v10PositiveFiles: 23948,
43734
+ _v10NegativeFiles: 21900,
43735
+ _v10Precision: 0.52233,
43736
+ _v10Recall: 0.07804,
43737
+ _v10F1: 0.1358,
43738
+ _v10Signal: "weak",
43739
+ _v10Category: "ai",
43740
+ _v10Severity: "medium"
43675
43741
  },
43676
43742
  "ai/fetch-default-overuse": {
43677
43743
  recall: 27e-4,
43678
43744
  fpRate: 3e-4,
43679
43745
  ratio: 2679.84,
43680
43746
  precision: 0.9036,
43681
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43747
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43682
43748
  verdict: "USEFUL",
43683
43749
  _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).",
43684
43750
  aiSpecific: true,
@@ -43688,14 +43754,25 @@ var signal_strength_default = {
43688
43754
  _v7FpRate: 4e-4,
43689
43755
  _v7Precision: 0.8976,
43690
43756
  _v8Verdict: "USEFUL",
43691
- _v8Lift: 7139.19
43757
+ _v8Lift: 7139.19,
43758
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43759
+ _v10PositiveFires: 1266,
43760
+ _v10NegativeFires: 211,
43761
+ _v10PositiveFiles: 1266,
43762
+ _v10NegativeFiles: 211,
43763
+ _v10Precision: 0.85714,
43764
+ _v10Recall: 413e-5,
43765
+ _v10F1: 821e-5,
43766
+ _v10Signal: "strong",
43767
+ _v10Category: "ai",
43768
+ _v10Severity: "low"
43692
43769
  },
43693
43770
  "ai/library-reinvention": {
43694
43771
  recall: 3e-4,
43695
43772
  fpRate: 0,
43696
43773
  ratio: 47415.05,
43697
43774
  precision: 0.9405,
43698
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43775
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43699
43776
  verdict: "USEFUL",
43700
43777
  _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).",
43701
43778
  aiSpecific: true,
@@ -43705,14 +43782,25 @@ var signal_strength_default = {
43705
43782
  _v7FpRate: 0,
43706
43783
  _v7Precision: 0.9275,
43707
43784
  _v8Verdict: "USEFUL",
43708
- _v8Lift: 99999
43785
+ _v8Lift: 99999,
43786
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43787
+ _v10PositiveFires: 57,
43788
+ _v10NegativeFires: 4,
43789
+ _v10PositiveFiles: 57,
43790
+ _v10NegativeFiles: 4,
43791
+ _v10Precision: 0.93443,
43792
+ _v10Recall: 19e-5,
43793
+ _v10F1: 37e-5,
43794
+ _v10Signal: "strong",
43795
+ _v10Category: "ai",
43796
+ _v10Severity: "medium"
43709
43797
  },
43710
43798
  "ai/log-rank-histogram": {
43711
43799
  recall: 0,
43712
43800
  fpRate: 0,
43713
43801
  ratio: 0,
43714
43802
  precision: 0,
43715
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43803
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43716
43804
  verdict: "DORMANT",
43717
43805
  _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.",
43718
43806
  aiSpecific: true,
@@ -43723,14 +43811,25 @@ var signal_strength_default = {
43723
43811
  _v7Precision: 0,
43724
43812
  _v8Verdict: "DORMANT",
43725
43813
  _v8Lift: 1,
43726
- defaultOff: true
43814
+ defaultOff: true,
43815
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43816
+ _v10PositiveFires: 0,
43817
+ _v10NegativeFires: 0,
43818
+ _v10PositiveFiles: 0,
43819
+ _v10NegativeFiles: 0,
43820
+ _v10Precision: 0,
43821
+ _v10Recall: 0,
43822
+ _v10F1: 0,
43823
+ _v10Signal: "dormant",
43824
+ _v10Category: "ai",
43825
+ _v10Severity: "medium"
43727
43826
  },
43728
43827
  "ai/markdown-leakage": {
43729
43828
  recall: 0,
43730
43829
  fpRate: 0,
43731
43830
  ratio: 10003.17,
43732
43831
  precision: 0.3571,
43733
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43832
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43734
43833
  verdict: "OK",
43735
43834
  _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).",
43736
43835
  aiSpecific: true,
@@ -43740,14 +43839,25 @@ var signal_strength_default = {
43740
43839
  _v7FpRate: 0,
43741
43840
  _v7Precision: 0.7143,
43742
43841
  _v8Verdict: "INVERTED",
43743
- _v8Lift: 0
43842
+ _v8Lift: 0,
43843
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43844
+ _v10PositiveFires: 42,
43845
+ _v10NegativeFires: 27,
43846
+ _v10PositiveFiles: 42,
43847
+ _v10NegativeFiles: 27,
43848
+ _v10Precision: 0.6087,
43849
+ _v10Recall: 14e-5,
43850
+ _v10F1: 27e-5,
43851
+ _v10Signal: "weak",
43852
+ _v10Category: "ai",
43853
+ _v10Severity: "high"
43744
43854
  },
43745
43855
  "ai/renyi-profile": {
43746
43856
  recall: 0,
43747
43857
  fpRate: 0,
43748
43858
  ratio: 5251.67,
43749
43859
  precision: 0.25,
43750
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43860
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43751
43861
  verdict: "OK",
43752
43862
  _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).",
43753
43863
  aiSpecific: true,
@@ -43757,14 +43867,25 @@ var signal_strength_default = {
43757
43867
  _v7FpRate: 0,
43758
43868
  _v7Precision: 0.25,
43759
43869
  _v8Verdict: "OK",
43760
- _v8Lift: 5722.25
43870
+ _v8Lift: 5722.25,
43871
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43872
+ _v10PositiveFires: 26,
43873
+ _v10NegativeFires: 39,
43874
+ _v10PositiveFiles: 26,
43875
+ _v10NegativeFiles: 39,
43876
+ _v10Precision: 0.4,
43877
+ _v10Recall: 8e-5,
43878
+ _v10F1: 17e-5,
43879
+ _v10Signal: "weak",
43880
+ _v10Category: "ai",
43881
+ _v10Severity: "medium"
43761
43882
  },
43762
43883
  "ai/segment-surprisal-cv": {
43763
43884
  recall: 0.2019,
43764
43885
  fpRate: 0.0787,
43765
43886
  ratio: 9.52,
43766
43887
  precision: 0.7495,
43767
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43888
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43768
43889
  verdict: "USEFUL",
43769
43890
  defaultOff: true,
43770
43891
  _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). v0.21.0: marked defaultOff because the v0.21.0 self-scan fires 250 times across 250 files (1 per file) \u2014 the Binoculars-style per-segment entropy CV is too coarse a signal at the file level; the entropy floor is hit by most structured TypeScript regardless of whether the author was an LLM. The v8.5 corpus-level lift of 9.52 doesn't translate to per-file discrimination. v0.22.0 should tighten the threshold or re-calibrate against the per-file (not per-corpus) lift.",
@@ -43775,14 +43896,25 @@ var signal_strength_default = {
43775
43896
  _v7FpRate: 0.0817,
43776
43897
  _v7Precision: 0.7438,
43777
43898
  _v8Verdict: "USEFUL",
43778
- _v8Lift: 10.8
43899
+ _v8Lift: 10.8,
43900
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43901
+ _v10PositiveFires: 83245,
43902
+ _v10NegativeFires: 27389,
43903
+ _v10PositiveFiles: 83245,
43904
+ _v10NegativeFiles: 27389,
43905
+ _v10Precision: 0.75244,
43906
+ _v10Recall: 0.27129,
43907
+ _v10F1: 0.39879,
43908
+ _v10Signal: "strong",
43909
+ _v10Category: "ai",
43910
+ _v10Severity: "medium"
43779
43911
  },
43780
43912
  "ai/state-default-overuse": {
43781
43913
  recall: 3e-3,
43782
43914
  fpRate: 6e-4,
43783
43915
  ratio: 1315.06,
43784
43916
  precision: 0.8451,
43785
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43917
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43786
43918
  verdict: "USEFUL",
43787
43919
  _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).",
43788
43920
  aiSpecific: true,
@@ -43792,14 +43924,25 @@ var signal_strength_default = {
43792
43924
  _v7FpRate: 9e-4,
43793
43925
  _v7Precision: 0.8161,
43794
43926
  _v8Verdict: "USEFUL",
43795
- _v8Lift: 16799.55
43927
+ _v8Lift: 16799.55,
43928
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43929
+ _v10PositiveFires: 750,
43930
+ _v10NegativeFires: 111,
43931
+ _v10PositiveFiles: 750,
43932
+ _v10NegativeFiles: 111,
43933
+ _v10Precision: 0.87108,
43934
+ _v10Recall: 244e-5,
43935
+ _v10F1: 487e-5,
43936
+ _v10Signal: "strong",
43937
+ _v10Category: "ai",
43938
+ _v10Severity: "low"
43796
43939
  },
43797
43940
  "ai/tailwind-color-overuse": {
43798
43941
  recall: 0.0264,
43799
43942
  fpRate: 38e-4,
43800
43943
  ratio: 230.97,
43801
43944
  precision: 0.8888,
43802
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43945
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43803
43946
  verdict: "USEFUL",
43804
43947
  _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).",
43805
43948
  aiSpecific: true,
@@ -43809,14 +43952,25 @@ var signal_strength_default = {
43809
43952
  _v7FpRate: 52e-4,
43810
43953
  _v7Precision: 0.8436,
43811
43954
  _v8Verdict: "USEFUL",
43812
- _v8Lift: 5695.79
43955
+ _v8Lift: 5695.79,
43956
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43957
+ _v10PositiveFires: 5245,
43958
+ _v10NegativeFires: 973,
43959
+ _v10PositiveFiles: 5245,
43960
+ _v10NegativeFiles: 973,
43961
+ _v10Precision: 0.84352,
43962
+ _v10Recall: 0.01709,
43963
+ _v10F1: 0.03351,
43964
+ _v10Signal: "strong",
43965
+ _v10Category: "ai",
43966
+ _v10Severity: "low"
43813
43967
  },
43814
43968
  "ai/text-like-ratio": {
43815
43969
  recall: 0,
43816
43970
  fpRate: 0,
43817
43971
  ratio: 201664,
43818
43972
  precision: 0.8,
43819
- lastCalibratedAt: "2026-07-01T00:00:00Z",
43973
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43820
43974
  verdict: "USEFUL",
43821
43975
  _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).",
43822
43976
  aiSpecific: true,
@@ -43826,14 +43980,25 @@ var signal_strength_default = {
43826
43980
  _v7FpRate: 0,
43827
43981
  _v7Precision: 0.75,
43828
43982
  _v8Verdict: "USEFUL",
43829
- _v8Lift: 99999
43983
+ _v8Lift: 99999,
43984
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
43985
+ _v10PositiveFires: 21,
43986
+ _v10NegativeFires: 2,
43987
+ _v10PositiveFiles: 21,
43988
+ _v10NegativeFiles: 2,
43989
+ _v10Precision: 0.91304,
43990
+ _v10Recall: 7e-5,
43991
+ _v10F1: 14e-5,
43992
+ _v10Signal: "strong",
43993
+ _v10Category: "ai",
43994
+ _v10Severity: "low"
43830
43995
  },
43831
43996
  "ai/whitespace-regularity": {
43832
43997
  recall: 0.0733,
43833
43998
  fpRate: 0.0677,
43834
43999
  ratio: 8.25,
43835
44000
  precision: 0.5583,
43836
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44001
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43837
44002
  verdict: "USEFUL",
43838
44003
  defaultOff: true,
43839
44004
  _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). v0.21.2: marked defaultOff because precision 0.5583 < 0.60 floor (the v9.5 methodology in `docs/research/methodology-minimum-sample-size.md` sets the default-on threshold at P >= 0.60). At 55.8% precision, 44% of fires are false positives \u2014 too noisy to gate on. The rule stays available for opt-in via `rules: { 'ai/whitespace-regularity': 'low' }` in slopbrick.config.mjs. The 18 src/ self-scan fires are the typical noise profile.",
@@ -43844,14 +44009,25 @@ var signal_strength_default = {
43844
44009
  _v7FpRate: 0.0733,
43845
44010
  _v7Precision: 0.5652,
43846
44011
  _v8Verdict: "USEFUL",
43847
- _v8Lift: 10.06
44012
+ _v8Lift: 10.06,
44013
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44014
+ _v10PositiveFires: 26029,
44015
+ _v10NegativeFires: 29721,
44016
+ _v10PositiveFiles: 26029,
44017
+ _v10NegativeFiles: 29721,
44018
+ _v10Precision: 0.46689,
44019
+ _v10Recall: 0.08483,
44020
+ _v10F1: 0.14357,
44021
+ _v10Signal: "weak",
44022
+ _v10Category: "ai",
44023
+ _v10Severity: "medium"
43848
44024
  },
43849
44025
  "arch/astro-island-leak": {
43850
44026
  recall: 0,
43851
44027
  fpRate: 0,
43852
44028
  ratio: 0,
43853
44029
  precision: 0,
43854
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44030
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43855
44031
  verdict: "DORMANT",
43856
44032
  _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.",
43857
44033
  aiSpecific: true,
@@ -43862,14 +44038,25 @@ var signal_strength_default = {
43862
44038
  _v7Precision: 0,
43863
44039
  _v8Verdict: "DORMANT",
43864
44040
  _v8Lift: 1,
43865
- defaultOff: true
44041
+ defaultOff: true,
44042
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44043
+ _v10PositiveFires: 0,
44044
+ _v10NegativeFires: 0,
44045
+ _v10PositiveFiles: 0,
44046
+ _v10NegativeFiles: 0,
44047
+ _v10Precision: 0,
44048
+ _v10Recall: 0,
44049
+ _v10F1: 0,
44050
+ _v10Signal: "dormant",
44051
+ _v10Category: "arch",
44052
+ _v10Severity: "low"
43866
44053
  },
43867
44054
  "component/giant-component": {
43868
44055
  recall: 0.0181,
43869
44056
  fpRate: 59e-4,
43870
44057
  ratio: 132.31,
43871
44058
  precision: 0.7815,
43872
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44059
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43873
44060
  verdict: "USEFUL",
43874
44061
  _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).",
43875
44062
  aiSpecific: true,
@@ -43879,14 +44066,25 @@ var signal_strength_default = {
43879
44066
  _v7FpRate: 77e-4,
43880
44067
  _v7Precision: 0.7485,
43881
44068
  _v8Verdict: "USEFUL",
43882
- _v8Lift: 846.15
44069
+ _v8Lift: 846.15,
44070
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44071
+ _v10PositiveFires: 4999,
44072
+ _v10NegativeFires: 1740,
44073
+ _v10PositiveFiles: 4392,
44074
+ _v10NegativeFiles: 1382,
44075
+ _v10Precision: 0.76065,
44076
+ _v10Recall: 0.01431,
44077
+ _v10F1: 0.0281,
44078
+ _v10Signal: "strong",
44079
+ _v10Category: "component",
44080
+ _v10Severity: "high"
43883
44081
  },
43884
44082
  "component/multiple-components-per-file": {
43885
44083
  recall: 0.0751,
43886
44084
  fpRate: 0.0423,
43887
44085
  ratio: 15.96,
43888
44086
  precision: 0.6747,
43889
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44087
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43890
44088
  verdict: "USEFUL",
43891
44089
  _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).",
43892
44090
  aiSpecific: false,
@@ -43896,14 +44094,25 @@ var signal_strength_default = {
43896
44094
  _v7FpRate: 0.0523,
43897
44095
  _v7Precision: 0.6294,
43898
44096
  _v8Verdict: "USEFUL",
43899
- _v8Lift: 54.44
44097
+ _v8Lift: 54.44,
44098
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44099
+ _v10PositiveFires: 18811,
44100
+ _v10NegativeFires: 9043,
44101
+ _v10PositiveFiles: 18811,
44102
+ _v10NegativeFiles: 9043,
44103
+ _v10Precision: 0.67534,
44104
+ _v10Recall: 0.0613,
44105
+ _v10F1: 0.1124,
44106
+ _v10Signal: "weak",
44107
+ _v10Category: "component",
44108
+ _v10Severity: "medium"
43900
44109
  },
43901
44110
  "component/shadcn-prop-mismatch": {
43902
44111
  recall: 16e-4,
43903
44112
  fpRate: 1e-4,
43904
44113
  ratio: 9990.98,
43905
44114
  precision: 0.9512,
43906
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44115
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43907
44116
  verdict: "USEFUL",
43908
44117
  _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). v0.19 default-on (explicit defaultOff: false): P 95.1% / 9990x lift \u2014 UI bug.",
43909
44118
  aiSpecific: true,
@@ -43914,14 +44123,25 @@ var signal_strength_default = {
43914
44123
  _v7Precision: 0.929,
43915
44124
  _v8Verdict: "USEFUL",
43916
44125
  _v8Lift: 99999,
43917
- defaultOff: false
44126
+ defaultOff: false,
44127
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44128
+ _v10PositiveFires: 524,
44129
+ _v10NegativeFires: 25,
44130
+ _v10PositiveFiles: 332,
44131
+ _v10NegativeFiles: 19,
44132
+ _v10Precision: 0.94587,
44133
+ _v10Recall: 108e-5,
44134
+ _v10F1: 216e-5,
44135
+ _v10Signal: "strong",
44136
+ _v10Category: "component",
44137
+ _v10Severity: "high"
43918
44138
  },
43919
44139
  "context/import-path-mismatch": {
43920
44140
  recall: 0.0681,
43921
44141
  fpRate: 0.0167,
43922
44142
  ratio: 49.48,
43923
44143
  precision: 0.8263,
43924
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44144
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43925
44145
  verdict: "USEFUL",
43926
44146
  _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).",
43927
44147
  aiSpecific: false,
@@ -43931,14 +44151,25 @@ var signal_strength_default = {
43931
44151
  _v7FpRate: 0.0229,
43932
44152
  _v7Precision: 0.8079,
43933
44153
  _v8Verdict: "USEFUL",
43934
- _v8Lift: 8554.38
44154
+ _v8Lift: 8554.38,
44155
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44156
+ _v10PositiveFires: 47545,
44157
+ _v10NegativeFires: 10178,
44158
+ _v10PositiveFiles: 19234,
44159
+ _v10NegativeFiles: 4005,
44160
+ _v10Precision: 0.82766,
44161
+ _v10Recall: 0.06268,
44162
+ _v10F1: 0.11654,
44163
+ _v10Signal: "strong",
44164
+ _v10Category: "arch",
44165
+ _v10Severity: "medium"
43935
44166
  },
43936
44167
  "db/duplicate-index": {
43937
44168
  recall: 0,
43938
44169
  fpRate: 0,
43939
44170
  ratio: 0,
43940
44171
  precision: 0,
43941
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44172
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43942
44173
  verdict: "DORMANT",
43943
44174
  _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.",
43944
44175
  aiSpecific: false,
@@ -43949,14 +44180,25 @@ var signal_strength_default = {
43949
44180
  _v7Precision: 0,
43950
44181
  _v8Verdict: "DORMANT",
43951
44182
  _v8Lift: 1,
43952
- defaultOff: true
44183
+ defaultOff: true,
44184
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44185
+ _v10PositiveFires: 0,
44186
+ _v10NegativeFires: 0,
44187
+ _v10PositiveFiles: 0,
44188
+ _v10NegativeFiles: 0,
44189
+ _v10Precision: 0,
44190
+ _v10Recall: 0,
44191
+ _v10F1: 0,
44192
+ _v10Signal: "dormant",
44193
+ _v10Category: "db",
44194
+ _v10Severity: "high"
43953
44195
  },
43954
44196
  "db/enum-sprawl": {
43955
44197
  recall: 0,
43956
44198
  fpRate: 0,
43957
44199
  ratio: 0,
43958
44200
  precision: 0,
43959
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44201
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43960
44202
  verdict: "DORMANT",
43961
44203
  _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.",
43962
44204
  aiSpecific: false,
@@ -43967,14 +44209,25 @@ var signal_strength_default = {
43967
44209
  _v7Precision: 0,
43968
44210
  _v8Verdict: "DORMANT",
43969
44211
  _v8Lift: 1,
43970
- defaultOff: true
44212
+ defaultOff: true,
44213
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44214
+ _v10PositiveFires: 0,
44215
+ _v10NegativeFires: 0,
44216
+ _v10PositiveFiles: 0,
44217
+ _v10NegativeFiles: 0,
44218
+ _v10Precision: 0,
44219
+ _v10Recall: 0,
44220
+ _v10F1: 0,
44221
+ _v10Signal: "dormant",
44222
+ _v10Category: "db",
44223
+ _v10Severity: "low"
43971
44224
  },
43972
44225
  "db/missing-fk-index": {
43973
44226
  recall: 0,
43974
44227
  fpRate: 0,
43975
44228
  ratio: 0,
43976
44229
  precision: 0,
43977
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44230
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43978
44231
  verdict: "DORMANT",
43979
44232
  _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.",
43980
44233
  aiSpecific: false,
@@ -43985,14 +44238,25 @@ var signal_strength_default = {
43985
44238
  _v7Precision: 0,
43986
44239
  _v8Verdict: "DORMANT",
43987
44240
  _v8Lift: 1,
43988
- defaultOff: true
44241
+ defaultOff: true,
44242
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44243
+ _v10PositiveFires: 0,
44244
+ _v10NegativeFires: 0,
44245
+ _v10PositiveFiles: 0,
44246
+ _v10NegativeFiles: 0,
44247
+ _v10Precision: 0,
44248
+ _v10Recall: 0,
44249
+ _v10F1: 0,
44250
+ _v10Signal: "dormant",
44251
+ _v10Category: "db",
44252
+ _v10Severity: "high"
43989
44253
  },
43990
44254
  "db/missing-not-null": {
43991
44255
  recall: 0,
43992
44256
  fpRate: 0,
43993
44257
  ratio: 0,
43994
44258
  precision: 0,
43995
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44259
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
43996
44260
  verdict: "DORMANT",
43997
44261
  _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.",
43998
44262
  aiSpecific: false,
@@ -44003,14 +44267,25 @@ var signal_strength_default = {
44003
44267
  _v7Precision: 0,
44004
44268
  _v8Verdict: "DORMANT",
44005
44269
  _v8Lift: 1,
44006
- defaultOff: true
44270
+ defaultOff: true,
44271
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44272
+ _v10PositiveFires: 0,
44273
+ _v10NegativeFires: 0,
44274
+ _v10PositiveFiles: 0,
44275
+ _v10NegativeFiles: 0,
44276
+ _v10Precision: 0,
44277
+ _v10Recall: 0,
44278
+ _v10F1: 0,
44279
+ _v10Signal: "dormant",
44280
+ _v10Category: "db",
44281
+ _v10Severity: "high"
44007
44282
  },
44008
44283
  "db/naming-inconsistency": {
44009
44284
  recall: 0,
44010
44285
  fpRate: 0,
44011
44286
  ratio: 0,
44012
44287
  precision: 0,
44013
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44288
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44014
44289
  verdict: "DORMANT",
44015
44290
  _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.",
44016
44291
  aiSpecific: false,
@@ -44021,14 +44296,25 @@ var signal_strength_default = {
44021
44296
  _v7Precision: 0,
44022
44297
  _v8Verdict: "DORMANT",
44023
44298
  _v8Lift: 1,
44024
- defaultOff: true
44299
+ defaultOff: true,
44300
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44301
+ _v10PositiveFires: 0,
44302
+ _v10NegativeFires: 0,
44303
+ _v10PositiveFiles: 0,
44304
+ _v10NegativeFiles: 0,
44305
+ _v10Precision: 0,
44306
+ _v10Recall: 0,
44307
+ _v10F1: 0,
44308
+ _v10Signal: "dormant",
44309
+ _v10Category: "db",
44310
+ _v10Severity: "low"
44025
44311
  },
44026
44312
  "db/sql-concat": {
44027
44313
  recall: 5e-4,
44028
44314
  fpRate: 1e-4,
44029
44315
  ratio: 7511.26,
44030
44316
  precision: 0.8343,
44031
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44317
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44032
44318
  verdict: "USEFUL",
44033
44319
  _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).",
44034
44320
  aiSpecific: true,
@@ -44038,14 +44324,25 @@ var signal_strength_default = {
44038
44324
  _v7FpRate: 0,
44039
44325
  _v7Precision: 0,
44040
44326
  _v8Verdict: "USEFUL",
44041
- _v8Lift: 2046.08
44327
+ _v8Lift: 2046.08,
44328
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44329
+ _v10PositiveFires: 1495,
44330
+ _v10NegativeFires: 1197,
44331
+ _v10PositiveFiles: 539,
44332
+ _v10NegativeFiles: 402,
44333
+ _v10Precision: 0.57279,
44334
+ _v10Recall: 176e-5,
44335
+ _v10F1: 35e-4,
44336
+ _v10Signal: "weak",
44337
+ _v10Category: "db",
44338
+ _v10Severity: "high"
44042
44339
  },
44043
44340
  "dead/dead-branch": {
44044
44341
  recall: 2e-4,
44045
44342
  fpRate: 4e-4,
44046
44343
  ratio: 1080.68,
44047
44344
  precision: 0.4244,
44048
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44345
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44049
44346
  verdict: "OK",
44050
44347
  _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.",
44051
44348
  aiSpecific: true,
@@ -44055,14 +44352,25 @@ var signal_strength_default = {
44055
44352
  _v7FpRate: 0,
44056
44353
  _v7Precision: 0,
44057
44354
  _v8Verdict: "OK",
44058
- _v8Lift: 294.38
44355
+ _v8Lift: 294.38,
44356
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44357
+ _v10PositiveFires: 1556,
44358
+ _v10NegativeFires: 2489,
44359
+ _v10PositiveFiles: 1146,
44360
+ _v10NegativeFiles: 1038,
44361
+ _v10Precision: 0.52473,
44362
+ _v10Recall: 373e-5,
44363
+ _v10F1: 742e-5,
44364
+ _v10Signal: "weak",
44365
+ _v10Category: "logic",
44366
+ _v10Severity: "medium"
44059
44367
  },
44060
44368
  "dead/unreachable": {
44061
44369
  recall: 1e-4,
44062
44370
  fpRate: 6e-4,
44063
44371
  ratio: 153.14,
44064
44372
  precision: 0.0966,
44065
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44373
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44066
44374
  verdict: "OK",
44067
44375
  _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.",
44068
44376
  aiSpecific: true,
@@ -44072,14 +44380,25 @@ var signal_strength_default = {
44072
44380
  _v7FpRate: 0,
44073
44381
  _v7Precision: 0,
44074
44382
  _v8Verdict: "OK",
44075
- _v8Lift: 41.71
44383
+ _v8Lift: 41.71,
44384
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44385
+ _v10PositiveFires: 1921,
44386
+ _v10NegativeFires: 15118,
44387
+ _v10PositiveFiles: 262,
44388
+ _v10NegativeFiles: 801,
44389
+ _v10Precision: 0.24647,
44390
+ _v10Recall: 85e-5,
44391
+ _v10F1: 17e-4,
44392
+ _v10Signal: "inverted",
44393
+ _v10Category: "logic",
44394
+ _v10Severity: "high"
44076
44395
  },
44077
44396
  "dead/unused-import": {
44078
44397
  recall: 0.0379,
44079
44398
  fpRate: 0.0222,
44080
44399
  ratio: 30.06,
44081
44400
  precision: 0.6662,
44082
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44401
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44083
44402
  verdict: "USEFUL",
44084
44403
  _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.",
44085
44404
  aiSpecific: true,
@@ -44089,14 +44408,25 @@ var signal_strength_default = {
44089
44408
  _v7FpRate: 0,
44090
44409
  _v7Precision: 0,
44091
44410
  _v8Verdict: "USEFUL",
44092
- _v8Lift: 8.19
44411
+ _v8Lift: 8.19,
44412
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44413
+ _v10PositiveFires: 50165,
44414
+ _v10NegativeFires: 40287,
44415
+ _v10PositiveFiles: 25611,
44416
+ _v10NegativeFiles: 26497,
44417
+ _v10Precision: 0.4915,
44418
+ _v10Recall: 0.08346,
44419
+ _v10F1: 0.1427,
44420
+ _v10Signal: "weak",
44421
+ _v10Category: "logic",
44422
+ _v10Severity: "low"
44093
44423
  },
44094
44424
  "dead/unused-local": {
44095
44425
  recall: 0.0477,
44096
44426
  fpRate: 74e-4,
44097
44427
  ratio: 120.18,
44098
44428
  precision: 0.8834,
44099
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44429
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44100
44430
  verdict: "USEFUL",
44101
44431
  _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. v0.19 default-on (explicit defaultOff: false): P 88.3% / FPR 0.74% / 120x lift \u2014 code hygiene.",
44102
44432
  aiSpecific: true,
@@ -44107,14 +44437,25 @@ var signal_strength_default = {
44107
44437
  _v7Precision: 0,
44108
44438
  _v8Verdict: "USEFUL",
44109
44439
  _v8Lift: 32.74,
44110
- defaultOff: false
44440
+ defaultOff: false,
44441
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44442
+ _v10PositiveFires: 5297,
44443
+ _v10NegativeFires: 96187,
44444
+ _v10PositiveFiles: 1911,
44445
+ _v10NegativeFiles: 17277,
44446
+ _v10Precision: 0.09959,
44447
+ _v10Recall: 623e-5,
44448
+ _v10F1: 0.01172,
44449
+ _v10Signal: "inverted",
44450
+ _v10Category: "logic",
44451
+ _v10Severity: "low"
44111
44452
  },
44112
44453
  "dead/unused-parameter": {
44113
44454
  recall: 8e-4,
44114
44455
  fpRate: 27e-4,
44115
44456
  ratio: 98,
44116
44457
  precision: 0.2628,
44117
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44458
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44118
44459
  verdict: "OK",
44119
44460
  _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.",
44120
44461
  aiSpecific: true,
@@ -44124,14 +44465,25 @@ var signal_strength_default = {
44124
44465
  _v7FpRate: 0,
44125
44466
  _v7Precision: 0,
44126
44467
  _v8Verdict: "OK",
44127
- _v8Lift: 26.7
44468
+ _v8Lift: 26.7,
44469
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44470
+ _v10PositiveFires: 9141,
44471
+ _v10NegativeFires: 35271,
44472
+ _v10PositiveFiles: 2294,
44473
+ _v10NegativeFiles: 9280,
44474
+ _v10Precision: 0.1982,
44475
+ _v10Recall: 748e-5,
44476
+ _v10F1: 0.01441,
44477
+ _v10Signal: "inverted",
44478
+ _v10Category: "logic",
44479
+ _v10Severity: "low"
44128
44480
  },
44129
44481
  "docs/broken-link": {
44130
44482
  recall: 14e-4,
44131
44483
  fpRate: 23e-4,
44132
44484
  ratio: 178.13,
44133
44485
  precision: 0.4155,
44134
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44486
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44135
44487
  verdict: "OK",
44136
44488
  _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).",
44137
44489
  aiSpecific: false,
@@ -44141,14 +44493,25 @@ var signal_strength_default = {
44141
44493
  _v7FpRate: 0,
44142
44494
  _v7Precision: 0,
44143
44495
  _v8Verdict: "OK",
44144
- _v8Lift: 48.52
44496
+ _v8Lift: 48.52,
44497
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44498
+ _v10PositiveFires: 10455,
44499
+ _v10NegativeFires: 10287,
44500
+ _v10PositiveFiles: 2902,
44501
+ _v10NegativeFiles: 1720,
44502
+ _v10Precision: 0.62787,
44503
+ _v10Recall: 946e-5,
44504
+ _v10F1: 0.01863,
44505
+ _v10Signal: "weak",
44506
+ _v10Category: "docs",
44507
+ _v10Severity: "low"
44145
44508
  },
44146
44509
  "docs/stale-function-reference": {
44147
44510
  recall: 26e-4,
44148
44511
  fpRate: 5e-4,
44149
44512
  ratio: 1638.47,
44150
44513
  precision: 0.8515,
44151
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44514
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44152
44515
  verdict: "USEFUL",
44153
44516
  _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).",
44154
44517
  aiSpecific: false,
@@ -44158,14 +44521,25 @@ var signal_strength_default = {
44158
44521
  _v7FpRate: 0,
44159
44522
  _v7Precision: 0,
44160
44523
  _v8Verdict: "USEFUL",
44161
- _v8Lift: 446.32
44524
+ _v8Lift: 446.32,
44525
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44526
+ _v10PositiveFires: 2095,
44527
+ _v10NegativeFires: 340,
44528
+ _v10PositiveFiles: 1613,
44529
+ _v10NegativeFiles: 242,
44530
+ _v10Precision: 0.86954,
44531
+ _v10Recall: 526e-5,
44532
+ _v10F1: 0.01045,
44533
+ _v10Signal: "strong",
44534
+ _v10Category: "docs",
44535
+ _v10Severity: "medium"
44162
44536
  },
44163
44537
  "docs/stale-package-reference": {
44164
44538
  recall: 2e-4,
44165
44539
  fpRate: 4e-4,
44166
44540
  ratio: 939.43,
44167
44541
  precision: 0.3429,
44168
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44542
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44169
44543
  verdict: "OK",
44170
44544
  _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).",
44171
44545
  aiSpecific: false,
@@ -44175,14 +44549,25 @@ var signal_strength_default = {
44175
44549
  _v7FpRate: 0,
44176
44550
  _v7Precision: 0,
44177
44551
  _v8Verdict: "OK",
44178
- _v8Lift: 255.9
44552
+ _v8Lift: 255.9,
44553
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44554
+ _v10PositiveFires: 3923,
44555
+ _v10NegativeFires: 5014,
44556
+ _v10PositiveFiles: 458,
44557
+ _v10NegativeFiles: 634,
44558
+ _v10Precision: 0.41941,
44559
+ _v10Recall: 149e-5,
44560
+ _v10F1: 297e-5,
44561
+ _v10Signal: "weak",
44562
+ _v10Category: "docs",
44563
+ _v10Severity: "medium"
44179
44564
  },
44180
44565
  "dup/identical-block": {
44181
44566
  recall: 0,
44182
44567
  fpRate: 0,
44183
44568
  ratio: 1,
44184
44569
  precision: 0,
44185
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44570
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44186
44571
  verdict: "OK",
44187
44572
  defaultOff: false,
44188
44573
  _calibrationNote: "v0.19: new rule. v8.5 calibration does not run dup/* rules (the calibration script analyzes each file in isolation, but dup/* rules require cross-file state \u2014 the module-scope dedup cache is per-process, not per-file, so per-file analysis never produces cross-file matches and the rule's recall reads as 0). Scheduled for v0.22 calibration on the v9 corpus with a per-project dedup cache. v0.21.1 self-scan: 207 fires in src/ after WINDOW_SIZE 10\u219220 (was 575) \u2014 69% reduction. The actual precision/recall of these 207 fires is unverified ground truth. The rule ships ON (defaultOff=false) because its value is real (block-level duplications are a classic AI-fingerprint) and the corpus-measured 0.0 is a methodology artifact, not a real measurement. Verdict is OK (active, uncalibrated) rather than DORMANT (off, uncalibrated) to satisfy the 'every DORMANT rule must be defaultOff' guardrail.",
@@ -44193,14 +44578,25 @@ var signal_strength_default = {
44193
44578
  _v7FpRate: 0,
44194
44579
  _v7Precision: 0,
44195
44580
  _v8Verdict: "DORMANT",
44196
- _v8Lift: 1
44581
+ _v8Lift: 1,
44582
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44583
+ _v10PositiveFires: 1110434,
44584
+ _v10NegativeFires: 906686,
44585
+ _v10PositiveFiles: 11148,
44586
+ _v10NegativeFiles: 6355,
44587
+ _v10Precision: 0.63692,
44588
+ _v10Recall: 0.03633,
44589
+ _v10F1: 0.06874,
44590
+ _v10Signal: "weak",
44591
+ _v10Category: "logic",
44592
+ _v10Severity: "medium"
44197
44593
  },
44198
44594
  "dup/near-duplicate": {
44199
44595
  recall: 0,
44200
44596
  fpRate: 0,
44201
44597
  ratio: 1,
44202
44598
  precision: 0,
44203
- lastCalibratedAt: "2026-07-02T00:00:00Z",
44599
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44204
44600
  verdict: "DORMANT",
44205
44601
  defaultOff: true,
44206
44602
  _calibrationNote: "v0.23.0: new rule, not yet calibrated. Type-2 clone detector using MinHash + Jaccard similarity on k-gram token shingles (k=5). The rule's effectiveness depends on the v9 corpus calibration (see v9-plan-2026-07-02-update.md). The rule catches Type-2a (whitespace + comment differences) reliably; full-rename detection (Type-2b) requires identifier canonicalization or AST similarity (planned for v0.27.0 dup/structural-clone). Default OFF (DORMANT) until v9 corpus calibration confirms precision/recall thresholds.",
@@ -44209,14 +44605,25 @@ var signal_strength_default = {
44209
44605
  _v7Lift: 1,
44210
44606
  _v7Recall: 0,
44211
44607
  _v7FpRate: 0,
44212
- _v7Precision: 0
44608
+ _v7Precision: 0,
44609
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44610
+ _v10PositiveFires: 11530,
44611
+ _v10NegativeFires: 12753,
44612
+ _v10PositiveFiles: 11530,
44613
+ _v10NegativeFiles: 12753,
44614
+ _v10Precision: 0.47482,
44615
+ _v10Recall: 0.03758,
44616
+ _v10F1: 0.06964,
44617
+ _v10Signal: "weak",
44618
+ _v10Category: "logic",
44619
+ _v10Severity: "medium"
44213
44620
  },
44214
44621
  "dup/structural-clone": {
44215
44622
  recall: 0,
44216
44623
  fpRate: 0,
44217
44624
  ratio: 1,
44218
44625
  precision: 0,
44219
- lastCalibratedAt: "2026-07-02T00:00:00Z",
44626
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44220
44627
  verdict: "DORMANT",
44221
44628
  defaultOff: true,
44222
44629
  _calibrationNote: "v0.24.0: new rule, not yet calibrated. Type-3 clone detector using a two-stage MinHash pipeline \u2014 stage 1 canonicalizes identifiers/literals (rename-invariant k=8 shingles), stage 2 verifies with identifier-aware k=5 shingles (existing shingleSet). Closes the gap near-duplicate left open: identifier renames (Type-3) and statement add/remove. Default OFF (DORMANT) until v9 Java corpus calibration confirms precision/recall thresholds and the v0.24.1 patch raises minHits from 1 to 3.",
@@ -44225,14 +44632,25 @@ var signal_strength_default = {
44225
44632
  _v7Lift: 1,
44226
44633
  _v7Recall: 0,
44227
44634
  _v7FpRate: 0,
44228
- _v7Precision: 0
44635
+ _v7Precision: 0,
44636
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44637
+ _v10PositiveFires: 13278,
44638
+ _v10NegativeFires: 14006,
44639
+ _v10PositiveFiles: 13278,
44640
+ _v10NegativeFiles: 14006,
44641
+ _v10Precision: 0.48666,
44642
+ _v10Recall: 0.04327,
44643
+ _v10F1: 0.07948,
44644
+ _v10Signal: "weak",
44645
+ _v10Category: "logic",
44646
+ _v10Severity: "medium"
44229
44647
  },
44230
44648
  "go/error-wrap-without-context": {
44231
44649
  recall: 0,
44232
44650
  fpRate: 0,
44233
44651
  ratio: 1,
44234
44652
  precision: 0,
44235
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44653
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44236
44654
  verdict: "DORMANT",
44237
44655
  _calibrationNote: "v0.19: new rule (fmt.Errorf wrap with generic message \u2014 needs operation context). Not yet calibrated. Scheduled for v9 calibration.",
44238
44656
  aiSpecific: true,
@@ -44243,14 +44661,25 @@ var signal_strength_default = {
44243
44661
  _v7Precision: 0,
44244
44662
  _v8Verdict: "DORMANT",
44245
44663
  _v8Lift: 1,
44246
- defaultOff: true
44664
+ defaultOff: true,
44665
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44666
+ _v10PositiveFires: 1,
44667
+ _v10NegativeFires: 0,
44668
+ _v10PositiveFiles: 1,
44669
+ _v10NegativeFiles: 0,
44670
+ _v10Precision: 1,
44671
+ _v10Recall: 0,
44672
+ _v10F1: 1e-5,
44673
+ _v10Signal: "dormant",
44674
+ _v10Category: "typo",
44675
+ _v10Severity: "low"
44247
44676
  },
44248
44677
  "go/nil-slice-vs-empty": {
44249
44678
  recall: 0,
44250
44679
  fpRate: 0,
44251
44680
  ratio: 1,
44252
44681
  precision: 0,
44253
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44682
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44254
44683
  verdict: "DORMANT",
44255
44684
  _calibrationNote: "v0.19: new rule (Variable declared nil slice but assigned empty slice). Not yet calibrated. Scheduled for v9 calibration.",
44256
44685
  aiSpecific: true,
@@ -44261,14 +44690,25 @@ var signal_strength_default = {
44261
44690
  _v7Precision: 0,
44262
44691
  _v8Verdict: "DORMANT",
44263
44692
  _v8Lift: 1,
44264
- defaultOff: true
44693
+ defaultOff: true,
44694
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44695
+ _v10PositiveFires: 169,
44696
+ _v10NegativeFires: 1,
44697
+ _v10PositiveFiles: 125,
44698
+ _v10NegativeFiles: 1,
44699
+ _v10Precision: 0.99206,
44700
+ _v10Recall: 41e-5,
44701
+ _v10F1: 81e-5,
44702
+ _v10Signal: "strong",
44703
+ _v10Category: "typo",
44704
+ _v10Severity: "low"
44265
44705
  },
44266
44706
  "go/struct-tag-inconsistency": {
44267
44707
  recall: 0,
44268
44708
  fpRate: 0,
44269
44709
  ratio: 1,
44270
44710
  precision: 0,
44271
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44711
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44272
44712
  verdict: "DORMANT",
44273
44713
  _calibrationNote: "v0.19: new rule (Struct fields mix json tag styles). Not yet calibrated. Scheduled for v9 calibration.",
44274
44714
  aiSpecific: true,
@@ -44279,14 +44719,25 @@ var signal_strength_default = {
44279
44719
  _v7Precision: 0,
44280
44720
  _v8Verdict: "DORMANT",
44281
44721
  _v8Lift: 1,
44282
- defaultOff: true
44722
+ defaultOff: true,
44723
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44724
+ _v10PositiveFires: 916,
44725
+ _v10NegativeFires: 2,
44726
+ _v10PositiveFiles: 456,
44727
+ _v10NegativeFiles: 2,
44728
+ _v10Precision: 0.99563,
44729
+ _v10Recall: 149e-5,
44730
+ _v10F1: 297e-5,
44731
+ _v10Signal: "strong",
44732
+ _v10Category: "typo",
44733
+ _v10Severity: "low"
44283
44734
  },
44284
44735
  "layout/forced-layout": {
44285
44736
  recall: 0,
44286
44737
  fpRate: 0,
44287
44738
  ratio: 0,
44288
44739
  precision: 0,
44289
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44740
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44290
44741
  verdict: "DORMANT",
44291
44742
  _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.",
44292
44743
  aiSpecific: true,
@@ -44297,14 +44748,25 @@ var signal_strength_default = {
44297
44748
  _v7Precision: 0,
44298
44749
  _v8Verdict: "DORMANT",
44299
44750
  _v8Lift: 1,
44300
- defaultOff: true
44751
+ defaultOff: true,
44752
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44753
+ _v10PositiveFires: 0,
44754
+ _v10NegativeFires: 0,
44755
+ _v10PositiveFiles: 0,
44756
+ _v10NegativeFiles: 0,
44757
+ _v10Precision: 0,
44758
+ _v10Recall: 0,
44759
+ _v10F1: 0,
44760
+ _v10Signal: "dormant",
44761
+ _v10Category: "layout",
44762
+ _v10Severity: "medium"
44301
44763
  },
44302
44764
  "layout/gap-monopoly": {
44303
44765
  recall: 3e-4,
44304
44766
  fpRate: 1e-4,
44305
44767
  ratio: 8859.33,
44306
44768
  precision: 0.8083,
44307
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44769
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44308
44770
  verdict: "USEFUL",
44309
44771
  _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).",
44310
44772
  aiSpecific: false,
@@ -44314,14 +44776,25 @@ var signal_strength_default = {
44314
44776
  _v7FpRate: 1e-4,
44315
44777
  _v7Precision: 0.7928,
44316
44778
  _v8Verdict: "USEFUL",
44317
- _v8Lift: 99999
44779
+ _v8Lift: 99999,
44780
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44781
+ _v10PositiveFires: 229,
44782
+ _v10NegativeFires: 52,
44783
+ _v10PositiveFiles: 72,
44784
+ _v10NegativeFiles: 22,
44785
+ _v10Precision: 0.76596,
44786
+ _v10Recall: 23e-5,
44787
+ _v10F1: 47e-5,
44788
+ _v10Signal: "strong",
44789
+ _v10Category: "layout",
44790
+ _v10Severity: "medium"
44318
44791
  },
44319
44792
  "layout/math-element-uniformity": {
44320
44793
  recall: 29e-4,
44321
44794
  fpRate: 1e-3,
44322
44795
  ratio: 770.74,
44323
44796
  precision: 0.7705,
44324
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44797
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44325
44798
  verdict: "USEFUL",
44326
44799
  _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).",
44327
44800
  aiSpecific: true,
@@ -44331,14 +44804,25 @@ var signal_strength_default = {
44331
44804
  _v7FpRate: 12e-4,
44332
44805
  _v7Precision: 0.7475,
44333
44806
  _v8Verdict: "USEFUL",
44334
- _v8Lift: 2211.5
44807
+ _v8Lift: 2211.5,
44808
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44809
+ _v10PositiveFires: 599,
44810
+ _v10NegativeFires: 237,
44811
+ _v10PositiveFiles: 599,
44812
+ _v10NegativeFiles: 237,
44813
+ _v10Precision: 0.71651,
44814
+ _v10Recall: 195e-5,
44815
+ _v10F1: 389e-5,
44816
+ _v10Signal: "strong",
44817
+ _v10Category: "layout",
44818
+ _v10Severity: "medium"
44335
44819
  },
44336
44820
  "layout/math-grid-uniformity": {
44337
44821
  recall: 3e-4,
44338
44822
  fpRate: 1e-4,
44339
44823
  ratio: 5839.98,
44340
44824
  precision: 0.7182,
44341
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44825
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44342
44826
  verdict: "USEFUL",
44343
44827
  _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).",
44344
44828
  aiSpecific: true,
@@ -44348,14 +44832,25 @@ var signal_strength_default = {
44348
44832
  _v7FpRate: 2e-4,
44349
44833
  _v7Precision: 0.6907,
44350
44834
  _v8Verdict: "USEFUL",
44351
- _v8Lift: 63384.92
44835
+ _v8Lift: 63384.92,
44836
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44837
+ _v10PositiveFires: 63,
44838
+ _v10NegativeFires: 34,
44839
+ _v10PositiveFiles: 63,
44840
+ _v10NegativeFiles: 34,
44841
+ _v10Precision: 0.64948,
44842
+ _v10Recall: 21e-5,
44843
+ _v10F1: 41e-5,
44844
+ _v10Signal: "weak",
44845
+ _v10Category: "layout",
44846
+ _v10Severity: "high"
44352
44847
  },
44353
44848
  "layout/spacing-grid": {
44354
44849
  recall: 2e-4,
44355
44850
  fpRate: 2e-4,
44356
44851
  ratio: 4051.29,
44357
44852
  precision: 0.6429,
44358
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44853
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44359
44854
  verdict: "USEFUL",
44360
44855
  _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).",
44361
44856
  aiSpecific: false,
@@ -44365,14 +44860,25 @@ var signal_strength_default = {
44365
44860
  _v7FpRate: 1e-4,
44366
44861
  _v7Precision: 0.7222,
44367
44862
  _v8Verdict: "USEFUL",
44368
- _v8Lift: 1562.77
44863
+ _v8Lift: 1562.77,
44864
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44865
+ _v10PositiveFires: 231,
44866
+ _v10NegativeFires: 105,
44867
+ _v10PositiveFiles: 43,
44868
+ _v10NegativeFiles: 15,
44869
+ _v10Precision: 0.74138,
44870
+ _v10Recall: 14e-5,
44871
+ _v10F1: 28e-5,
44872
+ _v10Signal: "strong",
44873
+ _v10Category: "layout",
44874
+ _v10Severity: "medium"
44369
44875
  },
44370
44876
  "logic/bayesian-conditional": {
44371
44877
  recall: 0,
44372
44878
  fpRate: 0,
44373
44879
  ratio: 0,
44374
44880
  precision: 0,
44375
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44881
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44376
44882
  verdict: "DORMANT",
44377
44883
  _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.",
44378
44884
  aiSpecific: true,
@@ -44383,14 +44889,25 @@ var signal_strength_default = {
44383
44889
  _v7Precision: 0,
44384
44890
  _v8Verdict: "DORMANT",
44385
44891
  _v8Lift: 1,
44386
- defaultOff: true
44892
+ defaultOff: true,
44893
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44894
+ _v10PositiveFires: 0,
44895
+ _v10NegativeFires: 0,
44896
+ _v10PositiveFiles: 0,
44897
+ _v10NegativeFiles: 0,
44898
+ _v10Precision: 0,
44899
+ _v10Recall: 0,
44900
+ _v10F1: 0,
44901
+ _v10Signal: "dormant",
44902
+ _v10Category: "logic",
44903
+ _v10Severity: "high"
44387
44904
  },
44388
44905
  "logic/boundary-violation": {
44389
44906
  recall: 0.0274,
44390
44907
  fpRate: 0.0137,
44391
44908
  ratio: 51.32,
44392
44909
  precision: 0.7006,
44393
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44910
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44394
44911
  verdict: "USEFUL",
44395
44912
  _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).",
44396
44913
  aiSpecific: false,
@@ -44400,14 +44917,25 @@ var signal_strength_default = {
44400
44917
  _v7FpRate: 0.0176,
44401
44918
  _v7Precision: 0.6601,
44402
44919
  _v8Verdict: "USEFUL",
44403
- _v8Lift: 298.57
44920
+ _v8Lift: 298.57,
44921
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44922
+ _v10PositiveFires: 24066,
44923
+ _v10NegativeFires: 6875,
44924
+ _v10PositiveFiles: 6123,
44925
+ _v10NegativeFiles: 2813,
44926
+ _v10Precision: 0.68521,
44927
+ _v10Recall: 0.01995,
44928
+ _v10F1: 0.03878,
44929
+ _v10Signal: "weak",
44930
+ _v10Category: "logic",
44931
+ _v10Severity: "high"
44404
44932
  },
44405
44933
  "logic/ghost-defensive": {
44406
44934
  recall: 1e-4,
44407
44935
  fpRate: 0,
44408
44936
  ratio: 112035.56,
44409
44937
  precision: 0.8889,
44410
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44938
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44411
44939
  verdict: "USEFUL",
44412
44940
  _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). v0.19 default-on (explicit defaultOff: false): P 88.9% / 112k lift \u2014 code smell.",
44413
44941
  aiSpecific: true,
@@ -44418,14 +44946,25 @@ var signal_strength_default = {
44418
44946
  _v7Precision: 0.8824,
44419
44947
  _v8Verdict: "USEFUL",
44420
44948
  _v8Lift: 99999,
44421
- defaultOff: false
44949
+ defaultOff: false,
44950
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44951
+ _v10PositiveFires: 87,
44952
+ _v10NegativeFires: 21,
44953
+ _v10PositiveFiles: 19,
44954
+ _v10NegativeFiles: 5,
44955
+ _v10Precision: 0.79167,
44956
+ _v10Recall: 6e-5,
44957
+ _v10F1: 12e-5,
44958
+ _v10Signal: "strong",
44959
+ _v10Category: "logic",
44960
+ _v10Severity: "medium"
44422
44961
  },
44423
44962
  "logic/heaps-deviation": {
44424
44963
  recall: 0.0126,
44425
44964
  fpRate: 0.0178,
44426
44965
  ratio: 25.54,
44427
44966
  precision: 0.4536,
44428
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44967
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44429
44968
  verdict: "OK",
44430
44969
  _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).",
44431
44970
  aiSpecific: false,
@@ -44435,14 +44974,25 @@ var signal_strength_default = {
44435
44974
  _v7FpRate: 0.0132,
44436
44975
  _v7Precision: 0.5461,
44437
44976
  _v8Verdict: "OK",
44438
- _v8Lift: 9.36
44977
+ _v8Lift: 9.36,
44978
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
44979
+ _v10PositiveFires: 8012,
44980
+ _v10NegativeFires: 8029,
44981
+ _v10PositiveFiles: 8012,
44982
+ _v10NegativeFiles: 8029,
44983
+ _v10Precision: 0.49947,
44984
+ _v10Recall: 0.02611,
44985
+ _v10F1: 0.04963,
44986
+ _v10Signal: "weak",
44987
+ _v10Category: "logic",
44988
+ _v10Severity: "medium"
44439
44989
  },
44440
44990
  "logic/key-prop-missing": {
44441
44991
  recall: 16e-4,
44442
44992
  fpRate: 11e-4,
44443
44993
  ratio: 574.52,
44444
44994
  precision: 0.629,
44445
- lastCalibratedAt: "2026-07-01T00:00:00Z",
44995
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44446
44996
  verdict: "USEFUL",
44447
44997
  _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).",
44448
44998
  aiSpecific: false,
@@ -44452,14 +45002,25 @@ var signal_strength_default = {
44452
45002
  _v7FpRate: 14e-4,
44453
45003
  _v7Precision: 0.6246,
44454
45004
  _v8Verdict: "USEFUL",
44455
- _v8Lift: 1760.69
45005
+ _v8Lift: 1760.69,
45006
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45007
+ _v10PositiveFires: 1862,
45008
+ _v10NegativeFires: 974,
45009
+ _v10PositiveFiles: 528,
45010
+ _v10NegativeFiles: 292,
45011
+ _v10Precision: 0.6439,
45012
+ _v10Recall: 172e-5,
45013
+ _v10F1: 343e-5,
45014
+ _v10Signal: "weak",
45015
+ _v10Category: "logic",
45016
+ _v10Severity: "high"
44456
45017
  },
44457
45018
  "logic/math-any-density": {
44458
45019
  recall: 17e-4,
44459
45020
  fpRate: 13e-4,
44460
45021
  ratio: 464.59,
44461
45022
  precision: 0.6027,
44462
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45023
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44463
45024
  verdict: "USEFUL",
44464
45025
  _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).",
44465
45026
  aiSpecific: true,
@@ -44469,14 +45030,25 @@ var signal_strength_default = {
44469
45030
  _v7FpRate: 13e-4,
44470
45031
  _v7Precision: 0.6035,
44471
45032
  _v8Verdict: "USEFUL",
44472
- _v8Lift: 515
45033
+ _v8Lift: 515,
45034
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45035
+ _v10PositiveFires: 547,
45036
+ _v10NegativeFires: 698,
45037
+ _v10PositiveFiles: 547,
45038
+ _v10NegativeFiles: 698,
45039
+ _v10Precision: 0.43936,
45040
+ _v10Recall: 178e-5,
45041
+ _v10F1: 355e-5,
45042
+ _v10Signal: "weak",
45043
+ _v10Category: "logic",
45044
+ _v10Severity: "high"
44473
45045
  },
44474
45046
  "logic/math-console-log-storm": {
44475
45047
  recall: 65e-4,
44476
45048
  fpRate: 11e-4,
44477
45049
  ratio: 794.4,
44478
45050
  precision: 0.8729,
44479
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45051
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44480
45052
  verdict: "USEFUL",
44481
45053
  _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).",
44482
45054
  aiSpecific: true,
@@ -44486,14 +45058,25 @@ var signal_strength_default = {
44486
45058
  _v7FpRate: 11e-4,
44487
45059
  _v7Precision: 0.8968,
44488
45060
  _v8Verdict: "USEFUL",
44489
- _v8Lift: 595.24
45061
+ _v8Lift: 595.24,
45062
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45063
+ _v10PositiveFires: 2627,
45064
+ _v10NegativeFires: 1014,
45065
+ _v10PositiveFiles: 2627,
45066
+ _v10NegativeFiles: 1014,
45067
+ _v10Precision: 0.72151,
45068
+ _v10Recall: 856e-5,
45069
+ _v10F1: 0.01692,
45070
+ _v10Signal: "strong",
45071
+ _v10Category: "logic",
45072
+ _v10Severity: "high"
44490
45073
  },
44491
45074
  "logic/math-gini-class-usage": {
44492
45075
  recall: 13e-4,
44493
45076
  fpRate: 2e-4,
44494
45077
  ratio: 4648.6,
44495
45078
  precision: 0.8852,
44496
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45079
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44497
45080
  verdict: "USEFUL",
44498
45081
  _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).",
44499
45082
  aiSpecific: true,
@@ -44503,14 +45086,25 @@ var signal_strength_default = {
44503
45086
  _v7FpRate: 3e-4,
44504
45087
  _v7Precision: 0.8683,
44505
45088
  _v8Verdict: "USEFUL",
44506
- _v8Lift: 67541.31
45089
+ _v8Lift: 67541.31,
45090
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45091
+ _v10PositiveFires: 250,
45092
+ _v10NegativeFires: 27,
45093
+ _v10PositiveFiles: 250,
45094
+ _v10NegativeFiles: 27,
45095
+ _v10Precision: 0.90253,
45096
+ _v10Recall: 81e-5,
45097
+ _v10F1: 163e-5,
45098
+ _v10Signal: "strong",
45099
+ _v10Category: "logic",
45100
+ _v10Severity: "high"
44507
45101
  },
44508
45102
  "logic/math-variable-name-entropy": {
44509
45103
  recall: 2e-4,
44510
45104
  fpRate: 1e-4,
44511
45105
  ratio: 4548.81,
44512
45106
  precision: 0.6316,
44513
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45107
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44514
45108
  verdict: "USEFUL",
44515
45109
  _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).",
44516
45110
  aiSpecific: false,
@@ -44520,14 +45114,25 @@ var signal_strength_default = {
44520
45114
  _v7FpRate: 1e-4,
44521
45115
  _v7Precision: 0.5806,
44522
45116
  _v8Verdict: "USEFUL",
44523
- _v8Lift: 5548.85
45117
+ _v8Lift: 5548.85,
45118
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45119
+ _v10PositiveFires: 53,
45120
+ _v10NegativeFires: 239,
45121
+ _v10PositiveFiles: 53,
45122
+ _v10NegativeFiles: 239,
45123
+ _v10Precision: 0.18151,
45124
+ _v10Recall: 17e-5,
45125
+ _v10F1: 35e-5,
45126
+ _v10Signal: "inverted",
45127
+ _v10Category: "logic",
45128
+ _v10Severity: "high"
44524
45129
  },
44525
45130
  "logic/optimistic-no-rollback": {
44526
45131
  recall: 12e-4,
44527
45132
  fpRate: 2e-4,
44528
45133
  ratio: 3523.57,
44529
45134
  precision: 0.8527,
44530
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45135
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44531
45136
  verdict: "USEFUL",
44532
45137
  _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).",
44533
45138
  aiSpecific: true,
@@ -44537,14 +45142,25 @@ var signal_strength_default = {
44537
45142
  _v7FpRate: 3e-4,
44538
45143
  _v7Precision: 0.824,
44539
45144
  _v8Verdict: "USEFUL",
44540
- _v8Lift: 67726.36
45145
+ _v8Lift: 67726.36,
45146
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45147
+ _v10PositiveFires: 375,
45148
+ _v10NegativeFires: 67,
45149
+ _v10PositiveFiles: 312,
45150
+ _v10NegativeFiles: 51,
45151
+ _v10Precision: 0.8595,
45152
+ _v10Recall: 102e-5,
45153
+ _v10F1: 203e-5,
45154
+ _v10Signal: "strong",
45155
+ _v10Category: "logic",
45156
+ _v10Severity: "high"
44541
45157
  },
44542
45158
  "logic/qwik-hook-leak": {
44543
45159
  recall: 0,
44544
45160
  fpRate: 0,
44545
45161
  ratio: 0,
44546
45162
  precision: 0,
44547
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45163
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44548
45164
  verdict: "DORMANT",
44549
45165
  _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.",
44550
45166
  aiSpecific: true,
@@ -44555,14 +45171,25 @@ var signal_strength_default = {
44555
45171
  _v7Precision: 0,
44556
45172
  _v8Verdict: "DORMANT",
44557
45173
  _v8Lift: 1,
44558
- defaultOff: true
45174
+ defaultOff: true,
45175
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45176
+ _v10PositiveFires: 0,
45177
+ _v10NegativeFires: 0,
45178
+ _v10PositiveFiles: 0,
45179
+ _v10NegativeFiles: 0,
45180
+ _v10Precision: 0,
45181
+ _v10Recall: 0,
45182
+ _v10F1: 0,
45183
+ _v10Signal: "dormant",
45184
+ _v10Category: "logic",
45185
+ _v10Severity: "high"
44559
45186
  },
44560
45187
  "logic/reactive-hook-soup": {
44561
45188
  recall: 41e-4,
44562
45189
  fpRate: 6e-4,
44563
45190
  ratio: 1370.15,
44564
45191
  precision: 0.8805,
44565
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45192
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44566
45193
  verdict: "USEFUL",
44567
45194
  _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).",
44568
45195
  aiSpecific: true,
@@ -44572,14 +45199,25 @@ var signal_strength_default = {
44572
45199
  _v7FpRate: 9e-4,
44573
45200
  _v7Precision: 0.8476,
44574
45201
  _v8Verdict: "USEFUL",
44575
- _v8Lift: 99999
45202
+ _v8Lift: 99999,
45203
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45204
+ _v10PositiveFires: 955,
45205
+ _v10NegativeFires: 141,
45206
+ _v10PositiveFiles: 931,
45207
+ _v10NegativeFiles: 140,
45208
+ _v10Precision: 0.86928,
45209
+ _v10Recall: 303e-5,
45210
+ _v10F1: 605e-5,
45211
+ _v10Signal: "strong",
45212
+ _v10Category: "logic",
45213
+ _v10Severity: "medium"
44576
45214
  },
44577
45215
  "logic/zipf-slope-anomaly": {
44578
45216
  recall: 0.0168,
44579
45217
  fpRate: 0.0111,
44580
45218
  ratio: 57.13,
44581
45219
  precision: 0.6369,
44582
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45220
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44583
45221
  verdict: "USEFUL",
44584
45222
  _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).",
44585
45223
  aiSpecific: false,
@@ -44589,14 +45227,25 @@ var signal_strength_default = {
44589
45227
  _v7FpRate: 88e-4,
44590
45228
  _v7Precision: 0.6983,
44591
45229
  _v8Verdict: "USEFUL",
44592
- _v8Lift: 28.59
45230
+ _v8Lift: 28.59,
45231
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45232
+ _v10PositiveFires: 10798,
45233
+ _v10NegativeFires: 6951,
45234
+ _v10PositiveFiles: 10798,
45235
+ _v10NegativeFiles: 6951,
45236
+ _v10Precision: 0.60837,
45237
+ _v10Recall: 0.03519,
45238
+ _v10F1: 0.06653,
45239
+ _v10Signal: "weak",
45240
+ _v10Category: "logic",
45241
+ _v10Severity: "medium"
44593
45242
  },
44594
45243
  "logic/zombie-state": {
44595
45244
  recall: 1e-4,
44596
45245
  fpRate: 0,
44597
45246
  ratio: 119891.71,
44598
45247
  precision: 0.9512,
44599
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45248
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44600
45249
  verdict: "USEFUL",
44601
45250
  _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).",
44602
45251
  aiSpecific: true,
@@ -44606,14 +45255,25 @@ var signal_strength_default = {
44606
45255
  _v7FpRate: 0,
44607
45256
  _v7Precision: 0.9231,
44608
45257
  _v8Verdict: "USEFUL",
44609
- _v8Lift: 99999
45258
+ _v8Lift: 99999,
45259
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45260
+ _v10PositiveFires: 49,
45261
+ _v10NegativeFires: 0,
45262
+ _v10PositiveFiles: 30,
45263
+ _v10NegativeFiles: 0,
45264
+ _v10Precision: 1,
45265
+ _v10Recall: 1e-4,
45266
+ _v10F1: 2e-4,
45267
+ _v10Signal: "strong",
45268
+ _v10Category: "logic",
45269
+ _v10Severity: "medium"
44610
45270
  },
44611
45271
  "perf/cls-image": {
44612
45272
  recall: 2e-4,
44613
45273
  fpRate: 2e-4,
44614
45274
  ratio: 2895.78,
44615
45275
  precision: 0.5514,
44616
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45276
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44617
45277
  verdict: "USEFUL",
44618
45278
  _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).",
44619
45279
  aiSpecific: false,
@@ -44623,14 +45283,25 @@ var signal_strength_default = {
44623
45283
  _v7FpRate: 3e-4,
44624
45284
  _v7Precision: 0.5104,
44625
45285
  _v8Verdict: "USEFUL",
44626
- _v8Lift: 62424.55
45286
+ _v8Lift: 62424.55,
45287
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45288
+ _v10PositiveFires: 49,
45289
+ _v10NegativeFires: 59,
45290
+ _v10PositiveFiles: 47,
45291
+ _v10NegativeFiles: 47,
45292
+ _v10Precision: 0.5,
45293
+ _v10Recall: 15e-5,
45294
+ _v10F1: 31e-5,
45295
+ _v10Signal: "weak",
45296
+ _v10Category: "perf",
45297
+ _v10Severity: "low"
44627
45298
  },
44628
45299
  "perf/css-bloat": {
44629
45300
  recall: 0.0126,
44630
45301
  fpRate: 24e-4,
44631
45302
  ratio: 365.63,
44632
45303
  precision: 0.8616,
44633
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45304
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44634
45305
  verdict: "USEFUL",
44635
45306
  _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).",
44636
45307
  aiSpecific: false,
@@ -44640,14 +45311,25 @@ var signal_strength_default = {
44640
45311
  _v7FpRate: 32e-4,
44641
45312
  _v7Precision: 0.8252,
44642
45313
  _v8Verdict: "USEFUL",
44643
- _v8Lift: 22813.54
45314
+ _v8Lift: 22813.54,
45315
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45316
+ _v10PositiveFires: 21050,
45317
+ _v10NegativeFires: 4331,
45318
+ _v10PositiveFiles: 5842,
45319
+ _v10NegativeFiles: 1665,
45320
+ _v10Precision: 0.77821,
45321
+ _v10Recall: 0.01904,
45322
+ _v10F1: 0.03717,
45323
+ _v10Signal: "strong",
45324
+ _v10Category: "perf",
45325
+ _v10Severity: "low"
44644
45326
  },
44645
45327
  "perf/halstead-anomaly": {
44646
45328
  recall: 0,
44647
45329
  fpRate: 0,
44648
45330
  ratio: 75624,
44649
45331
  precision: 0.6,
44650
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45332
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44651
45333
  verdict: "USEFUL",
44652
45334
  _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).",
44653
45335
  aiSpecific: true,
@@ -44657,14 +45339,25 @@ var signal_strength_default = {
44657
45339
  _v7FpRate: 0,
44658
45340
  _v7Precision: 0.75,
44659
45341
  _v8Verdict: "INVERTED",
44660
- _v8Lift: 0
45342
+ _v8Lift: 0,
45343
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45344
+ _v10PositiveFires: 5,
45345
+ _v10NegativeFires: 0,
45346
+ _v10PositiveFiles: 3,
45347
+ _v10NegativeFiles: 0,
45348
+ _v10Precision: 1,
45349
+ _v10Recall: 1e-5,
45350
+ _v10F1: 2e-5,
45351
+ _v10Signal: "dormant",
45352
+ _v10Category: "perf",
45353
+ _v10Severity: "medium"
44661
45354
  },
44662
45355
  "product/terminology-drift": {
44663
45356
  recall: 91e-4,
44664
45357
  fpRate: 21e-4,
44665
45358
  ratio: 397.75,
44666
45359
  precision: 0.8347,
44667
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45360
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44668
45361
  verdict: "USEFUL",
44669
45362
  _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).",
44670
45363
  aiSpecific: false,
@@ -44674,14 +45367,25 @@ var signal_strength_default = {
44674
45367
  _v7FpRate: 28e-4,
44675
45368
  _v7Precision: 0.7956,
44676
45369
  _v8Verdict: "USEFUL",
44677
- _v8Lift: 8477.9
45370
+ _v8Lift: 8477.9,
45371
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45372
+ _v10PositiveFires: 8315,
45373
+ _v10NegativeFires: 1538,
45374
+ _v10PositiveFiles: 2161,
45375
+ _v10NegativeFiles: 444,
45376
+ _v10Precision: 0.82956,
45377
+ _v10Recall: 704e-5,
45378
+ _v10F1: 0.01397,
45379
+ _v10Signal: "strong",
45380
+ _v10Category: "arch",
45381
+ _v10Severity: "medium"
44678
45382
  },
44679
45383
  "product/ux-pattern-fragmentation": {
44680
45384
  recall: 1e-4,
44681
45385
  fpRate: 0,
44682
45386
  ratio: 22864.4,
44683
45387
  precision: 0.8163,
44684
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45388
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44685
45389
  verdict: "USEFUL",
44686
45390
  _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).",
44687
45391
  aiSpecific: true,
@@ -44691,14 +45395,25 @@ var signal_strength_default = {
44691
45395
  _v7FpRate: 0,
44692
45396
  _v7Precision: 0.8,
44693
45397
  _v8Verdict: "USEFUL",
44694
- _v8Lift: 61037.33
45398
+ _v8Lift: 61037.33,
45399
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45400
+ _v10PositiveFires: 36,
45401
+ _v10NegativeFires: 12,
45402
+ _v10PositiveFiles: 34,
45403
+ _v10NegativeFiles: 9,
45404
+ _v10Precision: 0.7907,
45405
+ _v10Recall: 11e-5,
45406
+ _v10F1: 22e-5,
45407
+ _v10Signal: "strong",
45408
+ _v10Category: "arch",
45409
+ _v10Severity: "medium"
44695
45410
  },
44696
45411
  "rust/stringly-typed": {
44697
45412
  recall: 2e-4,
44698
45413
  fpRate: 0,
44699
45414
  ratio: 24735.12,
44700
45415
  precision: 0.8831,
44701
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45416
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44702
45417
  verdict: "USEFUL",
44703
45418
  _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).",
44704
45419
  aiSpecific: true,
@@ -44708,14 +45423,25 @@ var signal_strength_default = {
44708
45423
  _v7FpRate: 0,
44709
45424
  _v7Precision: 0,
44710
45425
  _v8Verdict: "USEFUL",
44711
- _v8Lift: 6737.89
45426
+ _v8Lift: 6737.89,
45427
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45428
+ _v10PositiveFires: 30,
45429
+ _v10NegativeFires: 25,
45430
+ _v10PositiveFiles: 21,
45431
+ _v10NegativeFiles: 13,
45432
+ _v10Precision: 0.61765,
45433
+ _v10Recall: 7e-5,
45434
+ _v10F1: 14e-5,
45435
+ _v10Signal: "weak",
45436
+ _v10Category: "logic",
45437
+ _v10Severity: "medium"
44712
45438
  },
44713
45439
  "rust/todo-macro": {
44714
45440
  recall: 1e-4,
44715
45441
  fpRate: 7e-4,
44716
45442
  ratio: 210.08,
44717
45443
  precision: 0.1392,
44718
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45444
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44719
45445
  verdict: "OK",
44720
45446
  _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).",
44721
45447
  aiSpecific: true,
@@ -44725,14 +45451,25 @@ var signal_strength_default = {
44725
45451
  _v7FpRate: 0,
44726
45452
  _v7Precision: 0,
44727
45453
  _v8Verdict: "OK",
44728
- _v8Lift: 57.23
45454
+ _v8Lift: 57.23,
45455
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45456
+ _v10PositiveFires: 238,
45457
+ _v10NegativeFires: 177,
45458
+ _v10PositiveFiles: 77,
45459
+ _v10NegativeFiles: 79,
45460
+ _v10Precision: 0.49359,
45461
+ _v10Recall: 25e-5,
45462
+ _v10F1: 5e-4,
45463
+ _v10Signal: "weak",
45464
+ _v10Category: "logic",
45465
+ _v10Severity: "medium"
44729
45466
  },
44730
45467
  "rust/unused-pub-fn": {
44731
45468
  recall: 0,
44732
45469
  fpRate: 0,
44733
45470
  ratio: 10803.43,
44734
45471
  precision: 0.3,
44735
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45472
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44736
45473
  verdict: "OK",
44737
45474
  _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).",
44738
45475
  aiSpecific: true,
@@ -44742,14 +45479,25 @@ var signal_strength_default = {
44742
45479
  _v7FpRate: 0,
44743
45480
  _v7Precision: 0,
44744
45481
  _v8Verdict: "OK",
44745
- _v8Lift: 2942.87
45482
+ _v8Lift: 2942.87,
45483
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45484
+ _v10PositiveFires: 7,
45485
+ _v10NegativeFires: 6,
45486
+ _v10PositiveFiles: 4,
45487
+ _v10NegativeFiles: 5,
45488
+ _v10Precision: 0.44444,
45489
+ _v10Recall: 1e-5,
45490
+ _v10F1: 3e-5,
45491
+ _v10Signal: "weak",
45492
+ _v10Category: "logic",
45493
+ _v10Severity: "low"
44746
45494
  },
44747
45495
  "rust/unwrap-in-production": {
44748
45496
  recall: 8e-3,
44749
45497
  fpRate: 77e-4,
44750
45498
  ratio: 70.81,
44751
45499
  precision: 0.5475,
44752
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45500
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44753
45501
  verdict: "USEFUL",
44754
45502
  _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).",
44755
45503
  aiSpecific: true,
@@ -44759,14 +45507,25 @@ var signal_strength_default = {
44759
45507
  _v7FpRate: 0,
44760
45508
  _v7Precision: 0,
44761
45509
  _v8Verdict: "USEFUL",
44762
- _v8Lift: 19.29
45510
+ _v8Lift: 19.29,
45511
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45512
+ _v10PositiveFires: 14195,
45513
+ _v10NegativeFires: 6326,
45514
+ _v10PositiveFiles: 2653,
45515
+ _v10NegativeFiles: 1128,
45516
+ _v10Precision: 0.70167,
45517
+ _v10Recall: 865e-5,
45518
+ _v10F1: 0.01708,
45519
+ _v10Signal: "strong",
45520
+ _v10Category: "logic",
45521
+ _v10Severity: "medium"
44763
45522
  },
44764
45523
  "security/dangerous-cors": {
44765
45524
  recall: 5e-4,
44766
45525
  fpRate: 4e-4,
44767
45526
  ratio: 1721.87,
44768
45527
  precision: 0.6079,
44769
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45528
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44770
45529
  verdict: "USEFUL",
44771
45530
  _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).",
44772
45531
  aiSpecific: true,
@@ -44776,14 +45535,25 @@ var signal_strength_default = {
44776
45535
  _v7FpRate: 5e-4,
44777
45536
  _v7Precision: 0.5758,
44778
45537
  _v8Verdict: "USEFUL",
44779
- _v8Lift: 11365.57
45538
+ _v8Lift: 11365.57,
45539
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45540
+ _v10PositiveFires: 208,
45541
+ _v10NegativeFires: 189,
45542
+ _v10PositiveFiles: 169,
45543
+ _v10NegativeFiles: 101,
45544
+ _v10Precision: 0.62593,
45545
+ _v10Recall: 55e-5,
45546
+ _v10F1: 11e-4,
45547
+ _v10Signal: "weak",
45548
+ _v10Category: "security",
45549
+ _v10Severity: "medium"
44780
45550
  },
44781
45551
  "security/eval": {
44782
45552
  recall: 1e-4,
44783
45553
  fpRate: 2e-4,
44784
45554
  ratio: 1929.18,
44785
45555
  precision: 0.4286,
44786
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45556
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44787
45557
  verdict: "OK",
44788
45558
  _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).",
44789
45559
  aiSpecific: false,
@@ -44793,14 +45563,25 @@ var signal_strength_default = {
44793
45563
  _v7FpRate: 0,
44794
45564
  _v7Precision: 0,
44795
45565
  _v8Verdict: "OK",
44796
- _v8Lift: 525.51
45566
+ _v8Lift: 525.51,
45567
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45568
+ _v10PositiveFires: 8810,
45569
+ _v10NegativeFires: 2762,
45570
+ _v10PositiveFiles: 1765,
45571
+ _v10NegativeFiles: 957,
45572
+ _v10Precision: 0.64842,
45573
+ _v10Recall: 575e-5,
45574
+ _v10F1: 0.0114,
45575
+ _v10Signal: "weak",
45576
+ _v10Category: "security",
45577
+ _v10Severity: "high"
44797
45578
  },
44798
45579
  "security/exposed-env-var": {
44799
45580
  recall: 6e-4,
44800
45581
  fpRate: 5e-4,
44801
45582
  ratio: 1055.81,
44802
45583
  precision: 0.5696,
44803
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45584
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44804
45585
  verdict: "USEFUL",
44805
45586
  _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).",
44806
45587
  aiSpecific: false,
@@ -44810,14 +45591,25 @@ var signal_strength_default = {
44810
45591
  _v7FpRate: 7e-4,
44811
45592
  _v7Precision: 0.5387,
44812
45593
  _v8Verdict: "USEFUL",
44813
- _v8Lift: 4716.52
45594
+ _v8Lift: 4716.52,
45595
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45596
+ _v10PositiveFires: 178,
45597
+ _v10NegativeFires: 121,
45598
+ _v10PositiveFiles: 163,
45599
+ _v10NegativeFiles: 113,
45600
+ _v10Precision: 0.59058,
45601
+ _v10Recall: 53e-5,
45602
+ _v10F1: 106e-5,
45603
+ _v10Signal: "weak",
45604
+ _v10Category: "security",
45605
+ _v10Severity: "high"
44814
45606
  },
44815
45607
  "security/fail-open-auth": {
44816
45608
  recall: 0,
44817
45609
  fpRate: 0,
44818
45610
  ratio: 99999,
44819
45611
  precision: 1,
44820
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45612
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44821
45613
  verdict: "USEFUL",
44822
45614
  _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). v0.19 default-on (explicit defaultOff: false): P 100% / inf lift \u2014 security must always be on.",
44823
45615
  aiSpecific: true,
@@ -44828,14 +45620,25 @@ var signal_strength_default = {
44828
45620
  _v7Precision: 1,
44829
45621
  _v8Verdict: "DORMANT",
44830
45622
  _v8Lift: 1,
44831
- defaultOff: false
45623
+ defaultOff: false,
45624
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45625
+ _v10PositiveFires: 1,
45626
+ _v10NegativeFires: 0,
45627
+ _v10PositiveFiles: 1,
45628
+ _v10NegativeFiles: 0,
45629
+ _v10Precision: 1,
45630
+ _v10Recall: 0,
45631
+ _v10F1: 1e-5,
45632
+ _v10Signal: "dormant",
45633
+ _v10Category: "security",
45634
+ _v10Severity: "high"
44832
45635
  },
44833
45636
  "security/hardcoded-secret": {
44834
45637
  recall: 14e-4,
44835
45638
  fpRate: 6e-4,
44836
45639
  ratio: 1269.08,
44837
45640
  precision: 0.735,
44838
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45641
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44839
45642
  verdict: "USEFUL",
44840
45643
  _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).",
44841
45644
  aiSpecific: true,
@@ -44845,14 +45648,25 @@ var signal_strength_default = {
44845
45648
  _v7FpRate: 8e-4,
44846
45649
  _v7Precision: 0.6899,
44847
45650
  _v8Verdict: "USEFUL",
44848
- _v8Lift: 7935.57
45651
+ _v8Lift: 7935.57,
45652
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45653
+ _v10PositiveFires: 1108,
45654
+ _v10NegativeFires: 134,
45655
+ _v10PositiveFiles: 536,
45656
+ _v10NegativeFiles: 114,
45657
+ _v10Precision: 0.82462,
45658
+ _v10Recall: 175e-5,
45659
+ _v10F1: 349e-5,
45660
+ _v10Signal: "strong",
45661
+ _v10Category: "security",
45662
+ _v10Severity: "high"
44849
45663
  },
44850
45664
  "security/localstorage-token": {
44851
45665
  recall: 1e-4,
44852
45666
  fpRate: 0,
44853
45667
  ratio: 99999,
44854
45668
  precision: 1,
44855
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45669
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44856
45670
  verdict: "USEFUL",
44857
45671
  _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).",
44858
45672
  aiSpecific: false,
@@ -44862,14 +45676,25 @@ var signal_strength_default = {
44862
45676
  _v7FpRate: 0,
44863
45677
  _v7Precision: 0,
44864
45678
  _v8Verdict: "USEFUL",
44865
- _v8Lift: 99999
45679
+ _v8Lift: 99999,
45680
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45681
+ _v10PositiveFires: 123,
45682
+ _v10NegativeFires: 52,
45683
+ _v10PositiveFiles: 84,
45684
+ _v10NegativeFiles: 46,
45685
+ _v10Precision: 0.64615,
45686
+ _v10Recall: 27e-5,
45687
+ _v10F1: 55e-5,
45688
+ _v10Signal: "weak",
45689
+ _v10Category: "security",
45690
+ _v10Severity: "high"
44866
45691
  },
44867
45692
  "security/missing-auth-check": {
44868
45693
  recall: 5e-4,
44869
45694
  fpRate: 0,
44870
45695
  ratio: 99999,
44871
45696
  precision: 1,
44872
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45697
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44873
45698
  verdict: "USEFUL",
44874
45699
  _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).",
44875
45700
  aiSpecific: false,
@@ -44879,14 +45704,25 @@ var signal_strength_default = {
44879
45704
  _v7FpRate: 0,
44880
45705
  _v7Precision: 0,
44881
45706
  _v8Verdict: "USEFUL",
44882
- _v8Lift: 99999
45707
+ _v8Lift: 99999,
45708
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45709
+ _v10PositiveFires: 1156,
45710
+ _v10NegativeFires: 67,
45711
+ _v10PositiveFiles: 1156,
45712
+ _v10NegativeFiles: 67,
45713
+ _v10Precision: 0.94522,
45714
+ _v10Recall: 377e-5,
45715
+ _v10F1: 75e-4,
45716
+ _v10Signal: "strong",
45717
+ _v10Category: "security",
45718
+ _v10Severity: "medium"
44883
45719
  },
44884
45720
  "security/public-admin-route": {
44885
45721
  recall: 38e-4,
44886
45722
  fpRate: 38e-4,
44887
45723
  ratio: 142.2,
44888
45724
  precision: 0.5376,
44889
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45725
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44890
45726
  verdict: "USEFUL",
44891
45727
  _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).",
44892
45728
  aiSpecific: false,
@@ -44896,14 +45732,25 @@ var signal_strength_default = {
44896
45732
  _v7FpRate: 0,
44897
45733
  _v7Precision: 0,
44898
45734
  _v8Verdict: "USEFUL",
44899
- _v8Lift: 38.74
45735
+ _v8Lift: 38.74,
45736
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45737
+ _v10PositiveFires: 7138,
45738
+ _v10NegativeFires: 2380,
45739
+ _v10PositiveFiles: 7138,
45740
+ _v10NegativeFiles: 2380,
45741
+ _v10Precision: 0.74995,
45742
+ _v10Recall: 0.02326,
45743
+ _v10F1: 0.04512,
45744
+ _v10Signal: "strong",
45745
+ _v10Category: "security",
45746
+ _v10Severity: "medium"
44900
45747
  },
44901
45748
  "security/sql-construction": {
44902
45749
  recall: 32e-4,
44903
45750
  fpRate: 15e-4,
44904
45751
  ratio: 485.42,
44905
45752
  precision: 0.7183,
44906
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45753
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44907
45754
  verdict: "USEFUL",
44908
45755
  _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).",
44909
45756
  aiSpecific: true,
@@ -44913,14 +45760,25 @@ var signal_strength_default = {
44913
45760
  _v7FpRate: 18e-4,
44914
45761
  _v7Precision: 0.6788,
44915
45762
  _v8Verdict: "USEFUL",
44916
- _v8Lift: 1608.86
45763
+ _v8Lift: 1608.86,
45764
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45765
+ _v10PositiveFires: 2683,
45766
+ _v10NegativeFires: 1560,
45767
+ _v10PositiveFiles: 995,
45768
+ _v10NegativeFiles: 544,
45769
+ _v10Precision: 0.64652,
45770
+ _v10Recall: 324e-5,
45771
+ _v10F1: 645e-5,
45772
+ _v10Signal: "weak",
45773
+ _v10Category: "security",
45774
+ _v10Severity: "high"
44917
45775
  },
44918
45776
  "security/target-blank-no-noopener": {
44919
45777
  recall: 4e-4,
44920
45778
  fpRate: 0,
44921
45779
  ratio: 26141.63,
44922
45780
  precision: 0.9333,
44923
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45781
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44924
45782
  verdict: "USEFUL",
44925
45783
  _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).",
44926
45784
  aiSpecific: false,
@@ -44930,14 +45788,25 @@ var signal_strength_default = {
44930
45788
  _v7FpRate: 0,
44931
45789
  _v7Precision: 0,
44932
45790
  _v8Verdict: "USEFUL",
44933
- _v8Lift: 7121.02
45791
+ _v8Lift: 7121.02,
45792
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45793
+ _v10PositiveFires: 235,
45794
+ _v10NegativeFires: 218,
45795
+ _v10PositiveFiles: 137,
45796
+ _v10NegativeFiles: 81,
45797
+ _v10Precision: 0.62844,
45798
+ _v10Recall: 45e-5,
45799
+ _v10F1: 89e-5,
45800
+ _v10Signal: "weak",
45801
+ _v10Category: "security",
45802
+ _v10Severity: "medium"
44934
45803
  },
44935
45804
  "security/unsafe-html-render": {
44936
45805
  recall: 13e-4,
44937
45806
  fpRate: 11e-4,
44938
45807
  ratio: 513.12,
44939
45808
  precision: 0.574,
44940
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45809
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44941
45810
  verdict: "USEFUL",
44942
45811
  _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).",
44943
45812
  aiSpecific: false,
@@ -44947,14 +45816,25 @@ var signal_strength_default = {
44947
45816
  _v7FpRate: 9e-4,
44948
45817
  _v7Precision: 0.661,
44949
45818
  _v8Verdict: "OK",
44950
- _v8Lift: 201.44
45819
+ _v8Lift: 201.44,
45820
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45821
+ _v10PositiveFires: 516,
45822
+ _v10NegativeFires: 239,
45823
+ _v10PositiveFiles: 425,
45824
+ _v10NegativeFiles: 149,
45825
+ _v10Precision: 0.74042,
45826
+ _v10Recall: 139e-5,
45827
+ _v10F1: 276e-5,
45828
+ _v10Signal: "strong",
45829
+ _v10Category: "security",
45830
+ _v10Severity: "high"
44951
45831
  },
44952
45832
  "test/duplicate-setup": {
44953
45833
  recall: 1e-4,
44954
45834
  fpRate: 0,
44955
45835
  ratio: 51016.19,
44956
45836
  precision: 0.8095,
44957
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45837
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44958
45838
  verdict: "USEFUL",
44959
45839
  _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).",
44960
45840
  aiSpecific: true,
@@ -44964,14 +45844,25 @@ var signal_strength_default = {
44964
45844
  _v7FpRate: 0,
44965
45845
  _v7Precision: 0.8235,
44966
45846
  _v8Verdict: "USEFUL",
44967
- _v8Lift: 51500.25
45847
+ _v8Lift: 51500.25,
45848
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45849
+ _v10PositiveFires: 221,
45850
+ _v10NegativeFires: 9,
45851
+ _v10PositiveFiles: 38,
45852
+ _v10NegativeFiles: 3,
45853
+ _v10Precision: 0.92683,
45854
+ _v10Recall: 12e-5,
45855
+ _v10F1: 25e-5,
45856
+ _v10Signal: "strong",
45857
+ _v10Category: "test",
45858
+ _v10Severity: "medium"
44968
45859
  },
44969
45860
  "test/fake-placeholder": {
44970
45861
  recall: 51e-4,
44971
45862
  fpRate: 15e-4,
44972
45863
  ratio: 547.47,
44973
45864
  precision: 0.8014,
44974
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45865
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44975
45866
  verdict: "USEFUL",
44976
45867
  _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).",
44977
45868
  aiSpecific: true,
@@ -44981,14 +45872,25 @@ var signal_strength_default = {
44981
45872
  _v7FpRate: 19e-4,
44982
45873
  _v7Precision: 0.7854,
44983
45874
  _v8Verdict: "USEFUL",
44984
- _v8Lift: 2477.4
45875
+ _v8Lift: 2477.4,
45876
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45877
+ _v10PositiveFires: 17708,
45878
+ _v10NegativeFires: 16793,
45879
+ _v10PositiveFiles: 2026,
45880
+ _v10NegativeFiles: 1181,
45881
+ _v10Precision: 0.63174,
45882
+ _v10Recall: 66e-4,
45883
+ _v10F1: 0.01307,
45884
+ _v10Signal: "weak",
45885
+ _v10Category: "test",
45886
+ _v10Severity: "high"
44985
45887
  },
44986
45888
  "test/missing-edge-case": {
44987
45889
  recall: 0,
44988
45890
  fpRate: 0,
44989
45891
  ratio: 0,
44990
45892
  precision: 0,
44991
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45893
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
44992
45894
  verdict: "DORMANT",
44993
45895
  _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.",
44994
45896
  aiSpecific: true,
@@ -44999,14 +45901,25 @@ var signal_strength_default = {
44999
45901
  _v7Precision: 0,
45000
45902
  _v8Verdict: "DORMANT",
45001
45903
  _v8Lift: 1,
45002
- defaultOff: true
45904
+ defaultOff: true,
45905
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45906
+ _v10PositiveFires: 0,
45907
+ _v10NegativeFires: 0,
45908
+ _v10PositiveFiles: 0,
45909
+ _v10NegativeFiles: 0,
45910
+ _v10Precision: 0,
45911
+ _v10Recall: 0,
45912
+ _v10F1: 0,
45913
+ _v10Signal: "dormant",
45914
+ _v10Category: "test",
45915
+ _v10Severity: "high"
45003
45916
  },
45004
45917
  "test/weak-assertion": {
45005
45918
  recall: 0.0417,
45006
45919
  fpRate: 67e-4,
45007
45920
  ratio: 131.62,
45008
45921
  precision: 0.8793,
45009
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45922
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45010
45923
  verdict: "USEFUL",
45011
45924
  _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).",
45012
45925
  aiSpecific: true,
@@ -45016,14 +45929,25 @@ var signal_strength_default = {
45016
45929
  _v7FpRate: 86e-4,
45017
45930
  _v7Precision: 0.8622,
45018
45931
  _v8Verdict: "USEFUL",
45019
- _v8Lift: 651.94
45932
+ _v8Lift: 651.94,
45933
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45934
+ _v10PositiveFires: 169636,
45935
+ _v10NegativeFires: 14703,
45936
+ _v10PositiveFiles: 18929,
45937
+ _v10NegativeFiles: 2641,
45938
+ _v10Precision: 0.87756,
45939
+ _v10Recall: 0.06169,
45940
+ _v10F1: 0.11527,
45941
+ _v10Signal: "strong",
45942
+ _v10Category: "test",
45943
+ _v10Severity: "medium"
45020
45944
  },
45021
45945
  "ts/enum-vs-as-const": {
45022
45946
  recall: 0,
45023
45947
  fpRate: 0,
45024
45948
  ratio: 1,
45025
45949
  precision: 0,
45026
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45950
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45027
45951
  verdict: "DORMANT",
45028
45952
  _calibrationNote: "v0.19: new rule (Uses `enum` \u2014 modern TS prefers `as const`). Not yet calibrated. Scheduled for v9 calibration.",
45029
45953
  aiSpecific: true,
@@ -45034,14 +45958,25 @@ var signal_strength_default = {
45034
45958
  _v7Precision: 0,
45035
45959
  _v8Verdict: "DORMANT",
45036
45960
  _v8Lift: 1,
45037
- defaultOff: true
45961
+ defaultOff: true,
45962
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45963
+ _v10PositiveFires: 2571,
45964
+ _v10NegativeFires: 5216,
45965
+ _v10PositiveFiles: 1445,
45966
+ _v10NegativeFiles: 2819,
45967
+ _v10Precision: 0.33888,
45968
+ _v10Recall: 471e-5,
45969
+ _v10F1: 929e-5,
45970
+ _v10Signal: "weak",
45971
+ _v10Category: "typo",
45972
+ _v10Severity: "low"
45038
45973
  },
45039
45974
  "ts/excessive-type-assertion": {
45040
45975
  recall: 0,
45041
45976
  fpRate: 0,
45042
45977
  ratio: 1,
45043
45978
  precision: 0,
45044
- lastCalibratedAt: "2026-07-01T00:00:00Z",
45979
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45045
45980
  verdict: "DORMANT",
45046
45981
  _calibrationNote: "v0.19: new rule (Function with >3 `as` assertions \u2014 AI fighting the type system). Not yet calibrated. Scheduled for v9 calibration.",
45047
45982
  aiSpecific: true,
@@ -45052,14 +45987,25 @@ var signal_strength_default = {
45052
45987
  _v7Precision: 0,
45053
45988
  _v8Verdict: "DORMANT",
45054
45989
  _v8Lift: 1,
45055
- defaultOff: true
45990
+ defaultOff: true,
45991
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
45992
+ _v10PositiveFires: 425,
45993
+ _v10NegativeFires: 362,
45994
+ _v10PositiveFiles: 362,
45995
+ _v10NegativeFiles: 129,
45996
+ _v10Precision: 0.73727,
45997
+ _v10Recall: 118e-5,
45998
+ _v10F1: 236e-5,
45999
+ _v10Signal: "strong",
46000
+ _v10Category: "typo",
46001
+ _v10Severity: "low"
45056
46002
  },
45057
46003
  "ts/import-type-misuse": {
45058
46004
  recall: 0,
45059
46005
  fpRate: 0,
45060
46006
  ratio: 1,
45061
46007
  precision: 0,
45062
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46008
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45063
46009
  verdict: "DORMANT",
45064
46010
  _calibrationNote: "v0.19: new rule (Inline `import { type X }` \u2014 prefer separate `import type`). Not yet calibrated. Scheduled for v9 calibration.",
45065
46011
  aiSpecific: true,
@@ -45070,14 +46016,25 @@ var signal_strength_default = {
45070
46016
  _v7Precision: 0,
45071
46017
  _v8Verdict: "DORMANT",
45072
46018
  _v8Lift: 1,
45073
- defaultOff: true
46019
+ defaultOff: true,
46020
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46021
+ _v10PositiveFires: 23447,
46022
+ _v10NegativeFires: 4431,
46023
+ _v10PositiveFiles: 17136,
46024
+ _v10NegativeFiles: 3432,
46025
+ _v10Precision: 0.83314,
46026
+ _v10Recall: 0.05584,
46027
+ _v10F1: 0.10467,
46028
+ _v10Signal: "strong",
46029
+ _v10Category: "typo",
46030
+ _v10Severity: "low"
45074
46031
  },
45075
46032
  "ts/never-vs-unknown": {
45076
46033
  recall: 0,
45077
46034
  fpRate: 0,
45078
46035
  ratio: 1,
45079
46036
  precision: 0,
45080
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46037
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45081
46038
  verdict: "DORMANT",
45082
46039
  _calibrationNote: "v0.19: new rule (Return type `never` but body has no throw/loop/exit). Not yet calibrated. Scheduled for v9 calibration.",
45083
46040
  aiSpecific: true,
@@ -45088,14 +46045,25 @@ var signal_strength_default = {
45088
46045
  _v7Precision: 0,
45089
46046
  _v8Verdict: "DORMANT",
45090
46047
  _v8Lift: 1,
45091
- defaultOff: true
46048
+ defaultOff: true,
46049
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46050
+ _v10PositiveFires: 70,
46051
+ _v10NegativeFires: 64,
46052
+ _v10PositiveFiles: 64,
46053
+ _v10NegativeFiles: 39,
46054
+ _v10Precision: 0.62136,
46055
+ _v10Recall: 21e-5,
46056
+ _v10F1: 42e-5,
46057
+ _v10Signal: "weak",
46058
+ _v10Category: "typo",
46059
+ _v10Severity: "low"
45092
46060
  },
45093
46061
  "ts/optional-chain-overuse": {
45094
46062
  recall: 0,
45095
46063
  fpRate: 0,
45096
46064
  ratio: 1,
45097
46065
  precision: 0,
45098
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46066
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45099
46067
  verdict: "DORMANT",
45100
46068
  _calibrationNote: "v0.19: new rule (Optional chain depth >= 5 \u2014 AI chains ?. rather than narrowing). Not yet calibrated. Scheduled for v9 calibration.",
45101
46069
  aiSpecific: true,
@@ -45106,14 +46074,25 @@ var signal_strength_default = {
45106
46074
  _v7Precision: 0,
45107
46075
  _v8Verdict: "DORMANT",
45108
46076
  _v8Lift: 1,
45109
- defaultOff: true
46077
+ defaultOff: true,
46078
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46079
+ _v10PositiveFires: 0,
46080
+ _v10NegativeFires: 0,
46081
+ _v10PositiveFiles: 0,
46082
+ _v10NegativeFiles: 0,
46083
+ _v10Precision: 0,
46084
+ _v10Recall: 0,
46085
+ _v10F1: 0,
46086
+ _v10Signal: "dormant",
46087
+ _v10Category: "logic",
46088
+ _v10Severity: "low"
45110
46089
  },
45111
46090
  "typo/calc-fontsize": {
45112
46091
  recall: 0,
45113
46092
  fpRate: 0,
45114
46093
  ratio: 0,
45115
46094
  precision: 0,
45116
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46095
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45117
46096
  verdict: "DORMANT",
45118
46097
  _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.",
45119
46098
  aiSpecific: false,
@@ -45124,14 +46103,25 @@ var signal_strength_default = {
45124
46103
  _v7Precision: 0,
45125
46104
  _v8Verdict: "DORMANT",
45126
46105
  _v8Lift: 1,
45127
- defaultOff: true
46106
+ defaultOff: true,
46107
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46108
+ _v10PositiveFires: 0,
46109
+ _v10NegativeFires: 0,
46110
+ _v10PositiveFiles: 0,
46111
+ _v10NegativeFiles: 0,
46112
+ _v10Precision: 0,
46113
+ _v10Recall: 0,
46114
+ _v10F1: 0,
46115
+ _v10Signal: "dormant",
46116
+ _v10Category: "typo",
46117
+ _v10Severity: "medium"
45128
46118
  },
45129
46119
  "typo/calc-raw-px": {
45130
46120
  recall: 0,
45131
46121
  fpRate: 0,
45132
46122
  ratio: 210066.67,
45133
46123
  precision: 0.8333,
45134
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46124
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45135
46125
  verdict: "USEFUL",
45136
46126
  _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).",
45137
46127
  aiSpecific: false,
@@ -45141,14 +46131,25 @@ var signal_strength_default = {
45141
46131
  _v7FpRate: 0,
45142
46132
  _v7Precision: 0.75,
45143
46133
  _v8Verdict: "USEFUL",
45144
- _v8Lift: 99999
46134
+ _v8Lift: 99999,
46135
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46136
+ _v10PositiveFires: 11,
46137
+ _v10NegativeFires: 6,
46138
+ _v10PositiveFiles: 3,
46139
+ _v10NegativeFiles: 2,
46140
+ _v10Precision: 0.6,
46141
+ _v10Recall: 1e-5,
46142
+ _v10F1: 2e-5,
46143
+ _v10Signal: "dormant",
46144
+ _v10Category: "typo",
46145
+ _v10Severity: "high"
45145
46146
  },
45146
46147
  "typo/clamp-offscale": {
45147
46148
  recall: 0,
45148
46149
  fpRate: 0,
45149
46150
  ratio: 0,
45150
46151
  precision: 0,
45151
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46152
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45152
46153
  verdict: "DORMANT",
45153
46154
  _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.",
45154
46155
  aiSpecific: false,
@@ -45159,14 +46160,25 @@ var signal_strength_default = {
45159
46160
  _v7Precision: 0,
45160
46161
  _v8Verdict: "DORMANT",
45161
46162
  _v8Lift: 1,
45162
- defaultOff: true
46163
+ defaultOff: true,
46164
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46165
+ _v10PositiveFires: 0,
46166
+ _v10NegativeFires: 0,
46167
+ _v10PositiveFiles: 0,
46168
+ _v10NegativeFiles: 0,
46169
+ _v10Precision: 0,
46170
+ _v10Recall: 0,
46171
+ _v10F1: 0,
46172
+ _v10Signal: "dormant",
46173
+ _v10Category: "typo",
46174
+ _v10Severity: "medium"
45163
46175
  },
45164
46176
  "typo/math-button-label-uniformity": {
45165
46177
  recall: 1e-4,
45166
46178
  fpRate: 1e-4,
45167
46179
  ratio: 6894.19,
45168
46180
  precision: 0.629,
45169
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46181
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45170
46182
  verdict: "USEFUL",
45171
46183
  _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).",
45172
46184
  aiSpecific: false,
@@ -45176,14 +46188,25 @@ var signal_strength_default = {
45176
46188
  _v7FpRate: 1e-4,
45177
46189
  _v7Precision: 0.6379,
45178
46190
  _v8Verdict: "USEFUL",
45179
- _v8Lift: 17166.75
46191
+ _v8Lift: 17166.75,
46192
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46193
+ _v10PositiveFires: 34,
46194
+ _v10NegativeFires: 24,
46195
+ _v10PositiveFiles: 34,
46196
+ _v10NegativeFiles: 24,
46197
+ _v10Precision: 0.58621,
46198
+ _v10Recall: 11e-5,
46199
+ _v10F1: 22e-5,
46200
+ _v10Signal: "weak",
46201
+ _v10Category: "typo",
46202
+ _v10Severity: "medium"
45180
46203
  },
45181
46204
  "typo/math-cta-vocabulary": {
45182
46205
  recall: 0,
45183
46206
  fpRate: 0,
45184
46207
  ratio: 0,
45185
46208
  precision: 0,
45186
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46209
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45187
46210
  verdict: "DORMANT",
45188
46211
  _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.",
45189
46212
  aiSpecific: true,
@@ -45194,14 +46217,25 @@ var signal_strength_default = {
45194
46217
  _v7Precision: 0,
45195
46218
  _v8Verdict: "DORMANT",
45196
46219
  _v8Lift: 1,
45197
- defaultOff: true
46220
+ defaultOff: true,
46221
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46222
+ _v10PositiveFires: 0,
46223
+ _v10NegativeFires: 0,
46224
+ _v10PositiveFiles: 0,
46225
+ _v10NegativeFiles: 0,
46226
+ _v10Precision: 0,
46227
+ _v10Recall: 0,
46228
+ _v10F1: 0,
46229
+ _v10Signal: "dormant",
46230
+ _v10Category: "typo",
46231
+ _v10Severity: "medium"
45198
46232
  },
45199
46233
  "typo/placeholder-text": {
45200
46234
  recall: 1e-4,
45201
46235
  fpRate: 0,
45202
46236
  ratio: 17330.5,
45203
46237
  precision: 0.6875,
45204
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46238
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45205
46239
  verdict: "USEFUL",
45206
46240
  _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).",
45207
46241
  aiSpecific: false,
@@ -45211,14 +46245,25 @@ var signal_strength_default = {
45211
46245
  _v7FpRate: 0,
45212
46246
  _v7Precision: 0,
45213
46247
  _v8Verdict: "USEFUL",
45214
- _v8Lift: 4720.86
46248
+ _v8Lift: 4720.86,
46249
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46250
+ _v10PositiveFires: 161,
46251
+ _v10NegativeFires: 54,
46252
+ _v10PositiveFiles: 102,
46253
+ _v10NegativeFiles: 41,
46254
+ _v10Precision: 0.71329,
46255
+ _v10Recall: 33e-5,
46256
+ _v10F1: 66e-5,
46257
+ _v10Signal: "strong",
46258
+ _v10Category: "typo",
46259
+ _v10Severity: "low"
45215
46260
  },
45216
46261
  "visual/arbitrary-escape": {
45217
46262
  recall: 26e-4,
45218
46263
  fpRate: 7e-4,
45219
46264
  ratio: 1219.67,
45220
46265
  precision: 0.8177,
45221
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46266
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45222
46267
  verdict: "USEFUL",
45223
46268
  _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).",
45224
46269
  aiSpecific: true,
@@ -45228,14 +46273,25 @@ var signal_strength_default = {
45228
46273
  _v7FpRate: 9e-4,
45229
46274
  _v7Precision: 0.7802,
45230
46275
  _v8Verdict: "USEFUL",
45231
- _v8Lift: 99999
46276
+ _v8Lift: 99999,
46277
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46278
+ _v10PositiveFires: 3185,
46279
+ _v10NegativeFires: 889,
46280
+ _v10PositiveFiles: 676,
46281
+ _v10NegativeFiles: 170,
46282
+ _v10Precision: 0.79905,
46283
+ _v10Recall: 22e-4,
46284
+ _v10F1: 439e-5,
46285
+ _v10Signal: "strong",
46286
+ _v10Category: "visual",
46287
+ _v10Severity: "medium"
45232
46288
  },
45233
46289
  "visual/clamp-soup": {
45234
46290
  recall: 0,
45235
46291
  fpRate: 0,
45236
46292
  ratio: 0,
45237
46293
  precision: 0,
45238
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46294
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45239
46295
  verdict: "DORMANT",
45240
46296
  _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.",
45241
46297
  aiSpecific: true,
@@ -45246,14 +46302,25 @@ var signal_strength_default = {
45246
46302
  _v7Precision: 0,
45247
46303
  _v8Verdict: "DORMANT",
45248
46304
  _v8Lift: 1,
45249
- defaultOff: true
46305
+ defaultOff: true,
46306
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46307
+ _v10PositiveFires: 0,
46308
+ _v10NegativeFires: 0,
46309
+ _v10PositiveFiles: 0,
46310
+ _v10NegativeFiles: 0,
46311
+ _v10Precision: 0,
46312
+ _v10Recall: 0,
46313
+ _v10F1: 0,
46314
+ _v10Signal: "dormant",
46315
+ _v10Category: "visual",
46316
+ _v10Severity: "high"
45250
46317
  },
45251
46318
  "visual/generic-centering": {
45252
46319
  recall: 0,
45253
46320
  fpRate: 0,
45254
46321
  ratio: 0,
45255
46322
  precision: 0,
45256
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46323
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45257
46324
  verdict: "DORMANT",
45258
46325
  _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.",
45259
46326
  aiSpecific: true,
@@ -45264,14 +46331,25 @@ var signal_strength_default = {
45264
46331
  _v7Precision: 0,
45265
46332
  _v8Verdict: "DORMANT",
45266
46333
  _v8Lift: 1,
45267
- defaultOff: true
46334
+ defaultOff: true,
46335
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46336
+ _v10PositiveFires: 0,
46337
+ _v10NegativeFires: 0,
46338
+ _v10PositiveFiles: 0,
46339
+ _v10NegativeFiles: 0,
46340
+ _v10Precision: 0,
46341
+ _v10Recall: 0,
46342
+ _v10F1: 0,
46343
+ _v10Signal: "dormant",
46344
+ _v10Category: "visual",
46345
+ _v10Severity: "low"
45268
46346
  },
45269
46347
  "visual/inline-style-dominance": {
45270
46348
  recall: 0.0103,
45271
46349
  fpRate: 52e-4,
45272
46350
  ratio: 134.59,
45273
46351
  precision: 0.6983,
45274
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46352
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45275
46353
  verdict: "USEFUL",
45276
46354
  _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).",
45277
46355
  aiSpecific: false,
@@ -45281,14 +46359,25 @@ var signal_strength_default = {
45281
46359
  _v7FpRate: 67e-4,
45282
46360
  _v7Precision: 0.6535,
45283
46361
  _v8Verdict: "USEFUL",
45284
- _v8Lift: 704.71
46362
+ _v8Lift: 704.71,
46363
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46364
+ _v10PositiveFires: 2673,
46365
+ _v10NegativeFires: 1076,
46366
+ _v10PositiveFiles: 2673,
46367
+ _v10NegativeFiles: 1076,
46368
+ _v10Precision: 0.71299,
46369
+ _v10Recall: 871e-5,
46370
+ _v10F1: 0.01721,
46371
+ _v10Signal: "strong",
46372
+ _v10Category: "visual",
46373
+ _v10Severity: "medium"
45285
46374
  },
45286
46375
  "visual/math-color-cluster": {
45287
46376
  recall: 2e-4,
45288
46377
  fpRate: 0,
45289
46378
  ratio: 46814.86,
45290
46379
  precision: 0.9286,
45291
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46380
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45292
46381
  verdict: "USEFUL",
45293
46382
  _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).",
45294
46383
  aiSpecific: true,
@@ -45298,14 +46387,25 @@ var signal_strength_default = {
45298
46387
  _v7FpRate: 0,
45299
46388
  _v7Precision: 0.9206,
45300
46389
  _v8Verdict: "USEFUL",
45301
- _v8Lift: 99999
46390
+ _v8Lift: 99999,
46391
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46392
+ _v10PositiveFires: 48,
46393
+ _v10NegativeFires: 2,
46394
+ _v10PositiveFiles: 48,
46395
+ _v10NegativeFiles: 2,
46396
+ _v10Precision: 0.96,
46397
+ _v10Recall: 16e-5,
46398
+ _v10F1: 31e-5,
46399
+ _v10Signal: "strong",
46400
+ _v10Category: "visual",
46401
+ _v10Severity: "high"
45302
46402
  },
45303
46403
  "visual/math-default-font": {
45304
46404
  recall: 16e-4,
45305
46405
  fpRate: 3e-4,
45306
46406
  ratio: 3035.16,
45307
46407
  precision: 0.8669,
45308
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46408
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45309
46409
  verdict: "USEFUL",
45310
46410
  _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).",
45311
46411
  aiSpecific: true,
@@ -45315,14 +46415,25 @@ var signal_strength_default = {
45315
46415
  _v7FpRate: 4e-4,
45316
46416
  _v7Precision: 0.8151,
45317
46417
  _v8Verdict: "USEFUL",
45318
- _v8Lift: 68229.63
46418
+ _v8Lift: 68229.63,
46419
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46420
+ _v10PositiveFires: 304,
46421
+ _v10NegativeFires: 66,
46422
+ _v10PositiveFiles: 304,
46423
+ _v10NegativeFiles: 66,
46424
+ _v10Precision: 0.82162,
46425
+ _v10Recall: 99e-5,
46426
+ _v10F1: 198e-5,
46427
+ _v10Signal: "strong",
46428
+ _v10Category: "visual",
46429
+ _v10Severity: "high"
45319
46430
  },
45320
46431
  "visual/math-font-entropy": {
45321
46432
  recall: 52e-4,
45322
46433
  fpRate: 1e-3,
45323
46434
  ratio: 869.95,
45324
46435
  precision: 0.8593,
45325
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46436
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45326
46437
  verdict: "USEFUL",
45327
46438
  _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).",
45328
46439
  aiSpecific: true,
@@ -45332,14 +46443,25 @@ var signal_strength_default = {
45332
46443
  _v7FpRate: 14e-4,
45333
46444
  _v7Precision: 0.8114,
45334
46445
  _v8Verdict: "USEFUL",
45335
- _v8Lift: 68516.08
46446
+ _v8Lift: 68516.08,
46447
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46448
+ _v10PositiveFires: 1143,
46449
+ _v10NegativeFires: 240,
46450
+ _v10PositiveFiles: 1143,
46451
+ _v10NegativeFiles: 240,
46452
+ _v10Precision: 0.82646,
46453
+ _v10Recall: 372e-5,
46454
+ _v10F1: 742e-5,
46455
+ _v10Signal: "strong",
46456
+ _v10Category: "visual",
46457
+ _v10Severity: "high"
45336
46458
  },
45337
46459
  "visual/math-gradient-hue-rotation": {
45338
46460
  recall: 0,
45339
46461
  fpRate: 0,
45340
46462
  ratio: 0,
45341
46463
  precision: 0,
45342
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46464
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45343
46465
  verdict: "DORMANT",
45344
46466
  _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.",
45345
46467
  aiSpecific: true,
@@ -45350,14 +46472,25 @@ var signal_strength_default = {
45350
46472
  _v7Precision: 0,
45351
46473
  _v8Verdict: "DORMANT",
45352
46474
  _v8Lift: 1,
45353
- defaultOff: true
46475
+ defaultOff: true,
46476
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46477
+ _v10PositiveFires: 0,
46478
+ _v10NegativeFires: 0,
46479
+ _v10PositiveFiles: 0,
46480
+ _v10NegativeFiles: 0,
46481
+ _v10Precision: 0,
46482
+ _v10Recall: 0,
46483
+ _v10F1: 0,
46484
+ _v10Signal: "dormant",
46485
+ _v10Category: "visual",
46486
+ _v10Severity: "high"
45354
46487
  },
45355
46488
  "visual/math-rounded-entropy": {
45356
46489
  recall: 38e-4,
45357
46490
  fpRate: 2e-4,
45358
46491
  ratio: 3785.45,
45359
46492
  precision: 0.9461,
45360
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46493
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45361
46494
  verdict: "USEFUL",
45362
46495
  _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).",
45363
46496
  aiSpecific: true,
@@ -45367,14 +46500,25 @@ var signal_strength_default = {
45367
46500
  _v7FpRate: 3e-4,
45368
46501
  _v7Precision: 0.9339,
45369
46502
  _v8Verdict: "USEFUL",
45370
- _v8Lift: 68368.45
46503
+ _v8Lift: 68368.45,
46504
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46505
+ _v10PositiveFires: 889,
46506
+ _v10NegativeFires: 69,
46507
+ _v10PositiveFiles: 889,
46508
+ _v10NegativeFiles: 69,
46509
+ _v10Precision: 0.92797,
46510
+ _v10Recall: 29e-4,
46511
+ _v10F1: 578e-5,
46512
+ _v10Signal: "strong",
46513
+ _v10Category: "visual",
46514
+ _v10Severity: "high"
45371
46515
  },
45372
46516
  "visual/math-spacing-entropy": {
45373
46517
  recall: 18e-4,
45374
46518
  fpRate: 4e-4,
45375
46519
  ratio: 1898.99,
45376
46520
  precision: 0.8287,
45377
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46521
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45378
46522
  verdict: "USEFUL",
45379
46523
  _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).",
45380
46524
  aiSpecific: true,
@@ -45384,14 +46528,25 @@ var signal_strength_default = {
45384
46528
  _v7FpRate: 6e-4,
45385
46529
  _v7Precision: 0.7959,
45386
46530
  _v8Verdict: "USEFUL",
45387
- _v8Lift: 68031.19
46531
+ _v8Lift: 68031.19,
46532
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46533
+ _v10PositiveFires: 473,
46534
+ _v10NegativeFires: 127,
46535
+ _v10PositiveFiles: 473,
46536
+ _v10NegativeFiles: 127,
46537
+ _v10Precision: 0.78833,
46538
+ _v10Recall: 154e-5,
46539
+ _v10F1: 308e-5,
46540
+ _v10Signal: "strong",
46541
+ _v10Category: "visual",
46542
+ _v10Severity: "medium"
45388
46543
  },
45389
46544
  "visual/naturalness-anomaly": {
45390
46545
  recall: 0.1729,
45391
46546
  fpRate: 0.0687,
45392
46547
  ratio: 10.86,
45393
46548
  precision: 0.746,
45394
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46549
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45395
46550
  verdict: "USEFUL",
45396
46551
  _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).",
45397
46552
  aiSpecific: true,
@@ -45401,14 +46556,25 @@ var signal_strength_default = {
45401
46556
  _v7FpRate: 0.0621,
45402
46557
  _v7Precision: 0.7755,
45403
46558
  _v8Verdict: "USEFUL",
45404
- _v8Lift: 7.64
46559
+ _v8Lift: 7.64,
46560
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46561
+ _v10PositiveFires: 32634,
46562
+ _v10NegativeFires: 18009,
46563
+ _v10PositiveFiles: 32220,
46564
+ _v10NegativeFiles: 17540,
46565
+ _v10Precision: 0.64751,
46566
+ _v10Recall: 0.105,
46567
+ _v10F1: 0.1807,
46568
+ _v10Signal: "weak",
46569
+ _v10Category: "visual",
46570
+ _v10Severity: "medium"
45405
46571
  },
45406
46572
  "visual/radius-scale-violation": {
45407
46573
  recall: 4e-4,
45408
46574
  fpRate: 0,
45409
46575
  ratio: 82131.33,
45410
46576
  precision: 0.9774,
45411
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46577
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45412
46578
  verdict: "USEFUL",
45413
46579
  _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). v0.19 default-on (explicit defaultOff: false): P 97.7% / 82k lift \u2014 UI consistency.",
45414
46580
  aiSpecific: false,
@@ -45419,14 +46585,25 @@ var signal_strength_default = {
45419
46585
  _v7Precision: 0.9697,
45420
46586
  _v8Verdict: "USEFUL",
45421
46587
  _v8Lift: 99999,
45422
- defaultOff: false
46588
+ defaultOff: false,
46589
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46590
+ _v10PositiveFires: 197,
46591
+ _v10NegativeFires: 5,
46592
+ _v10PositiveFiles: 112,
46593
+ _v10NegativeFiles: 3,
46594
+ _v10Precision: 0.97391,
46595
+ _v10Recall: 36e-5,
46596
+ _v10F1: 73e-5,
46597
+ _v10Signal: "strong",
46598
+ _v10Category: "visual",
46599
+ _v10Severity: "medium"
45423
46600
  },
45424
46601
  "visual/spacing-scale-violation": {
45425
46602
  recall: 86e-4,
45426
46603
  fpRate: 28e-4,
45427
46604
  ratio: 273.97,
45428
46605
  precision: 0.7792,
45429
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46606
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45430
46607
  verdict: "USEFUL",
45431
46608
  _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).",
45432
46609
  aiSpecific: false,
@@ -45436,14 +46613,25 @@ var signal_strength_default = {
45436
46613
  _v7FpRate: 39e-4,
45437
46614
  _v7Precision: 0.7342,
45438
46615
  _v8Verdict: "USEFUL",
45439
- _v8Lift: 99999
46616
+ _v8Lift: 99999,
46617
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46618
+ _v10PositiveFires: 4080,
46619
+ _v10NegativeFires: 1366,
46620
+ _v10PositiveFiles: 1968,
46621
+ _v10NegativeFiles: 716,
46622
+ _v10Precision: 0.73323,
46623
+ _v10Recall: 641e-5,
46624
+ _v10F1: 0.01272,
46625
+ _v10Signal: "strong",
46626
+ _v10Category: "visual",
46627
+ _v10Severity: "medium"
45440
46628
  },
45441
46629
  "wcag/dragging-movements": {
45442
46630
  recall: 0,
45443
46631
  fpRate: 0,
45444
46632
  ratio: 33610.67,
45445
46633
  precision: 0.4,
45446
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46634
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45447
46635
  verdict: "OK",
45448
46636
  _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).",
45449
46637
  aiSpecific: false,
@@ -45453,14 +46641,25 @@ var signal_strength_default = {
45453
46641
  _v7FpRate: 0,
45454
46642
  _v7Precision: 0.4,
45455
46643
  _v8Verdict: "DORMANT",
45456
- _v8Lift: 1
46644
+ _v8Lift: 1,
46645
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46646
+ _v10PositiveFires: 2,
46647
+ _v10NegativeFires: 4,
46648
+ _v10PositiveFiles: 2,
46649
+ _v10NegativeFiles: 4,
46650
+ _v10Precision: 0.33333,
46651
+ _v10Recall: 1e-5,
46652
+ _v10F1: 1e-5,
46653
+ _v10Signal: "dormant",
46654
+ _v10Category: "wcag",
46655
+ _v10Severity: "medium"
45457
46656
  },
45458
46657
  "wcag/focus-appearance": {
45459
46658
  recall: 28e-4,
45460
46659
  fpRate: 1e-4,
45461
46660
  ratio: 8397.24,
45462
46661
  precision: 0.966,
45463
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46662
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45464
46663
  verdict: "USEFUL",
45465
46664
  _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).",
45466
46665
  aiSpecific: false,
@@ -45470,14 +46669,25 @@ var signal_strength_default = {
45470
46669
  _v7FpRate: 1e-4,
45471
46670
  _v7Precision: 0.9623,
45472
46671
  _v8Verdict: "USEFUL",
45473
- _v8Lift: 13418.41
46672
+ _v8Lift: 13418.41,
46673
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46674
+ _v10PositiveFires: 953,
46675
+ _v10NegativeFires: 33,
46676
+ _v10PositiveFiles: 571,
46677
+ _v10NegativeFiles: 22,
46678
+ _v10Precision: 0.9629,
46679
+ _v10Recall: 186e-5,
46680
+ _v10F1: 371e-5,
46681
+ _v10Signal: "strong",
46682
+ _v10Category: "wcag",
46683
+ _v10Severity: "high"
45474
46684
  },
45475
46685
  "wcag/focus-obscured": {
45476
46686
  recall: 33e-4,
45477
46687
  fpRate: 7e-4,
45478
46688
  ratio: 1214.21,
45479
46689
  precision: 0.8478,
45480
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46690
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45481
46691
  verdict: "USEFUL",
45482
46692
  _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).",
45483
46693
  aiSpecific: false,
@@ -45487,14 +46697,25 @@ var signal_strength_default = {
45487
46697
  _v7FpRate: 1e-3,
45488
46698
  _v7Precision: 0.82,
45489
46699
  _v8Verdict: "USEFUL",
45490
- _v8Lift: 68293.81
46700
+ _v8Lift: 68293.81,
46701
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46702
+ _v10PositiveFires: 1073,
46703
+ _v10NegativeFires: 211,
46704
+ _v10PositiveFiles: 838,
46705
+ _v10NegativeFiles: 175,
46706
+ _v10Precision: 0.82725,
46707
+ _v10Recall: 273e-5,
46708
+ _v10F1: 544e-5,
46709
+ _v10Signal: "strong",
46710
+ _v10Category: "wcag",
46711
+ _v10Severity: "low"
45491
46712
  },
45492
46713
  "wcag/missing-alt": {
45493
46714
  recall: 11e-4,
45494
46715
  fpRate: 7e-4,
45495
46716
  ratio: 935.33,
45496
46717
  precision: 0.6456,
45497
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46718
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45498
46719
  verdict: "USEFUL",
45499
46720
  _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).",
45500
46721
  aiSpecific: false,
@@ -45504,14 +46725,25 @@ var signal_strength_default = {
45504
46725
  _v7FpRate: 0,
45505
46726
  _v7Precision: 0,
45506
46727
  _v8Verdict: "USEFUL",
45507
- _v8Lift: 254.79
46728
+ _v8Lift: 254.79,
46729
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46730
+ _v10PositiveFires: 1393,
46731
+ _v10NegativeFires: 931,
46732
+ _v10PositiveFiles: 916,
46733
+ _v10NegativeFiles: 529,
46734
+ _v10Precision: 0.63391,
46735
+ _v10Recall: 299e-5,
46736
+ _v10F1: 594e-5,
46737
+ _v10Signal: "weak",
46738
+ _v10Category: "wcag",
46739
+ _v10Severity: "medium"
45508
46740
  },
45509
46741
  "wcag/target-size": {
45510
46742
  recall: 0,
45511
46743
  fpRate: 0,
45512
46744
  ratio: 0,
45513
46745
  precision: 0,
45514
- lastCalibratedAt: "2026-07-01T00:00:00Z",
46746
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45515
46747
  verdict: "DORMANT",
45516
46748
  _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.",
45517
46749
  aiSpecific: false,
@@ -45522,14 +46754,25 @@ var signal_strength_default = {
45522
46754
  _v7Precision: 0,
45523
46755
  _v8Verdict: "DORMANT",
45524
46756
  _v8Lift: 1,
45525
- defaultOff: true
46757
+ defaultOff: true,
46758
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46759
+ _v10PositiveFires: 0,
46760
+ _v10NegativeFires: 0,
46761
+ _v10PositiveFiles: 0,
46762
+ _v10NegativeFiles: 0,
46763
+ _v10Precision: 0,
46764
+ _v10Recall: 0,
46765
+ _v10F1: 0,
46766
+ _v10Signal: "dormant",
46767
+ _v10Category: "wcag",
46768
+ _v10Severity: "high"
45526
46769
  },
45527
46770
  "kotlin/data-class-defaults-overuse": {
45528
46771
  recall: 469e-5,
45529
46772
  fpRate: 222e-5,
45530
46773
  ratio: 2.11,
45531
46774
  precision: 0.1429,
45532
- lastCalibratedAt: "2026-07-03T00:00:00Z",
46775
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45533
46776
  verdict: "DORMANT",
45534
46777
  _calibrationNote: "v0.28: v9 Kotlin calibration (2698 neg, 213 pos). ratio=2.11 (\u22651.5) but precision=14.3% (<50%) \u2014 verdict DORMANT. Era-confounding: pre-2022 Kotlin is sparse; the rule fires on the rare .kt file with multiple default values regardless of authorship.",
45535
46778
  aiSpecific: true,
@@ -45545,14 +46788,25 @@ var signal_strength_default = {
45545
46788
  _v9Recall: 469e-5,
45546
46789
  _v9FpRate: 222e-5,
45547
46790
  _v9Precision: 0.1429,
45548
- defaultOff: true
46791
+ defaultOff: true,
46792
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46793
+ _v10PositiveFires: 0,
46794
+ _v10NegativeFires: 0,
46795
+ _v10PositiveFiles: 0,
46796
+ _v10NegativeFiles: 0,
46797
+ _v10Precision: 0,
46798
+ _v10Recall: 0,
46799
+ _v10F1: 0,
46800
+ _v10Signal: "dormant",
46801
+ _v10Category: "typo",
46802
+ _v10Severity: "low"
45549
46803
  },
45550
46804
  "kotlin/coroutine-global-scope": {
45551
46805
  recall: 469e-5,
45552
46806
  fpRate: 0.05004,
45553
46807
  ratio: 0.09,
45554
46808
  precision: 735e-5,
45555
- lastCalibratedAt: "2026-07-03T00:00:00Z",
46809
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45556
46810
  verdict: "DORMANT",
45557
46811
  _calibrationNote: "v0.28: v9 Kotlin calibration (2698 neg, 213 pos). ratio=0.09 (FAR <1.0) \u2014 fires 135x more on neg than pos. Classic era-confound: pre-2022 Kotlin coroutines had GlobalScope as the default; modern Kotlin uses viewModelScope / lifecycleScope. The rule detects era, not AI authorship.",
45558
46812
  aiSpecific: true,
@@ -45568,14 +46822,25 @@ var signal_strength_default = {
45568
46822
  _v9Recall: 469e-5,
45569
46823
  _v9FpRate: 0.05004,
45570
46824
  _v9Precision: 735e-5,
45571
- defaultOff: true
46825
+ defaultOff: true,
46826
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46827
+ _v10PositiveFires: 0,
46828
+ _v10NegativeFires: 0,
46829
+ _v10PositiveFiles: 0,
46830
+ _v10NegativeFiles: 0,
46831
+ _v10Precision: 0,
46832
+ _v10Recall: 0,
46833
+ _v10F1: 0,
46834
+ _v10Signal: "dormant",
46835
+ _v10Category: "logic",
46836
+ _v10Severity: "medium"
45572
46837
  },
45573
46838
  "kotlin/println-debug": {
45574
46839
  recall: 0.07042,
45575
46840
  fpRate: 0.11379,
45576
46841
  ratio: 0.62,
45577
46842
  precision: 0.04659,
45578
- lastCalibratedAt: "2026-07-03T00:00:00Z",
46843
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45579
46844
  verdict: "DORMANT",
45580
46845
  _calibrationNote: "v0.28: v9 Kotlin calibration (2698 neg, 213 pos). ratio=0.62 (\u226A1.0) \u2014 fires 20x more on neg than pos. Classic era-confound: pre-2022 Kotlin code uses println() for debug; modern Kotlin uses Timber / android.util.Log / kermit.",
45581
46846
  aiSpecific: true,
@@ -45591,14 +46856,25 @@ var signal_strength_default = {
45591
46856
  _v9Recall: 0.07042,
45592
46857
  _v9FpRate: 0.11379,
45593
46858
  _v9Precision: 0.04659,
45594
- defaultOff: true
46859
+ defaultOff: true,
46860
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46861
+ _v10PositiveFires: 3,
46862
+ _v10NegativeFires: 0,
46863
+ _v10PositiveFiles: 1,
46864
+ _v10NegativeFiles: 0,
46865
+ _v10Precision: 1,
46866
+ _v10Recall: 0,
46867
+ _v10F1: 1e-5,
46868
+ _v10Signal: "dormant",
46869
+ _v10Category: "typo",
46870
+ _v10Severity: "low"
45595
46871
  },
45596
46872
  "kotlin/object-singleton-misuse": {
45597
46873
  recall: 469e-5,
45598
46874
  fpRate: 371e-5,
45599
46875
  ratio: 1.27,
45600
46876
  precision: 0.09091,
45601
- lastCalibratedAt: "2026-07-03T00:00:00Z",
46877
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45602
46878
  verdict: "DORMANT",
45603
46879
  _calibrationNote: "v0.28: v9 Kotlin calibration (2698 neg, 213 pos). ratio=1.27 (\u22651.0) but <1.5; precision=9.1% \u2014 verdict DORMANT. INSUFFICIENT_DATA: pos arm only 213 files (under 10k minimum).",
45604
46880
  aiSpecific: true,
@@ -45614,14 +46890,25 @@ var signal_strength_default = {
45614
46890
  _v9Recall: 469e-5,
45615
46891
  _v9FpRate: 371e-5,
45616
46892
  _v9Precision: 0.09091,
45617
- defaultOff: true
46893
+ defaultOff: true,
46894
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46895
+ _v10PositiveFires: 0,
46896
+ _v10NegativeFires: 0,
46897
+ _v10PositiveFiles: 0,
46898
+ _v10NegativeFiles: 0,
46899
+ _v10Precision: 0,
46900
+ _v10Recall: 0,
46901
+ _v10F1: 0,
46902
+ _v10Signal: "dormant",
46903
+ _v10Category: "logic",
46904
+ _v10Severity: "medium"
45618
46905
  },
45619
46906
  "kotlin/string-concat-loop": {
45620
46907
  recall: 939e-5,
45621
46908
  fpRate: 519e-5,
45622
46909
  ratio: 1.81,
45623
46910
  precision: 0.125,
45624
- lastCalibratedAt: "2026-07-03T00:00:00Z",
46911
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45625
46912
  verdict: "DORMANT",
45626
46913
  _calibrationNote: "v0.28: v9 Kotlin calibration (2698 neg, 213 pos). ratio=1.81 (\u22651.5) but precision=12.5% (<50%) \u2014 verdict DORMANT. INSUFFICIENT_DATA: pos arm only 213 files.",
45627
46914
  aiSpecific: true,
@@ -45637,14 +46924,25 @@ var signal_strength_default = {
45637
46924
  _v9Recall: 939e-5,
45638
46925
  _v9FpRate: 519e-5,
45639
46926
  _v9Precision: 0.125,
45640
- defaultOff: true
46927
+ defaultOff: true,
46928
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46929
+ _v10PositiveFires: 0,
46930
+ _v10NegativeFires: 0,
46931
+ _v10PositiveFiles: 0,
46932
+ _v10NegativeFiles: 0,
46933
+ _v10Precision: 0,
46934
+ _v10Recall: 0,
46935
+ _v10F1: 0,
46936
+ _v10Signal: "dormant",
46937
+ _v10Category: "perf",
46938
+ _v10Severity: "low"
45641
46939
  },
45642
46940
  "kotlin/sql-string-concat": {
45643
46941
  recall: 469e-5,
45644
46942
  fpRate: 63e-4,
45645
46943
  ratio: 0.75,
45646
46944
  precision: 0.0556,
45647
- lastCalibratedAt: "2026-07-03T00:00:00Z",
46945
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45648
46946
  verdict: "DORMANT",
45649
46947
  _calibrationNote: 'v0.34.8: REFINED \u2014 rule now requires the SQL keyword to be the start of a string literal (preceded by `"`, `\'`, or `=`), and fixed a bug in the SAFE_REGEX (the `:??` was malformed, should be `:?`). Per-file unique v9 Kotlin calibration (2698 neg, 213 pos): 1 TP file, 17 FP files, ratio=0.75 (DORMANT). 18 total fires. The refinement is expected to push precision from 5.6% to 25%+ by removing lines where SELECT/INSERT appears in string values (e.g. `val msg = "Selected 1 row: \\$count"`). Also fixed the bug where `:??` in SAFE_REGEX didn\'t match Java/Kotlin named parameters (`:id`). The full v9 re-calibration is part of the broader v0.34.8/v0.34.9 pipeline. INSUFFICIENT_DATA: pos arm 213 files (below 10k floor).',
45650
46948
  aiSpecific: false,
@@ -45653,14 +46951,25 @@ var signal_strength_default = {
45653
46951
  _v9Recall: 469e-5,
45654
46952
  _v9FpRate: 63e-4,
45655
46953
  _v9Precision: 0.0556,
45656
- defaultOff: true
46954
+ defaultOff: true,
46955
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46956
+ _v10PositiveFires: 0,
46957
+ _v10NegativeFires: 0,
46958
+ _v10PositiveFiles: 0,
46959
+ _v10NegativeFiles: 0,
46960
+ _v10Precision: 0,
46961
+ _v10Recall: 0,
46962
+ _v10F1: 0,
46963
+ _v10Signal: "dormant",
46964
+ _v10Category: "security",
46965
+ _v10Severity: "high"
45657
46966
  },
45658
46967
  "kotlin/hardcoded-credential": {
45659
46968
  recall: 0,
45660
46969
  fpRate: 0,
45661
46970
  ratio: 0,
45662
46971
  precision: 0,
45663
- lastCalibratedAt: "2026-07-03T00:00:00Z",
46972
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45664
46973
  verdict: "DORMANT",
45665
46974
  _calibrationNote: "v0.29: v9 Kotlin calibration (2698 neg, 213 pos). 0 fires. The 16-char value threshold + letters+digit heuristic is too strict for the corpus; real-world secrets are in env vars / config files, not source. INSUFFICIENT_DATA: needs different corpus (CI configs, .env samples). defaultOff: loadable but invisible by default.",
45666
46975
  aiSpecific: false,
@@ -45669,14 +46978,25 @@ var signal_strength_default = {
45669
46978
  _v9Recall: 0,
45670
46979
  _v9FpRate: 0,
45671
46980
  _v9Precision: 0,
45672
- defaultOff: true
46981
+ defaultOff: true,
46982
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
46983
+ _v10PositiveFires: 0,
46984
+ _v10NegativeFires: 0,
46985
+ _v10PositiveFiles: 0,
46986
+ _v10NegativeFiles: 0,
46987
+ _v10Precision: 0,
46988
+ _v10Recall: 0,
46989
+ _v10F1: 0,
46990
+ _v10Signal: "dormant",
46991
+ _v10Category: "security",
46992
+ _v10Severity: "high"
45673
46993
  },
45674
46994
  "kotlin/runblocking-misuse": {
45675
46995
  recall: 0.10798,
45676
46996
  fpRate: 0.21534,
45677
46997
  ratio: 0.5,
45678
46998
  precision: 0.0381,
45679
- lastCalibratedAt: "2026-07-03T00:00:00Z",
46999
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45680
47000
  verdict: "DORMANT",
45681
47001
  _calibrationNote: "v0.29: v9 Kotlin calibration (2698 neg, 213 pos). ratio=0.50 \u2014 fires 2x more on pre-2022 (neg) than post-2024 (pos). Era-confounded: pre-2022 Kotlin coroutines used runBlocking more; modern Kotlin uses coroutineScope. Same direction as kotlin/coroutine-global-scope (0.09). defaultOff: loadable but invisible by default until v0.30 re-calibration.",
45682
47002
  aiSpecific: false,
@@ -45685,14 +47005,25 @@ var signal_strength_default = {
45685
47005
  _v9Recall: 0.10798,
45686
47006
  _v9FpRate: 0.21534,
45687
47007
  _v9Precision: 0.0381,
45688
- defaultOff: true
47008
+ defaultOff: true,
47009
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47010
+ _v10PositiveFires: 0,
47011
+ _v10NegativeFires: 0,
47012
+ _v10PositiveFiles: 0,
47013
+ _v10NegativeFiles: 0,
47014
+ _v10Precision: 0,
47015
+ _v10Recall: 0,
47016
+ _v10F1: 0,
47017
+ _v10Signal: "dormant",
47018
+ _v10Category: "perf",
47019
+ _v10Severity: "medium"
45689
47020
  },
45690
47021
  "kotlin/println-as-log": {
45691
47022
  recall: 0.08451,
45692
47023
  fpRate: 0.04596,
45693
47024
  ratio: 1.84,
45694
47025
  precision: 0.1268,
45695
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47026
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45696
47027
  verdict: "OK",
45697
47028
  _calibrationNote: "v0.34.5: REFINED \u2014 rule now skips test files (JUnit4/5 + Android: *Tests.kt, *Test.kt, src/test/, test/ dirs). Per-file unique v9 Kotlin calibration (2698 neg, 213 pos): ratio=1.84 (\u22651.5, OK). The refinement mirrors v0.34.2's swift/print-debug fix: the previous exclusion only matched `\\/test\\/` and `.test.kts?$`, missing JUnit5's `FooTests.kt` naming. Expected post-refinement precision: 12.7% \u2192 25%+ by removing the JUnit assertion / debug-output fires that were ~50% of the FPs. Same direction as java/system-out-println (1.73 refined) and the v0.34.2 swift/print-debug pipeline. Full v9 re-calibration is part of the v0.35.0 re-measurement. v0.29: v9 Kotlin calibration (2698 neg, 213 pos). ratio=1.84 (\u22651.5) \u2014 first rule in this entire session with a positive direction! Fires 1.84x more on post-2024 AI/demos than pre-2022 production. Precision=12.7% (below 50% USEFUL threshold); verdict=OK. The signal is real: post-2024 Kotlin code (especially AI-generated examples) uses println for output; pre-2022 production code uses slf4j/kermit. INSUFFICIENT_DATA: pos arm only 213 files. defaultOff: still set to true (verdict is OK but precision is below 50% \u2014 the guardrail expects OK/USEFUL rules to be defaultOff:false only when calibrated with a meaningful pos arm).",
45698
47029
  aiSpecific: false,
@@ -45701,14 +47032,25 @@ var signal_strength_default = {
45701
47032
  _v9Recall: 0.08451,
45702
47033
  _v9FpRate: 0.04596,
45703
47034
  _v9Precision: 0.1268,
45704
- defaultOff: true
47035
+ defaultOff: true,
47036
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47037
+ _v10PositiveFires: 8,
47038
+ _v10NegativeFires: 0,
47039
+ _v10PositiveFiles: 3,
47040
+ _v10NegativeFiles: 0,
47041
+ _v10Precision: 1,
47042
+ _v10Recall: 1e-5,
47043
+ _v10F1: 2e-5,
47044
+ _v10Signal: "dormant",
47045
+ _v10Category: "logic",
47046
+ _v10Severity: "low"
45705
47047
  },
45706
47048
  "kotlin/force-unwrap": {
45707
47049
  recall: 0.11737,
45708
47050
  fpRate: 0.33284,
45709
47051
  ratio: 0.35,
45710
47052
  precision: 0.0271,
45711
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47053
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45712
47054
  verdict: "DORMANT",
45713
47055
  _calibrationNote: "v0.29: v9 Kotlin calibration (2698 neg, 213 pos). ratio=0.35 \u2014 fires 3x more on pre-2022 (neg) than post-2024 (pos). Era-confounded: pre-2022 Kotlin code uses !! freely; modern Kotlin relies on ?./?: and Result<T> wrappers. Stronger era signal than runblocking-misuse. defaultOff: loadable but invisible by default.",
45714
47056
  aiSpecific: false,
@@ -45717,14 +47059,25 @@ var signal_strength_default = {
45717
47059
  _v9Recall: 0.11737,
45718
47060
  _v9FpRate: 0.33284,
45719
47061
  _v9Precision: 0.0271,
45720
- defaultOff: true
47062
+ defaultOff: true,
47063
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47064
+ _v10PositiveFires: 0,
47065
+ _v10NegativeFires: 0,
47066
+ _v10PositiveFiles: 0,
47067
+ _v10NegativeFiles: 0,
47068
+ _v10Precision: 0,
47069
+ _v10Recall: 0,
47070
+ _v10F1: 0,
47071
+ _v10Signal: "dormant",
47072
+ _v10Category: "logic",
47073
+ _v10Severity: "medium"
45721
47074
  },
45722
47075
  "java/sql-string-concat": {
45723
47076
  recall: 0.01116,
45724
47077
  fpRate: 0.01892,
45725
47078
  ratio: 0.59,
45726
47079
  precision: 0.0691,
45727
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47080
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45728
47081
  verdict: "DORMANT",
45729
47082
  _calibrationNote: 'v0.34.9: REFINED \u2014 rule now requires the SQL keyword to be the start of a string literal (preceded by `"`, `\'`, or `=`), and tightened the SAFE_REGEX. Per-file unique v9 Java calibration (81891 neg, 10305 pos): 115 TP files, 1549 FP files, ratio=0.59 (DORMANT). 1664 total fires. The refinement is expected to push precision from 6.9% to 25%+ by removing lines where SELECT/INSERT appears in string values (e.g. `String msg = "Selected 1 row: " + count`). Also tightened SAFE_REGEX from `:??` to `:?` (the original was over-broad). The full v9 re-calibration is part of the broader v0.34.8/v0.34.9 pipeline (same pattern applied to kotlin/sql-string-concat and java/sql-string-concat). INSUFFICIENT_DATA: pos arm 10305 files, below the 10k floor. Era-confounded: pre-2022 Java used JDBC string concat more; modern Java uses PreparedStatement. defaultOff.',
45730
47083
  aiSpecific: false,
@@ -45733,14 +47086,25 @@ var signal_strength_default = {
45733
47086
  _v9Recall: 0.01116,
45734
47087
  _v9FpRate: 0.01892,
45735
47088
  _v9Precision: 0.0691,
45736
- defaultOff: true
47089
+ defaultOff: true,
47090
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47091
+ _v10PositiveFires: 13,
47092
+ _v10NegativeFires: 0,
47093
+ _v10PositiveFiles: 9,
47094
+ _v10NegativeFiles: 0,
47095
+ _v10Precision: 1,
47096
+ _v10Recall: 3e-5,
47097
+ _v10F1: 6e-5,
47098
+ _v10Signal: "strong",
47099
+ _v10Category: "security",
47100
+ _v10Severity: "high"
45737
47101
  },
45738
47102
  "java/hardcoded-credential": {
45739
47103
  recall: 0,
45740
47104
  fpRate: 4e-5,
45741
47105
  ratio: 0,
45742
47106
  precision: 0,
45743
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47107
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45744
47108
  verdict: "DORMANT",
45745
47109
  _calibrationNote: "v0.30: v9 Java calibration (81891 neg, 10305 pos). 3 fires total \u2014 only in pre-2022 (neg). Real secrets are in env vars / config files, not source. INSUFFICIENT_DATA: needs different corpus (CI configs, .env samples, leaked-secret datasets). defaultOff.",
45746
47110
  aiSpecific: false,
@@ -45749,14 +47113,25 @@ var signal_strength_default = {
45749
47113
  _v9Recall: 0,
45750
47114
  _v9FpRate: 4e-5,
45751
47115
  _v9Precision: 0,
45752
- defaultOff: true
47116
+ defaultOff: true,
47117
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47118
+ _v10PositiveFires: 0,
47119
+ _v10NegativeFires: 0,
47120
+ _v10PositiveFiles: 0,
47121
+ _v10NegativeFiles: 0,
47122
+ _v10Precision: 0,
47123
+ _v10Recall: 0,
47124
+ _v10F1: 0,
47125
+ _v10Signal: "dormant",
47126
+ _v10Category: "security",
47127
+ _v10Severity: "high"
45753
47128
  },
45754
47129
  "java/thread-sleep-in-loop": {
45755
47130
  recall: 0.0228,
45756
47131
  fpRate: 0.02343,
45757
47132
  ratio: 0.97,
45758
47133
  precision: 0.1091,
45759
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47134
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45760
47135
  verdict: "DORMANT",
45761
47136
  _calibrationNote: "v0.34.6: REFINED \u2014 rule now requires Thread.sleep to be INSIDE the loop block (verified via brace-counting), not just in a file that happens to contain a for/while/do keyword. v0.30 baseline: 2154 total fires, ratio 0.97 (DORMANT). The refinement targets: (1) Thread.sleep in `main()` no longer fires if a different method has a `for` loop (the v0.30 heuristic fired on every Thread.sleep in the file); (2) Thread.sleep before/after a loop block (not inside it) no longer fires; (3) string literals containing `Thread.sleep(...)` are skipped via the string-state-machine. Expected post-refinement ratio: 1.5+ (positive-signal OK verdict) by removing the cross-method over-fires. Full v9 re-calibration is part of the v0.35.0 re-measurement. v0.30: v9 Java calibration (81891 neg, 10305 pos). ratio=0.97 (just below 1.0) \u2014 fires equally on both arms. Borderline era-confound: pre-2022 Java had more Thread.sleep in loops (less mature concurrency APIs); modern Java uses ScheduledExecutorService. Same direction as kotlin/runblocking-misuse (0.50). 2154 total fires \u2014 high absolute count, meaningful measurement. defaultOff.",
45762
47137
  aiSpecific: false,
@@ -45765,14 +47140,25 @@ var signal_strength_default = {
45765
47140
  _v9Recall: 0.0228,
45766
47141
  _v9FpRate: 0.02343,
45767
47142
  _v9Precision: 0.1091,
45768
- defaultOff: true
47143
+ defaultOff: true,
47144
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47145
+ _v10PositiveFires: 24,
47146
+ _v10NegativeFires: 0,
47147
+ _v10PositiveFiles: 18,
47148
+ _v10NegativeFiles: 0,
47149
+ _v10Precision: 1,
47150
+ _v10Recall: 6e-5,
47151
+ _v10F1: 12e-5,
47152
+ _v10Signal: "strong",
47153
+ _v10Category: "perf",
47154
+ _v10Severity: "medium"
45769
47155
  },
45770
47156
  "java/system-out-println": {
45771
47157
  recall: 116e-5,
45772
47158
  fpRate: 67e-5,
45773
47159
  ratio: 1.73,
45774
47160
  precision: 0.1791,
45775
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47161
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45776
47162
  verdict: "OK",
45777
47163
  _calibrationNote: "v0.31: v9 Java calibration REFINED \u2014 rule now requires the file to import a real logger (SLF4J, Log4j2, java.util.logging) AND have System.out.println calls. This is the 'set up but didn't use' anti-pattern. ratio=1.73 (\u22651.5) \u2014 second positive-signal rule in v9 history. v0.30.0 unrefined version had ratio=3.29 but precision=29.3% (over 5800 fires diluted by legitimate System.out in non-slf4j files). v0.31.0 refined version: 12 TP, 55 FP \u2014 much more selective, but absolute count is too small for production-grade measurement. precision=17.91% (still below 50% USEFUL threshold). The refinement succeeded: the fires dropped 99% (5866\u219267) and precision went 29.3%\u219217.9% (a tradeoff \u2014 fewer fires but more targeted). The direction is preserved: post-2024 Java has slightly more 'slf4j import + System.out call' than pre-2022. defaultOff: still set true (precision below 50%).",
45778
47164
  aiSpecific: false,
@@ -45781,14 +47167,25 @@ var signal_strength_default = {
45781
47167
  _v9Recall: 116e-5,
45782
47168
  _v9FpRate: 67e-5,
45783
47169
  _v9Precision: 0.1791,
45784
- defaultOff: true
47170
+ defaultOff: true,
47171
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47172
+ _v10PositiveFires: 13,
47173
+ _v10NegativeFires: 0,
47174
+ _v10PositiveFiles: 2,
47175
+ _v10NegativeFiles: 0,
47176
+ _v10Precision: 1,
47177
+ _v10Recall: 1e-5,
47178
+ _v10F1: 1e-5,
47179
+ _v10Signal: "dormant",
47180
+ _v10Category: "logic",
47181
+ _v10Severity: "low"
45785
47182
  },
45786
47183
  "java/command-injection": {
45787
47184
  recall: 0,
45788
47185
  fpRate: 1e-4,
45789
47186
  ratio: 0,
45790
47187
  precision: 0,
45791
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47188
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45792
47189
  verdict: "DORMANT",
45793
47190
  _calibrationNote: "v0.30: v9 Java calibration (81891 neg, 10305 pos). 8 fires total, all in neg. Command injection is rare in modern Java \u2014 most apps use ProcessBuilder with List<String> args, not Runtime.exec with concat. INSUFFICIENT_DATA: needs different corpus (security benchmarks, CVE samples). defaultOff.",
45794
47191
  aiSpecific: false,
@@ -45797,14 +47194,25 @@ var signal_strength_default = {
45797
47194
  _v9Recall: 0,
45798
47195
  _v9FpRate: 1e-4,
45799
47196
  _v9Precision: 0,
45800
- defaultOff: true
47197
+ defaultOff: true,
47198
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47199
+ _v10PositiveFires: 3,
47200
+ _v10NegativeFires: 0,
47201
+ _v10PositiveFiles: 3,
47202
+ _v10NegativeFiles: 0,
47203
+ _v10Precision: 1,
47204
+ _v10Recall: 1e-5,
47205
+ _v10F1: 2e-5,
47206
+ _v10Signal: "dormant",
47207
+ _v10Category: "security",
47208
+ _v10Severity: "high"
45801
47209
  },
45802
47210
  "java/suspicious-implementation": {
45803
47211
  recall: 0,
45804
47212
  fpRate: 0,
45805
47213
  ratio: 0,
45806
47214
  precision: 0,
45807
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47215
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45808
47216
  verdict: "OK",
45809
47217
  _calibrationNote: "v0.35.0: NEW RULE \u2014 content-based detection (CoCoNUTS-inspired). Detects function names that claim a strong operation (validate, encrypt, hash, sanitize, check, verify, authenticate, etc.) but whose body is trivially empty, returns a constant, or returns the input unchanged. The rule is a real engineering defect detector (not AI fingerprint), so it is defaultOff=false (i.e. ON by default) and verdict=OK. The CoCoNUTS paper (2025) showed that style-based AI-detectors fail under paraphrasing; this rule looks at semantic content (function body behavior) rather than surface features. v9 calibration is pending \u2014 the rule was added at the end of the v0.34.X refinement series and has not been measured against the v9 corpus yet. The expected impact: low recall (most production code doesn't have these stubs) but high precision (when it fires, it's a real bug). The full v9 calibration is the next step for v0.35.0.x patches.",
45810
47218
  aiSpecific: false,
@@ -45813,14 +47221,25 @@ var signal_strength_default = {
45813
47221
  _v9Recall: 0,
45814
47222
  _v9FpRate: 0,
45815
47223
  _v9Precision: 0,
45816
- defaultOff: false
47224
+ defaultOff: false,
47225
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47226
+ _v10PositiveFires: 361,
47227
+ _v10NegativeFires: 35,
47228
+ _v10PositiveFiles: 216,
47229
+ _v10NegativeFiles: 25,
47230
+ _v10Precision: 0.89627,
47231
+ _v10Recall: 7e-4,
47232
+ _v10F1: 141e-5,
47233
+ _v10Signal: "strong",
47234
+ _v10Category: "security",
47235
+ _v10Severity: "high"
45817
47236
  },
45818
47237
  "java/lost-stack-trace": {
45819
47238
  recall: 0,
45820
47239
  fpRate: 0,
45821
47240
  ratio: 0,
45822
47241
  precision: 0,
45823
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47242
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45824
47243
  verdict: "OK",
45825
47244
  _calibrationNote: "v0.35.1: NEW RULE \u2014 Raidar-inspired content-based detection. The Raidar paper (ICLR 2024) showed that LLMs tend to 'polish' error handling by wrapping exceptions but losing the original cause; the inverse observation is that AI-generated code often has this pattern. This rule detects catch blocks that throw a new exception WITHOUT including the original exception as a cause \u2014 the original stack trace is lost. The rule is a real engineering defect detector (not AI fingerprint), so it is defaultOff=false (ON by default) and verdict=OK. v9 calibration is pending. The expected impact: low recall (most production code preserves the original exception) but very high precision (when it fires, it's a real bug \u2014 debugging without the stack trace is impossible).",
45826
47245
  aiSpecific: false,
@@ -45829,14 +47248,25 @@ var signal_strength_default = {
45829
47248
  _v9Recall: 0,
45830
47249
  _v9FpRate: 0,
45831
47250
  _v9Precision: 0,
45832
- defaultOff: false
47251
+ defaultOff: false,
47252
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47253
+ _v10PositiveFires: 179,
47254
+ _v10NegativeFires: 21,
47255
+ _v10PositiveFiles: 117,
47256
+ _v10NegativeFiles: 14,
47257
+ _v10Precision: 0.89313,
47258
+ _v10Recall: 38e-5,
47259
+ _v10F1: 76e-5,
47260
+ _v10Signal: "strong",
47261
+ _v10Category: "logic",
47262
+ _v10Severity: "medium"
45833
47263
  },
45834
47264
  "swift/force-unwrap": {
45835
47265
  recall: 0.10211,
45836
47266
  fpRate: 0.21462,
45837
47267
  ratio: 0.48,
45838
47268
  precision: 0.1721,
45839
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47269
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45840
47270
  verdict: "DORMANT",
45841
47271
  _calibrationNote: "v0.34.10: REFINED \u2014 the access-force regex now uses a negative lookbehind to exclude `!` in `!=` and `!==` comparison operators. Per-file unique v9 Swift calibration (1300 neg, 568 pos): 58 TP files, 279 FP files, ratio=0.48 (DORMANT). The previous regex incorrectly fired on `!` in `a != b` and `a !== b` patterns, which are common in control flow. The refinement is expected to push precision from 17.2% to 25%+ by removing these false positives. Era-confounded: pre-2022 Swift used `!` freely (the only way to unwrap); modern Swift uses `guard let` / `if let` / `try?`. Same direction as kotlin/force-unwrap (0.35) and kotlin/runblocking-misuse (0.50). INSUFFICIENT_DATA: pos arm 568 files (below 10k floor).",
45842
47272
  aiSpecific: true,
@@ -45852,14 +47282,25 @@ var signal_strength_default = {
45852
47282
  _v9Recall: 0.10211,
45853
47283
  _v9FpRate: 0.21462,
45854
47284
  _v9Precision: 0.1721,
45855
- defaultOff: true
47285
+ defaultOff: true,
47286
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47287
+ _v10PositiveFires: 45,
47288
+ _v10NegativeFires: 0,
47289
+ _v10PositiveFiles: 22,
47290
+ _v10NegativeFiles: 0,
47291
+ _v10Precision: 1,
47292
+ _v10Recall: 7e-5,
47293
+ _v10F1: 14e-5,
47294
+ _v10Signal: "strong",
47295
+ _v10Category: "logic",
47296
+ _v10Severity: "medium"
45856
47297
  },
45857
47298
  "swift/print-debug": {
45858
47299
  recall: 0.06866,
45859
47300
  fpRate: 0.06077,
45860
47301
  ratio: 1.13,
45861
47302
  precision: 0.3305,
45862
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47303
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45863
47304
  verdict: "OK",
45864
47305
  _calibrationNote: "v0.34.2: REFINED \u2014 rule now skips test files (XCTest naming: *Tests.swift, *Test.swift, Tests/ dir). Per-file unique v9 Swift calibration (1300 neg, 568 pos): 39 TP files, 79 FP files, ratio=1.13 (OK). The refinement is expected to push precision from 33% to 50%+ by removing XCTest output and snapshot test fires (which were ~49% of FPs in the v0.32.0 measurement). The full v9 re-calibration is part of the v0.34.5/v0.34.7 pipeline (same refinement applied to kotlin/println-as-log and cpp/printf-debug); see v0.34.1's Four-language validation section. v0.32.0 baseline: 39 TP files / 568 = 6.87% recall, 79 FP files / 1300 = 6.08% fpRate, ratio 1.13, precision 33.05% (just below 50% USEFUL threshold). Same direction as kotlin/println-as-log (1.84) and java/system-out-println (1.73 refined, 3.29 unrefined). INSUFFICIENT_DATA: pos arm 568 files (below 10k floor).",
45865
47306
  aiSpecific: true,
@@ -45875,14 +47316,25 @@ var signal_strength_default = {
45875
47316
  _v9Recall: 0.06866,
45876
47317
  _v9FpRate: 0.06077,
45877
47318
  _v9Precision: 0.3305,
45878
- defaultOff: true
47319
+ defaultOff: true,
47320
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47321
+ _v10PositiveFires: 139,
47322
+ _v10NegativeFires: 3,
47323
+ _v10PositiveFiles: 24,
47324
+ _v10NegativeFiles: 1,
47325
+ _v10Precision: 0.96,
47326
+ _v10Recall: 8e-5,
47327
+ _v10F1: 16e-5,
47328
+ _v10Signal: "strong",
47329
+ _v10Category: "typo",
47330
+ _v10Severity: "low"
45879
47331
  },
45880
47332
  "swift/fatal-error-thrown": {
45881
47333
  recall: 0.06514,
45882
47334
  fpRate: 0.11462,
45883
47335
  ratio: 0.57,
45884
47336
  precision: 0.1989,
45885
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47337
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45886
47338
  verdict: "DORMANT",
45887
47339
  _calibrationNote: "v0.32: v9 Swift calibration (1300 neg, 568 pos). Per-file unique: 37 TP files, 149 FP files, ratio=0.57. Era-confounded: pre-2022 Swift used fatalError liberally for unrecoverable states; modern Swift uses typed errors (throws) and Result types. INSUFFICIENT_DATA: pos arm 568 files.",
45888
47340
  aiSpecific: true,
@@ -45898,14 +47350,25 @@ var signal_strength_default = {
45898
47350
  _v9Recall: 0.06514,
45899
47351
  _v9FpRate: 0.11462,
45900
47352
  _v9Precision: 0.1989,
45901
- defaultOff: true
47353
+ defaultOff: true,
47354
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47355
+ _v10PositiveFires: 20,
47356
+ _v10NegativeFires: 0,
47357
+ _v10PositiveFiles: 14,
47358
+ _v10NegativeFiles: 0,
47359
+ _v10Precision: 1,
47360
+ _v10Recall: 5e-5,
47361
+ _v10F1: 9e-5,
47362
+ _v10Signal: "strong",
47363
+ _v10Category: "logic",
47364
+ _v10Severity: "high"
45902
47365
  },
45903
47366
  "swift/implicitly-unwrapped-optional": {
45904
47367
  recall: 0.01937,
45905
47368
  fpRate: 0.10692,
45906
47369
  ratio: 0.18,
45907
47370
  precision: 0.0733,
45908
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47371
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45909
47372
  verdict: "DORMANT",
45910
47373
  _calibrationNote: "v0.32: v9 Swift calibration (1300 neg, 568 pos). Per-file unique: 11 TP files, 139 FP files, ratio=0.18 \u2014 strong era-confound. Pre-2022 Swift used `var foo: Bar!` for IBOutlets and delegates; modern Swift uses `weak var` or declares as `Bar?` and unwraps with guard let. Same magnitude as kotlin/coroutine-global-scope (0.09) \u2014 strongest era-confound in v9 history. INSUFFICIENT_DATA: pos arm 568 files.",
45911
47374
  aiSpecific: true,
@@ -45921,14 +47384,25 @@ var signal_strength_default = {
45921
47384
  _v9Recall: 0.01937,
45922
47385
  _v9FpRate: 0.10692,
45923
47386
  _v9Precision: 0.0733,
45924
- defaultOff: true
47387
+ defaultOff: true,
47388
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47389
+ _v10PositiveFires: 13,
47390
+ _v10NegativeFires: 0,
47391
+ _v10PositiveFiles: 6,
47392
+ _v10NegativeFiles: 0,
47393
+ _v10Precision: 1,
47394
+ _v10Recall: 2e-5,
47395
+ _v10F1: 4e-5,
47396
+ _v10Signal: "strong",
47397
+ _v10Category: "typo",
47398
+ _v10Severity: "low"
45925
47399
  },
45926
47400
  "swift/strong-self-capture": {
45927
47401
  recall: 0.24824,
45928
47402
  fpRate: 0.44308,
45929
47403
  ratio: 0.56,
45930
47404
  precision: 0.1967,
45931
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47405
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45932
47406
  verdict: "DORMANT",
45933
47407
  _calibrationNote: "v0.32: v9 Swift calibration (1300 neg, 568 pos). Per-file unique: 141 TP files, 576 FP files, ratio=0.56. Era-confounded: pre-2022 Swift closures defaulted to strong self capture; modern Swift (Swift 5.7+) emits a warning for implicit self capture in escaping closures. The rule fires multiple times per file (multiple closures) \u2014 total fires were 2316 TP, 8913 FP, but per-file is 141 TP, 576 FP. INSUFFICIENT_DATA: pos arm 568 files.",
45934
47408
  aiSpecific: true,
@@ -45944,14 +47418,25 @@ var signal_strength_default = {
45944
47418
  _v9Recall: 0.24824,
45945
47419
  _v9FpRate: 0.44308,
45946
47420
  _v9Precision: 0.1967,
45947
- defaultOff: true
47421
+ defaultOff: true,
47422
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47423
+ _v10PositiveFires: 16611,
47424
+ _v10NegativeFires: 1,
47425
+ _v10PositiveFiles: 638,
47426
+ _v10NegativeFiles: 1,
47427
+ _v10Precision: 0.99844,
47428
+ _v10Recall: 208e-5,
47429
+ _v10F1: 415e-5,
47430
+ _v10Signal: "strong",
47431
+ _v10Category: "logic",
47432
+ _v10Severity: "medium"
45948
47433
  },
45949
47434
  "cpp/using-namespace-std": {
45950
47435
  recall: 0,
45951
47436
  fpRate: 2e-4,
45952
47437
  ratio: 0,
45953
47438
  precision: 0,
45954
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47439
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45955
47440
  verdict: "DORMANT",
45956
47441
  _calibrationNote: "v0.33: v9 C++ calibration (5107 neg, 1655 pos). 1 fire total (in neg). Pre-2022 C++ used `using namespace std;` extensively (it's idiomatic in tutorials); modern C++ deprecated it. INSUFFICIENT_DATA: pos arm 1655 files (below 10k floor).",
45957
47442
  aiSpecific: true,
@@ -45967,14 +47452,25 @@ var signal_strength_default = {
45967
47452
  _v9Recall: 0,
45968
47453
  _v9FpRate: 2e-4,
45969
47454
  _v9Precision: 0,
45970
- defaultOff: true
47455
+ defaultOff: true,
47456
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47457
+ _v10PositiveFires: 0,
47458
+ _v10NegativeFires: 3,
47459
+ _v10PositiveFiles: 0,
47460
+ _v10NegativeFiles: 3,
47461
+ _v10Precision: 0,
47462
+ _v10Recall: 0,
47463
+ _v10F1: 0,
47464
+ _v10Signal: "dormant",
47465
+ _v10Category: "logic",
47466
+ _v10Severity: "medium"
45971
47467
  },
45972
47468
  "cpp/raw-new-delete": {
45973
47469
  recall: 967e-5,
45974
47470
  fpRate: 0.01077,
45975
47471
  ratio: 0.9,
45976
47472
  precision: 0.2254,
45977
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47473
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
45978
47474
  verdict: "DORMANT",
45979
47475
  _calibrationNote: "v0.33: v9 C++ calibration (5107 neg, 1655 pos). Per-file unique: 16 TP, 55 FP, ratio=0.90. Era-confounded: pre-2022 C++ used raw new/delete extensively; modern C++ uses std::make_unique. INSUFFICIENT_DATA: pos arm 1655 files.",
45980
47476
  aiSpecific: true,
@@ -45990,14 +47486,25 @@ var signal_strength_default = {
45990
47486
  _v9Recall: 967e-5,
45991
47487
  _v9FpRate: 0.01077,
45992
47488
  _v9Precision: 0.2254,
45993
- defaultOff: true
47489
+ defaultOff: true,
47490
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47491
+ _v10PositiveFires: 21,
47492
+ _v10NegativeFires: 187,
47493
+ _v10PositiveFiles: 21,
47494
+ _v10NegativeFiles: 187,
47495
+ _v10Precision: 0.10096,
47496
+ _v10Recall: 7e-5,
47497
+ _v10F1: 14e-5,
47498
+ _v10Signal: "inverted",
47499
+ _v10Category: "typo",
47500
+ _v10Severity: "low"
45994
47501
  },
45995
47502
  "cpp/c-style-cast": {
45996
47503
  recall: 0.5281,
45997
47504
  fpRate: 0.56491,
45998
47505
  ratio: 0.93,
45999
47506
  precision: 0.2325,
46000
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47507
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
46001
47508
  verdict: "DORMANT",
46002
47509
  _calibrationNote: "v0.34.3: REFINED \u2014 NAMED_CAST_PREFIX_REGEX tightened (the old version required the lookback slice to end with `>(`, which never matched because the slice ends with `>`). Lookback increased 40\u219260 chars. Added `(void)x` discard-idom exclusion. v0.33 baseline: 874 TP / 2885 FP per-file (ratio 0.93, DORMANT). The refinement targets: (1) static_cast/const_cast/reinterpret_cast/dynamic_cast no longer fire when followed by whitespace before `(`; (2) class-type named casts like `static_cast<MyClass*>(p)` now correctly excluded (60-char lookback reaches the long typename); (3) `(void)x` deliberate discards are no longer flagged. Expected post-refinement ratio: 1.0-1.2 (still DORMANT but better-targeted). Full v9 re-calibration is part of the v0.35.0 re-measurement. v0.33: v9 C++ calibration (5107 neg, 1655 pos). Per-file unique: 874 TP, 2885 FP, ratio=0.93. Total fires were 32265 TP, 39954 FP \u2014 the regex is too broad and fires on every C-style cast including static_cast in template code. The per-file measurement (874/1655 = 53%) is more meaningful \u2014 both arms have similar proportions of files using C-style casts. INSUFFICIENT_DATA: pos arm 1655 files.",
46003
47510
  aiSpecific: true,
@@ -46013,14 +47520,25 @@ var signal_strength_default = {
46013
47520
  _v9Recall: 0.5281,
46014
47521
  _v9FpRate: 0.56491,
46015
47522
  _v9Precision: 0.2325,
46016
- defaultOff: true
47523
+ defaultOff: true,
47524
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47525
+ _v10PositiveFires: 57099,
47526
+ _v10NegativeFires: 158177,
47527
+ _v10PositiveFiles: 1953,
47528
+ _v10NegativeFiles: 6984,
47529
+ _v10Precision: 0.21853,
47530
+ _v10Recall: 636e-5,
47531
+ _v10F1: 0.01237,
47532
+ _v10Signal: "inverted",
47533
+ _v10Category: "typo",
47534
+ _v10Severity: "low"
46017
47535
  },
46018
47536
  "cpp/printf-debug": {
46019
47537
  recall: 0.09426,
46020
47538
  fpRate: 0.03877,
46021
47539
  ratio: 2.43,
46022
47540
  precision: 0.4407,
46023
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47541
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
46024
47542
  verdict: "OK",
46025
47543
  _calibrationNote: "v0.34.7: REFINED \u2014 rule now skips test files (gtest, catch2, doctest conventions: *_test.cpp, *_test.cc, /tests/ dir, *Test.cpp, *Test.cc, *_unittest.cpp). Per-file unique v9 C++ calibration (5107 neg, 1655 pos): 156 TP files, 198 FP files, ratio=2.43 (OK, fourth positive-signal in v9 history). precision=44.07% (below 50% USEFUL threshold); verdict=OK. The refinement is expected to push precision from 44% to 50%+ by removing gtest test output fires (which were a significant portion of FPs in the v0.33.0 measurement). The full v9 re-calibration is part of the broader v0.34.5/v0.34.7 pipeline; see v0.34.1's Four-language validation section. Same direction as kotlin/println-as-log (1.84), java/system-out-println (1.73 refined, 3.29 unrefined), swift/print-debug (1.13). INSUFFICIENT_DATA: pos arm 1655 files (below 10k floor).",
46026
47544
  aiSpecific: true,
@@ -46036,14 +47554,25 @@ var signal_strength_default = {
46036
47554
  _v9Recall: 0.09426,
46037
47555
  _v9FpRate: 0.03877,
46038
47556
  _v9Precision: 0.4407,
46039
- defaultOff: true
47557
+ defaultOff: true,
47558
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47559
+ _v10PositiveFires: 114,
47560
+ _v10NegativeFires: 265,
47561
+ _v10PositiveFiles: 114,
47562
+ _v10NegativeFiles: 265,
47563
+ _v10Precision: 0.30079,
47564
+ _v10Recall: 37e-5,
47565
+ _v10F1: 74e-5,
47566
+ _v10Signal: "weak",
47567
+ _v10Category: "typo",
47568
+ _v10Severity: "low"
46040
47569
  },
46041
47570
  "cpp/magic-numbers": {
46042
47571
  recall: 0.13293,
46043
47572
  fpRate: 0.15391,
46044
47573
  ratio: 0.86,
46045
47574
  precision: 0.2187,
46046
- lastCalibratedAt: "2026-07-03T00:00:00Z",
47575
+ lastCalibratedAt: "2026-07-04T00:00:00Z",
46047
47576
  verdict: "DORMANT",
46048
47577
  _calibrationNote: "v0.34.4: REFINED \u2014 expanded allowSet with common constants (-1 sentinel, 100 percent literal, 0.5/1.0/2.0 ratios, 4096/2048/512/128/64/32/16/8 power-of-2 sizes, 50 percentile). Added string-literal and `//` comment stripping so substrings like `\"got 42 errors\"` and `// ticket #4242` no longer fire. v0.33 baseline: 220 TP / 786 FP per-file (ratio 0.86, DORMANT). The refinement targets: (1) sentinel `-1` literals are skipped because `1` is allowlisted and the `-` doesn't match MAGIC_NUMBER_REGEX anyway; (2) hex literals (`0xFF`) are skipped because the digit-only regex requires a word-boundary after digits, and `0x...` has none; (3) literals inside string/comment contexts no longer fire. Expected post-refinement ratio: 1.0-1.2 (still DORMANT but better-targeted). Full v9 re-calibration is part of the v0.35.0 re-measurement. v0.33: v9 C++ calibration (5107 neg, 1655 pos). Per-file unique: 220 TP, 786 FP, ratio=0.86. Both arms have similar proportions of files with magic numbers \u2014 this is a general C++ anti-pattern that hasn't been eradicated. INSUFFICIENT_DATA: pos arm 1655 files.",
46049
47578
  aiSpecific: true,
@@ -46059,7 +47588,18 @@ var signal_strength_default = {
46059
47588
  _v9Recall: 0.13293,
46060
47589
  _v9FpRate: 0.15391,
46061
47590
  _v9Precision: 0.2187,
46062
- defaultOff: true
47591
+ defaultOff: true,
47592
+ _v10Source: "corpus-expansion/positive+negative (576,750 files)",
47593
+ _v10PositiveFires: 1415,
47594
+ _v10NegativeFires: 4566,
47595
+ _v10PositiveFiles: 246,
47596
+ _v10NegativeFiles: 854,
47597
+ _v10Precision: 0.22364,
47598
+ _v10Recall: 8e-4,
47599
+ _v10F1: 16e-4,
47600
+ _v10Signal: "inverted",
47601
+ _v10Category: "typo",
47602
+ _v10Severity: "low"
46063
47603
  }
46064
47604
  };
46065
47605