## Summary
With the addition of the `data_plane` keys to the Agent schema, ADP was reading the defaults rather than the test configuration due to the Agent not recognizing the `__` variants of environment variables like `DD_DATA_PLANE__API_LISTEN_ADDRESS`. This PR updates the test config to use the single-underscore variants.
For standalone mode, `saluki-config` already supports falling back to reading the single-underscore variants (like `DD_DATA_PLANE_API_LISTEN_ADDRESS`) if the double-underscore variant isn't set. A test is added to assert this.
**Converged mode** — the Core Agent reads `DD_DATA_PLANE_API_LISTEN_ADDRESS` (single-underscore, viper form) and propagates it as the authoritative `data_plane.api_listen_address` via the config stream. ADP resolves the nested key on the first try.
**Standalone mode** — no config stream; `from_environment("DD_")` splits on `__` and produces the flat figment key `data_plane_api_listen_address`. `get()` retries on `MissingField` with the flat form and resolves it. A regression test (added to saluki-config) documents and protects this fallback.
> [!NOTE]
> `DD_DATA_PLANE__API_LISTEN_ADDRESS` (double-underscore) remains fully functional — the nested key is checked before the flat fallback, so existing scripts using that form continue to work.
## Test plan
- [x] Added `test_underscore_fallback_on_get_multi_segment_key` to saluki-config, confirming `try_get_typed("data_plane.api_listen_address")` resolves from a single-underscore env var via the existing `get()` fallback.
- [x] All 5 previously-failing converged tests pass against `agent-dev:master-py3-full` with base-config ADP (no `config.rs` change): `privileged-api-endpoints`, `unprivileged-api-endpoints`, `telemetry-endpoint`, `adp-config-dynamic-basic`. (`dogstatsd-forwarding` forwarding all passes; only remaining failure is the separate regression #1 tls classifier bug.)
- [x] 3 standalone-mode tests (`basic-startup`, `adp-memory-mode-strict-within-limit`, `otlp-traces-enabled`) pass — ADP resolves the shifted listen address via the flat-key fallback.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: jesse.szwedko <jesse.szwedko@datadoghq.com> 3e2ba4d
Summary
With the addition of the
data_planekeys to the Agent schema, ADP was reading the defaults rather than the test configuration due to the Agent not recognizing the__variants of environment variables likeDD_DATA_PLANE__API_LISTEN_ADDRESS. This PR updates the test config to use the single-underscore variants.For standalone mode,
saluki-configalready supports falling back to reading the single-underscore variants (likeDD_DATA_PLANE_API_LISTEN_ADDRESS) if the double-underscore variant isn't set. A test is added to assert this.Converged mode — the Core Agent reads
DD_DATA_PLANE_API_LISTEN_ADDRESS(single-underscore, viper form) and propagates it as the authoritativedata_plane.api_listen_addressvia the config stream. ADP resolves the nested key on the first try.Standalone mode — no config stream;
from_environment("DD_")splits on__and produces the flat figment keydata_plane_api_listen_address.get()retries onMissingFieldwith the flat form and resolves it. A regression test (added to saluki-config) documents and protects this fallback.Note
DD_DATA_PLANE__API_LISTEN_ADDRESS(double-underscore) remains fully functional — the nested key is checked before the flat fallback, so existing scripts using that form continue to work.Test plan
test_underscore_fallback_on_get_multi_segment_keyto saluki-config, confirmingtry_get_typed("data_plane.api_listen_address")resolves from a single-underscore env var via the existingget()fallback.agent-dev:master-py3-fullwith base-config ADP (noconfig.rschange):privileged-api-endpoints,unprivileged-api-endpoints,telemetry-endpoint,adp-config-dynamic-basic. (dogstatsd-forwardingforwarding all passes; only remaining failure is the separate regression Bump pin-project from 1.1.4 to 1.1.5 #1 tls classifier bug.)basic-startup,adp-memory-mode-strict-within-limit,otlp-traces-enabled) pass — ADP resolves the shifted listen address via the flat-key fallback.🤖 Generated with Claude Code