Dependency review: OpenTelemetry Go
- Decision: approved for the independently versioned
github.com/spice-framework/starter-otelmodule. - Version:
go.opentelemetry.io/oteland SDK v1.44.0. - Upstream: https://github.com/open-telemetry/opentelemetry-go.
- License: Apache-2.0; retained in vendored module license files.
- Maintenance: vendor-neutral CNCF/OpenTelemetry project with signed immutable releases and an explicit supported-Go policy.
- Compatibility: v1.44.0 explicitly supports Go 1.26. Traces and metrics are stable; the beta logs API is deliberately not adopted.
- Security: exporter packages are not included by this starter. Applications
choose and configure transport/export separately.
govulncheckandgosecremain mandatory for the reachable repository graph. - Cancellation: all span and measurement operations use the request context. Provider shutdown and exporter deadlines remain application-owned.
- Observability: the adapter emits server spans and four bounded metrics using generated route templates, stable symbol IDs, module paths, method, and status. It never labels telemetry with raw paths, queries, headers, or body values.
- Configuration: providers are explicit constructor inputs; the starter does not read environment variables, install globals, contact a collector, or select an exporter.
- Activation: the committed manifest must be explicitly selected and
@otel.Enablemust occur on the application marker. The compiler validates the exact HTTP-observer output and reachable mux capability before generated code directly composes the constructor result. - Transitive scope: OpenTelemetry API/SDK support libraries plus their small logging, UUID, and platform support graph only. No collector, network exporter, protobuf, gRPC, or Prometheus dependency is accepted by this slice.
Primary references:
- https://github.com/open-telemetry/opentelemetry-go/releases
- https://opentelemetry.io/docs/languages/go/
Build-only dependencies: central release tools
- Decision: approved only as repository-authorized release tooling.
- Renderer:
github.com/spice-framework/development/cmd/spice-devfromgithub.com/spice-framework/developmentv0.0.0-20260806132124-4c308d1b9fda. - Independent verifier:
github.com/spice-framework/toolchain/cmd/spice-library-release-verifyfromgithub.com/spice-framework/toolchainv0.0.0-20260806133530-71211498297c. - Tool registration: both commands use standard Go
tooldirectives and all invocations use their full package paths. - License: Apache-2.0, with its notice retained in
vendor. - Runtime scope: none. Product packages import neither tool module, and released applications acquire no runtime dependency on them.
- Dependency graph: both tools participate in normal Go minimal-version
selection. That build-time coupling is accepted and visible in
go.mod,go.sum, andvendor/modules.txt; no parallel tool registry is introduced. - Integrity and network behavior: both exact pseudo-versions are pinned and
checksummed. Release rehearsal runs with
GOWORK=off,GOPROXY=off,GOTOOLCHAIN=local, andGOFLAGS=-mod=vendor, so it cannot select an ambient checkout, upgrade itself, or download dependencies. - Security: the trusted native renderer reads the exact committed Git graph and writes only to caller-supplied temporary output directories. The verifier independently checks release artifacts without signing them. The rehearsal emits no signatures or signing material.
- Maintenance: the protected central workflow is the sole production builder. The former repository-local builder was removed after the protected, independently verified preview cutover proved the central path.