Each recording: frames drawn from inside moderator turns and participant turns (random frames when there is no transcript), at 32×18. Per speaker, the kept pixels of all their frames are clustered in OKLab. Only a cluster holding at least the minimum share of pixels may be picked, so every colour shown is one that really fills that much of the frame. When the two speakers come out closer than the distinctness threshold, the pair of eligible clusters that is furthest apart is used instead, and if no eligible pair is far enough apart the speakers fall back to the neutral grey and slate. The tone mapping then moves both colours the same way (lightness range, chroma gain), so hue and ordering are kept. The faint overlay on each frame marks what was cropped or ignored.
The defaults here are the constants in bristlenose/utils/scene_colour.py, which computes the
per-turn scene colour in the pipeline. Retune here, then change both together. The pipeline uses the crop, ignore, cluster,
share, pick and tone steps per turn. It does not use the per-speaker distinctness or same-scene handles, because no recording
in the test corpus changed its picture with the speaker.