Skip to content

feat(observability): Phase 3 — downstream attribution (GitHub PR + external API correlation) #555

Description

@krokoko

Child of #245. Phase 3 (Downstream attribution) was deferred from the #245 core delivery (Phases 0–2 shipped the correlation envelope across orchestrator logs, TaskEvents, and agent OTel). This issue extends the same {task_id, user_id, repo, trace_id} envelope to the platform's outbound edges — where ABCA talks to the outside world.

Context: what #245 already delivered

  • Correlation contract documented in docs/design/OBSERVABILITY.md ("Correlation envelope" + "Join model").
  • Orchestrator logs carry {task_id, user_id, repo} on admission→terminal transitions (via logger.child).
  • TaskEvents (orchestrator + agent) stamp user_id/repo, and agent events stamp trace_id — so the event stream joins to the X-Ray trace.
  • Agent OTel root span + baggage carry the envelope.
  • Git commits already carry Task-Id: / Prompt-Version: trailers (pre-existing).

Phase 3 is what's left: attribution at the external-integration boundary, which is separable and lower value than the in-platform join.

Scope

1. GitHub PR-level attribution (extend existing trailers)

  • Stamp task/user metadata onto PR bodies and PR comments (not just commit trailers), so a human reading a PR — or a reviewer reading a comment — can trace it back to the originating {task_id, user_id} without leaving GitHub.
  • Ensure the GitHub actor identity ABCA acts as is attributable back to the platform user_id that triggered the task.

2. External webhook / API call correlation

Handlers that call out (Linear, Jira, Slack, GitHub API, arbitrary webhooks) carry no correlation today. Add one of:

  • an outbound correlation header (e.g. X-ABCA-Task-Id, or a W3C traceparent) on requests where the receiver can use it, and/or
  • structured log fields {task_id, user_id, trace_id} at each outbound call site,

so a failure in an external integration can be tied back to the task that caused it.

Out of scope

Acceptance criteria

Design questions to resolve first

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestobservabilityTracing, attribution, dashboards, metrics, alarms, telemetry redaction

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions