Step 1 of 4
Define the protocol
Write the message schemas and state machine before any agent code.
Define a minimal A2A protocol. Message envelope: {message_id, correlation_id, sender, recipient, type, timestamp, body}. Message types: task_submit {intent, payload, deadline}, task_ack {accepted: bool, reason?}, task_status {state, note}, task_result {ok, output, evidence?}, task_reject {reason, retryable: bool}. Task state machine: submitted -> accepted -> working -> (completed | failed); submitted -> rejected. Define per-intent timeout defaults and which failures are retryable. Document payload schemas for the demo intents: build_component and review_component. Deliver the protocol doc with a sequence diagram of the happy path and two failure paths.
Expected after this step
A protocol document with schemas, state machine, and sequence diagrams.
Should not happen
- ✕Agents 'communicating' by concatenating each other's chat transcripts
- ✕No acknowledgment step - senders assume delivery and drift from reality
- ✕Missing failure states so a dead worker hangs the whole pipeline
- ✕Untraceable flows: no correlation IDs, so nobody can debug a handoff
Verify before continuing
Do not move on until every check is true. The complete button stays locked until then.
Do not continue if…
- !Agents 'communicating' by concatenating each other's chat transcripts
- !No acknowledgment step - senders assume delivery and drift from reality
- !Missing failure states so a dead worker hangs the whole pipeline
- !Untraceable flows: no correlation IDs, so nobody can debug a handoff
If the AI messes this up
Use this when the AI fakes progress or breaks the feature. It forces a real fix.
The protocol has no failure paths. Add them first - the value of a protocol is almost entirely in what happens when things go wrong.