H_norm measures how evenly the six singular values of the arm Jacobian J+ share the spectrum’s total weight: 0 = one mode holds everything, 1 = all six directions equally strong. KEEP here means it separates kappa-peak windows from matched control windows well enough to earn a place as an OFFLINE diagnostic (no live logging this chain regardless); DROP means the logged sigma_min/kappa already carry the signal.
Pre-registered bar (tasks/chain13_criteria.md SD5, quoted verbatim): “KEEP (as an offline diagnostic only – no live logging this chain regardless) iff |delta| >= 0.5 peak-vs-control with consistent direction on >= 6 of 8 runs; else DROP, recording the measured delta range.”
Formula: p_i = sigma_i / sum_j sigma_j over the 6-value spectrum of J+ (6 x n_arm; both arms give 6 values since min(6, n_arm) = 6); H = -sum p_i ln p_i; H_norm = H / ln(6). Window-mean H_norm at each kJ peak window vs matched control window (CHAIN_10 extractor, PROM_MULT/N_PEAKS/MASK_RATIO untouched) -> Cliff’s delta.
| run | n_arm | peaks | Cliff’s delta | mean H_norm @peaks | @controls | in-window range | replay rel |
|---|---|---|---|---|---|---|---|
| r0_6dof_path | 6 | 10 | -0.780 | 0.7114 | 0.7321 | [0.7071, 0.7607] | 0.0e+00 |
| r0_6dof_minus2pct | 6 | 10 | -0.960 | 0.7097 | 0.7303 | [0.7067, 0.7560] | 0.0e+00 |
| r0_6dof_plus2pct | 6 | 10 | -0.820 | 0.7105 | 0.7321 | [0.7075, 0.7565] | 0.0e+00 |
| r1_7dof_path | 7 | 10 | -0.700 | 0.6979 | 0.7251 | [0.6819, 0.7563] | 0.0e+00 |
| r1_7dof_minus2pct | 7 | 10 | -0.940 | 0.7011 | 0.7319 | [0.6920, 0.7677] | 0.0e+00 |
| r1_7dof_plus2pct | 7 | 10 | -0.240 | 0.7300 | 0.7352 | [0.7168, 0.7758] | 0.0e+00 |
| r2_7dof_reactive | 7 | 10 | -0.280 | 0.7292 | 0.7383 | [0.6945, 0.7829] | 0.0e+00 |
| r3_7dof_anchor | 7 | 10 | -0.500 | 0.6985 | 0.7306 | [0.6725, 0.7684] | 0.0e+00 |
Direction consistency: 6 of 8 runs at delta <= -0.5 (entropy LOWER at peaks, the expected direction for a collapsing sigma_6); 0 of 8 at delta >= +0.5. Measured delta range: [-0.960, -0.240].
Global in-window H_norm range: [0.6725, 0.7829]. Prediction check: the study’s ~0.92-of-max figure was for an n = 7 spectrum (ln6/ln7 = 0.921); our J+ spectrum has 6 values, where one dying sigma among five equal healthy ones gives ln5/ln6 = 0.898. Measured global min 0.6725 sits well below both: the healthy spectrum is already uneven (the equal-sigma arithmetic overstates the floor), so the usable signal is the small peak-vs-control dip in window means, which is exactly what Cliff’s delta scores.
6 of 8 runs cleared |delta| >= 0.5 in a consistent direction; the pre-registered bar requires >= 6 of 8. H_norm is kept as an offline diagnostic only – no live logging this chain.
Margin note: r3_7dof_anchor sits exactly at the bar (|delta| = 0.5), so the verdict carries zero margin – recorded, not adjudicated away.
regen: /Users/antoniahoffman/miniforge3/envs/new-pin-env/bin/python validation/hnorm_pilot.py