docs: spec — health states are a status palette, with a mandatory text summary

Le validateur de palette ne couvre que les palettes catégorielles. Sain,
dégradé et coupé sont des statuts : palette réservée et fixe, assortie de
la règle qu'ils ne voyagent jamais sans icône ni libellé.

Une icône par segment étant impossible sur vingt-quatre segments, la
bande est doublée d'un résumé textuel. Mesuré : un vert/orange/rouge
classique donne un ΔE de 2,9 entre orange et vert en vision protanope.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
zacharyandClaude Opus 5 committed 2026-10-08 00:24:05 +02:00
1 parent 29390a0cc8
commit 050b96f1e3
1 file changed
+26 -7
@@ -268,14 +268,33 @@ dégradé, rouge coupé, gris inconnu. Dans une colonne de tableau elle sera ét
c'est le prix de la forme tableau, et c'est ce qui rend l'infobulle nécessaire
plutôt que confortable.
**Couleurs.** À valider par le validateur de palette avant écriture, en thème
clair et sombre, comme pour le graphe de débit. Les quatre états doivent rester
distinguables en vision déficiente : la bande n'a pas d'autre encodage que la
couleur, ce qui en fait le cas le plus exigeant du projet. Si un jeu à quatre
états ne passe pas, l'infobulle par segment devient obligatoire, pas optionnelle.
**Couleurs : palette de statut, pas palette catégorielle.** Distinction établie
en cours de conception, après avoir échoué à faire passer un jeu vert/orange/rouge
au validateur — lequel ne couvre que les palettes **catégorielles**. Sain,
dégradé et coupé sont des **statuts**, qui relèvent d'une palette réservée et
fixe, non thémée :
**Infobulle par segment** : heure de la tranche, latence moyenne, perte. C'est
aussi ce qui rend la bande lisible sans distinguer les couleurs.
| État | Couleur | Origine |
|---|---|---|
| `healthy` | `#0ca30c` | statut *good* |
| `degraded` | `#fab219` | statut *warning* |
| `down` | `#d03b3b` | statut *critical* |
| `unknown` | gris neutre de la surface | ce n'est pas un statut, c'est une absence |
Mesuré au passage : un vert/orange/rouge classique donne un ΔE de **2,9** entre
l'orange et le vert en vision protanope — indistinguables. La palette de statut
ne prétend pas résoudre cela, elle impose une contrepartie.
**La contrepartie est obligatoire, et plus forte qu'une infobulle.** La règle
attachée aux couleurs de statut est qu'elles ne voyagent jamais seules : icône
et libellé les accompagnent. Une icône par segment étant impossible sur
vingt-quatre segments, la bande est **doublée d'un résumé textuel** — par exemple
`22 h saines · 2 h dégradées` — placé à côté d'elle dans la même colonne. Ce
résumé n'est pas décoratif : c'est le canal qui porte l'information quand la
couleur ne passe pas.
**Infobulle par segment** : heure de la tranche, latence moyenne, perte. Elle
complète le résumé pour qui veut le détail d'une heure précise.
**Badge de fraîcheur** en tête de widget, alimenté par `updatedAt`, comme sur le
widget `unifiOs`.