Docs still promise the copilot-otel.jsonl artifact that was removed in #32280
Analysis
PR #30530 (commit 6bd6baad, 2026-05-06) introduced a Copilot CLI OTEL file-export pipeline: the compiler injected COPILOT_OTEL_FILE_EXPORTER_PATH=/tmp/gh-aw/copilot-otel.jsonl, export_copilot_otel_traces.cjs forwarded those spans to configured OTLP endpoints, and the file was included in the unified agent artifact.
During review of PR #32280 (commit fc420392, 2026-05-15), this entire pipeline was removed at maintainer request (comment and the follow-up comment at 04:59 UTC). The removal deleted:
COPILOT_OTEL_FILE_EXPORTER_PATH injection in pkg/workflow/observability_otlp.go
- the artifact path in
collectArtifactPaths (pkg/workflow/compiler_yaml_main_job.go)
- the
CopilotOtelJsonlFilename constant (pkg/constants/job_constants.go)
actions/setup/js/export_copilot_otel_traces.cjs (+ test) and its call in generate_observability_summary.cjs
However, neither the #32280 changeset, its ADR (docs/adr/32280-pass-otel-headers-as-container-env-var.md), nor the documentation was updated. The docs still tell users to expect copilot-otel.jsonl in the agent artifact, which no code produces. Users configuring observability.otlp today get otel.jsonl only and (correctly per current design, per ADR-34450) must query Copilot CLI spans directly from their OTLP backend via the injected OTEL_RESOURCE_ATTRIBUTES correlation keys (github.run_id, gh-aw.run.id, etc.).
Stale references (verified 2026-08-13)
| File |
Reference |
docs/src/content/docs/guides/open-telemetry.mdx |
Lines ~126–127, ~231, ~241: lists copilot-otel.jsonl as an artifact file, describes it being "written ... and forwarded to configured endpoints", and shows a cat copilot-otel.jsonl | jq example |
docs/src/content/docs/reference/artifacts.md |
Line ~151: copilot-otel.jsonl — OTLP spans emitted by Copilot CLI when observability.otlp is configured |
docs/src/content/docs/reference/open-telemetry.mdx |
Lines ~261–262: <code>copilot-otel.jsonl</code> for spans emitted by Copilot CLI |
.github/skills/otel-queries/SKILL.md |
Line ~39: /tmp/gh-aw/copilot-otel.jsonl for Copilot CLI spans listed as a local mirror to check |
specs/otel-observability-spec.md |
Line ~756: artifact "SHOULD contain ... runtime-specific companion files such as copilot-otel.jsonl when present" (conditional, but misleading since nothing produces the file) |
scratchpad/layout.md |
Lines ~197, ~652: /tmp/gh-aw/copilot-otel.jsonl in the filesystem layout tables |
.github/workflows/smoke-otel-backends.md |
Line ~117: echoes COPILOT_OTEL_FILE_EXPORTER_PATH, an env var no code sets anymore |
Implementation Plan
Please implement the following documentation-only changes (no Go/JS behavior change):
-
docs/src/content/docs/guides/open-telemetry.mdx
- Remove
copilot-otel.jsonl from the artifact file list.
- Replace the paragraph describing Copilot CLI spans being written to
/tmp/gh-aw/copilot-otel.jsonl and forwarded at end of run with an explanation of the current design: Copilot CLI inherits the standard OTel env vars (OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_HEADERS, OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES) and exports spans directly to the configured OTLP backend; query them in the backend filtered by the github.run_id resource attribute (see ADR-34450).
- Remove the
cat copilot-otel.jsonl | jq example; optionally replace with a backend query hint.
-
docs/src/content/docs/reference/artifacts.md
- Remove the
copilot-otel.jsonl bullet from the agent artifact contents list.
-
docs/src/content/docs/reference/open-telemetry.mdx
- Remove the
copilot-otel.jsonl line item; keep otel.jsonl (gh-aw JS helper spans).
-
.github/skills/otel-queries/SKILL.md
- Remove
/tmp/gh-aw/copilot-otel.jsonl from the local mirror checklist; point Copilot CLI span queries at the OTLP backend path already described in the skill.
-
specs/otel-observability-spec.md
-
scratchpad/layout.md
- Remove the
/tmp/gh-aw/copilot-otel.jsonl rows from both layout tables.
-
.github/workflows/smoke-otel-backends.md
- Remove the
COPILOT_OTEL_FILE_EXPORTER_PATH echo from Step 1. Run make recompile afterwards so the paired .lock.yml stays in sync.
-
Follow Guidelines
- Follow
.github/skills/documentation/SKILL.md (Diataxis / Starlight conventions).
- No changeset needed if the repo treats docs-only changes as such; otherwise add a
patch changeset describing the doc correction.
- Run
make agent-report-progress before the final push.
Out of scope / open question for the team
Whether to restore the copilot-otel.jsonl pipeline instead of documenting its absence. The removal in #32280 assumed Copilot CLI exports spans directly via the standard OTel env vars, but that assumption was not verified in the PR. If Copilot CLI does not honor OTEL_EXPORTER_OTLP_ENDPOINT, Copilot spans are currently lost entirely and the right fix is a revert of the removal rather than a docs update. Suggest the team confirms Copilot CLI direct-export behavior first; this issue covers the documentation cleanup for whichever state is confirmed.
Docs still promise the
copilot-otel.jsonlartifact that was removed in #32280Analysis
PR #30530 (commit
6bd6baad, 2026-05-06) introduced a Copilot CLI OTEL file-export pipeline: the compiler injectedCOPILOT_OTEL_FILE_EXPORTER_PATH=/tmp/gh-aw/copilot-otel.jsonl,export_copilot_otel_traces.cjsforwarded those spans to configured OTLP endpoints, and the file was included in the unifiedagentartifact.During review of PR #32280 (commit
fc420392, 2026-05-15), this entire pipeline was removed at maintainer request (comment and the follow-up comment at 04:59 UTC). The removal deleted:COPILOT_OTEL_FILE_EXPORTER_PATHinjection inpkg/workflow/observability_otlp.gocollectArtifactPaths(pkg/workflow/compiler_yaml_main_job.go)CopilotOtelJsonlFilenameconstant (pkg/constants/job_constants.go)actions/setup/js/export_copilot_otel_traces.cjs(+ test) and its call ingenerate_observability_summary.cjsHowever, neither the #32280 changeset, its ADR (
docs/adr/32280-pass-otel-headers-as-container-env-var.md), nor the documentation was updated. The docs still tell users to expectcopilot-otel.jsonlin the agent artifact, which no code produces. Users configuringobservability.otlptoday getotel.jsonlonly and (correctly per current design, per ADR-34450) must query Copilot CLI spans directly from their OTLP backend via the injectedOTEL_RESOURCE_ATTRIBUTEScorrelation keys (github.run_id,gh-aw.run.id, etc.).Stale references (verified 2026-08-13)
docs/src/content/docs/guides/open-telemetry.mdxcopilot-otel.jsonlas an artifact file, describes it being "written ... and forwarded to configured endpoints", and shows acat copilot-otel.jsonl | jqexampledocs/src/content/docs/reference/artifacts.mdcopilot-otel.jsonl — OTLP spans emitted by Copilot CLI when observability.otlp is configureddocs/src/content/docs/reference/open-telemetry.mdx<code>copilot-otel.jsonl</code> for spans emitted by Copilot CLI.github/skills/otel-queries/SKILL.md/tmp/gh-aw/copilot-otel.jsonl for Copilot CLI spanslisted as a local mirror to checkspecs/otel-observability-spec.mdscratchpad/layout.md/tmp/gh-aw/copilot-otel.jsonlin the filesystem layout tables.github/workflows/smoke-otel-backends.mdCOPILOT_OTEL_FILE_EXPORTER_PATH, an env var no code sets anymoreImplementation Plan
Please implement the following documentation-only changes (no Go/JS behavior change):
docs/src/content/docs/guides/open-telemetry.mdxcopilot-otel.jsonlfrom the artifact file list./tmp/gh-aw/copilot-otel.jsonland forwarded at end of run with an explanation of the current design: Copilot CLI inherits the standard OTel env vars (OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_EXPORTER_OTLP_HEADERS,OTEL_SERVICE_NAME,OTEL_RESOURCE_ATTRIBUTES) and exports spans directly to the configured OTLP backend; query them in the backend filtered by thegithub.run_idresource attribute (see ADR-34450).cat copilot-otel.jsonl | jqexample; optionally replace with a backend query hint.docs/src/content/docs/reference/artifacts.mdcopilot-otel.jsonlbullet from the agent artifact contents list.docs/src/content/docs/reference/open-telemetry.mdxcopilot-otel.jsonlline item; keepotel.jsonl(gh-aw JS helper spans)..github/skills/otel-queries/SKILL.md/tmp/gh-aw/copilot-otel.jsonlfrom the local mirror checklist; point Copilot CLI span queries at the OTLP backend path already described in the skill.specs/otel-observability-spec.mdcopilot-otel.jsonlexample or note explicitly that no runtime companion file is currently produced. Add a changelog entry noting the pipeline removal in Pass OTEL_EXPORTER_OTLP_HEADERS env var to mcpg container; remove headers from gateway JSON config #32280.scratchpad/layout.md/tmp/gh-aw/copilot-otel.jsonlrows from both layout tables..github/workflows/smoke-otel-backends.mdCOPILOT_OTEL_FILE_EXPORTER_PATHecho from Step 1. Runmake recompileafterwards so the paired.lock.ymlstays in sync.Follow Guidelines
.github/skills/documentation/SKILL.md(Diataxis / Starlight conventions).patchchangeset describing the doc correction.make agent-report-progressbefore the final push.Out of scope / open question for the team
Whether to restore the
copilot-otel.jsonlpipeline instead of documenting its absence. The removal in #32280 assumed Copilot CLI exports spans directly via the standard OTel env vars, but that assumption was not verified in the PR. If Copilot CLI does not honorOTEL_EXPORTER_OTLP_ENDPOINT, Copilot spans are currently lost entirely and the right fix is a revert of the removal rather than a docs update. Suggest the team confirms Copilot CLI direct-export behavior first; this issue covers the documentation cleanup for whichever state is confirmed.