Playbook: OTel collector core & contrib (lockstep group)

SkillDev tools

Renovate maintenance playbook, read by the `/fix` skill, covering the OTel collector core + contrib + API/SDK lockstep group (Renovate group label `group:otel-core-contrib`). Select when the PR moves `go.opentelemetry.io/collector` / `collector/**`, `github.com/open-telemetry/opentelemetry-collector-contrib/**`, or `go.opentelemetry.io/otel` / `otel/**` — plus the `mdatagen`/`builder` tools — which must move in lockstep or OCB fails to assemble the distribution. Failure signatures are OCB / builder / mdatagen version-mismatch errors on `make build`. Move the whole group or none; a green module-local check is NOT sufficient (the full OCB build is the gate). If the core bump surfaces semconv errors, overlay `renovate-semconv`.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Playbook: OTel collector core & contrib (lockstep group) skill

What this skill tells your AI

The instructions your AI receives, as published by liatrio/liatrio-otel-collector in .claude/skills/renovate-otel-core/SKILL.md and read by ahel’s review.

Selected by the group:otel-core-contrib label, which Renovate applies to its otel collector core & contrib deps group. This is the repository's single most consequential dependency group: it moves the collector core, the contrib components, and the OTel API/SDK modules in lockstep, because OCB requires every component compiled into the distribution — plus the mdatagen/builder tools that generate and assemble it — to share a compatible core version.

Why these modules move together (the lockstep rationale)

Lifted and expanded from the description on this group in renovate.json:

  • OCB compatibility. The OpenTelemetry Collector Builder assembles the otelcol-custom binary from config/manifest.yaml. Every go.opentelemetry.io/collector* and opentelemetry-collector-contrib/* dependency — across the manifest, every component go.mod, and internal/tools/go.mod's mdatagen/builder — must be on a mutually compatible core version. Bumping them one-at-a-time produces a build where components disagree on the core API and OCB fails to assemble.
  • The OTel API/SDK belongs here too (Open Question #5, resolved: include). go.opentelemetry.io/otel and go.opentelemetry.io/otel/** (the API/SDK, distinct from .../collector) are direct dependencies of the custom receivers and are pinned to a version the collector core requires. Before this decision they matched neither the include nor the exclude list and fell through to generic gomod handling, so Renovate proposed them as independent one-at-a-time PRs — reintroducing exactly the version skew this group exists to prevent (a receiver on a newer otel/metric than the collector core it compiles into). They are now in matchPackageNames so a single PR moves core + contrib + API/SDK as one coherent set.
  • Rule ordering. This rule is placed last in packageRules so it overrides the generic tool deps grouping for mdatagen/builder specifically (last-rule-wins).

Authoritative docs

Failure modes → remediation

Failure signatureLikely causeRemediation
OCB make build fails on incompatible core versionsone collector/contrib module bumped without the othersensure the whole group moved together; run make generate, make tidy-all, make crosslink, then make build
make crosslink rewrites replace directivesinter-module replaces drifted after the bumpcommit the crosslink result
make generate diff after a core bumpmdatagen output changed with the new corecommit regenerated internal/metadata/ + documentation.md; never hand-edit them
a go.opentelemetry.io/otel/* major bump drops a require on tidymajor bump is an import-path migrationrewrite the import paths to the new major first, then make tidy-all (do not accept the drop — this is the backoff/v7 class of defect)
compiler errors mentioning semconvthe core bump pulled a semconv changeswitch to renovate-semconv; do not bump the semconv package to make it compile

Hard invariants / guardrails

  • Move the whole group or none of it. Never merge a partial lockstep bump.
  • Never bump the semconv package as a side effect of a core bump — defer to renovate-semconv / docs/semantic-conventions.md.
  • Never hand-edit generated files; regenerate with make generate and commit the result.
  • Adding/removing a component is a config/manifest.yaml + make crosslink change — there is no other registry.
  • The full gate for this class is the complete OCB build: make generate diff-check, make lint-all, make test-all, make build. A green module-local check is not sufficient here.

Signals

GitHub stars
47
Forks
9
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
renovate-otel-core
Source
github.com/liatrio/liatrio-otel-collector