
=================================================================
BitBrain gate test - fine-grained aim correction
=================================================================
fixtures      : 5 tr_drussgt_vs_* (open-loop replay)
power=2.0  speed=14.0  class half-range=+-40.0 deg
AD: widths [6, 8, 10, 12]  nAde=@[128, 256]  target=1.0% passes=2 step=1 stride=3

== dataset (effective sample counts) ==
  tr_drussgt_vs_corners.jsonl              samples=2173
  tr_drussgt_vs_crazy.jsonl                samples=11209
  tr_drussgt_vs_modularbot.jsonl           samples=19548
  tr_drussgt_vs_modularbot_shield.jsonl    samples=12308
  tr_drussgt_vs_spinbot.jsonl              samples=10494
  |label err| deg: mean=15.91 p50=11.55 p90=37.19 p99=51.99 max=63.16
  rounds=55  samples/round=1013.

== baselines (same arrival geometry, same sample set) ==
Pattern (zero corr)      n=55732  meanPx=139.78 medPx=112.71 p90Px=299.10 meanDeg= 15.56 medDeg= 11.73 pxHit%=  7.0 angHit%= 19.1
straight-line naive      n=55732  meanPx=160.17 medPx=131.57 p90Px=336.48 meanDeg= 16.01 medDeg= 12.18 pxHit%=  5.0 angHit%= 18.8
fixed corr=+0.20 deg     n=55732  meanPx=139.76 medPx=112.66 p90Px=298.85 meanDeg= 15.56 medDeg= 11.74 pxHit%=  7.0 angHit%= 19.0

== label histogram (N=64) ==
  class  0 [ -40.0, -38.8) n=2365  
  class  1 [ -38.8, -37.5) n=303   
  class  2 [ -37.5, -36.2) n=364   
  class  3 [ -36.2, -35.0) n=377   
  class  4 [ -35.0, -33.8) n=400   
  class  5 [ -33.8, -32.5) n=426   
  class  6 [ -32.5, -31.2) n=430   
  class  7 [ -31.2, -30.0) n=437   
  class  8 [ -30.0, -28.8) n=475   
  class  9 [ -28.8, -27.5) n=515   
  class 10 [ -27.5, -26.2) n=558   
  class 11 [ -26.2, -25.0) n=571   
  class 12 [ -25.0, -23.8) n=546   
  class 13 [ -23.8, -22.5) n=555   
  class 14 [ -22.5, -21.2) n=526   
  class 15 [ -21.2, -20.0) n=553   
  class 16 [ -20.0, -18.8) n=560   
  class 17 [ -18.8, -17.5) n=577   
  class 18 [ -17.5, -16.2) n=611   
  class 19 [ -16.2, -15.0) n=651   
  class 20 [ -15.0, -13.8) n=713   
  class 21 [ -13.8, -12.5) n=731   
  class 22 [ -12.5, -11.2) n=744   
  class 23 [ -11.2, -10.0) n=807   
  class 24 [ -10.0,  -8.8) n=916   
  class 25 [  -8.8,  -7.5) n=1109  
  class 26 [  -7.5,  -6.2) n=1260  
  class 27 [  -6.2,  -5.0) n=1362  
  class 28 [  -5.0,  -3.8) n=1668  
  class 29 [  -3.8,  -2.5) n=1809  
  class 30 [  -2.5,  -1.2) n=1977  
  class 31 [  -1.2,  +0.0) n=2155  
  class 32 [  +0.0,  +1.2) n=2768  
  class 33 [  +1.2,  +2.5) n=2161  
  class 34 [  +2.5,  +3.8) n=1847  
  class 35 [  +3.8,  +5.0) n=1721  
  class 36 [  +5.0,  +6.2) n=1484  
  class 37 [  +6.2,  +7.5) n=1428  
  class 38 [  +7.5,  +8.8) n=1098  
  class 39 [  +8.8, +10.0) n=1004  
  class 40 [ +10.0, +11.2) n=893   
  class 41 [ +11.2, +12.5) n=852   
  class 42 [ +12.5, +13.8) n=727   
  class 43 [ +13.8, +15.0) n=705   
  class 44 [ +15.0, +16.2) n=712   
  class 45 [ +16.2, +17.5) n=669   
  class 46 [ +17.5, +18.8) n=629   
  class 47 [ +18.8, +20.0) n=587   
  class 48 [ +20.0, +21.2) n=571   
  class 49 [ +21.2, +22.5) n=597   
  class 50 [ +22.5, +23.8) n=528   
  class 51 [ +23.8, +25.0) n=520   
  class 52 [ +25.0, +26.2) n=489   
  class 53 [ +26.2, +27.5) n=490   
  class 54 [ +27.5, +28.8) n=486   
  class 55 [ +28.8, +30.0) n=456   
  class 56 [ +30.0, +31.2) n=432   
  class 57 [ +31.2, +32.5) n=470   
  class 58 [ +32.5, +33.8) n=423   
  class 59 [ +33.8, +35.0) n=431   
  class 60 [ +35.0, +36.2) n=399   
  class 61 [ +36.2, +37.5) n=384   
  class 62 [ +37.5, +38.8) n=332   
  class 63 [ +38.8, +40.0) n=2388  

== AD layer (synthesised on this data, homeostasis to ~1% target) ==
  nAde=128  pct-init:    w6=0.47% w8=0.56% w10=0.66% w12=0.70%  (mean=0.59%)
  nAde=128  +homeostasis:w6=1.20% w8=1.50% w10=1.34% w12=1.32%  (mean=1.34%)
  nAde=256  pct-init:    w6=0.37% w8=0.50% w10=0.62% w12=0.69%  (mean=0.54%)
  nAde=256  +homeostasis:w6=1.16% w8=1.30% w10=1.31% w12=1.47%  (mean=1.31%)

== prequential sweep (predict-then-learn) ==
  BitBrain wm  = count-weighted mean of class centers (KEY readout)
  BitBrain arg = argmax class center
  vs Pattern / straight-line / fixed baselines above

  nAde=128  N=4   retained  | wm                       n=55732  meanPx=136.93 medPx=110.25 p90Px=288.15 meanDeg= 15.25 medDeg= 11.48 pxHit%=  4.8 angHit%= 15.2
                    argmax       | argmax                   n=55732  meanPx=166.79 medPx=127.55 p90Px=347.39 meanDeg= 19.33 medDeg= 13.81 pxHit%=  2.4 angHit%=  9.4
  nAde=128  N=4   perRound  | wm                       n=55732  meanPx=130.27 medPx=104.94 p90Px=270.86 meanDeg= 14.37 medDeg= 10.86 pxHit%=  4.3 angHit%= 13.7
                    argmax       | argmax                   n=55732  meanPx=140.28 medPx=103.16 p90Px=299.10 meanDeg= 15.72 medDeg= 10.64 pxHit%=  3.0 angHit%= 11.6
  nAde=128  N=8   retained  | wm                       n=55732  meanPx=136.21 medPx=109.65 p90Px=287.48 meanDeg= 15.13 medDeg= 11.39 pxHit%=  4.9 angHit%= 15.1
                    argmax       | argmax                   n=55732  meanPx=162.26 medPx=122.44 p90Px=349.71 meanDeg= 18.58 medDeg= 12.97 pxHit%=  3.5 angHit%= 12.9
  nAde=128  N=8   perRound  | wm                       n=55732  meanPx=128.87 medPx=103.50 p90Px=270.52 meanDeg= 14.12 medDeg= 10.51 pxHit%=  4.5 angHit%= 14.7
                    argmax       | argmax                   n=55732  meanPx=134.81 medPx= 95.93 p90Px=302.68 meanDeg= 14.77 medDeg=  8.58 pxHit%=  4.7 angHit%= 17.1
  nAde=128  N=16  retained  | wm                       n=55732  meanPx=135.94 medPx=109.36 p90Px=287.13 meanDeg= 15.09 medDeg= 11.35 pxHit%=  5.4 angHit%= 15.4
                    argmax       | argmax                   n=55732  meanPx=161.08 medPx=120.64 p90Px=350.87 meanDeg= 18.37 medDeg= 12.58 pxHit%=  5.0 angHit%= 16.2
  nAde=128  N=16  perRound  | wm                       n=55732  meanPx=128.78 medPx=103.42 p90Px=271.12 meanDeg= 14.08 medDeg= 10.46 pxHit%=  5.2 angHit%= 15.6
                    argmax       | argmax                   n=55732  meanPx=133.72 medPx= 94.38 p90Px=304.44 meanDeg= 14.55 medDeg=  8.33 pxHit%=  6.7 angHit%= 21.7
  nAde=128  N=32  retained  | wm                       n=55732  meanPx=135.84 medPx=109.25 p90Px=286.59 meanDeg= 15.07 medDeg= 11.33 pxHit%=  5.4 angHit%= 15.6
                    argmax       | argmax                   n=55732  meanPx=161.27 medPx=120.06 p90Px=352.17 meanDeg= 18.37 medDeg= 12.52 pxHit%=  5.7 angHit%= 17.6
  nAde=128  N=32  perRound  | wm                       n=55732  meanPx=128.83 medPx=103.30 p90Px=271.66 meanDeg= 14.09 medDeg= 10.44 pxHit%=  5.2 angHit%= 15.8
                    argmax       | argmax                   n=55732  meanPx=133.97 medPx= 93.91 p90Px=307.63 meanDeg= 14.56 medDeg=  8.28 pxHit%=  7.5 angHit%= 23.5
  nAde=128  N=64  retained  | wm                       n=55732  meanPx=135.87 medPx=109.28 p90Px=287.03 meanDeg= 15.07 medDeg= 11.33 pxHit%=  5.5 angHit%= 15.6
                    argmax       | argmax                   n=55732  meanPx=162.34 medPx=120.83 p90Px=354.80 meanDeg= 18.50 medDeg= 12.57 pxHit%=  5.8 angHit%= 17.7
  nAde=128  N=64  perRound  | wm                       n=55732  meanPx=128.97 medPx=103.37 p90Px=272.07 meanDeg= 14.10 medDeg= 10.47 pxHit%=  5.2 angHit%= 15.9
                    argmax       | argmax                   n=55732  meanPx=134.67 medPx= 94.30 p90Px=309.47 meanDeg= 14.64 medDeg=  8.30 pxHit%=  7.6 angHit%= 23.6
  nAde=256  N=4   retained  | wm                       n=55732  meanPx=135.35 medPx=109.18 p90Px=284.46 meanDeg= 15.04 medDeg= 11.24 pxHit%=  4.8 angHit%= 15.0
                    argmax       | argmax                   n=55732  meanPx=156.83 medPx=115.59 p90Px=331.56 meanDeg= 18.05 medDeg= 12.22 pxHit%=  2.0 angHit%=  8.5
  nAde=256  N=4   perRound  | wm                       n=55732  meanPx=126.10 medPx=101.89 p90Px=259.70 meanDeg= 13.81 medDeg= 10.37 pxHit%=  4.0 angHit%= 13.4
                    argmax       | argmax                   n=55732  meanPx=133.30 medPx= 97.76 p90Px=283.16 meanDeg= 14.82 medDeg= 10.16 pxHit%=  2.6 angHit%= 10.6
  nAde=256  N=8   retained  | wm                       n=55732  meanPx=134.60 medPx=108.62 p90Px=283.12 meanDeg= 14.92 medDeg= 11.15 pxHit%=  4.9 angHit%= 15.1
                    argmax       | argmax                   n=55732  meanPx=150.62 medPx=108.97 p90Px=331.24 meanDeg= 17.03 medDeg= 10.73 pxHit%=  3.6 angHit%= 13.3
  nAde=256  N=8   perRound  | wm                       n=55732  meanPx=124.78 medPx=101.15 p90Px=257.08 meanDeg= 13.58 medDeg= 10.21 pxHit%=  4.3 angHit%= 14.3
                    argmax       | argmax                   n=55732  meanPx=125.60 medPx= 85.82 p90Px=287.09 meanDeg= 13.54 medDeg=  7.27 pxHit%=  4.7 angHit%= 17.6
  nAde=256  N=16  retained  | wm                       n=55732  meanPx=134.31 medPx=108.35 p90Px=282.05 meanDeg= 14.87 medDeg= 11.12 pxHit%=  5.4 angHit%= 15.5
                    argmax       | argmax                   n=55732  meanPx=149.00 medPx=106.72 p90Px=332.91 meanDeg= 16.75 medDeg= 10.45 pxHit%=  5.6 angHit%= 17.9
  nAde=256  N=16  perRound  | wm                       n=55732  meanPx=124.72 medPx=101.16 p90Px=257.90 meanDeg= 13.56 medDeg= 10.21 pxHit%=  4.8 angHit%= 14.9
                    argmax       | argmax                   n=55732  meanPx=124.46 medPx= 84.11 p90Px=291.12 meanDeg= 13.28 medDeg=  6.90 pxHit%=  7.3 angHit%= 23.7
  nAde=256  N=32  retained  | wm                       n=55732  meanPx=134.23 medPx=108.09 p90Px=281.94 meanDeg= 14.86 medDeg= 11.12 pxHit%=  5.3 angHit%= 15.3
                    argmax       | argmax                   n=55732  meanPx=149.43 medPx=106.75 p90Px=335.62 meanDeg= 16.77 medDeg= 10.31 pxHit%=  6.5 angHit%= 19.8
  nAde=256  N=32  perRound  | wm                       n=55732  meanPx=124.95 medPx=101.33 p90Px=258.34 meanDeg= 13.58 medDeg= 10.23 pxHit%=  4.9 angHit%= 15.0
                    argmax       | argmax                   n=55732  meanPx=124.62 medPx= 83.51 p90Px=293.48 meanDeg= 13.26 medDeg=  6.74 pxHit%=  8.3 angHit%= 26.1
  nAde=256  N=64  retained  | wm                       n=55732  meanPx=134.30 medPx=108.26 p90Px=282.48 meanDeg= 14.87 medDeg= 11.13 pxHit%=  5.3 angHit%= 15.2
                    argmax       | argmax                   n=55732  meanPx=151.60 medPx=107.64 p90Px=341.44 meanDeg= 17.05 medDeg= 10.44 pxHit%=  6.5 angHit%= 19.9
  nAde=256  N=64  perRound  | wm                       n=55732  meanPx=125.13 medPx=101.31 p90Px=259.01 meanDeg= 13.61 medDeg= 10.21 pxHit%=  5.0 angHit%= 15.0
                    argmax       | argmax                   n=55732  meanPx=125.34 medPx= 83.61 p90Px=296.28 meanDeg= 13.35 medDeg=  6.72 pxHit%=  8.5 angHit%= 26.5

== per-fixture breakdown: perRound, N=32, vs Pattern ==========
             tr_drussgt_vs_corners.jsonl n=  2173
     Pattern                  n=2173   meanPx=164.76 medPx=139.78 p90Px=325.54 meanDeg= 14.40 medDeg= 10.50 pxHit%=  3.9 angHit%= 18.5
     BitBrain wm              n=2173   meanPx=134.00 medPx=109.26 p90Px=268.02 meanDeg= 10.33 medDeg=  7.21 pxHit%=  1.7 angHit%= 16.7
     BitBrain arg             n=2173   meanPx=132.64 medPx=105.90 p90Px=280.25 meanDeg= 10.16 medDeg=  5.94 pxHit%=  3.6 angHit%= 23.8
               tr_drussgt_vs_crazy.jsonl n= 11209
     Pattern                  n=11209  meanPx=126.34 medPx= 97.68 p90Px=280.34 meanDeg= 13.65 medDeg=  8.48 pxHit%=  7.3 angHit%= 25.8
     BitBrain wm              n=11209  meanPx=113.68 medPx= 91.36 p90Px=233.59 meanDeg= 11.90 medDeg=  8.27 pxHit%=  4.5 angHit%= 19.1
     BitBrain arg             n=11209  meanPx=111.95 medPx= 79.22 p90Px=248.50 meanDeg= 11.55 medDeg=  6.37 pxHit%=  5.9 angHit%= 24.6
          tr_drussgt_vs_modularbot.jsonl n= 19548
     Pattern                  n=19548  meanPx=151.80 medPx=129.09 p90Px=304.18 meanDeg= 17.21 medDeg= 14.39 pxHit%=  3.3 angHit%= 10.5
     BitBrain wm              n=19548  meanPx=134.78 medPx=112.25 p90Px=269.34 meanDeg= 14.89 medDeg= 12.05 pxHit%=  3.3 angHit%= 11.0
     BitBrain arg             n=19548  meanPx=134.46 medPx= 91.39 p90Px=312.12 meanDeg= 14.43 medDeg=  7.95 pxHit%=  7.5 angHit%= 25.1
   tr_drussgt_vs_modularbot_shield.jsonl n= 12308
     Pattern                  n=12308  meanPx=144.28 medPx=121.48 p90Px=297.04 meanDeg= 16.60 medDeg= 13.80 pxHit%=  6.6 angHit%= 14.1
     BitBrain wm              n=12308  meanPx=128.52 medPx=106.53 p90Px=263.24 meanDeg= 14.45 medDeg= 11.56 pxHit%=  6.9 angHit%= 14.6
     BitBrain arg             n=12308  meanPx=124.98 medPx= 81.72 p90Px=299.54 meanDeg= 13.56 medDeg=  6.64 pxHit%= 10.5 angHit%= 28.5
             tr_drussgt_vs_spinbot.jsonl n= 10494
     Pattern                  n=10494  meanPx=121.29 medPx= 79.94 p90Px=299.51 meanDeg= 13.55 medDeg=  6.58 pxHit%= 15.0 angHit%= 33.7
     BitBrain wm              n=10494  meanPx=112.59 medPx= 85.32 p90Px=248.00 meanDeg= 12.62 medDeg=  8.52 pxHit%=  6.7 angHit%= 18.4
     BitBrain arg             n=10494  meanPx=117.72 medPx= 72.72 p90Px=290.16 meanDeg= 13.19 medDeg=  5.80 pxHit%= 10.6 angHit%= 27.3

== compact: mean px error (lower is better) ==
                    config wm meanPx arg meanPx  wm hit% arg hit%
                   Pattern    139.78          -      7.0        -
             straight-line    160.17          -      5.0        -
                fixed corr    139.76          -      7.0        -
       nAde128/N4/retained    136.93     166.79      4.8      2.4
       nAde128/N4/perRound    130.27     140.28      4.3      3.0
       nAde128/N8/retained    136.21     162.26      4.9      3.5
       nAde128/N8/perRound    128.87     134.81      4.5      4.7
      nAde128/N16/retained    135.94     161.08      5.4      5.0
      nAde128/N16/perRound    128.78     133.72      5.2      6.7
      nAde128/N32/retained    135.84     161.27      5.4      5.7
      nAde128/N32/perRound    128.83     133.97      5.2      7.5
      nAde128/N64/retained    135.87     162.34      5.5      5.8
      nAde128/N64/perRound    128.97     134.67      5.2      7.6
       nAde256/N4/retained    135.35     156.83      4.8      2.0
       nAde256/N4/perRound    126.10     133.30      4.0      2.6
       nAde256/N8/retained    134.60     150.62      4.9      3.6
       nAde256/N8/perRound    124.78     125.60      4.3      4.7
      nAde256/N16/retained    134.31     149.00      5.4      5.6
      nAde256/N16/perRound    124.72     124.46      4.8      7.3
      nAde256/N32/retained    134.23     149.43      5.3      6.5
      nAde256/N32/perRound    124.95     124.62      4.9      8.3
      nAde256/N64/retained    134.30     151.60      5.3      6.5
      nAde256/N64/perRound    125.13     125.34      5.0      8.5

== shuffled-label control (permuted labels, same input distribution) ==
  (the weighted mean shrinks to the label mean; the argmax keeps making a
   confident pick, so its null is random-correction worse-than-baseline)
  retained  shuffled mean: wm meanPx=141.51 pxHit%=5.8  arg meanPx=200.10 pxHit%=2.4
  perRound  shuffled mean: wm meanPx=146.74 pxHit%=4.6  arg meanPx=193.22 pxHit%=2.4

