Files
foxhunt/docs
jgrusewski c4b6d6ef29 fix(class-a-p1-wiring): var_floor q_gap-only adaptive (1 of 4 wireable)
Per Class A audit P1 wiring batch — only 1 of 4 items was wireable as
spec'd. The other 3 are deferred per the spec's "DEFER not BLOCK" rule
because their target ISV slots either don't exist or are unit-incompatible
with the consumer site.

Items:
1. trade_physics.cuh:548 (DD floor_dd 0.25f) — DEFERRED. Slot 421
   (DD_THRESHOLD_INDEX) holds the DD trigger threshold (~0.05), NOT the
   penalty saturation floor (~0.25). Different parameters; substituting
   would break the ramp formula `(dd-thr)/(floor-thr)`. Needs a new slot
   for the saturation floor.
2. gpu_experience_collector.rs:343-344 (dd_threshold + w_dd config) —
   DEFERRED. No W_DD slot exists in any sp*_isv_slots.rs. The legacy
   compute_drawdown_penalty path (experience_kernels.cu:3769) uses
   config scalars; the SP15 reward axis (compute_sp15_final_reward_kernel)
   already reads slot 421 directly. Wiring needs a new W_DD slot.
3. plan_threshold_update_kernel.cu:44 (plan threshold floor) — DEFERRED.
   Unit mismatch: ema and plan_threshold are probabilities ∈[0,1];
   Q_DIR_ABS_REF (slot 21) is a Q-value magnitude EMA (5–50). Scaling
   a probability by a Q-magnitude is dimensionally meaningless.
4. experience_kernels.cu:2471 (var_floor formula) — DONE. Drop the
   hardcoded 0.25f lower bound. Was `fminf(fmaxf(q_gap*0.5f, 0.25f), 1.0f)`;
   now `fminf(q_gap*0.5f, 1.0f)`. NULL-q_gaps fallback uses ε=1e-6f for
   numerical safety (vs prior 0.25f). var_scale itself remains (0,1] from
   `1/(1+sqrt(var_q))` so the multiplicative chain stays bounded.

Cumulative WR-plateau fix series:
- Class C bug 1 + P0-B (8f218cab2)
- P0-C (316db416b)
- P0-A (394de7d43)
- P1 wiring (this commit, partial — Items 1/2/3 deferred to producer batch)

Per feedback_isv_for_adaptive_bounds.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 08:55:57 +02:00
..