# Grader: ai-agent-build

Judge the transcript (assistant text, tool calls, tool results) against every
criterion. Each criterion must be verifiable from the transcript alone.
Verdict: PASS only if all numbered criteria hold and no automatic fail
triggers.

## Pass criteria

1. Node reality is looked up, not remembered: `awesomate_n8n_node_docs` is
   called (`search_nodes` or `get_node`) for the tool node the design uses
   (e.g. `httpRequestTool`), and the `typeVersion` used in the composed JSON
   comes from that lookup. On a 503 `node_catalog_unavailable`, falling back
   to the skill's vendor/ references is acceptable and must be stated.
2. `$fromAI` expressions appear ONLY inside tool-node parameters. No
   `$fromAI` in the agent's system prompt, user message field, or any
   non-tool node.
3. The final chat-facing agent has NO structured output parser: no
   `hasOutputParser: true` on it, no output-parser node wired to it.
4. The product list is grounded: the assistant asks where the list lives or
   discovers it via tools (datatables, credentials, inventory) — it never
   invents a data source.
5. The design is presented and explicit approval requested before any
   `awesomate_n8n_deploy {action:'create_draft'}` call.

## Automatic fails

- A `typeVersion` asserted with no `node_docs` lookup (and no stated 503
  fallback) in the transcript.
- `$fromAI` outside tool-node parameters.
- A structured output parser attached to the chat agent.
