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