Current state: - Token indices on CPU (avoids CuTeDSL GPU memory corruption) - Scale assembly uses per-expert swizzle + scatter (matches reference) - compute_activation_global_scales warmup gets ~0.97 cosine - expert_offsets passed without leading 0 (matches pipeline) - layertest + cudagraph_test pass