diff --git a/actions/setup/js/generate_observability_summary.cjs b/actions/setup/js/generate_observability_summary.cjs index e28cd13d65c..b9ab440f927 100644 --- a/actions/setup/js/generate_observability_summary.cjs +++ b/actions/setup/js/generate_observability_summary.cjs @@ -60,7 +60,7 @@ function collectObservabilityData() { const agentOutput = readJSONIfExists(AGENT_OUTPUT_PATH) || { items: [], errors: [] }; const items = Array.isArray(agentOutput.items) ? agentOutput.items : []; const errors = Array.isArray(agentOutput.errors) ? agentOutput.errors : []; - const traceId = awInfo.context && typeof awInfo.context.workflow_call_id === "string" ? awInfo.context.workflow_call_id : ""; + const traceId = awInfo.context ? awInfo.context.otel_trace_id || awInfo.context.workflow_call_id || "" : ""; return { workflowName: awInfo.workflow_name || "", diff --git a/actions/setup/js/generate_observability_summary.test.cjs b/actions/setup/js/generate_observability_summary.test.cjs index b3029b78758..51217610506 100644 --- a/actions/setup/js/generate_observability_summary.test.cjs +++ b/actions/setup/js/generate_observability_summary.test.cjs @@ -38,7 +38,7 @@ describe("generate_observability_summary.cjs", () => { engine_id: "copilot", staged: false, firewall_enabled: true, - context: { workflow_call_id: "trace-123" }, + context: { workflow_call_id: "12345678901-1", otel_trace_id: "a3f2c8d1e4b7091f6a5c2e3d8f401b72" }, }) ); fs.writeFileSync( @@ -57,7 +57,8 @@ describe("generate_observability_summary.cjs", () => { expect(summary).toContain("Observability"); expect(summary).toContain("- **workflow**: triage-workflow"); expect(summary).toContain("- **engine**: copilot"); - expect(summary).toContain("- **trace id**: trace-123"); + expect(summary).toContain("- **trace id**: a3f2c8d1e4b7091f6a5c2e3d8f401b72"); + expect(summary).not.toContain("12345678901-1"); expect(summary).toContain("- **posture**: write-capable"); expect(summary).toContain("- **created items**: 2"); expect(summary).toContain("- **blocked requests**: 1"); @@ -67,6 +68,25 @@ describe("generate_observability_summary.cjs", () => { expect(mockCore.summary.write).toHaveBeenCalledTimes(1); }); + it("falls back to workflow_call_id when otel_trace_id is absent", async () => { + fs.writeFileSync( + "/tmp/gh-aw/aw_info.json", + JSON.stringify({ + workflow_name: "triage-workflow", + engine_id: "copilot", + staged: false, + firewall_enabled: false, + context: { workflow_call_id: "12345678901-1" }, + }) + ); + + await module.main(mockCore); + + expect(mockCore.summary.addRaw).toHaveBeenCalledTimes(1); + const summary = mockCore.summary.addRaw.mock.calls[0][0]; + expect(summary).toContain("- **trace id**: 12345678901-1"); + }); + it("skips summary generation when opt-in mode is disabled", async () => { process.env.GH_AW_OBSERVABILITY_JOB_SUMMARY = "off";