The planner run, decision by decision The planner reads three cards and maps skills to agents. Lane one: SendMessage for run-tests on commit a41d7c3 returns task 954267b7 completed, and summary.json shows 13 passed and 0 failed. Lane two: SendMessage for review-diff returns TASK_STATE_INPUT_REQUIRED asking for the base branch, the planner answers main on the same task, the task completes, and review.json holds one low-severity finding. Lane three: SendMessage with a bearer token for deploy returns TASK_STATE_AUTH_REQUIRED, the planner subscribes, an operator approves outside A2A on the first frame, and the stream ends at TASK_STATE_COMPLETED. The planner decides after each lane and would stop on a failed test or a high-severity finding. DISCOVER: ONE CARD PER PORT, SKILLS MAPPED TO AGENTS DECISIONS stop if the test task does not complete, a test fails, or a finding is high severity test-runner run-tests code-reviewer review-diff, answer-question deployer deploy, needs a bearer token delegate run-tests SendMessage commit a41d7c3 TASK_STATE_COMPLETED task 954267b7 summary.json passed 13, failed 0 tests 13 passed, go on delegate review-diff SendMessage refunds.diff as a raw part TASK_STATE_INPUT_REQUIRED which base branch? answer SendMessage, same task answer from context: main TASK_STATE_COMPLETED task 80bc7784 review.json 1 finding, severity low review 1 finding, 0 blocking delegate deploy SendMessage build 2026.10.06-1, token TASK_STATE_AUTH_REQUIRED an operator must approve follow SubscribeToTask frame 1: the Task snapshot on frame 1 operator approves POST /approve, not A2A 3 more frames TASK_STATE_COMPLETED task a31361b3, stream ends deploy TASK_STATE_COMPLETED