Clean-room
Réimplémenter un logiciel sans copier son expression : une équipe lit et spécifie, une autre écrit sans voir le code. Les agents fragilisent la barrière.
SFEIR AI · Publié le 23 octobre 2026
Deux équipes et une barrière documentée
La méthode clean-room, ou salle blanche, sépare ceux qui étudient un logiciel existant de ceux qui en écrivent une nouvelle version. La première équipe observe, teste ou décompile le logiciel d'origine et rédige une spécification fonctionnelle qui décrit ce qu'il fait sans en reproduire le code. La seconde équipe, qui n'a jamais vu ce code ni ce pseudocode, implémente à partir de cette seule spécification. Entre les deux, une barrière documentée : qui a eu accès à quoi, quand, et par quel canal la spécification a circulé. Cette traçabilité sert à démontrer, en cas de contestation, que la nouvelle implémentation est une création indépendante.
Le droit européen donne à cette précaution sa raison d'être. L'article L122-6-1 du Code de la propriété intellectuelle autorise l'observation et l'étude d'un logiciel, et sa décompilation pour l'interopérabilité, mais interdit d'utiliser les informations obtenues pour « la mise au point, la production ou la commercialisation d'un logiciel dont l'expression est substantiellement similaire ». La Cour de justice a jugé en 2012 (C-406/10) que la fonctionnalité, le langage et le format des fichiers ne sont pas protégés : reproduire ce que fait un logiciel est possible, reproduire la façon dont il est écrit ne l'est pas. La clean-room matérialise cette frontière entre fonction et expression. La fiche rétro-ingénierie logicielle détaille le cadre.
Ces éléments sont des points d'attention, pas un conseil juridique : faites-les valider par votre propre juriste.
Pourquoi un agent unique fragilise la méthode
Un agent de code équipé de REA peut, dans la même session, lire le pseudocode décompilé d'une application et écrire le code d'une autre. La barrière disparaît alors de fait : un seul contexte contient le décompilé et le code cible, et aucune trace ne permet de montrer que l'un n'a pas été dérivé de l'autre. Connor Turland, après avoir fait reconstituer par REA la logique interne de Slack en une dizaine de minutes (20 octobre 2026), conclut que cette facilité « makes any clean-room argument pretty hard to defend ». La citation vise un cas où l'on se contenterait du résultat ; elle décrit le risque que court toute organisation qui laisse un agent unique tout faire.
La documentation d'installation de REA fait la même analyse et propose la parade. Restreindre REA à un profil d'agent (CLAUDE_CONFIG_DIR pour Claude Code) contrôle seulement quelles sessions découvrent le serveur MCP : « They leave shell commands, filesystem access and network access available. An agent under the same OS account can run rea from PATH or npx and read other profiles and REA output. » Pour une séparation clean-room, les mainteneurs demandent un environnement d'implémentation avec des restrictions de fichiers et de réseau qui empêchent de lire ou de télécharger REA, la cible et les sorties d'analyse, y compris par les installations partagées et les registres de paquets : « A separate account or container must enforce those restrictions. »
La clean-room avec agents se construit comme avant, avec des machines à la place des personnes. Un premier environnement, confiné, héberge REA, le binaire et l'agent lecteur, qui produit une spécification en langage métier : règles, formats, cas limites, sans extrait de pseudocode. Cette spécification est relue par un humain, qui vérifie qu'elle décrit des fonctions et non une expression, puis transmise. Un second environnement, sans accès au premier ni au réseau qui y mène, héberge l'agent rédacteur, qui n'a que la spécification. Le journal des deux environnements et la spécification relue constituent la barrière documentée.
Le cas ArtCraft
Entre le 30 septembre et le 9 octobre 2026, l'organisation GitHub storytold a publié treize dépôts baptisés ArtCraft : PhotoCraft, PDFCraft, FilmCraft, VectorCraft, LightCraft, DesignCraft, EffectCraft, GridCraft, CADCraft, DeckCraft, SoundCraft, WordCraft et FigCraft, sous licence Apache 2.0. Le README de PhotoCraft le présente comme « an open-source, clean-room reimplementation of Adobe Photoshop, rebuilt in pure Rust », avec les menus, raccourcis et panneaux « where your hands expect them, from ⌘J to ⇧⌘D », un support PSD « written from Adobe's public specification » et un rendu identique à Photoshop pour 307 des 309 fichiers du jeu de test psd-tools. Le dépôt comptait 71 629 étoiles le 23 octobre 2026. D'après la presse, le fondateur Brandon Thomas, ex-CEO de Storyteller.ai, dit avoir utilisé Claude Opus 5.5 et promet la parité en mois plutôt qu'en années.
La revendication clean-room n'a fait l'objet d'aucune vérification indépendante au 23 octobre 2026, et aucune réaction publique d'Adobe n'a été trouvée à cette date. Le cas illustre les deux lectures possibles de la méthode : une spécification publique (le format PSD) et une interface reproduite de mémoire d'utilisateur relèvent de la fonction, que le droit ne protège pas ; ce qui compte pour la qualification, c'est que personne n'ait écrit le code cible avec le décompilé d'Adobe sous les yeux, et seule une barrière documentée peut le montrer. L'analyse complète est dans clean-room contre rétro-ingénierie.
Ce que SFEIR en fait
Sur une modernisation du legacy sans code source, SFEIR applique la séparation à deux environnements décrite ci-dessus : l'agent lecteur produit une rétro-spécification validée par le métier, l'agent rédacteur reconstruit à partir d'elle, et un golden master inversé (l'application d'origine produit les sorties de référence) prouve l'équivalence fonctionnelle sans qu'aucun extrait du code d'origine n'ait traversé la barrière. En sécurité, l'offre AI Cyber part du code source que l'organisation possède, ce qui ne pose pas la question de la clean-room.
Questions fréquentes
Qu'est-ce que la méthode clean-room ?
Une organisation du travail en deux équipes séparées par une barrière documentée. La première étudie le logiciel d'origine et rédige une spécification fonctionnelle sans code ; la seconde, qui n'a jamais vu le code ni le pseudocode, implémente à partir de cette seule spécification. La traçabilité des accès permet de démontrer que la nouvelle version est une création indépendante.
Pourquoi un agent de code fragilise-t-il la clean-room ?
Parce qu'un même agent, dans une même session, peut lire le décompilé et écrire le code cible : la barrière n'existe plus et rien ne prouve l'indépendance. La documentation d'installation de REA demande pour cette raison un compte ou un conteneur séparé pour l'environnement d'implémentation, sans accès à REA, à la cible ni aux sorties d'analyse.
ArtCraft est-il vraiment une réimplémentation clean-room de Photoshop ?
C'est ce que revendique le README de PhotoCraft (support PSD écrit depuis la spécification publique d'Adobe, interface reproduite à l'identique). Au 23 octobre 2026, personne n'a vérifié cette revendication de façon indépendante et Adobe n'a pas réagi publiquement. Le dépôt comptait 71 629 étoiles à cette date.
La clean-room est-elle obligatoire pour réécrire un logiciel ?
Aucun texte ne l'impose. Elle sert de preuve : le droit européen interdit de produire un logiciel dont l'expression est substantiellement similaire à un logiciel décompilé (article L122-6-1, IV), et la barrière documentée est le moyen de montrer qu'on ne l'a pas fait. Sur un logiciel dont on possède le code source, la question ne se pose pas.
Sources
- docs/installation.md de REA : limites d'un profil d'agent séparé et exigence d'un compte ou d'un conteneur distinct pour la séparation clean-room · 2026-10-23
For clean-room separation, use an implementation environment with filesystem and network restrictions that prevent reading or fetching REA, the target and analysis output, including through shared installations and package registries.
- Connor Turland, Cyrus, « What is REA (Reverse Engineer Anything)? I ran it on Slack to find out » · 2026-10-20
makes any clean-room argument pretty hard to defend
- GitHub, storytold/photocraft : README revendiquant une réimplémentation clean-room de Photoshop en Rust, support PSD depuis la spécification publique d'Adobe, 71 629 étoiles le 23 octobre 2026 · 2026-10-23
Image editing; an open-source, clean-room reimplementation of Adobe Photoshop, rebuilt in pure Rust.
- Légifrance, article L122-6-1 du Code de la propriété intellectuelle : interdiction d'utiliser les informations de décompilation pour un logiciel dont l'expression est substantiellement similaire
- CJUE, 2 mai 2012, SAS Institute Inc. c. World Programming Ltd, affaire C-406/10 : la fonctionnalité, le langage et le format des fichiers ne sont pas protégés · 2012-05-02
- PetaPixel, « Someone Rebuilt Free, Open-Source Versions of Photoshop, Premiere, and Lightroom Using AI » : Brandon Thomas, Claude Opus 5.5, frais de résiliation d'Adobe comme motivation · 2026-10-07
Clean-room dans vos projets
Échanger avec SFEIRArticles liés
Clean-room ou reverse engineering : méthode et risque juridique à l'ère des agents
Rétro-ingénierie et clean-room ne se confondent pas en droit. Ce que la directive 2009/24/CE, le Code de la propriété intellectuelle et la CJUE autorisent, et pourquoi un agent qui lit le décompilé puis réécrit fragilise la défense.
ArtCraft : des clones d'Adobe en clean-room revendiqué, ce que vaut l'argument
Depuis le 30 septembre 2026, ArtCraft publie des réécritures en Rust de Photoshop, Premiere ou Lightroom, écrites avec Claude et présentées comme clean-room. Ce que la revendication couvre en droit européen, et ce qu'elle laisse ouvert.
Moderniser une application WinDev avec des agents : REA et méthode clean-room
Quand le projet WinDev a disparu et qu'il ne reste que l'exécutable et la base HFSQL, REA peut aider à rétro-documenter les règles métier. À condition de séparer l'analyse de la réécriture, de confiner l'analyse et de ne pas attendre un WLangage retrouvé.
REA, ArtCraft et la fin de l'avantage du code fermé
En octobre 2026, REA a mis les outils d'un rétro-ingénieur entre les mains de n'importe quel agent, et ArtCraft a réécrit des applications Adobe en Rust. Le binaire livré au client ne protège plus la logique d'un produit. Ce qui la protège encore, selon nous.
Décompiler pour interopérer : l'article 6 de la directive expliqué à une DSI
Le droit européen permet de décompiler un logiciel pour le rendre interopérable, sans l'accord de son auteur. L'exception est réelle et étroite : trois conditions, trois interdits, et un régime voisin pour la correction d'erreurs.