Steps 7+9+10 land all FORWARD-path consumers of atom positions:
Step 7 — c51_loss_kernel atom-shift threading:
- 5 new args (w_aux, batch_states, next_batch_states, aux_dir_prob_index,
state_dim). NULL-safe — any NULL collapses to 0 shift, bit-identical
to pre-Phase-3-α.
- Per-sample state_121 + next_state_121 hoisted once at top of kernel.
- eq_per_action[a] += W[a]*next_state_121 in dir branch (d==0) before
Expected SARSA target-action sampling. Biases a* toward aux-aligned.
- Bellman projection: effective_reward = reward + γ*Δ_target*(1-done)
- Δ_online substituted for reward in block_bellman_project_f call.
Math derivation: see prior commit 7eae832f2.
Step 9 — mag_concat_qdir atom-shift inline:
- 4 new args (single-state, since mag_concat called separately for
online/target). Per-action shift: eq_local[a] += W[a]*state_121.
- launch_mag_concat_from wraps launch_mag_concat_from_with_state
defaulting to current states_buf. Target-side caller explicitly
passes next_states_buf for next_state_121 read.
Step 10 — quantile_q_select atom-shift inline:
- 4 new args. Inline shift: q_blended += W[a]*state_121 (dir branch only).
- Collector launcher passes NULL W + states (Phase C1 wires later).
Architecture:
- W stays at structural prior [-0.5, 0, +0.5, 0] (Step 5 init).
- All network gradients correct w.r.t. shifted loss landscape — W treated
as constant by all backward kernels.
- Steps 8 (c51_grad backward dW+dstate) + 11 (Adam wireup) remain to
enable adaptive W learning per the user's chosen design.
This is the "fixed structural prior" intermediate checkpoint. Smoke at
this checkpoint can answer "does the structural prior alone move WR?"
before investing Step 8+11 effort. The runbook math derivation makes
those steps a transcription job for the next session.
Verification: cargo check -p ml --lib 0 errors, 21 pre-existing warnings
(baseline parity). Audit doc updated with forward-side completion entry.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>