1. vector loaded, switched off == no vector
   first tokens: 65 / 65 identical
   256-token generations identical: True [('code', None), ('doc', None), ('chat', None)]
2. repeatable: on, off, on again
   first tokens: 65 / 65 identical
   256-token generations identical: True [('code', None), ('doc', None), ('chat', None)]
3. the prompt paths against the per-token path's teacher-forced argmax (row L-1 predicts token L)
   served stock vs per-token stock: 64 / 65
   served stock vs per-token proj : 57 / 65
   served on    vs per-token stock: 57 / 65
   served on    vs per-token proj : 62 / 65
4. how different the text is: 256-token generations, on vs stock, first difference
   [('code', 11), ('doc', 6), ('chat', 3)]
5. decode speed (exact mode: fixed experts, no PCIe share - not the normal setup)
   stock       66.4 tok/s  drafts accepted 256/309
   vec off     65.7 tok/s  drafts accepted 251/318
   vec on      76.7 tok/s  drafts accepted 366/425
   vec on 2    81.2 tok/s  drafts accepted 366/423

[exited with code 0]
