Summary
Add production propagator adapters on top of the existing IContextPropagator<TCarrier> / IContextSerializer<T> contracts: W3C Trace Context, B3, header-baggage, and a CompositePropagator that composes several at once, plus queue/Message transport via serialization.
Goal
Turn the generic propagation contracts (Category 8) into concrete, interoperable adapters, and allow several propagators to run together.
Problem
IContextPropagator/IContextSerializer are abstractions only. Consumers who need W3C traceparent/tracestate, B3, or multi-standard support have to reimplement spec parsing and composition themselves. There is no CompositePropagator and no bag/bounded-header handling to avoid transport overload.
Scope
Design Expectations
- Propagators are opt-in and explicit; library never auto-exports context.
- Conflicting keys across propagators resolve by last registered wins (overridable by app-specific propagators).
- Baggage and context stay bounded against transport overload;
IContextValidator guards inbound values per 1.2 spoofing risk.
- Queue propagation uses the serializer +
TCarrier abstraction from Category 8 rather than bespoke static API.
Acceptance Criteria
Non-Goals
- No default W3C/B3 naming baked into Core (stays adapter-level).
- No route/priority negotiation beyond last-in-wins.
- No retry/persistence/compliance layer.
Summary
Add production propagator adapters on top of the existing
IContextPropagator<TCarrier>/IContextSerializer<T>contracts: W3C Trace Context, B3, header-baggage, and aCompositePropagatorthat composes several at once, plus queue/Messagetransport via serialization.Goal
Turn the generic propagation contracts (Category 8) into concrete, interoperable adapters, and allow several propagators to run together.
Problem
IContextPropagator/IContextSerializerare abstractions only. Consumers who need W3Ctraceparent/tracestate, B3, or multi-standard support have to reimplement spec parsing and composition themselves. There is noCompositePropagatorand no bag/bounded-header handling to avoid transport overload.Scope
W3CTraceContextPropagator(traceparent,tracestate), spec-compliant per 1.2.B3Propagator(single/multi header) per 1.5.CompositePropagatorrunning several propagators in oneInject/Extractcall per 1.5; last-in wins on key conflicts.Messagecarrier propadapter reusingIContextSerializer<T>per 1.7 (Kafka/RabbitMQ/ServiceBus) — no static helpers, injected instances.Design Expectations
IContextValidatorguards inbound values per 1.2 spoofing risk.TCarrierabstraction from Category 8 rather than bespoke static API.Acceptance Criteria
CompositePropagator.Inject/Extractcomposes multiple standards in one call.Message(queue) propagator round-trips through serialization.Non-Goals