CONFIGURE · DELIVER · RECONCILE

A2A push delivery: retries do not prove exactly-once effects

Watch individual webhook attempts. Change authentication, timeouts and retry policy; inspect exactly what the receiver applied.

Offline webhook fixture · no external requests

Payload and attempt inspector

Receiver effects

Your experiment

The sender exhausts its attempt budget before the receiver processes each update. Run to the end: zero acknowledgements does not mean zero effects. Increase the timeout to five seconds, then compare lost acknowledgements, retries and idempotent processing.

Delivery decision trace

Test a failure, not just the happy path

Change the credential fixture to Wrong or uncheck the expected task ID. The receiver must apply nothing. Enter a localhost URL: this fixture rejects it before dispatch. Delete the configuration at 3 seconds: no later attempts start, but the request already sent at 2 seconds can still arrive.

Raise the outage duration to force retries. Disable older-sequence protection and inspect whether delayed updates regress the receiver’s state. Receipt deduplication and ordering protection solve different problems. The fixture event ID and sequence number are application-defined fields, not a claimed mandatory A2A wire schema.

Exact teaching policy

Four updates are emitted at 2, 12, 22 and 32 modeled seconds. Retries wait initial backoff × 2^(attempt − 1), without jitter. A 503 or sender timeout can retry; a received 401/404 stops under this policy. Arrival exactly at the timeout boundary is processed first. A late response does not retract an already scheduled retry. “Exhausted” describes the sender budget, not proof that the receiver performed no work.

The one-minute inspection spreads the complete bounded delivery history over 60 wall-clock seconds at 1×. The modeled delivery clock is shown separately. Changing parameters resets the experiment; use 0.5× for a slower two-minute inspection. No automatic playback occurs.

Offline conceptual lab, not an A2A SDK, complete wire-schema validator, real webhook, credential verifier or SSRF security library. URL validation is a strict allowlist for one reserved example endpoint; no DNS, HTTP, signatures or real tokens are used. Request/response delay, retry limits and error handling are declared fixture choices. The A2A specification describes webhook delivery and receiver validation; this experiment isolates those reliability concepts without claiming full protocol conformance. A2A specification: push notification delivery and security.

An exhausted sender can have effects

Set Maximum attempts per update to one and lose first successful acknowledgments. Inspect the receiver ledger: updates may have been applied even though the sender exhausts its budget. Raising the attempt budget without deduplication can create repeated effects. Next delete configuration at second three. The update dispatched at second two can still arrive, but later updates should not start. This distinction is the release gate: test both sender decisions and receiver state rather than equating no acknowledgment with no delivery.

Separate setup from receiver policy

Fixture callback URL accepts only the reserved HTTPS receiver.example/hook address; no network request is sent. Agent advertises push support can block dispatch before delivery. Receiver credential fixture selects matched, wrong or missing credentials without accepting secrets. Payload names the expected task controls a separate task-identity check. Wrong credentials or a wrong task produce permanent refusal under this local policy rather than receiver effects. These gates are not a complete authentication or callback-security implementation.

Set timing and retries

Receiver arrival / response delay schedules delivery. Sender timeout is independent and cannot undo a request already sent. Receiver unavailable until creates a temporary 503 response window. Maximum attempts per update includes the first attempt. Initial exponential backoff doubles between successive retries without jitter. Arrival exactly at its deadline is handled before timeout. Lose first successful ACK for each update makes the sender uncertain even after the receiver accepted work. A late response does not remove a newer retry that was already scheduled.

Protect effects and inspect the trace

Ignore already-seen event IDs suppresses repeated effects; Ignore older fixture sequence numbers prevents a delayed older update from regressing state. These are different protections. Delete config at suppresses future sends and retries from that model time, but cannot recall a dispatched request. Common baseline settings restores shared defaults. Choose update, or click a row, to inspect its payload and attempts. Play reveals the complete bounded history over sixty inspection seconds; Pause, Next decision, Restart, Speed and Inspection time control that view. Sender acknowledgment, exhausted budget and receiver effects must be read separately. The application-defined event IDs and sequence numbers are teaching fields, not a claim that every A2A version mandates this wire schema.

Views are my own and do not represent any employer, past or present.

Search