Colorspaces such as RGB, unlike XYZ, are technically non-linear; perhaps the most "colorimetrically correct" approach when averaging two RGBs is to first convert each to XYZ, average them, and then convert back to RGB.
This sounds to me like more accurate error diffusion would be possible in XYZ color space.
The ColorVectorSpace.jl readme mentions:
This sounds to me like more accurate error diffusion would be possible in XYZ color space.