Si un produit sait générer des images, de la vidéo, de la musique, de la parole et du texte, il doit être possible de signaler n'importe laquelle de ces choses. Pas la plupart. N'importe laquelle.
Nous avions le bouton sur certaines surfaces. C'est autre chose, et la différence est facile à manquer : le filtrage de contenu avait été câblé à la main par chaîne, si bien que deux studios sont partis sans aucun et que personne ne s'en est aperçu jusqu'à ce qu'un audit aille regarder. La même forme aurait grignoté ce correctif, un écran oublié après l'autre.
Chaque surface, et une vérification qui le dit
Il y a désormais un contrôle de signalement sur les réponses de chat, les images, la vidéo, la musique, la voix, la parole vers texte, le texte vers parole, la traduction, les pièces du canevas, les résultats de flux, la bulle de l'assistant et les pages publiques partagées — sur le web et dans l'application.
Plus important encore : une vérification s'exécute à chaque compilation. Un fichier qui importe une interface de génération doit afficher un contrôle de signalement, déléguer à un composant qui en porte un, ou tenir une exemption dont la raison est vérifiable. Son premier passage a signalé six manques réels. C'est ce que ce travail comble.
Puis le responsable a ouvert l'application en fonctionnement et en a trouvé cinq de plus que la vérification ne pouvait pas voir, parce qu'ils vivaient dans des dossiers qu'elle n'ouvrait jamais. C'est la moitié la plus grave du problème — un gardien qui annonce zéro en passant devant du code qu'il n'a jamais lu — et c'est pourquoi la vérification nomme désormais ses propres racines et échoue quand l'une d'elles ne résout plus.
Une seule file, et des actions sur la ligne
Les pages partagées portaient depuis un moment un contrôle de signalement qui écrivait dans une table que rien ne lisait : aucun consommateur, aucune entrée en file, aucune notification. Ces signalements ouvrent désormais aussi un vrai dossier, avec à côté le texte exact dont un relecteur a besoin, figé.
Et une file dont les actions vivent sur une autre page est une file qu'on cesse de traiter. Masquer un contenu ou écarter un signalement se fait maintenant sur la ligne, et le résultat est réécrit pour que rien ne soit rejugé.