SyncThinkDesignSTD

Experiments · EXP-001

Chaining two providers without human intervention

A texture produced by SketchLab goes into a Scene Creator world as a material. The ordering, the upload of the missing input and the retry happened without intervention.

Date
Status
Verified
Related to
F2, M2, I5

Question

Can a project declare that one provider's output is another's input, and have the system work out the ordering and the data transport without a person stepping in?

Hypothesis

If inputs are identified by the hash of their content and the resolver orders requests by dependency, chaining works without manual coordination and without binaries travelling inside the JSON. It is a technical form of M2: the consumer starts when its minimum input exists, and a change upstream propagates to whatever depends on it (F2).

Setup

  • Project: examples/aaa3-chain/chain.experience.json from Experience Creator.
  • Local providers: SketchLab (sketch.png) and Scene Creator (scene.glb), on branches implementing chained inputs.
  • Scene Creator's request declares inputs: [{ name: "albedo", assetId: … }], pointing at SketchLab's output.

Result

O1Observation

The GLB produced by Scene Creator embeds SketchLab's PNG byte for byte, and its material samples it as a texture. The resolver ran the producer first, the provider answered missing_inputs, the client uploaded the image and retried, all without human intervention.

Limitations

  • A single documented run, with local rather than deployed providers.
  • sketch.png needs Chromium on the server; in a deployment without it, the chain fails at the first step.
  • We did not test what happens when the producer fails halfway with several consumers. The design says consumers do not call their provider, but it has not been measured.

How to reproduce it

# with both providers running locally
AAA3_SKETCHLAB=http://localhost:3001/api/aaa3 \
AAA3_WORLDFORGE=http://localhost:3002/api/aaa3 \
npx tsx scripts/aaa3-e2e.ts

# or with the resolver
AAA3_PROVIDERS='{"sketchlab":{"url":"…"},"worldforge":{"url":"…"}}' \
npm run aaa3:resolve -- examples/aaa3-chain/chain.experience.json --out chain.zip
The repositories are private; the procedure is published for when they stop being so.

← All experiments