D119 — Agent board session over MCP and JSON lines¶
Decision¶
An agent drives the engine through a board session (tracemaker session, doc 19): tools over MCP on standard input and output and over JSON lines; copper comes only from the router behind the exact check; each route is a transaction kept only if it adds no DRC error (judged with the zones refilled when the route used soft zones); states can be undone and restored; the log of calls replays by result and state digests; hints are an advice object read by the advice code; save writes only to --out; the work limit is soft and counted from what was spent. The engine has no model, key or network. A scripted baseline agent and bench/agent_eval.py are the first test of D118's stop rule: not met (the tabu agent routes what the plain run routes on all 16 boards; on 16 fresh boards the plain run routes 960, the control 968, the persist agent 967 and a model-driven arm of four agents 968, doc 19 §9.3): an agent matches what four more seeds give and does not exceed it, so nothing more is built for agents until the router can tell one more (which end is fenced, which lanes are free)
Alternatives¶
An HTTP server or a model client in the engine; tools that place copper by coordinates; a hard work cap that changes what work means (a first call must equal the command line, which it does: same routed, tracks, vias and work on srj20 sample054); redaction in the session
Reason¶
The advisor channel (D109–D112) measured no gain from passive hints; the open question is an active agent with engine feedback (PCBWorld, doc 18), which needs a way to try one without trusting it. Everything an agent can do is a transaction of the existing router, so rules 1, 2, 4 and 6 hold by construction and are tested; the session is also the core of the KiCad assistant (D1 of doc 18)