fix(mtp): three depth-controller defects that locked depth 2 out structurally
Found by deep comparison against MTPLX / omlx Lightning MTP / DFlash after the reference stacks run depth 3+ on the same model family and we could never hold depth 2. 1. The d2/d3 gates judged a depth on the 12-cycle warmup window right after a climb - the same cold-window defect fixed earlier for the AR fallback (64) but left in place for the depth gates. With the depth ceiling recording demotions, one cold dozen permanently locked the request out of depth 2. Measured: true conditional d2 acceptance 88/118 = 74.6% (controlled chain test, 150 cycles) while the first cold window read 3/12 = 25%. Gates now require 48 drafts (VMLX_NATIVE_MTP_DEPTH_GATE_MIN_SAMPLE). 2. The d2 gate compared a JOINT rate against a CONDITIONAL floor. accept_by_depth[d2] counts cycles where BOTH d1 and d2 accepted, but the 0.70/0.75 floors are calibrated as conditional rates. At d1=0.78 even a PERFECT d2 yields joint 0.78, so the raw comparison demanded conditional ~90 percent - depth 2 could mathematically never stick, on any bundle. The floor is now scaled by the observed d1 rate (joint-vs-joint). 3. The head cache accumulated across accepted cycles is GAPPY: each cycle emits draft+bonus but only the draft passes through the head, so the bonus never enters the head KV and the context has a hole at every other position. Upstream PR #990 fixes this with batched MTP cache commits; we never did. Fresh-per-cycle measured neutral at depth 1 and much better in the controlled harness (d2 74.6 vs 41.7), now the default; VMLX_MTP_RETAIN_HEAD_CACHE=1 restores accumulation. Live result on Qwen3.8-27B-JANG_4D-CRACK, code workload, replay-skip on: peak 34.1 t/s, typical 28-33.5, vs 22.1 baseline. Depth 2 still demotes today because the ENGINE-side conditional d2 (~43-53 percent) sits below the harness's 74.6 - that residual gap is the open question, tracked in the ledger; the gate math no longer hides it. Also: d1 acceptance is workload-dependent and this is the dominant effect - reasoning traces 45-53 percent (MTP correctly falls back), code output 74.8 percent (MTP runs the full generation). Reference "87-95 percent" figures are coding batteries. MTP suite 336 green.
J
Jinho Jang committed
2b4d453deef4197a2c52c0155e4f1d330f0afc67
Parent: d5b6673