Generation grounded in real schemas is still generation — it can still produce a workflow with an orphaned node, a credential field left empty, or a connection wired by id instead of by name. We don't ask a second AI call to "check if this looks right." We run a deterministic validator: connection reachability from every trigger, credential structure per node type, casing correctness, and AI-node-specific requirements like a language model actually being attached to an agent.
Deterministic checks catch what they catch instantly and for free, with no risk of the checker hallucinating too. A second AI call reviewing the first is still guessing — just with extra steps.
Only genuinely ambiguous or content-dependent problems — an empty message body, a vague field — go to an LLM to fix, and only after the deterministic pass has done everything it reliably can. This ordering matters: cheap, certain checks first, expensive, probabilistic ones only when genuinely needed.