Bootstrap tracing in code for sanctions, replacing the zero-code wrapper

common/telemetry.py builds the Resource, TracerProvider, BatchSpanProcessor
and OTLP/HTTP exporter by hand; sanctions calls setup_telemetry() at
import instead of running under opentelemetry-instrument. No instrumentor
is enabled yet, so sanctions emits no spans for now.

service.version comes from OTEL_RESOURCE_ATTRIBUTES: deploy.sh exports
DEPLOY_HASH (the server's HEAD after the pull) and compose falls back to
"dev". deployment.environment.name=prod is dropped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Movses Aslanyan
2026-10-12 23:11:26 +03:30
co-authored by Claude Opus 5.5
parent 574d7f4038
commit 4baae96e6e
4 changed files with 26 additions and 4 deletions
+7 -1
View File
@@ -18,4 +18,10 @@ if [ -n "$(git log '@{u}..HEAD' --oneline 2>/dev/null)" ]; then
echo "warning: local commits are not pushed; the server will not see them" >&2
fi
ssh "$DEPLOY_HOST" "cd '$DEPLOY_DIR' && git pull --ff-only && $COMPOSE up -d --build && $COMPOSE ps"
# DEPLOY_HASH is the server's HEAD *after* the pull -- the code actually
# running -- and becomes service.version on every span (docker-compose.yml).
# Escaped so it is evaluated on the server, not here.
ssh "$DEPLOY_HOST" "cd '$DEPLOY_DIR' && git pull --ff-only \
&& export DEPLOY_HASH=\$(git rev-parse --short HEAD) \
&& echo \"deploying \$DEPLOY_HASH\" \
&& $COMPOSE up -d --build && $COMPOSE ps"