6f61657ba4
The topology map previously colored a whole cube (border + all PE fills) by the single cp_rank assigned to that cube in the cube→(pp,cp) mapping. Under cp_placement=cube this is right (each cube = one CP rank). Under cp_placement=pe, however, multiple CP ranks are PACKED into the same cube's PEs, so the whole-cube coloring makes every PE look identical (defaulting to cp_rank=0's palette entry — bright red). Fix: in the per-PE loop, if cp_packed = (cp_placement=="pe" and cp>1), compute each PE's own cp_rank = pe_id // tp and look up its color via _cp_color(pp_stage, pe_cp_rank, cp_size). Border still uses the cube-level color (cp_rank=0), so the outer bounding box is unchanged, but the interior PEs now show all four (or however many) CP-rank colors visibly. For cp_placement=cube: unchanged (single pe_fill per cube). Verified with a headless render at Qwen 3 8B, CP=4, TP=2, cp_placement=pe: 145 patches → 8 distinct facecolors (4 for the CP ranks in the packed cube + inactive/border tints), where before it was fewer distinct colors. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>