Repository navigation
feat: export a span for every dev command - #42
Merged
StevenTCramer merged 5 commits intoNov 8, 2026
Merged
Conversation
Fleet walks need to see which dev commands are slow. UseTelemetry opts this CLI in at compile time, and TRACEPARENT is restored so those spans nest under the caller. Export stays off unless an OTLP endpoint is set. XML docs are off for this runfile because AOT publish otherwise fails looking for dev.xml.
StevenTCramer
deleted the
task/029-enable-dev-cli-telemetry-with-usetelemetry
branch
November 8, 2026 18:58
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
tools/dev-cli/dev.cscallsUseTelemetrywith the literal service nametimewarp-source-generators-dev.IncomingTraceContext.Restore()wrapsRunAsync. The file matches timewarp-nurutools/dev-cli/endpoints/incoming-trace-context.cs. A search of*.csfound noActivitySource, so none is registered.tools/dev-cli/telemetry.mdnamesOTEL_EXPORTER_OTLP_ENDPOINT,OTEL_SERVICE_NAME,TRACEPARENT,TRACESTATE, andOTEL_EXPORTER_OTLP_PROTOCOL. This repo'sworkflowcommand does not emit stage spans, so the doc does not copy the timewarp-nuru stage table.self-installfailed once with MSB3030 because repo-wideGenerateDocumentationFilemade the AOT publish look forbin/release/dev.xml.tools/dev-cli/Directory.Build.propsnow setsGenerateDocumentationFileto false, matching timewarp-terminal. The retry installedbin/dev(ELF x86-64)../bin/dev --capabilitiesexited 0 and listedbuild,test,verify-samples,workflow,check-version,clean,release, andself-install../bin/dev buildexited 0 (Release, 0 warnings, 0 errors)../bin/dev --helpwith the endpoint unset sent nothing to the collector.A local OTLP HTTP listener on
127.0.0.1:14318received exports from that AOT binary withOTEL_EXPORTER_OTLP_ENDPOINTandOTEL_EXPORTER_OTLP_PROTOCOL=http/protobufset. Thecheck-versionspan (DevCli route) and thebuildspan both used servicetimewarp-source-generators-devand sourceTimeWarp.Nuru.Behavior, and each had anuru.behavior.commands.durationmetric. Both trace payloads contained trace id02902902902902902902902902902902and parent span idb029b029b029b029fromTRACEPARENT.check-versionexited 1 because version 1.0.0-beta.11 is already published; the span still arrived.ganda repo auditreported one advisory (vscode-window-icon).ganda repo audit --fixwrote a gitignored.vscode/settings.jsonwindow title and re-ran self-install. The follow-up audit passed 37 checks, failed 0, skipped 3.Test plan
Smoke: from the repo root, point
OTEL_EXPORTER_OTLP_ENDPOINTat an HTTP protobuf collector (for examplehttp://127.0.0.1:14318), setOTEL_EXPORTER_OTLP_PROTOCOL=http/protobufandTRACEPARENT=00-02902902902902902902902902902902-b029b029b029b029-01, then run./bin/dev build.Expect: the command exits 0 and prints
Build completed successfully!with 0 warnings. The collector receives a/v1/tracespayload whose service name istimewarp-source-generators-dev, whose span name isbuild, whose activity source isTimeWarp.Nuru.Behavior, and whose bytes include that trace id and parent span id. Anuru.behavior.commands.durationmetric forbuildarrives on/v1/metrics. WithOTEL_EXPORTER_OTLP_ENDPOINTunset, the same command exports nothing.Kanban task 029
Session: 01a1bc72-7aef-7672-80f6-714e4eb5efc4