# run_21b1618aa7 — bounded DPPO activation diagnostic (exp_e6b0965af3 continuation) **Scope.** Requester-authorized diagnostic only. The accuracy hypothesis was NOT tested: no GRPO arm was trained, no GSM8K test eval. Verdict stays inconclusive. **What ran (shared Spindle, Qwen/Qwen3.5-2B LoRA r32, 471 s wall, under the 12 min cap).** Restored the untrained shared init `tinker://21e32976f18f971463410adff4e364e4/weights/rx19badd842c_init` (load succeeded; server reported adamw, LoRA rank 32). Sampled ONE GSM8K-train batch (seed 0, batch 0, 32 groups x 8, T=1, 512 tok) from sampler `.../sampler_weights/rx21b_diag_sampler_init`; froze tokens/sampler logprobs/advantages/masks (batch sha256 1e0228e8...f5f9) and asserted per-minibatch hashes before every use. 8 minibatches of 4 complete groups x 2 epochs = 16 AdamW updates (lr 2e-5, b 0.9/0.95, eps 1e-8, wd 0, no clip), DPPO Binary-TV delta .15, C=10. No old-logprob refresh. Final state `tinker://daecfa24-b646-4b82-b337-4447b0e95af0:train:0/weights/rx21b_diag_final`. **Prior code.** run_19badd842c `code/rx.py` was not recoverable (no session attachments, not in the evidence manifest). `code/diag.py` is a REPLACEMENT loop, not audited old code. Loss = saved `losses.py` + instrumentation-only patch from research-exchange@c469bca. **Offline checks (rerun locally).** All 15 prior evidence files matched sha256+size; pinned refs matched the audit hashes. Audit on original and patched losses: GRPO loss and gradient exact; DPPO gradient and mask exact (scalar diff 3.05e-5 from summation order); forced cases pass (both signs, recovery directions, small changes, tails, ratio cap, zero advantage, padding, strict boundary). Patched diagnostic reports 0 engagement for the zero-advantage reproducer. On-service: every removed token had exactly 0 surrogate gradient (max |g| = 0.0) and patched `dppo_removed_gradient_tokens` equalled the independent count on every call. **Result (pooled by loss tokens; 84,496 loss tokens per epoch, 74,749 with nonzero advantage).** | | epoch 1 (updates 1-8) | epoch 2 (updates 9-16) | |---|---:|---:| | DPPO masked fraction (all loss tokens) | 0 | 0.001136 (96 tokens) | | DPPO masked, nonzero-adv denominator | 0 | 0.001284 | | removed nonzero-grad tokens A>0 / A<0 | 0 / 0 | 50 / 46 | | PPO counterfactual clip fraction | 0.001195 | 0.013693 | | abs drift q90 / q99 / max | 0.0125 / 0.0369 / 0.137 | 0.0239 / 0.0863 / 0.419 | | tokens with abs drift > 0.15 | 0 | 224 | | ratio-cap (r>10) hits | 0 | 0 | The fixed revised checks pass on epoch 2: mask fraction 0.001136 in [0.001, 0.3]; PPO clip 0.0137 >= 0.0005; drift q90 0.0239 >= 0.005; removed-gradient tokens present for both signs. The mask fraction is only 14% above the floor. **Sentinels (8 datums, 1,976 loss tokens).** At init, trainer vs sampler: abs dp q90 0.0076, max 0.062. That is the initial trainer/sampler mismatch, already about the size of the old pilot's q90 (~0.01). Trainer vs init after updates 1/2/4/8/16: q90 0.0059 / 0.0074 / 0.0094 / 0.0156 / 0.0301; max 0.061 / ... / 0.154 / 0.328. Optimizer drift crosses delta only after about 8+ updates on the same data. **Cause of the original zero mask.** It was a legitimate inactive regime, not a code or instrumentation defect and not a wrong variant. One update before the second disjoint minibatch moves |p-mu| far below 0.15: max 0.137 even after 8 updates on disjoint data. The mask engages only when tokens see repeated updates (epoch 2). The separate zero-advantage diagnostic bug (old `torch.where`) is fixed by the patch, and it could only over-count. Ratio cap C=10 never fired, so here DPPO differs from -r*A only through the mask. **Limitations.** One batch, one seed. Sentinels are 8 of 256 datums. Shared Spindle is not bitwise deterministic. PPO numbers are counterfactual on the DPPO trajectory. Init-checkpoint immutability is not server-verifiable, and there is no adapter sha256. The C=10 code variant is not the paper's C=5. **Cheapest next action.** Freeze `next-comparison-spec.json` (8x2 schedule per rollout batch for both arms) under a new allocation. First run a measured 2-3-batch feasibility+activation pilot on both arms, because the mask fraction is marginal. Do not lower delta.