ADR-executor-001
Dataflow executor with IterIn/IterOut gates
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