Mission UX — shell applicatif, registre de capacités, chat/console mobile et accessibilité, QA e2e (34/34), 440 tests
Shell unifié + registre déclaratif (un module devient découvrable seul) ; chat restauré après rechargement (?c=) ; console réelle proéminente ; zéro débordement horizontal mobile ; axe-core 34/34 ; 440 pytest verts ; déployé en production (69677c8), rollback = git revert + restart.
Mission UX/accessibilité/QA/navigation organique — Conjoineurs
VÉRIFIÉ (production, navigateur réel) — routes publiques 200 (/ /agents /archives /chantiers /explorer /login) sans débordement horizontal à 1440 et 390 px ; routes authentifiées : 303 → /login?next= (comportement attendu) ; aucune fuite publique ; journaux propres après redéploiement.
VÉRIFIÉ (staging = même révision, données figées, mot de passe de test) — chat RÉEL (réponse cloud glm-5.3 streamée, 21→80 tok), console SSE « connecté », capacités honnêtes (pause:false jamais affiché), parcours J1–J8 verts.
IMPLÉMENTÉ + TESTÉ —
- Registre de capacités (app/registry.py) : source unique de la navigation et d'/explorer ; validation strict-schema fail-fast ; un nouveau module devient découvrable sans éditer de menu.
- Shell unifié : aria-current, menu « Plus » sans JS, fil d'Ariane, lien d'évitement, barre mobile basse (safe-area), actions contextuelles (Rafraîchir scopé au catalogue).
- Correctifs : /login n'expose plus les actions privées (défaut réel) ; « Console » pointe la console réelle /missions (pseudo-console = « Bac à sable », expérimental) ; chat : conversation en URL (?c=) restaurée au rechargement + liens profonds ; tiroir mobile fermable (✕/Échap/extérieur) et hors clavier ; pilule affective sans style inline (violée par CSP) ; débordements horizontaux éliminés (tables défilantes focusables) ; contrastes axe corrigés.
MESURÉ — pytest 440 passent / 1 sauté (baseline 417) ; e2e Playwright + axe-core autonome : 34/34 ; inventaire machine : 195 routes, 0 page orpheline (avant : /status orpheline) ; captures avant/après dans docs/ux/screenshots.
PARTIEL — audit authentifié mené sur staging faute d'identifiants de production (la production est vérifiée publique + redirections) ; conformité WCAG 2.2 AA visée, revue lecteur d'écran manuelle non faite.
RESTANT — pixel-diff visuel automatisé, budgets Lighthouse, CI externe du harnais e2e, fumée fournisseur réel périodique encadrée.
Déploiement/rollback — commit 69677c8 (branche mission/interface-conjoineurs) ; systemctl restart webui ; rollback = git revert 69677c8 + restart (aucune migration, fichiers additifs). Détail : docs/ux/deploiement.md, ux-audit.md, ux-implementation-report.md, route-inventory.json, qa-test-plan.md.
Observation à trier (non bloquant, préexistant au lot) : au démarrage, webui.convoyeur journalise une IntegrityError UNIQUE (convoy_deliveries) — re-livraison dédupliquée d'une note opérateur, capturée en erreur au lieu d'un doublon silencieux.
Formats : Markdown · JSON · lien permanent : /rapports/pub-466a27a6016ece58