opentelemetry-php This Week: Per Package Changelogs, Config Validation, and a CI Segfault Fix
The opentelemetry-php SDK saw six merged pull requests in the last week, with 112 files changed across the tree. The headline work is a new per package changelog system backed by a CI check, plus tighter validation in the declarative config SDK as it moves toward a release candidate. If you maintain code that depends on any of the split packages, the changelog change affects how you should read upcoming releases.
Per package changelogs with a CI gate
The biggest commit of the week is #2109, which adds a CHANGELOG.md to every split package: src/API, src/SDK, src/Config/SDK, src/Context, src/Contrib/Grpc, src/Contrib/Otlp, src/Contrib/Zipkin, src/Extension/Propagator/B3, src/SemConv, and proto/otel. See the commit.
Why this matters: the project ships many packages, and until now the release notes lived in GitHub releases per generated package. Each package directory now carries its own changelog, so you can check what changed for the packages you actually use without hunting through release pages.
There is enforcement behind it. A new workflow in .github/workflows/changelog.yml runs script/check_changelog.sh on every pull request. The script lists packages changed since the base branch and fails if a package’s source changed without a changelog entry. Markdown only changes are exempt, and maintainers can add the skip-changelog label for internal work.
Contributor guidance was added to AGENTS.md and CONTRIBUTING.md: entries go under Unreleased, breaking items including raised PHP or dependency minimums go under Breaking changes, and each entry ends with a link to its pull request.
Tighter declarative config validation on the RC path
Two pull requests landed in src/Config/SDK in two days. #2105 tightens validation of declarative configuration ahead of a release candidate, touching Validation.php and the integration tests.
Then #2108 restored Validation::ensureRegexPattern(), which the tightening pass had removed, with unit tests in ValidationTest.php. If you call validators from the config SDK directly, keep an eye on this area before the RC lands. Expect the exact set of public validation methods to settle once the RC tags.
Component providers move into their packages
#2107 moves component providers into their own packages, shown in this commit. This continues the split package direction the project has been on. The deptrac.baseline.yaml changes confirm dependency layer rules were adjusted to match.
For users the practical effect is smaller composer.json graphs: providers now live beside the code they configure, so pulling one SDK component does not drag the whole monolith along. Check your composer.json after the next release in case any package paths shift.
CI stability and a leaner base image
Two housekeeping items worth knowing if you run the project’s containers or contribute:
- #2106 skips extension unload steps in CI to avoid a grpc segfault. A sensible workaround for a crash that was costing CI time, not user code.
- #2089 optimizes the runtime base image, trimming what ships in container builds.
What to watch
- The declarative config RC: validation rules are being tightened now, so read the
Config/SDKchangelog before upgrading when it lands. - The changelog CI check will shape every future pull request. If you contribute, add entries under
Unreleasedin each affected package or expect a red check. Validation::ensureRegexPattern()came back once. If you depend on config validator methods, follow the RC releases closely.