Skip to content

Comments

Align MCP observability pipeline: treat rpc-messages.jsonl as canonical telemetry fallback#17950

Merged
pelikhan merged 3 commits intomainfrom
copilot/restore-gateway-jsonl-artifact
Feb 23, 2026
Merged

Align MCP observability pipeline: treat rpc-messages.jsonl as canonical telemetry fallback#17950
pelikhan merged 3 commits intomainfrom
copilot/restore-gateway-jsonl-artifact

Conversation

Copy link
Contributor

Copilot AI commented Feb 23, 2026

The daily observability report was flagging all Copilot-engine MCP runs as 🔴 Critical because it only checked for gateway.jsonl, which the current gateway Docker image doesn't emit. The Copilot CLI writes mcp-logs/rpc-messages.jsonl instead — a raw JSON-RPC message log that carries equivalent signal.

Go telemetry pipeline (pkg/cli/gateway_logs.go)

  • parseRPCMessages() — parses rpc-messages.jsonl (direction/type/server_id/payload) into GatewayMetrics; pairs OUT REQUEST + IN RESPONSE by id to compute per-call durations and error counts
  • findRPCMessagesPath() — resolves the file from mcp-logs/ (preferred) or root
  • buildToolCallsFromRPCMessages() — produces []MCPToolCall records including duration and error status
  • parseGatewayLogs() / extractMCPToolUsageData() — now fall back to rpc-messages.jsonl when gateway.jsonl is absent; existing behavior for gateway.jsonl is unchanged
  • Extracted maxScannerBufferSize = 1024*1024 constant (was duplicated)

Fallback lookup order:

gateway.jsonl (root) → mcp-logs/gateway.jsonl → mcp-logs/rpc-messages.jsonl → rpc-messages.jsonl (root)

Observability report (.github/workflows/daily-observability-report.md)

  • Phase 3 now documents both sources; a run with either file present is ✅ Healthy
  • Coverage metric updated to count_runs_with_gateway_jsonl_or_rpc_messages()
  • Criteria table: 🔴 Critical only when neither file is found in an MCP-enabled run

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw GOMOD GOMODCACHE go env ck 'scripts/**/*GOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw GOMOD GOMODCACHE go m/_n�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw GOMOD GOMODCACHE erignore m/_n�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha -json GO111MODULE 9868752/b370/vet.cfg GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE /tmp/go-build2389868752/b001/gh-aw.test GOINSECURE GOMOD GOMODCACHE /tmp/go-build2389868752/b001/gh-aw.test (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha --show-toplevel go /usr/bin/git op.prop.prop.progit GO111MODULE 64/bin/go git rev-�� --git-dir go /tmp/go-build613465454/b382/constants.test json' --ignore-pgit GO111MODULE tartedAt,updated--show-toplevel /tmp/go-build613465454/b382/constants.test (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/11bd71901bbe5b1630ceea73d27597364c9af683
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/11bd71901bbe5b1630ceea73d27597364c9af683 --jq .object.sha L3AM/HWMFEp2dF5hGOSUMDB GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 5470674/b399/impconfig /hom�� k/gh-aw/gh-aw/pkremote.origin.url k/gh-aw/gh-aw/pkg/parser/import_GOMOD 64/bin/go **/*.json --ignore-path ../../../.pretti/home/REDACTED/work/gh-aw/gh-aw/.github/workflows /opt/hostedtoolcconfig (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE sh -c 1959-40111/test-531950577/.github/workflows GOPROXY .cfg GOSUMDB GOWORK 64/bin/go sh (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha archie.md sh 64/pkg/tool/linux_amd64/link "prettier" --wri/opt/hostedtoolcache/node/24.13.0/x64/bin/node infocmp 64/bin/go 64/pkg/tool/linux_amd64/link /tmp�� es.test sh rtcfg.link npx prettier --wgit git 64/bin/go bIq02PEKNccXYum81A/liMzR8Ds-CnfJtest@example.com (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha s "-s -w -X main.version=d83bbb4-p GO111MODULE /opt/hostedtoolcache/go/1.25.0/x-lang=go1.25 GOINSECURE GOMOD GOMODCACHE go env runs/20260223-171959-40111/test-go1.25.0 GO111MODULE /opt/hostedtoolcache/go/1.25.0/x-nolocalimports l GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env runs/20260223-171959-40111/test-2804895828/.github/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha --oneline -1 /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet -json GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet -uns�� -unreachable=false /tmp/go-build2389868752/b108/vet.cfg /usr/bin/git -json GO111MODULE ache/go/1.25.0/x--show-toplevel git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go k/gh�� -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD erignore go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha blob d83bbb412a42b13754f7fe183a8a6beae7cb7dd4:go.mod /usr/bin/git GOSUMDB GOWORK 64/bin/go git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --git-dir go /usr/bin/git -json GO111MODULE bin/sh git rev-�� --show-toplevel go /usr/bin/git */*.ts' '**/*.jsgit GO111MODULE 64/pkg/tool/linu--show-toplevel /usr/bin/git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha 6PWx/ip_6HObgU38GOSUMDB GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 5470674/b402/imprev-parse -c che/go-build/da/dad15df454799415GOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolc-f (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v7
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v7 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE erignore env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v7 --jq .object.sha k/gh-aw/gh-aw/pkremote.origin.url k/gh-aw/gh-aw/pkg/repoutil/repouGOMOD 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.0/xGO111MODULE -o /tmp/go-build2905470674/b394/_pkGOINSECURE -trimpath 64/bin/go -p github.com/githu-C -lang=go1.25 go (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ode_modules/.binGOMODCACHE GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha go1.25.0 -c=4 -nolocalimports -importcfg /tmp/go-build2389868752/b390/importcfg -pack u69dtnPwupbS env go GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env on' --ignore-patGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/4dc6199c7b1a012772edbd06daecab0f50c9053c
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/4dc6199c7b1a012772edbd06daecab0f50c9053c --jq .object.sha che/go-build/2b/2b49db1fce8a6e2bGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcconfig -o /tmp/go-build290remote.origin.url -trimpath r: $owner, name: $name) { hasDiscussionsEnabled } } -p main -lang=go1.25 go (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha g_.a GO111MODULE 0/x64/bin/node GOINSECURE GOMOD GOMODCACHE go t-ha�� SameOutput1364541325/001/stability-test.md GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha ithub/workflows/ai-moderator.md test@example.com /usr/bin/git re GO111MODULE 64/bin/go git rev-�� --show-toplevel go /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v5 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE node (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD ode-gyp-bin/node-json go env ck 'scripts/**/*GOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha bf0813d7488cf446GOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE ache/go/1.25.0/xGO111MODULE env 5470674/b391/_pkGOINSECURE GO111MODULE 64/bin/go GOINSECURE b/gh-aw/pkg/file--norc GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v6 --jq .object.sha edcfg GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE ache/go/1.25.0/xGO111MODULE env 5470674/b372/_pkGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha bot-detection.md GO111MODULE /opt/hostedtoolcache/go/1.25.0/x-buildmode=exe GOINSECURE GOMOD GOMODCACHE go env runs/20260223-171959-40111/test-2188467358/.github/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go l GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha 16 go ache/node/24.13.0/x64/bin/node -json GO111MODULE 64/bin/go git t-33�� 2225-53613/test-2315585260 go /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE go env ck 'scripts/**/*GOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha g/envutil/envutiGOINSECURE g/envutil/envutiGOMOD 64/bin/go GOINSECURE GOMOD GOMODCACHE ache/go/1.25.0/xGO111MODULE env 5470674/b384/_pkGOINSECURE GO111MODULE 64/bin/go GOINSECURE bracelet/x/exp/g--norc GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v6 --jq .object.sha "prettier" --cheremote.origin.url bash 64/bin/go --noprofile -tests 64/bin/go go env -json GO111MODULE r: $owner, name:-f GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/anchore/sbom-action/git/ref/tags/v0
    • Triggering command: /usr/bin/gh gh api /repos/anchore/sbom-action/git/ref/tags/v0 --jq .object.sha che/go-build/c6/GOSUMDB GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.0/xGO111MODULE -o /tmp/go-build2905470674/b383/_pkGOINSECURE -trimpath r: $owner, name: $name) { hasDiscussionsEnabled } } -p github.com/ayman-C -lang=go1.23 go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/anchore/sbom-action/git/ref/tags/v0 --jq .object.sha k/gh-aw/gh-aw/pkg/fileutil/fileuGOINSECURE k/gh-aw/gh-aw/pkg/fileutil/tar.gGOMOD 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcconfig -o /tmp/go-build290remote.origin.url -trimpath 64/bin/go -p github.com/githu-C -lang=go1.25 go (http block)
  • https://api.github.com/repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b
    • Triggering command: /usr/bin/gh gh api /repos/astral-sh/setup-uv/git/ref/tags/eac588ad8def6316056a12d4907a9d4d84ff7a3b --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE sh (http block)
  • https://api.github.com/repos/docker/build-push-action/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha k/gh-aw/gh-aw/inGOSUMDB GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcconfig -o /tmp/go-build290remote.origin.url -trimpath 64/bin/go -p github.com/githuapi -lang=go1.25 go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/build-push-action/git/ref/tags/v6 --jq .object.sha che/go-build/80/80bf13b2620176ebGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.0/xGO111MODULE -o /tmp/go-build2905470674/b393/_pkGOINSECURE -trimpath r: $owner, name: $name) { hasDiscussionsEnabled } } -p github.com/githuapi -lang=go1.25 go (http block)
  • https://api.github.com/repos/docker/login-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq .object.sha che/go-build/12/remote.origin.url GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcconfig -o /tmp/go-build290remote.origin.url -trimpath 64/bin/go -p github.com/githuapi -lang=go1.25 go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/login-action/git/ref/tags/v3 --jq .object.sha k/gh-aw/gh-aw/pkremote.origin.url k/gh-aw/gh-aw/pkg/mathutil/mathuGOMOD 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcconfig -o /tmp/go-build290remote.origin.url -trimpath 64/bin/go -p main -lang=go1.25 go (http block)
  • https://api.github.com/repos/docker/metadata-action/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/docker/metadata-action/git/ref/tags/v5 --jq .object.sha pkg/mod/github.com/charmbraceletGOINSECURE GOPROXY 64/bin/go GOSUMDB Jl2iun2/8EB7jJw8-1 64/bin/go /opt/hostedtoolcache/go/1.25.0/xGO111MODULE -o /tmp/go-build2905470674/b390/_pkGOINSECURE -trimpath r: $owner, name: $name) { hasDiscussionsEnabled } } -p main -lang=go1.25 go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/metadata-action/git/ref/tags/v5 --jq .object.sha che/go-build/28/2888c116b4dd41c7GOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcconfig -o /tmp/go-build290remote.origin.url -trimpath r: $owner, name: $name) { hasDiscussionsEnabled } } -p github.com/githuapi -lang=go1.25 go (http block)
  • https://api.github.com/repos/docker/setup-buildx-action/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v3 --jq .object.sha k/gh-aw/gh-aw/inGOSUMDB GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.0/xGO111MODULE -V=f�� p/bin/git node r: $owner, name: $name) { hasDiscussionsEnabled } } prettier --write 64/bin/go go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/docker/setup-buildx-action/git/ref/tags/v3 --jq .object.sha k/gh-aw/gh-aw/pkremote.origin.url k/gh-aw/gh-aw/pkg/sliceutil/slicGOMOD 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.0/xGO111MODULE -o /tmp/go-build2905470674/b405/_pkGOINSECURE -trimpath 64/bin/go -p github.com/githuimage -lang=go1.25 go (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 --check ache/node/24.13.0/x64/bin/node **/*.ts **/*.json --ignore-path node t-28�� k/gh-aw/gh-aw/.github/workflows/auto-triage-issues.md scripts/**/*.js 64/pkg/tool/linux_amd64/compile .prettierignore git 64/bin/go 64/pkg/tool/linux_amd64/compile (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GOPROXY /home/REDACTED/.cargo/bin/sh GOSUMDB GOWORK 64/bin/go sh -c "prettier" --check 'scripts/**/*.js' --ignore-pa-errorsas bash /usr/bin/git tierignore git 64/bin/go git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env tmatter-with-nes-errorsas GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE x_amd64/cgo GOINSECURE GOMOD GOMODCACHE x_amd64/cgo env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GOPROXY /home/REDACTED/.config/composer/vendor/bin/sh GOSUMDB GOWORK 64/bin/go sh -c "prettier" --check 'scripts/**/*.js' --ignore-pa-p bash /usr/bin/git tierignore git 64/bin/go git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE x_amd64/asm GOINSECURE GOMOD GOMODCACHE x_amd64/asm env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 --check /bin/sh **/*.ts **/*.json --ignore-path /bin/sh -c echo "��� JavaScript formatting validated" /bin/sh 64/pkg/tool/linux_amd64/link tierignore git 64/bin/go 64/pkg/tool/linux_amd64/link (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 --check /bin/sh **/*.ts **/*.json --ignore-path /bin/sh -c GOPATH=$(go env GOPATH); \ if command -v golangci-lint >/dev/nul.github/workflows/test.md npm /usr/bin/git tierignore node 64/bin/go git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 GO111MODULE x_amd64/cgo GOINSECURE GOMOD GOMODCACHE x_amd64/cgo env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 --check /opt/hostedtoolcache/go/1.25.0/x64/bin/go **/*.ts **/*.json --ignore-path go env GOPATH (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env hub/workflows GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 --check /home/REDACTED/go/bin/golangci-lint **/*.ts **/*.json --ignore-path golangci-lint run /usr/bin/git node ache/node/24.13.0/x64/bin/node tierignore format:cjs 64/bin/go ache/node/24.13.0/x64/bin/node (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 GOMOD GOMODCACHE go env th .prettierignoGOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 GOMOD GOMODCACHE x_amd64/vet env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/a70c5eada06553e3510ac27f2c3bda9d3705bccb
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/a70c5eada06553e3510ac27f2c3bda9d3705bccb --jq .object.sha ript formatting GOINSECURE GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE node (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go ache�� 356867796/.github/workflows GO111MODULE 64/bin/go GOINSECURE GOMOD ode-gyp-bin/node/home/REDACTED/work/gh-aw/gh-aw/.github/workflows/artifacts-summary.md go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha 4223435338 GO111MODULE 0/x64/bin/node GOINSECURE GOMOD GOMODCACHE go t-ha�� tmatter-with-env-template-expressions.md GO111MODULE 0/x64/bin/node GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/githubnext/agentics/git/ref/tags/
    • Triggering command: /usr/bin/gh gh api /repos/githubnext/agentics/git/ref/tags/# --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE node (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go ache�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha 2145-52001/test-413482288/.github/workflows GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go env heck '**/*.cjs' '**/*.ts' '**/*.json' --ignore-path ../../../.pr**/*.json GO111MODULE 0/x64/bin/node GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion --ignore-path .prettierignore 64/bin/go git init�� runs/20260223-172145-52001/test-.github/workflows/test.md sh ngutil.test s/test.md infocmp 64/bin/go ngutil.test (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go --show-toplevel go /usr/bin/git node /opt�� prettier --write de !../../../pkg/wonode --ignore-path ../../../.prettiprettier go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go view 12345 /usr/bin/git node /opt�� prettier --write 64/bin/go !../../../pkg/wonode --ignore-path ../../../.prettiprettier go (http block)
  • https://api.github.com/repos/owner/repo/contents/file.md
    • Triggering command: /tmp/go-build2389868752/b381/cli.test /tmp/go-build2389868752/b381/cli.test -test.testlogfile=/tmp/go-build2389868752/b381/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE odules/npm/node_GOMODCACHE GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /tmp/go-build3911717849/b381/cli.test /tmp/go-build3911717849/b381/cli.test -test.testlogfile=/tmp/go-build3911717849/b381/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true **/*.ts **/*.json --ignore-path node /opt�� run format:pkg-json 64/bin/go tierignore go /usr/bin/git go (http block)
    • Triggering command: /tmp/go-build613465454/b001/cli.test /tmp/go-build613465454/b001/cli.test -test.testlogfile=/tmp/go-build613465454/b001/testlog.txt -test.paniconexit0 -test.timeout=10m0s ules�� -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ache/go/1.25.0/x64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name GOSUMDB GOWORK 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE ode_modules/.binGOMODCACHE GOINSECURE GOMOD GOMODCACHE go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name "prettier" --wriGOINSECURE /usr/bin/git 64/bin/go -v 64/pkg/tool/linuenv 0/x64/bin/node sh -c npx prettier --wGOINSECURE git 64/bin/go --show-toplevel x_amd64/compile /usr/bin/git go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go env -json GO111MODULE tions/setup/js/node_modules/.bin/sh GOINSECURE GOMOD GOMODCACHE go (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>[deep-report] Restore MCP gateway.jsonl telemetry or align observability pipeline</issue_title>
<issue_description>### Description
The Daily Observability Report found that all MCP-enabled runs are missing the gateway.jsonl artifact, leaving a blind spot in MCP telemetry. Either the MCP gateway needs to emit and upload gateway.jsonl, or the report pipeline should be updated to treat mcp-logs/rpc-messages.jsonl as the canonical source. This issue should identify the intended artifact and make the pipeline consistent.

Expected Impact

Restores MCP telemetry coverage so observability reports can compute standardized metrics and detect regressions.

Suggested Agent

agentic-workflows

Estimated Effort

Medium (1-4 hours)

Data Source

DeepReport Intelligence Briefing run §22312443726 (observability coverage report 2026-02-22).

Generated by DeepReport - Intelligence Gathering Agent

  • expires on Feb 25, 2026, 3:32 PM UTC

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@github-actions
Copy link
Contributor

Hey @pelikhan and team 👋

This PR is following the correct agentic workflow process — it was created by Copilot Agent from issue #17930 after maintainer assignment. However, it's currently in an incomplete state:

Current Status:

  • ✅ Created through the documented agentic workflow (issue → assignment → agent PR)
  • ✅ Has a clear implementation plan in the description with checkboxes
  • ✅ References the originating issue ([deep-report] Restore MCP gateway.jsonl telemetry or align observability pipeline #17930)
  • ⚠️ Marked as [WIP] with draft status
  • ⚠️ Contains only a placeholder "Initial plan" commit with no code changes
  • ⚠️ No files modified yet (0 lines changed)

What's Needed:

The agent needs to execute the implementation plan outlined in the PR description:

  1. Add rpc-messages.jsonl parsing support to pkg/cli/gateway_logs.go
  2. Update observability report to treat mcp-logs/rpc-messages.jsonl as canonical fallback
  3. Recompile workflow lock files
  4. Run tests and lint (make agent-finish)

Since this is an agent-managed PR, the Copilot Agent should continue working through the checklist. If the agent has stalled, you may need to:

  • Check if the agent encountered an error or blocker
  • Provide additional guidance in comments
  • Reassign the issue/PR to restart the agent's work

Generated by Contribution Check

…20240)

- Add parseRPCMessages() to extract metrics from rpc-messages.jsonl
- Update parseGatewayLogs() to fall back to rpc-messages.jsonl when gateway.jsonl is absent
- Update extractMCPToolUsageData() with the same fallback logic
- Add findRPCMessagesPath() and buildToolCallsFromRPCMessages() helpers
- Update daily-observability-report.md to treat rpc-messages.jsonl as canonical fallback
- Add tests for all new functions and fallback behavior

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Restore MCP gateway.jsonl telemetry or align observability pipeline Align MCP observability pipeline: treat rpc-messages.jsonl as canonical telemetry fallback Feb 23, 2026
@pelikhan pelikhan marked this pull request as ready for review February 23, 2026 18:11
Copilot AI review requested due to automatic review settings February 23, 2026 18:11
@pelikhan pelikhan merged commit aa6ae35 into main Feb 23, 2026
@pelikhan pelikhan deleted the copilot/restore-gateway-jsonl-artifact branch February 23, 2026 18:15
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses a critical observability gap where all MCP-enabled runs were being flagged as 🔴 Critical because the daily observability report only checked for gateway.jsonl, which the current Copilot CLI Docker image doesn't emit. The implementation treats mcp-logs/rpc-messages.jsonl (a raw JSON-RPC message log) as the canonical fallback telemetry source.

Changes:

  • Added RPC message parsing infrastructure to extract metrics from rpc-messages.jsonl when gateway.jsonl is absent
  • Implemented fallback logic in parseGatewayLogs() and extractMCPToolUsageData() with lookup order: root gateway.jsonl → mcp-logs/gateway.jsonl → mcp-logs/rpc-messages.jsonl → root rpc-messages.jsonl
  • Updated observability report documentation to reflect that either log file satisfies MCP telemetry requirements

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
pkg/cli/gateway_logs.go Added parseRPCMessages(), findRPCMessagesPath(), and buildToolCallsFromRPCMessages() functions; implemented fallback logic in existing functions; extracted maxScannerBufferSize constant
pkg/cli/gateway_logs_test.go Added comprehensive tests for RPC message parsing, fallback behavior, and tool call extraction
.github/workflows/daily-observability-report.md Updated documentation to treat both gateway.jsonl and rpc-messages.jsonl as equivalent telemetry sources; updated criteria to only flag Critical when both are absent

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

// Fall back to rpc-messages.jsonl
rpcPath := findRPCMessagesPath(logDir)
if rpcPath == "" {
return nil, errors.New("gateway.jsonl not found")
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error message is misleading and inconsistent with the fallback logic. At this point, neither gateway.jsonl nor rpc-messages.jsonl exist, but the error only mentions gateway.jsonl. Consider updating the message to: errors.New("gateway.jsonl or rpc-messages.jsonl not found") to accurately reflect that either file would be acceptable and align with the PR's goal of treating rpc-messages.jsonl as an equivalent canonical fallback.

Suggested change
return nil, errors.New("gateway.jsonl not found")
return nil, errors.New("gateway.jsonl or rpc-messages.jsonl not found")

Copilot uses AI. Check for mistakes.
Comment on lines +232 to +237
// Track errors
if resp.Error != nil {
metrics.TotalErrors++
server := getOrCreateServer(metrics, entry.ServerID)
server.ErrorCount++
}
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error tracking may count errors from non-tool-call methods. This block counts errors for ALL incoming responses with an error field, including responses to methods like tools/list that are not tracked as requests (line 194-196 only counts tools/call). This creates an inconsistency where TotalErrors and server.ErrorCount can exceed TotalRequests and server.RequestCount. Consider only tracking errors for responses that match a pending tool call by moving this logic inside the if pending, ok := pendingRequests[key] block at line 242. This would ensure errors are only counted for tracked tool calls, maintaining consistency between request and error metrics.

Copilot uses AI. Check for mistakes.

// Skip entries without tool information
if entry.ServerName == "" || toolName == "" {
scanner := bufio.NewScanner(file)
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Scanner buffer is not configured when reading gateway.jsonl for tool call records, but is configured for rpc-messages.jsonl (via buildToolCallsFromRPCMessages at line 627-628). While less critical than for RPC messages which may have large payloads, consider setting the scanner buffer here as well for consistency: scanner.Buffer(make([]byte, maxScannerBufferSize), maxScannerBufferSize) after line 788. This would prevent potential scanner buffer overflow errors if gateway.jsonl contains unusually large entries.

Suggested change
scanner := bufio.NewScanner(file)
scanner := bufio.NewScanner(file)
scanner.Buffer(make([]byte, maxScannerBufferSize), maxScannerBufferSize)

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[deep-report] Restore MCP gateway.jsonl telemetry or align observability pipeline

2 participants