AgentCanvas / Pages / Developer Guide / Core / Decisions / Executor / ADR-executor-001
2026-03-22
Date
2026-03-22
Status
accepted
Field
executor
Old ID
ADR-002

Context

Agent loops are inherently cyclic (observe → think → act → repeat). A DAG executor can't represent this without unrolling the loop.

Decision

Add a graph executor where nodes fire when inputs arrive. Use paired IterIn/IterOut nodes as iteration boundaries instead of cycle edges in the graph.

Alternatives

(a) DAG-only with loop unrolling. (b) Cycle edges with topological sort workarounds. (c) Imperative loop wrapper around a DAG.

Rationale

IterIn/IterOut keeps the graph visually acyclic (clean left-to-right flow) while supporting runtime cycles. Dataflow firing naturally supports future parallelism. DAG executor kept for simple single-pass cases.

Affected docs

architecture.md, glossary.md