{
 "model": "wheel_kp_v3rc",
 "date": "2026-08-01",
 "provenance": {
  "base": "models/wheel_kp_v2 (run2 ep7), itself v1(CARLA p2_029) fine-tuned",
  "recipe": "init=v2, ep28 bs16 lr2e-4 cosine input512/HM128 seed0, aug dark.35/blur.25/lowres.25, w near2/front-far2/rear-far1.5/occ2; best=ep5 val_px_err 26.40 (vs pseudo-labels, trend metric)",
  "train_data": "9979 anns = 1800 round-1 (v1 pseudo-labels, 174 riders) + 8179 round-2 (v2 pseudo-labels, ~2100 new riders' clips; per-clip cap 4 frames, uniform temporal spread)",
  "round2_composition": {
   "clear": 5586,
   "night": 1619,
   "overcast": 974,
   "cond_source": "2-frame HSV screen (night: front<70 & rear<90; visual purity check 24/24)"
  },
  "frozen_holdout": "round-1 43 riders, EXCLUDED from all round-2 sampling; 0 leaks (asserted at merge)",
  "v1_agreement_subsample": {
   "n_clips": 300,
   "n_frames": 4266,
   "kp_agree_rate": 0.4827,
   "frame_agree_rate": 0.4871,
   "by_cond_kp_rate": {
    "night": 0.1083,
    "other": 0.514
   }
  }
 },
 "holdout_eval": {
  "census": {
   "v1": {
    "all:all": {
     "n": 3386,
     "fire@0.3": 0.4654,
     "fire@0.5": 0.215,
     "score_p50": 0.2801,
     "score_p90": 0.6916,
     "score_mean": 0.328
    },
    "cond:clear": {
     "n": 2756,
     "fire@0.3": 0.4659,
     "fire@0.5": 0.2235,
     "score_p50": 0.2804,
     "score_p90": 0.7205,
     "score_mean": 0.3359
    },
    "cond:dusk": {
     "n": 48,
     "fire@0.3": 0.0833,
     "fire@0.5": 0.0417,
     "score_p50": 0.0717,
     "score_p90": 0.1859,
     "score_mean": 0.1194
    },
    "cond:fog": {
     "n": 28,
     "fire@0.3": 0.1786,
     "fire@0.5": 0.1071,
     "score_p50": 0.1028,
     "score_p90": 0.493,
     "score_mean": 0.1783
    },
    "cond:night": {
     "n": 95,
     "fire@0.3": 0.2105,
     "fire@0.5": 0.0632,
     "score_p50": 0.0943,
     "score_p90": 0.4522,
     "score_mean": 0.1752
    },
    "cond:overcast": {
     "n": 373,
     "fire@0.3": 0.5791,
     "fire@0.5": 0.2306,
     "score_p50": 0.3425,
     "score_p90": 0.6127,
     "score_mean": 0.3424
    },
    "cond:rain": {
     "n": 86,
     "fire@0.3": 0.5465,
     "fire@0.5": 0.1744,
     "score_p50": 0.3387,
     "score_p90": 0.6008,
     "score_mean": 0.3476
    },
    "size:large": {
     "n": 1125,
     "fire@0.3": 0.3982,
     "fire@0.5": 0.2124,
     "score_p50": 0.2076,
     "score_p90": 0.68,
     "score_mean": 0.2907
    },
    "size:mid": {
     "n": 1132,
     "fire@0.3": 0.5362,
     "fire@0.5": 0.2562,
     "score_p50": 0.3249,
     "score_p90": 0.7513,
     "score_mean": 0.3687
    },
    "size:small": {
     "n": 1129,
     "fire@0.3": 0.4615,
     "fire@0.5": 0.1763,
     "score_p50": 0.2821,
     "score_p90": 0.6265,
     "score_mean": 0.3245
    }
   },
   "v2": {
    "all:all": {
     "n": 3386,
     "fire@0.3": 0.769,
     "fire@0.5": 0.6359,
     "score_p50": 0.6593,
     "score_p90": 0.9345,
     "score_mean": 0.5903
    },
    "cond:clear": {
     "n": 2756,
     "fire@0.3": 0.7794,
     "fire@0.5": 0.6499,
     "score_p50": 0.6745,
     "score_p90": 0.9405,
     "score_mean": 0.6006
    },
    "cond:dusk": {
     "n": 48,
     "fire@0.3": 0.2708,
     "fire@0.5": 0.1042,
     "score_p50": 0.2032,
     "score_p90": 0.4745,
     "score_mean": 0.2499
    },
    "cond:fog": {
     "n": 28,
     "fire@0.3": 0.5,
     "fire@0.5": 0.3571,
     "score_p50": 0.3073,
     "score_p90": 0.8385,
     "score_mean": 0.4353
    },
    "cond:night": {
     "n": 95,
     "fire@0.3": 0.5684,
     "fire@0.5": 0.4842,
     "score_p50": 0.4941,
     "score_p90": 0.897,
     "score_mean": 0.4557
    },
    "cond:overcast": {
     "n": 373,
     "fire@0.3": 0.815,
     "fire@0.5": 0.6354,
     "score_p50": 0.6393,
     "score_p90": 0.9141,
     "score_mean": 0.5914
    },
    "cond:rain": {
     "n": 86,
     "fire@0.3": 0.8256,
     "fire@0.5": 0.7442,
     "score_p50": 0.6779,
     "score_p90": 0.962,
     "score_mean": 0.6462
    },
    "size:large": {
     "n": 1125,
     "fire@0.3": 0.7227,
     "fire@0.5": 0.6116,
     "score_p50": 0.6989,
     "score_p90": 0.9603,
     "score_mean": 0.5859
    },
    "size:mid": {
     "n": 1132,
     "fire@0.3": 0.8286,
     "fire@0.5": 0.7208,
     "score_p50": 0.7302,
     "score_p90": 0.9533,
     "score_mean": 0.6505
    },
    "size:small": {
     "n": 1129,
     "fire@0.3": 0.7555,
     "fire@0.5": 0.5748,
     "score_p50": 0.5731,
     "score_p90": 0.8837,
     "score_mean": 0.5345
    }
   },
   "v3": {
    "all:all": {
     "n": 3386,
     "fire@0.3": 0.9179,
     "fire@0.5": 0.8488,
     "score_p50": 0.8973,
     "score_p90": 1.0036,
     "score_mean": 0.791
    },
    "cond:clear": {
     "n": 2756,
     "fire@0.3": 0.9245,
     "fire@0.5": 0.861,
     "score_p50": 0.9031,
     "score_p90": 1.0074,
     "score_mean": 0.803
    },
    "cond:dusk": {
     "n": 48,
     "fire@0.3": 0.9167,
     "fire@0.5": 0.7083,
     "score_p50": 0.5771,
     "score_p90": 0.9336,
     "score_mean": 0.6096
    },
    "cond:fog": {
     "n": 28,
     "fire@0.3": 0.7143,
     "fire@0.5": 0.6786,
     "score_p50": 0.8895,
     "score_p90": 1.0126,
     "score_mean": 0.6707
    },
    "cond:night": {
     "n": 95,
     "fire@0.3": 0.7158,
     "fire@0.5": 0.6526,
     "score_p50": 0.8437,
     "score_p90": 0.9915,
     "score_mean": 0.6449
    },
    "cond:overcast": {
     "n": 373,
     "fire@0.3": 0.9437,
     "fire@0.5": 0.8418,
     "score_p50": 0.8655,
     "score_p90": 0.9914,
     "score_mean": 0.7752
    },
    "cond:rain": {
     "n": 86,
     "fire@0.3": 0.8837,
     "fire@0.5": 0.8372,
     "score_p50": 0.8959,
     "score_p90": 0.9871,
     "score_mean": 0.7749
    },
    "size:large": {
     "n": 1125,
     "fire@0.3": 0.9013,
     "fire@0.5": 0.8311,
     "score_p50": 0.8953,
     "score_p90": 0.9916,
     "score_mean": 0.7785
    },
    "size:mid": {
     "n": 1132,
     "fire@0.3": 0.9541,
     "fire@0.5": 0.8984,
     "score_p50": 0.919,
     "score_p90": 1.0152,
     "score_mean": 0.836
    },
    "size:small": {
     "n": 1129,
     "fire@0.3": 0.8981,
     "fire@0.5": 0.8167,
     "score_p50": 0.8683,
     "score_p90": 0.995,
     "score_mean": 0.7583
    }
   }
  },
  "loc": {
   "v1": {
    "all": {
     "n": 1095,
     "median_px": 0.04,
     "mean_px": 0.1,
     "p95_px": 0.33,
     "pct_lt5": 1.0
    },
    "cond:clear": {
     "n": 997,
     "median_px": 0.04,
     "mean_px": 0.11,
     "p95_px": 0.37,
     "pct_lt5": 1.0
    },
    "cond:dusk": {
     "n": 4,
     "median_px": 0.03,
     "mean_px": 0.03,
     "p95_px": 0.05,
     "pct_lt5": 1.0
    },
    "cond:night": {
     "n": 8,
     "median_px": 0.06,
     "mean_px": 0.05,
     "p95_px": 0.07,
     "pct_lt5": 1.0
    },
    "cond:overcast": {
     "n": 71,
     "median_px": 0.04,
     "mean_px": 0.04,
     "p95_px": 0.08,
     "pct_lt5": 1.0
    },
    "cond:rain": {
     "n": 15,
     "median_px": 0.04,
     "mean_px": 0.04,
     "p95_px": 0.07,
     "pct_lt5": 1.0
    },
    "contact": {
     "n": 556,
     "median_px": 0.04,
     "mean_px": 0.11,
     "p95_px": 0.34,
     "pct_lt5": 1.0
    },
    "hub": {
     "n": 539,
     "median_px": 0.04,
     "mean_px": 0.1,
     "p95_px": 0.31,
     "pct_lt5": 1.0
    }
   },
   "v2": {
    "all": {
     "n": 1095,
     "median_px": 1.69,
     "mean_px": 4.28,
     "p95_px": 7.14,
     "pct_lt5": 0.8776
    },
    "cond:clear": {
     "n": 997,
     "median_px": 1.64,
     "mean_px": 4.42,
     "p95_px": 7.31,
     "pct_lt5": 0.8816
    },
    "cond:dusk": {
     "n": 4,
     "median_px": 3.24,
     "mean_px": 3.12,
     "p95_px": 4.76,
     "pct_lt5": 1.0
    },
    "cond:night": {
     "n": 8,
     "median_px": 2.83,
     "mean_px": 2.81,
     "p95_px": 5.04,
     "pct_lt5": 0.875
    },
    "cond:overcast": {
     "n": 71,
     "median_px": 2.38,
     "mean_px": 3.04,
     "p95_px": 6.87,
     "pct_lt5": 0.8028
    },
    "cond:rain": {
     "n": 15,
     "median_px": 2.21,
     "mean_px": 2.5,
     "p95_px": 5.16,
     "pct_lt5": 0.9333
    },
    "contact": {
     "n": 556,
     "median_px": 1.4,
     "mean_px": 4.17,
     "p95_px": 6.42,
     "pct_lt5": 0.9047
    },
    "hub": {
     "n": 539,
     "median_px": 1.91,
     "mean_px": 4.4,
     "p95_px": 7.43,
     "pct_lt5": 0.8497
    }
   },
   "v3": {
    "all": {
     "n": 1095,
     "median_px": 2.07,
     "mean_px": 4.89,
     "p95_px": 8.61,
     "pct_lt5": 0.8621
    },
    "cond:clear": {
     "n": 997,
     "median_px": 2.0,
     "mean_px": 4.93,
     "p95_px": 8.26,
     "pct_lt5": 0.8706
    },
    "cond:dusk": {
     "n": 4,
     "median_px": 4.8,
     "mean_px": 4.03,
     "p95_px": 5.56,
     "pct_lt5": 0.5
    },
    "cond:night": {
     "n": 8,
     "median_px": 3.06,
     "mean_px": 3.41,
     "p95_px": 6.26,
     "pct_lt5": 0.875
    },
    "cond:overcast": {
     "n": 71,
     "median_px": 3.18,
     "mean_px": 5.03,
     "p95_px": 11.83,
     "pct_lt5": 0.7465
    },
    "cond:rain": {
     "n": 15,
     "median_px": 2.56,
     "mean_px": 2.77,
     "p95_px": 5.46,
     "pct_lt5": 0.9333
    },
    "contact": {
     "n": 556,
     "median_px": 1.76,
     "mean_px": 5.16,
     "p95_px": 10.31,
     "pct_lt5": 0.8579
    },
    "hub": {
     "n": 539,
     "median_px": 2.33,
     "mean_px": 4.62,
     "p95_px": 8.15,
     "pct_lt5": 0.8664
    }
   }
  },
  "census_terciles_box_h_px": [
   63.5,
   153.9
  ]
 },
 "matched_operating_point": {
  "note": "v3 scores run much hotter than v2 (all p50 0.897 vs 0.659); at v3 threshold 0.832 (= v2@0.5 global fire rate 0.636):",
  "fire_rates": {
   "clear": [
    0.65,
    0.656
   ],
   "night": [
    0.484,
    0.526
   ],
   "dusk": [
    0.104,
    0.229
   ],
   "fog": [
    0.357,
    0.571
   ],
   "rain": [
    0.744,
    0.64
   ],
   "overcast": [
    0.635,
    0.576
   ]
  },
  "format": "[v2@0.5, v3@0.832]"
 },
 "round2_score_dist_all_tracked": {
  "clear": {
   "n": 53888,
   "p50": 0.5907,
   "p90": 0.9142,
   "fire@0.5": 0.5706
  },
  "overcast": {
   "n": 8701,
   "p50": 0.6842,
   "p90": 0.9322,
   "fire@0.5": 0.6583
  },
  "night": {
   "n": 29752,
   "p50": 0.1136,
   "p90": 0.6327,
   "fire@0.5": 0.1537
  }
 },
 "qa": {
  "pseudo_label_pre_run": "15 overlays: 13 good, 1 marginal propagated (occluding bollard), 1 possible F/R identity swap",
  "final_overlays": "22 rendered post-finalize; night purity sheet 24/24 true night",
  "v3_new_fires_vs_v2": "94 frames v3>=0.5 & v2<0.15; 9 viewed: 3 good, 5 marginal (blur/occlusion, on-vehicle), 1 bad (night, kps above box @0.55)"
 },
 "caveats": [
  "Deeper self-training circularity: round-2 labels are v2 predictions; v2 was trained on v1 pseudo-labels. No human ground truth yet; PassBox cm hardware truth via IPM remains the arbiter.",
  "Score inflation compounds each round: 0.5 on v3 is NOT 0.5 on v2 (p50 0.66 -> 0.90). Downstream thresholds MUST be recalibrated; matched-operating-point table is the honest comparison.",
  "At matched global fire rate v3 trades slight rain/overcast firing for night/dusk/fog gains.",
  "Localization vs v1-confident labels degrades slightly (median 1.69 -> 2.07 px, p95 7.1 -> 8.6) \u2014 no catastrophic forgetting, but drift direction worth watching.",
  "v1 agreement on round-2 labels: 48% of v2-confident kps (day 51%, night 11%) \u2014 low night agreement expected (v1 is night-blind).",
  "dusk holdout n=48 from few clips; fog n=28 from 2 rides \u2014 small-sample conditions."
 ]
}