v8 smoke (train-96wfk, commit 5694eb4df) cycle 1 confirmed
curric_conc=0.0000 despite Phase 8.2 (relaxed clamp) and 8.4 (CV
formula) — root cause was the per-segment weight function itself,
not the post-hoc concentration metric.
Old: (1.0 / sharpe.max(0.01)).clamp(0.01, 100.0)
→ saturates at 100 when sharpe < 0.01
→ with PF<1 policy, every segment has |sharpe| < 0.01
→ all weights = 100 → uniform → CV=0
New: exp(-(sharpe - sharpe_mean) / sharpe_std).clamp(-3, 3)
→ z-score normalised, scale-invariant
→ monotonic, smooth, no saturation cliff
→ preserves differential difficulty at any scale
→ uniform-input → std=0 → z=0 → uniform weights (cold-start ✓)
The Phase 8.4 CV formula was correct but operates on post-saturated
weights which destroy differential signal upstream. 8.6 fixes the
producer, 8.4 + 8.6 compose to give a meaningful curric_conc on
volume bars.
Note: win_conc=0 is intentional under PF<1 policy (compute_winner_concentration
guards against undefined "winner concentration" when policy is losing).
This is honest reporting, not a bug; addressed in audit doc rather
than this commit.
Pearls honoured:
- pearl_controller_anchors_isv_driven: normalisation anchor =
observed sharpe_std (signal-driven), not magic
- feedback_isv_for_adaptive_bounds: z-clamp [-3, 3] is 3σ tail-
cutoff for numerical safety, structural not tuned
- pearl_first_observation_bootstrap: uniform Sharpe → uniform
weights (cold-start sentinel preserved)
- feedback_no_quickfixes: structural reformulation (1/x → exp(-z))
not a clamp adjustment
Verification:
cargo check -p ml --features cuda # clean
Expected v9 cycle 1 curric_conc: ~0.3-0.6 (strong differential signal)
from typical per-segment Sharpe spread ~1σ across 8 segments.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>