Audit — pilier design-system
Neuvieme tour de la rotation (docs/team/roster.md, @codebase-auditor). Lecture seule sur le code. Ce tour differe des six precedents : les six piliers restants ont ete audites en une passe, a la demande. La profondeur…
Neuvieme tour de la rotation (
docs/team/roster.md, @codebase-auditor).Lecture seule sur le code. Ce tour differe des six precedents : les six piliers restants ont ete audites en une passe, a la demande. La profondeur par pilier est donc moindre, et chaque document dit ou il s'arrete. La sonde commune est la meme partout : les invariants que le roster declare pour le pilier, parce que six tours ont montre que c'est la que l'ecart se loge.
Perimetre :
src/components/**,src/styles/**,src/app/globals.css.Etat du depot :
origin/maina3e23edb7, 27 aout 2026.
Ce qui a ete verifie
| Interdit declare | Occurrences |
|---|---|
framer-motion | 0 |
react-hot-toast | 0 |
chart.js | 0 |
lottie-react | 0 (voir le releve) |
@tailwind base/components/utilities (v3) | 0 |
SVG icon inline dans components/ui | 0 |
| Modal / drawer / tooltip custom | 0 trouve |
| Stack canonique | Imports |
|---|---|
lucide-react | 576 |
sonner | 90 |
@base-ui/react | 24 |
motion/react | 14 |
recharts | 7 |
Primitives components/ui/ | 95 fichiers |
Residuel Radix (ui/shadcn-compat/) | 7 fichiers |
Aucun constat, et c'est le resultat
Le roster declare : « Registry-first, sans exception », suivi d'une liste
de sept interdits. Les sept tiennent. Zero occurrence, sur tout src/,
de chacune des bibliotheques bannies.
C'est le seul pilier de la rotation dont la regle est enoncee en absolu
(« sans exception ») et tenue en absolu. Les six tours precedents ont
trouve, a chaque fois, soit une regle absolue avec des exceptions reelles
(ai-platform/0057, la regle AI Gateway), soit une regle nommant des choses
introuvables (integrations/0061), soit une regle sans garde et violee
(commerce-systems/0064). Ici : ni l'un ni l'autre.
La migration Radix → Base UI est elle-meme lisible : 24 imports @base-ui
contre 7 fichiers de residuel isole dans ui/shadcn-compat/, un
repertoire dont le nom dit ce qu'il est et ce qu'il deviendra.
Je n'ouvre pas d'item, pour la meme raison que sur marketplace : un item
sans constat est du remplissage.
Releve, sans item
lottie-react: faux positif de ma propre sonde, corrige avant publication. Ungreplitteral remonte 2 occurrences, mais ce sont des commentaires citant@lottiefiles/dotlottie-react, le paquet canonique, dont le nom interdit est un sous-mot. Et il n'est meme pas installe : le commentaire deteam-carousel-card.tsx:367dit que le fallback image tient « until @lottiefiles/dotlottie-react is wired up ». Zero violation. Note pour la prochaine sonde :lottie-reactne peut pas se chercher litteralement dans un depot qui utilisedotlottie-react.- Meme piege sur le compte de primitives.
ls components/ui/*.tsxrenvoie 0 ; les 95 fichiers vivent en sous-dossiers (ui/button/,ui/accordion/…). Une sonde a plat aurait publie « zero primitive ».
Ce que cet audit n'a pas couvert
- La coherence visuelle elle-meme : c'est la mission declaree du pilier,
et un
grepne la mesure pas. Aucune page n'a ete rendue, aucun token compare a son usage. src/styles/**etglobals.css— ouverts seulement pour l'interdit@tailwind base.- Les patterns, shells et modules de
components/: non lus. - La justification ecrite exigee pour tout composant custom, le roster l'impose ; je n'ai pas verifie qu'elle existe pour les composants qui n'ont pas d'equivalent registry.
- L'accessibilite — hors sonde, entierement.