Le porteur a ouvert l'accès à son instance ComfyUI : le pipeline a été exécuté, pas simulé. Deux exécutions du même plan produisent des images BIT-IDENTIQUES (seed 3475989105, sha256 b7007a7a…). C'est exactement ce que le pack d'origine annonçait sans y parvenir, et c'est désormais vérifié. Workflow de référence : SDXL 1.0, 1024×576, 20 pas, dpmpp_2m/karras. Deux défauts de mon propre client, révélés par l'exécution réelle : - le prompt négatif était concaténé au positif — travers hérité du pack. Sur SDXL cela revient à demander ce qu'on voulait exclure. Nœud propre. - les images n'étaient pas rapatriées : elles restaient chez ComfyUI et le manifeste pointait vers des chemins inexistants. Ajout de recuperer(). Krea 2 : deux choses distinctes portent ce nom. Les poids locaux krea2_turbo_nvfp4 sont un build FP4 NVIDIA Blackwell, sur GPU AMD — probablement inexploitable. Krea2ImageNode est un nœud api_node vers un service tiers payant. Trois points à trancher avant câblage : export au format API, écart de doctrine à inscrire, et licence des sorties à vérifier avant toute publication sous CC BY-SA. SDXL local reste le défaut : aucun coût, aucune donnée qui sort. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pipeline d'assets — filière B (décor)
Filière B uniquement. Rien de ce qui sort d'ici ne peut servir à identifier une espèce. Fonds, sprites du mode arcade, badges, écrans de titre, iconographie — jamais une épreuve, jamais un indice (ADR 0004).
La séparation n'est pas une consigne :
npm run validate:datafait échouer le build si un média de filière B porte un usage identifiant, etnpm run test:portele prouve.
Pourquoi cette séparation existe
Les modèles de diffusion connaissent mal le corossol, à peine la quenette, presque pas le zikak. Sur ces espèces, ils ne refusent pas : ils produisent un fruit plausible et faux. Un enfant qui apprend dessus apprend l'hallucination d'un modèle.
Le décor, lui, n'a rien à enseigner. C'est là que la génération a sa place.
Utilisation
# Vérifier que les seeds sont bien déterministes (aucun serveur requis)
python3 comfyui_client.py --verifier
# Calculer les seeds d'un plan sans rien générer
python3 comfyui_client.py --workflow workflows/decor.json --plan plan-assets.json --sec
# Générer, ComfyUI devant tourner en local
python3 comfyui_client.py --workflow workflows/decor.json --plan plan-assets.json
Aucune dépendance n'est nécessaire : le client n'utilise que la bibliothèque standard.
Les trois défauts du pack d'origine, corrigés
1. Les seeds n'étaient pas reproductibles
Le pack faisait hash(fruit["id"] + asset_type) % 2**32 en vendant l'argument « même seed
= même style ». Or hash() sur une chaîne est randomisé à chaque exécution depuis
Python 3.3 (PYTHONHASHSEED) : les seeds changeaient d'un lancement à l'autre, exactement
l'inverse de ce qui était annoncé.
Remplacé par zlib.crc32(clé.encode()) & 0xFFFFFFFF. Vérifié empiriquement — deux
processus avec des PYTHONHASHSEED différents produisent les mêmes valeurs :
kowosol:fond 1368899280
zikak:sprite 4184016363
mansiniye:badge 1009059342
lakou:titre 4201979101
2. json.loads(json.dumps(x)) pour copier
Remplacé par copy.deepcopy(x) : même effet, sans aller-retour par une sérialisation qui
écrase les types non JSON.
3. La licence de rembg n'était pas vérifiée
Le paquet est sous MIT, mais les poids du modèle qu'il télécharge ne suivent pas
nécessairement cette licence. requirements.txt porte l'avertissement, et rembg reste
commenté : à n'installer qu'après vérification des poids, pas du paquet.
Format du plan
{
"noeud_seed": "4",
"noeud_prompt": "6",
"assets": [
{ "id": "lakou", "type": "fond", "prompt": "jaden créole au petit matin, …" }
]
}
La clé de seed est <id>:<type>. Elle ne doit jamais changer une fois un asset retenu :
c'est elle qui garantit qu'une régénération donne la même image.
Ce que le pipeline ne fait pas
Il ne valide rien. Tout asset sort en valide: false et le reste jusqu'à ce qu'un humain
tranche — comme pour les photographies. La différence est qu'un asset de filière B, même
validé, ne pourra jamais porter une épreuve.