SIGN IN SIGN UP

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