Formulas (utils/robot.py:243,255):
s_min_J, kappa_J = sigma_min_and_cond(J_plus);
s_min_G, kappa_G = sigma_min_and_cond(Gamma). G = Γ, the
reduced→full velocity map (its lower-right block is J_νe⊕; F4: singular
together). The live controller acts on s_min_G ONLY (Option A); s_min_J
is the logged witness used by offline analysis.
Pre-registered rule (stated before any table was computed): if Spearman(s_min_G, s_min_J) > 0.95 overall AND > 0.9 within the worst s_min_J decile AND quantile-matched derate-decision agreement > 0.98 on EVERY run -> REDUNDANT (one signal suffices; retire the J-side bookkeeping since s_min_G is the live driver). Otherwise DISTINCT: prefer kappa_G if its p50/p95 spread across the r1 speed trio is tighter than kappa_J’s, else keep dual logging.
| run | replay rel | Spearman σ (all) | Spearman σ (worst decile) | derate agreement | Pearson σ | Spearman κ | κJ p50/p95 | κG p50/p95 |
|---|---|---|---|---|---|---|---|---|
| r0_6dof_path | 0.0e+00 | +0.9969 | +0.9991 | 1.0000 | +1.0000 | +0.9968 | 345.4 / 1512.2 | 423.7 / 1846.2 |
| r1_7dof_path | 0.0e+00 | +0.9984 | +1.0000 | 1.0000 | +0.9999 | +0.9980 | 36.2 / 195.2 | 43.5 / 229.5 |
| r1_7dof_minus2pct | 0.0e+00 | +0.9999 | +0.9996 | 1.0000 | +0.9999 | +0.9981 | 48.8 / 109.5 | 58.7 / 128.5 |
| r1_7dof_plus2pct | 0.0e+00 | +0.9985 | +1.0000 | 1.0000 | +0.9999 | +0.9760 | 48.0 / 51.8 | 57.7 / 61.5 |
RECOMMENDATION: REDUNDANT — one signal suffices. Since s_min_G is the live driver (ramp/blend/damping all act on it), retire the J-side BOOKKEEPING: offline analysis and future log schemas standardize on s_min_G/kappa_G; s_min_J stays only where a pinned baseline requires its key (schema changes fold into Chain B’s re-pin).
Regen: /Users/antoniahoffman/miniforge3/envs/new-pin-env/bin/python validation/sming_vs_sminj_study.py