Skip to content

a2a: governance-aware inbound — correlation, tags, spans and typed refusals on served tasks #225

Closed

Description

@amirkhan-ak-sf

Summary

What donkey.serve() adds over a plain A2A server: every call arriving over
A2A gets the same treatment as an outgoing one.

Acceptance criteria

  • An inbound task establishes a run scope with a correlation ID, derived
    from the caller's ID when present and generated when not.
  • Cost tags apply to work done on behalf of an inbound task.
  • One span per inbound task, linked to the spans of downstream calls it makes.
  • A downstream refusal surfaces to the A2A caller as a well-formed A2A
    error, not a leaked stack trace.

Cross-surface impact

  • area:a2a + area:telemetry + area:refusals: the change.
  • Docs site: an inbound-governance page.

Out of scope

Inbound policy enforcement — that is the gateway's job, not the SDK's.

Activity

  1. added
    enhancementNew feature or request
    priority/p1Must-have: blocks a real adapter or CI gate
    size/m1-2 days, multiple files
    area:telemetryOTel GenAI spans, correlation IDs, cost tags (1.6, 1.7)
    area:a2aA2A serve / expose / dev (2.9)
    on Sep 4, 2026
  2. tommasobolis commented on Oct 25, 2026

    @tommasobolis
    Collaborator

    Fixed by #1225 (merged as f3eade8).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:a2aA2A serve / expose / dev (2.9)area:telemetryOTel GenAI spans, correlation IDs, cost tags (1.6, 1.7)enhancementNew feature or requestpriority/p1Must-have: blocks a real adapter or CI gatesize/m1-2 days, multiple files

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions