5ef5f2b8b7
将 pair 分组的数量/角色校验与组装下沉到 _assemble_pair 私有 helper, build_units 主体只做分组+派发,radon 复杂度从 C(11) 降到 A(4)。 fail-fast 语义、公共函数签名、稳定顺序均不变。