Skip to content

feat(configuration): bump config schema to v1.1.0, apply Prometheus property rename#6781

Merged
trentm merged 11 commits into
open-telemetry:mainfrom
honeycombio:mike/bump-config-schema-prometheus-rename
Jun 18, 2026
Merged

feat(configuration): bump config schema to v1.1.0, apply Prometheus property rename#6781
trentm merged 11 commits into
open-telemetry:mainfrom
honeycombio:mike/bump-config-schema-prometheus-rename

Conversation

@MikeGoldsmith

@MikeGoldsmith MikeGoldsmith commented Jun 3, 2026

Copy link
Copy Markdown
Member

Which problem is this PR solving?

The config schema was pinned to v1.0.0 (Feb 2026). v1.1.0 was released on 2026-06-05, which includes the Prometheus exporter property rename, IdGenerator definition, and other improvements.

Short description of the changes

Bumps the config schema pin from v1.0.0 to v1.1.0. The most user-visible change is the Prometheus exporter property rename (open-telemetry/opentelemetry-configuration#612 upstream):

  • without_scope_infoscope_info_enabled (inverted semantics: falsetrue)
  • without_target_info/developmenttarget_info_enabled/development (inverted semantics: falsetrue)
  • with_resource_constant_labelsresource_constant_labels

Changes:

  • Update CONFIG_VERSION in the codegen script to v1.1.0
  • Regenerate types and validator
  • Update EnvironmentConfigFactory hardcoded Prometheus defaults to use the new property names with inverted semantics
  • Update test fixtures (kitchen-sink.yaml) and assertions to match

Breaking change?

For OTel JS consumers using the configuration package directly, the renamed properties on prometheus/development are a breaking change. Marked ! per convention.

Type of change

  • Breaking change

How Has This Been Tested?

  • 82 configuration package tests pass
  • 193 sdk-node tests pass
  • Full lint passes
  • Full repo tsc --build compiles cleanly

Bump opentelemetry-configuration schema from v1.0.0 to a SHA on main
that includes upcoming v1.1.0 changes. Tracking issue for v1.1.0:
open-telemetry/opentelemetry-configuration#643.

Pulls in the Prometheus exporter property rename (open-telemetry#612 upstream):
- `without_scope_info` -> `scope_info_enabled` (inverted semantics)
- `without_target_info/development` -> `target_info_enabled/development` (inverted semantics)
- `with_resource_constant_labels` -> `resource_constant_labels`

Updates EnvironmentConfigFactory hardcoded defaults and all test
fixtures/assertions to match the new schema. Regenerated types and
validator.

The schema pin should be reverted to a tagged release (v1.1.0) once
upstream cuts the release.

Assisted-by: Claude Opus 4.6
@MikeGoldsmith
MikeGoldsmith requested a review from a team as a code owner June 3, 2026 11:42
@codecov

codecov Bot commented Jun 3, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.33333% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 95.51%. Comparing base (0b91bf1) to head (938c1b8).

Files with missing lines Patch % Lines
...al/packages/configuration/src/FileConfigFactory.ts 93.33% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #6781      +/-   ##
==========================================
+ Coverage   94.93%   95.51%   +0.57%     
==========================================
  Files         383      382       -1     
  Lines       13009    12941      -68     
  Branches     2975     2967       -8     
==========================================
+ Hits        12350    12360      +10     
+ Misses        659      581      -78     
Files with missing lines Coverage Δ
...ages/configuration/src/EnvironmentConfigFactory.ts 97.24% <ø> (ø)
...al/packages/configuration/src/FileConfigFactory.ts 96.24% <93.33%> (-0.49%) ⬇️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@MikeGoldsmith

Copy link
Copy Markdown
Member Author

CI failures are:

  • Updated the const string for config schema version (should we include these types of changes in codecov?)
  • Failed link check, link is fine - likely rate limited

Comment thread experimental/packages/configuration/src/generated/types.ts
Comment thread experimental/packages/configuration/scripts/generate-config.js Outdated
@trentm

trentm commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Side Q on versioning the config

(Perhaps this doesn't need to be solved for this PR. This "configuration" package and startNodeSdk() usage in sdk-node is still experiemental so we can break things while we figure out a process.)

Should a minor release of the configuration schema result in a breaking change of the JS configuration package?
Not for this PR, but I'd think eventually we'd want the JS SDK to support multiple v1.x versions of the configuration schema so that a user with a number of v1.0.0 configs is not immediately broken by an upgrade to the latest SDK packages.

Eventually we might want to support multiple major versions of the config schema, but I don't know that for sure.

@MikeGoldsmith @maryliag Do you know of prior discussions around this?
Are there rules/specs for declarative config implementations on supporting schema versions?
Has anything for the JS implementation been discussed?
I'm happy to open a separate issue.

@MikeGoldsmith
MikeGoldsmith marked this pull request as draft June 5, 2026 11:03
v1.1.0 of opentelemetry-configuration was released on 2026-06-05,
which includes the IdGenerator definition and the Prometheus property
rename. Switch the codegen pin from the temporary main SHA back to a
tagged release.

Regenerated types and validator.

Assisted-by: Claude Opus 4.6
@MikeGoldsmith MikeGoldsmith changed the title chore(configuration)!: bump config schema to main SHA, apply Prometheus property rename chore(configuration)!: bump config schema to v1.1.0, apply Prometheus property rename Jun 5, 2026
@MikeGoldsmith
MikeGoldsmith marked this pull request as ready for review June 5, 2026 16:37
@maryliag

maryliag commented Jun 5, 2026

Copy link
Copy Markdown
Member

Do you know of prior discussions around this?

I'm not aware, and we haven't discussed how we will handle this in the JS

@MikeGoldsmith

Copy link
Copy Markdown
Member Author

I'm also unaware of any discussion around how implementations could / should support multiple versions of the config spec. The spec shouldn't introduce any breaking changes in minor versions, so major config version to major JS package version makes sense.

…omments

Trent's review feedback on open-telemetry#6781: the eslint config v10 update
(open-telemetry#6382) accidentally added the generated config files to the ignore
list, so npm run lint:fix in the codegen no longer ran on them. This
produced formatting noise in generated types.ts.

- Remove the experimental/packages/configuration/src/generated/**
  ignore from eslint.config.mjs so lint:fix runs on these files
- Drop the now-redundant /* eslint-disable */ header in validator.js
  and validator.d.ts (lint:fix handles formatting; the AUTO-GENERATED
  comment signals intent)
- Regenerate types and validator with the corrected lint

Assisted-by: Claude Opus 4.6
Comment thread eslint.config.mjs
Resolve CHANGELOG conflict by keeping the PR's Unreleased breaking
change entry alongside the new 0.219.0 release section from main.

@trentm trentm left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And since we're not yet passing through options to new PrometheusMetricExporter() for env-based config, nor handling meter_provider/readers/*/pull at all in the config, there are no changes needed to sdk-node yet.

@trentm trentm left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@MikeGoldsmith Oh, wait. Shouldn't this come with changing over the file_format guard to require "1.1" and all test and example config files to use file_format: "1.1" as at https://github.com/open-telemetry/opentelemetry-configuration/blob/main/examples/otel-getting-started.yaml#L11?

Bumping the schema to v1.1.0 should accept config files declaring
`file_format: "1.1"`. Widen the guard to accept any 1.x minor (1.0 and
1.1), since minor versions are backward compatible. Move all test/example
fixtures to "1.1" and add explicit coverage for 1.0 acceptance and
unsupported-major rejection.
@MikeGoldsmith

Copy link
Copy Markdown
Member Author

@MikeGoldsmith Oh, wait. Shouldn't this come with changing over the file_format guard to require "1.1" and all test and example config files to use file_format: "1.1" as at https://github.com/open-telemetry/opentelemetry-configuration/blob/main/examples/otel-getting-started.yaml#L11?

Yep, you are right. I've updated the version checks to allow both 1.0 and 1.1. Thanks 👍🏻

Follow the configuration versioning spec: reject a config file whose
MAJOR version differs, accept any MINOR version within the supported
major, and warn (rather than reject) when the MINOR version is newer
than this SDK targets. Mirrors the opentelemetry-python behaviour.
Comment thread experimental/packages/configuration/src/FileConfigFactory.ts Outdated
Comment thread experimental/packages/configuration/src/FileConfigFactory.ts
Comment thread experimental/CHANGELOG.md Outdated

### :boom: Breaking Changes

* chore(configuration)!: bump config schema to v1.1.0; rename `without_scope_info` → `scope_info_enabled` and `without_target_info/development` → `target_info_enabled/development` on the Prometheus pull exporter (semantics inverted), rename `with_resource_constant_labels` → `resource_constant_labels`. Validate `file_format` per the configuration versioning spec: accept any minor version of major `1` (e.g. `1.0`, `1.1`), warn when the minor version is newer than supported, and reject other major versions. [#6781](https://github.com/open-telemetry/opentelemetry-js/pull/6781) @MikeGoldsmith

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q: is this breaking now? It might not be.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically it is a breaking change for anyone who was using prometheus/development config out of the parsed model. However, given that model and the whole config package is experimental and moving from an rc to a stable release, maybe could remove the breaking change flag?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks.

Per the configuration repo's versioning doc, anything */development isn't considered a semver breaking change.

Co-authored-by: Trent Mick <trentm@gmail.com>
@MikeGoldsmith MikeGoldsmith changed the title chore(configuration)!: bump config schema to v1.1.0, apply Prometheus property rename chore(configuration): bump config schema to v1.1.0, apply Prometheus property rename Jun 18, 2026
@trentm
trentm added this pull request to the merge queue Jun 18, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Jun 18, 2026
@trentm trentm changed the title chore(configuration): bump config schema to v1.1.0, apply Prometheus property rename feat(configuration): bump config schema to v1.1.0, apply Prometheus property rename Jun 18, 2026
@trentm
trentm enabled auto-merge June 18, 2026 21:51
@trentm
trentm added this pull request to the merge queue Jun 18, 2026
Merged via the queue into open-telemetry:main with commit e6e5e19 Jun 18, 2026
31 checks passed
@otelbot-js otelbot-js Bot mentioned this pull request Jul 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

4 participants