Expériences · EXP-001
Chaîner deux fournisseurs sans intervention humaine
Une texture produite par SketchLab entre comme matériau dans un monde Scene Creator. L’ordonnancement, le téléversement de l’entrée manquante et la nouvelle tentative se sont faits sans intervention.
Question
Un projet peut-il déclarer que la sortie d’un fournisseur est l’entrée d’un autre, et le système peut-il régler l’ordre et le transport des données sans qu’une personne intervienne ?
Hypothèse
Si les entrées sont identifiées par le hachage de leur contenu et que le résolveur ordonne les demandes par dépendance, le chaînage fonctionne sans coordination manuelle et sans que les binaires voyagent dans le JSON. C’est une forme technique de M2 : le consommateur démarre quand son entrée minimale existe, et un changement en amont se propage à ce qui en dépend (F2).
Dispositif
- Projet :
examples/aaa3-chain/chain.experience.jsond’Experience Creator. - Fournisseurs locaux : SketchLab (
sketch.png) et Scene Creator (scene.glb), sur des branches qui implémentaient les entrées chaînées. - La demande adressée à Scene Creator déclare
inputs: [{ name: "albedo", assetId: … }], qui pointe vers la sortie de SketchLab.
Résultat
Le GLB produit par Scene Creator intègre le PNG de SketchLab octet pour octet, et son matériau l’utilise comme texture. Le résolveur a d’abord exécuté le producteur, le fournisseur a répondu missing_inputs, le client a téléversé l’image et réessayé, le tout sans intervention humaine.
Limites
- Une seule exécution documentée, avec des fournisseurs locaux et non déployés.
sketch.pngrequiert un Chromium sur le serveur ; dans un déploiement qui n’en a pas, la chaîne échoue dès la première étape.- Nous n’avons pas testé ce qui se passe quand le producteur échoue en cours de route avec plusieurs consommateurs. La conception prévoit que les consommateurs n’appellent pas leur fournisseur, mais ce n’est pas mesuré.
Comment la reproduire
# avec les deux fournisseurs lancés en local
AAA3_SKETCHLAB=http://localhost:3001/api/aaa3 \
AAA3_WORLDFORGE=http://localhost:3002/api/aaa3 \
npx tsx scripts/aaa3-e2e.ts
# ou avec le résolveur
AAA3_PROVIDERS='{"sketchlab":{"url":"…"},"worldforge":{"url":"…"}}' \
npm run aaa3:resolve -- examples/aaa3-chain/chain.experience.json --out chain.zip