- Status: Accepted
- Date: 2026-09-14
- Decision owner: SRE Lead
- Independent verifier: Charter QA
Context#
Eve crosses synchronous calls, browser callbacks, stored confirmations, event-sourced work, leases, agent reports, watchers, channels, and artifact verification. Request-only logging cannot join those boundaries, while a generic telemetry attribute bag would create an easy path for prompts, tool payloads, or secrets to enter default observability data. Task 13.2 requires one causal identity contract before Task 13.3 adds standardized execution controls and before later tasks export or operate telemetry.
Decision#
Adopt @oshun/tracing's eve-trace-context.v1 contract as the only Eve
propagation format.
- The carrier follows the W3C Trace Context Recommendation dated 2021-11-23.
Semantic naming is pinned to the repository-resolved
@opentelemetry/semantic-conventions@1.41.1; changing either pin requires a versioned decision and updated compatibility evidence. - One server-minted correlation UUID and one W3C trace ID identify the whole
causal journey. Each logical stage receives a fresh span ID. Synchronous work
is a child; deferred work is represented as a link through
originSpanIdinstead of pretending that it remains on a live call stack. - The total graph is:
invocation → session → turn → router → model → tool, with explicit tool branches toclient-tool,MCP,A2A, andconfirmation; confirmed work continues throughledger → queue → lease → agent, which branches towatcher → channelandartifact-verification. - A valid version-00 external
traceparentmay be continued. Versionff, unsupported versions, and malformed values are rejected. An externalx-correlation-idis never trusted or echoed; only explicitly trusted internal ingress may retain it. Malformed, wrong-stage, integrity-tampered, active-parent-substituted, unknown-field, and undeclared-edge carriers fail closed. - The serializable envelope is closed and versioned. It can contain only
version,stage,traceparent,correlationId,originSpanId, and an HMAC integrity tag. Production requires anOSHUN_EVE_TRACE_INTEGRITY_KEYof at least 32 bytes, shared by participating processes. Externaltracestateis deliberately discarded because its vendor value could be abused as a payload-smuggling field. The envelope has no generic attributes field. Prompts, messages, tool arguments/results, member or tenant identifiers, secrets, sensitive payloads, and error text are not representable in default propagation. - Browser callbacks echo the opaque server-issued envelope. Confirmed work persists the derived queue carrier on the append-only work-item creation event, so a later lease resumes it without relying on process memory or a caller-supplied replacement; leases and agent reports then persist their bounded carriers. MCP, A2A, confirmation, watcher, channel, and artifact adapters validate the expected source stage before deriving the next one. Provider or channel integrations that do not participate in W3C propagation keep the local boundary context without placing identifiers into user content.
- An integrity-valid envelope proves only that a participating service minted the continuity metadata. It is not an authorization credential, does not bind a principal or tenant, and does not independently prevent replay. Authentication, authorization, tenant isolation, idempotency, and fencing remain the responsibility of their existing boundary contracts. When an in-process parent exists, an explicit carrier must exactly match it.
verify-trace-context-propagation.tsowns the source binding inventory and a synthetic totality proof. Focused integration tests own each real adapter; the queue test crosses the actual confirmation bridge, append-only creation event, delayed lease, report, and persisted artifact-verification event. Negative controls include missing, malformed, integrity-tampered, severed, substituted, and payload-smuggling cases.
Consequences#
- Support can join one Eve journey across synchronous and deferred boundaries without searching message content.
- A missing stage or severed identity is a verification failure, not a newly minted trace that appears complete.
- Default carriers stay low-cardinality and payload-free; richer telemetry must be explicitly classified and governed in later work.
- Rotating the production integrity key invalidates outstanding deferred carriers. Operations must coordinate rotation with draining or expiring pending confirmations, leases, watcher outbox rows, and callbacks; silently falling back to a process-local key is forbidden in production.
- This decision proves propagation logic and participating repository adapters. It does not claim a deployed collector, exported production spans, dashboard coverage, retention policy, or current SLO attainment. Those remain Tasks 13.3–13.7 and 14.3 obligations.
- Eve does not currently expose live MCP or A2A routes from the BFF. Their shared platform adapters are propagation-ready and covered, but this task does not fabricate runtime traffic through endpoints that do not exist.