Roadblock
Wiring up Python OpenTelemetry instrumentation against RocketGraph hit a dependency version constraint.
Problem
The repo pins protobuf==4.25.4 (required by the grpcio-status / firestore stack). However, OTel 1.28+ requires protobuf 5.x, which conflicts.
Resolution
- Pinned the last protobuf-4-compatible release:
opentelemetry-sdk==1.27.0 / instrumentation 0.48b0, HTTP exporter only.
- That release imports
pkg_resources, so also pinned setuptools<81 (setuptools 81 removed it).
protobuf stays at 4.25.4.
Verification
- Full instrumentor set installs clean (
pip check passes), all imports resolve.
- Direct OTLP POST to
/v1/traces confirmed: valid Bearer → HTTP 200; no auth → 401; bad key → 401. Endpoint, http/protobuf format, and auth all correct.
- FastAPI gets
OpenTelemetryMiddleware; span force_flush succeeded.
Notes
- OTLP HTTP exporter used (no gRPC), reading endpoint/headers/protocol from standard
OTEL_* env vars.
- Live API key kept in
.env.local (gitignored); for prod it should live in Secret Manager, not committed.

Roadblock
Wiring up Python OpenTelemetry instrumentation against RocketGraph hit a dependency version constraint.
Problem
The repo pins
protobuf==4.25.4(required by thegrpcio-status/ firestore stack). However, OTel 1.28+ requiresprotobuf5.x, which conflicts.Resolution
opentelemetry-sdk==1.27.0/ instrumentation0.48b0, HTTP exporter only.pkg_resources, so also pinnedsetuptools<81(setuptools 81 removed it).protobufstays at4.25.4.Verification
pip checkpasses), all imports resolve./v1/tracesconfirmed: valid Bearer → HTTP 200; no auth → 401; bad key → 401. Endpoint,http/protobufformat, and auth all correct.OpenTelemetryMiddleware; spanforce_flushsucceeded.Notes
OTEL_*env vars..env.local(gitignored); for prod it should live in Secret Manager, not committed.