@@ -48,9 +48,11 @@ For `otel.instrumentation.*` properties not in SPECIAL_MAPPINGS:
4848
49491 . Strip ` otel.instrumentation. ` prefix
50502 . Replace ` - ` with ` _ ` (kebab-case → snake_case)
51- 3 . Handle ` experimental ` :
52- - ` experimental. ` path segment → remove, add ` /development ` to next segment
53- - ` experimental- ` in name → add ` /development ` to that segment
51+ 3 . Handle ` experimental ` per path segment:
52+
53+ - a segment that is exactly ` experimental ` is removed, and ` /development ` is appended to the following segment
54+ - a segment that already contains ` experimental ` keeps that text in the segment name, and ` /development ` is appended to that same segment
55+
54564 . Prepend ` java. `
5557
5658Examples:
@@ -59,6 +61,7 @@ Examples:
5961| ------------------------------------------------------------------------------| -------------------------------------------------------------|
6062| ` otel.instrumentation.grpc.emit-message-events ` | ` java.grpc.emit_message_events ` |
6163| ` otel.instrumentation.grpc.experimental-span-attributes ` | ` java.grpc.experimental_span_attributes/development ` |
64+ | ` otel.instrumentation.http.client.emit-experimental-telemetry ` | ` java.http.client.emit_experimental_telemetry/development ` |
6265| ` otel.instrumentation.logback-appender.experimental.capture-code-attributes ` | ` java.logback_appender.capture_code_attributes/development ` |
6366| ` otel.instrumentation.common.experimental.controller-telemetry.enabled ` | ` java.common.controller_telemetry/development.enabled ` |
6467
@@ -81,9 +84,19 @@ Add `examples` only for module-specific configs with non-obvious format (lists,
8184
8285### 1. Validate experimental markers match
8386
84- - ` /development` in declarative_name ↔ `experimental` in flat name (MUST match both ways)
87+ - ` /development` in `declarative_name` means the flat property must be experimental, but there are two valid shapes:
88+ - standalone `experimental` segment before the target segment :
89+ ` java.common.controller_telemetry/development.enabled` ↔ `otel.instrumentation.common.experimental.controller-telemetry.enabled`
90+ - `experimental` already embedded in the target segment :
91+ ` java.grpc.experimental_span_attributes/development` ↔ `otel.instrumentation.grpc.experimental-span-attributes`
92+ - another embedded example :
93+ ` java.http.client.emit_experimental_telemetry/development` ↔ `otel.instrumentation.http.client.emit-experimental-telemetry`
8594- WRONG : ` otel.instrumentation.servlet.capture-request-parameters` + `java.servlet.capture_request_parameters/development`
95+ - WRONG : ` otel.instrumentation.grpc.span-attributes` + `java.grpc.experimental_span_attributes/development`
8696- RIGHT : ` otel.instrumentation.servlet.experimental.capture-request-parameters` + `java.servlet.capture_request_parameters/development`
97+ - RIGHT : ` otel.instrumentation.grpc.experimental-span-attributes` + `java.grpc.experimental_span_attributes/development`
98+
99+ This matches `translateName()` in `ConfigPropertiesBackedDeclarativeConfigProperties` : when a `/development` segment already contains `experimental`, do not insert an extra `experimental.` path segment in the flat property.
87100
88101# ## 2. Verify config is used
89102
0 commit comments