ASSEMBLE · VERIFY · INSPECT
Artifact handoff: bind a reader to a generation
Follow exact content through assembly, a conditional write and a scoped version read.
Your experiment
Compare a handoff that names generation 1 with one that reads latest. Introduce a competing write, then disable history. Explain why a stable reference also needs a retention policy. This does not migrate an entire agent context.
Play inspects the whole trace over 60 seconds at 1×. Pause, step, restart or change speed. Parameters reset the trace without autoplay. Teaching time is not network, storage or SDK latency.
Exact visible content
Decision trace
Complete state inspector
Artifact event fields illustrate the pinned A2A v0.3 shape, not full protocol conformance. Storage is a separate application policy: a final marker is required before commit; expected generation protects the current live version; generation 0 cannot replace this already-existing object. File input is encoded text, not an upload. The byte limit counts decoded or serialized content, not base64/wire overhead. Data uses JSON parsing/serialization and does not preserve whitespace or duplicate keys. Version retention and read grants are explicit fixture policies, not full ADK/GCS semantics. No IAM, encryption, malware scanning, checksums, lifecycle rules or remote durability is implemented. All records, objects and identities are fictional. No credentials, files, cloud services or external model are accessed. Pinned A2A v0.3 reference · Cloud Storage preconditions · Official AICassindra articles.
A reference needs a retention policy
The opening scenario has generation 1 containing baseline and another writer creating generation 2. Keep Expected live generation at 1: the client write fails because it is stale, but a reader pinned to retained generation 1 still receives baseline. Change Expected live generation to 2 and inspect the successful generation 3. Switching Reader version to Latest follows that new content, whereas Generation 1 remains pinned. Disable Retain earlier versions and repeat: the pinned read becomes unavailable. This illustrates an artifact reference across a handoff, not migration of conversation memory or a complete agent session.
Assemble the content
Part kind selects text, a JSON object, or an inline file made from the entered text. Fixture content is the actual payload; Load valid example replaces it with a valid example for the selected kind. Maximum text chunks bounds the number of Unicode-code-point chunks, not the number of bytes. Append later text parts preserves earlier chunks; disabling it replaces the buffer at every update. Send final artifact marker tells this application that assembly has finished. Data and file parts are single units here, so text-chunk settings do not apply to them.
Control storage and ownership
Actor tenant chooses the owner Alpha or the foreign reader Beta. Another writer commits first advances the live generation before this client attempts its write. Require matching live generation compares Expected live generation with that live value; it does not compare with an old retained version. Per-version UTF-8 byte limit rejects content that is too large after assembly. Retain earlier versions keeps the baseline and subsequent generations available. Retry the same write intent repeats the commit with the same expected generation, so a successful conditional write makes that unchanged condition stale.
Inspect the handoff
Grant Beta read access only permits a foreign read but never a foreign write. Reader version chooses the live object or generation 1; removing history can make generation 1 unavailable. Inspect Exact visible content and Decision trace together: a failed write does not mean that no previous readable object exists. Play reveals the trace over sixty seconds, Pause freezes it, Next operation advances one stage, Restart rewinds inspection, Speed changes teaching playback, and Inspection seeks without changing storage policy. Changing a fixture input constructs a fresh experiment rather than mutating a remote service.