Experimentos · EXP-001
Encadear dois provedores sem intervenção humana
Uma textura produzida pelo SketchLab entra como material num mundo do Scene Creator. A ordem, o envio da entrada que faltava e a nova tentativa aconteceram sem intervenção.
Pergunta
Um projeto pode declarar que a saída de um provedor é a entrada de outro, e o sistema pode resolver a ordem e o transporte dos dados sem que uma pessoa intervenha?
Hipótese
Se as entradas forem identificadas pelo hash de seu conteúdo e o resolvedor ordenar os pedidos por dependência, o encadeamento funciona sem coordenação manual e sem que os binários viajem dentro do JSON. É uma forma técnica do M2: o consumidor começa quando existe sua entrada mínima, e uma mudança a montante se propaga para o que depende dela (F2).
Montagem
- Projeto:
examples/aaa3-chain/chain.experience.jsondo Experience Creator. - Provedores locais: SketchLab (
sketch.png) e Scene Creator (scene.glb), em branches que implementavam entradas encadeadas. - O pedido ao Scene Creator declara
inputs: [{ name: "albedo", assetId: … }], apontando para a saída do SketchLab.
Resultado
O GLB produzido pelo Scene Creator embute o PNG do SketchLab byte a byte, e seu material o usa como textura. O resolvedor executou primeiro o produtor, o provedor respondeu missing_inputs, o cliente enviou a imagem e tentou de novo, tudo sem intervenção humana.
Limitações
- Uma única execução documentada, com provedores locais e não implantados.
sketch.pngprecisa de um Chromium no servidor; numa implantação sem ele, a cadeia falha no primeiro passo.- Não testamos o que acontece quando o produtor falha no meio do caminho com vários consumidores. O projeto prevê que os consumidores não chamem seu provedor, mas isso não foi medido.
Como reproduzir
# com os dois provedores rodando localmente
AAA3_SKETCHLAB=http://localhost:3001/api/aaa3 \
AAA3_WORLDFORGE=http://localhost:3002/api/aaa3 \
npx tsx scripts/aaa3-e2e.ts
# ou com o resolvedor
AAA3_PROVIDERS='{"sketchlab":{"url":"…"},"worldforge":{"url":"…"}}' \
npm run aaa3:resolve -- examples/aaa3-chain/chain.experience.json --out chain.zip