Experimentos · EXP-001
Encadenar dos proveedores sin intervención humana
Una textura producida por SketchLab entra como material a un mundo de Scene Creator. El orden, la subida de la entrada faltante y el reintento ocurrieron sin intervención.
Pregunta
¿Puede un proyecto declarar que la salida de un proveedor es la entrada de otro, y que el sistema resuelva el orden y el transporte de los datos sin que una persona intervenga?
Hipótesis
Si las entradas se identifican por el hash de su contenido y el resolutor ordena los pedidos por dependencia, el encadenamiento funciona sin coordinación manual y sin que los binarios viajen dentro del JSON. Es una forma técnica de M2: el consumidor empieza cuando existe su entrada mínima, y un cambio aguas arriba se propaga a lo que depende de él (F2).
Montaje
- Proyecto:
examples/aaa3-chain/chain.experience.jsonde Experience Creator. - Proveedores locales: SketchLab (
sketch.png) y Scene Creator (scene.glb), en ramas que implementaban entradas encadenadas. - El pedido de Scene Creator declara
inputs: [{ name: "albedo", assetId: … }], apuntando a la salida de SketchLab.
Resultado
El GLB producido por Scene Creator incrusta el PNG de SketchLab byte por byte, y su material lo usa como textura. El resolutor ejecutó primero el productor, el proveedor respondió missing_inputs, el cliente subió la imagen y reintentó, todo sin intervención humana.
Limitaciones
- Una sola ejecución documentada, con proveedores locales y no desplegados.
sketch.pngnecesita un Chromium en el servidor; en un despliegue sin él, la cadena falla en el primer paso.- No se probó qué pasa cuando el productor falla a mitad de camino con varios consumidores. El diseño dice que los consumidores no llaman a su proveedor, pero no está medido.
Cómo reproducirlo
# con los dos proveedores corriendo en local
AAA3_SKETCHLAB=http://localhost:3001/api/aaa3 \
AAA3_WORLDFORGE=http://localhost:3002/api/aaa3 \
npx tsx scripts/aaa3-e2e.ts
# o con el resolutor
AAA3_PROVIDERS='{"sketchlab":{"url":"…"},"worldforge":{"url":"…"}}' \
npm run aaa3:resolve -- examples/aaa3-chain/chain.experience.json --out chain.zip