Skip to content

Network interaction palette is not colorblind-safe; COMPETITION and PREDATION are near-identical even in normal vision #269

Description

@realmarcin

Found reviewing #268.

The nine interaction colors in src/communitymech/templates/community.html were never held to the colorblind-safety bar that PR #198 applied to the UMAP. Measuring CIE ΔE between every pair, under normal vision and under simulated protanopia/deuteranopia/tritanopia (Viénot–Brettel–Mollon), the palette has 13 confusable pairs out of 55.

The worst cases:

pair normal protan deutan tritan
COMPETITION #ef4444 / PREDATION #dc2626 10.7 8.2 9.1 13.3
MUTUALISM #3b82f6 / SYNTROPHY #a855f7 45.3 7.6 4.1 33.1
CROSS_FEEDING #22c55e / COMPETITION #ef4444 127.3 37.7 6.7 117.4
CROSS_FEEDING / STRAIN_COMPETITION #fb7185 118.9 39.8 7.2 115.8
CROSS_FEEDING / NICHE_PARTITIONING #14b8a6 46.5 45.6 48.6 3.5

Two things stand out. COMPETITION and PREDATION are separated by only ΔE 10.7 for a viewer with typical color vision — they are both essentially the same red, so this is not merely an accessibility issue. And MUTUALISM/SYNTROPHY collapse to ΔE 4.1 under deuteranopia, which is the most common form of color blindness; those are the second and third most frequent interaction types in the KB (187 and 130 occurrences), so the pair a deuteranope cannot separate is one of the pairs they will meet most often.

Minimum separation across the whole palette is ΔE 4.1 (normal/protan/deutan). A constrained search over a contrast-filtered color space finds nine-color sets reaching ΔE ~30 on the same measure, so there is a great deal of headroom.

Fix in #268: replace the palette with a set verified to a much higher minimum separation, and add a regression test so it cannot silently degrade. See also the companion issue on redundant (non-color) encoding — a better palette raises the floor but does not remove the need for a second channel.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions