Baggage
This file tracks compliance for the OpenTelemetry baggage specification in this repository.
Scope
- Baggage API types live in the external
otel4s-core-*modules. - This repository provides SDK-side context integration and propagators.
Module mapping
- Core API: baggage
- SDK context integration: baggage
- SDK context keys: SdkContextKeys.scala
- SDK propagators: propagation
baggage/api.md checklist
| Area | Requirement | Status | Evidence | Notes |
|---|---|---|---|---|
| Baggage container | Immutable container of name/value pairs | Compliant | Baggage.scala, BaggageSuite.scala | updated/removed return new instances |
| Names/values | Accept any UTF-8, case-sensitive; do not restrict names | Partial | Baggage.scala | No validation; UTF-8 acceptance not explicitly enforced or documented |
| Get value | API to get value by name (null/None if absent) | Compliant | Baggage.scala, BaggageSuite.scala | get returns Option |
| Get all values | API to enumerate all entries (order not significant) | Compliant | BaggageSuite.scala, BaggageSuite.scala | asMap |
| Set value | API to set name/value (optional metadata) | Compliant | Baggage.scala, BaggageSuite.scala, BaggageSuite.scala | Overloads support optional metadata and update by key. |
| Remove value | API to remove name/value | Compliant | Baggage.scala, BaggageSuite.scala | Removal API is exposed and implemented by map key removal. |
| No-SDK behavior | API functional without SDK | Partial | Baggage.scala, BaggageManager.scala | Baggage is pure; BaggageManager.noop exists; propagation requires SDK |
| Context interaction | Extract Baggage from Context | Not Implemented | SdkBaggageManager.scala, SdkBaggageManager.scala | No explicit Context API in core for baggage extract/attach |
| Context interaction | Insert Baggage into Context | Not Implemented | SdkBaggageManager.scala | No explicit Context API in core for baggage extract/attach |
| Implicit context | Get current Baggage from implicit Context | Partial | SdkBaggageManager.scala, SdkBaggageManager.scala | Provided via BaggageManager + LocalContext |
| Implicit context | Set current Baggage into implicit Context | Partial | SdkBaggageManager.scala | scope/local exist; no explicit Context API |
| Clear baggage | Ability to clear all baggage from Context | Partial | SdkBaggageManager.scala | Use scope(Baggage.empty); no explicit helper |
| Propagation | W3C Baggage TextMapPropagator available | Compliant | W3CBaggagePropagator.scala, W3CBaggagePropagator.scala | Included in default propagators |
| Conflict resolution | New entry replaces existing same name | Compliant | Baggage.scala, BaggageSuite.scala | Map.updated overwrites |
Cross-cutting specs
- Context propagation requirements are tracked in context-propagation.md.