Single file changed: src/spindle/backends/miles_runtime/targets.py (+73 lines). Adds FixedCrossEntropyLogProbs (torch.autograd.Function, vocab-parallel aware): z_t gathered; shifted=z-z_t with the target slot set to -inf; b=max(0,max shifted); s=sum exp(shifted-b); loss=b+log1p(s+expm1(-b)); grad_j=exp(z_j-z_t-loss) for j!=t, grad_t=-sum_{j!=t} grad_j; returns -loss as the logprob and backprops -grad*grad_output. A wrapper around tinker_losses._target_logprobs sets a module flag from batch['loss_fn_config']['fixed_ce']; the patched math_utils.compute_log_probs routes 1-D targets to the fixed op when the flag is set (with no sampling mask and not in true-on-policy mode), and otherwise uses the unmodified Megatron fused_vocab_parallel_cross_entropy. The full patch (fork.patch) is in the final reply / workspace.