platform/agentic-orchestration
Six agents that call each other is not a system. It is a rumour.
The moment agents invoke one another directly, nobody can say what ran, in what order, or why — and no run can be replayed. Here they declare what they need, and a dependency graph decides everything else.
Three agents start immediately because nothing gates them · the compliance node has no bypass
Feed row to five channel payloads, end to end.
Agents with no declared dependency never wait.
Composition is the orchestrator's job, not an agent's.
Ordering is derived from data, so it is reproducible.
The same graph, under three conditions.
The interesting one is the middle. A gate that blocks is the system working, and it is the case most pipelines handle worst.
Everything resolves. 1.68 s from feed row to five channel payloads.
Taxonomy and enrichment run in parallel because neither depends on the other. Copywriting waits on enrichment because it cannot write a claim before the attribute exists. The compliance gate clears, and emission fans out to every channel at once.
All five channel payloads emitted from one pass
Six rules that keep it debuggable.
Agents do not call agents
Direct agent-to-agent calls produce a system nobody can reason about or replay. Agents declare inputs and outputs; the orchestrator resolves the graph. Any run can be replayed exactly because the ordering was never decided at runtime by an agent's opinion.
Dependencies are data, not code
The DAG is derived from what each agent declares it needs. Adding an agent does not require editing a pipeline definition — it requires declaring an input, and the graph reshapes.
Gates are nodes, not middleware
A compliance gate is a first-class node with predecessors and successors. It cannot be bypassed by a code path that forgot to call it, because nothing downstream of it can run until it emits.
Parallel by default
Anything without a declared dependency runs concurrently. Sequencing is a consequence of the data, never a scheduling preference.
Invalidation flows downstream
When an input changes, everything that cited it is invalidated transitively. Nothing stale survives because nobody remembered to re-run it.
Partial publication is a bug
A SKU either satisfies every gate and publishes everywhere it should, or it publishes nowhere and is reported. There is no state where three channels agree and two do not.
The slowest agent sets the clock.
Total run time is not the sum of these. It is the longest dependent chain, which is why parallelism is a property of the graph rather than a tuning exercise.
taxonomy-categorization
catalog-enrichment
image-enhancement-studio
content-copywriter
compliance-validator
ai-template-listing
Image derivation is the longest single agent at 3.4 seconds, and it has no dependents — so it does not extend the critical path at all. The chain that actually sets the clock is enrichment → copywriter → compliance → template, at roughly 3.07 seconds, running concurrently with it.
Watch a real SKU move through the graph.
We will run one of your SKUs through the full pipeline in dry-run and hand you the trace: which agents ran, which ran in parallel, what each one cited, where it gated, and what it would have emitted.
One SKU · Full trace · Nothing published