A2A Messages, Tasks, and Artifacts
Version note — reviewed 2026-09-29. The official A2A specification site still labels v1.0.0 as the latest released specification. The A2A repository also publishes a v1.0.1 patch release with specification bug fixes. This Lesson remains pinned to the published v1.0.0 specification and treats the patch release as compatibility/release-note evidence.
Goal
Track A2A v1.0.0 messages, task identity/status, and artifacts as different protocol objects with clear lifecycle and validation rules.
Imagine a group project. You send a teammate a note saying, "Please make the chart for our science report." That note is communication. The assignment itself has a separate identity: who owns it, whether it is still being worked on, and whether it was cancelled or finished. When the teammate finally uploads chart.png, the file is the produced result.
Separate message, task, and artifact
A2A keeps those three ideas separate. A message is what participants say to one another. A task is the identifiable piece of work and its changing status. An artifact is an output produced by that work. If you mix them together, a file arriving can be mistaken for proof that the whole job is finished, or a later status update can become detached from the job it belongs to.
A message carries communication between participants. It can contain parts representing text, files, or structured data. A message may start work or continue an existing interaction, but the message itself is not the durable lifecycle of the work.
A task represents work with identity and status. The v1.0.0 specification defines task operations such as sending messages, getting tasks, listing tasks, cancelling, subscribing to updates, and asynchronous delivery mechanisms. Your harness should store remote task identifiers so later updates attach to the correct work.