Skip to content

[OTLP Validation] Run 27118543361 — WARN (in-progress, setup span compliant) #37755

@github-actions

Description

@github-actions

A. Executive Summary

Overall status: ⚠️ WARN

The validation was performed during an active run (agent phase in progress). Only the setup span has been emitted to the local JSONL mirror at this point. All observed data is fully compliant with the normative spec. No export errors were detected. Conclusion and agent spans are expected to be emitted when the run concludes.

Main risk: Full end-to-end attribute coverage (conclusion/agent spans, backend visibility) cannot be confirmed until the run finishes.

Most likely root cause of WARN: Partial data — run is in-progress, not a data quality defect.


B. Trace Completeness

Metric Value
Validation window 2026-06-08T05:49:20Z – 2026-06-08T05:50:26Z (run in progress)
Expected service.name gh-aw.otlp-data-quality-validator
Spans in JSONL mirror 1 (gh-aw.agent.setup)
Spans in backend Not verifiable (no MCP backend query tools available)
Unique trace IDs 19b2249ae54939556d5f2973ac1f92b4a
Unique span identities (traceId+spanId) 1 — no duplicates
Missing spans (expected later) gh-aw.agent.conclusion, gh-aw.agent.agent (not yet emitted)
Duplicate spans None
Trace ID consistent with GITHUB_AW_OTEL_TRACE_ID ✅ Match confirmed
Export error count 0 (no error files at /tmp/gh-aw/otlp-export-errors.jsonl or .count)

Confidence: High for setup span correctness; Low for backend visibility (unavailable).


C. Span Hierarchy Validation

Only one span is currently present in the mirror. Full hierarchy validation requires conclusion and agent spans.

Check Result Notes
Setup span has valid parentSpanId (global root) ✅ Pass parentSpanId = 9e13569dba71af6c (16-char hex)
GITHUB_AW_OTEL_PARENT_SPAN_ID = setup span ID ✅ Pass 223e01cb1bfea101 — conclusion will parent here
Conclusion parents under setup ⏳ Not yet emitted Expected after agent completes
Agent span parents under conclusion ⏳ Not yet emitted Expected after agent concludes
Span naming pattern gh-aw.<job>.<op> ✅ Pass gh-aw.agent.setup matches spec §9.2
Span kind INTERNAL (1) for setup ✅ Pass kind: 1 per spec §9.4
Single trace ID across all jobs ✅ Pass One trace per run (single job observed)

D. Attribute Contract Validation

Setup span required attributes (spec §10.1)

Attribute Status Value
gh-aw.job.name ✅ Present agent
gh-aw.workflow.name ✅ Present OTLP Data Quality Validator
gh-aw.run.id ✅ Present 27118543361
gh-aw.run.attempt ✅ Present 1
gh-aw.run.actor ✅ Present mnkiefer
gh-aw.repository ✅ Present github/gh-aw
gh-aw.staged ✅ Present false (boolValue)

All 7 required setup attributes present. 0 missing.

Conclusion span required attributes (spec §10.2)

⏳ Not yet emitted. Validation deferred.

Agent span GenAI attributes (spec §10.3)

⏳ Not yet emitted. Validation deferred.

Resource attributes (spec §11.1)

Attribute Status Value
service.name ✅ Present gh-aw.otlp-data-quality-validator
service.version ✅ Present 1.0.60
github.repository ✅ Present github/gh-aw
github.run_id ✅ Present 27118543361
github.run_attempt ✅ Present 1
github.actions.run_url ✅ Present https://github.com/github/gh-aw/actions/runs/27118543361

All 6 required resource attributes present. 0 missing.

Observed conditional attributes also present: github.event_name, github.ref, github.sha, github.job, github.workflow_ref, github.actor_id, runner.os, runner.arch, runner.name, runner.environment, gh-aw.awf.version, deployment.environment.

Instrumentation scope (spec §11.3)

Field Expected Observed Status
scope.name gh-aw gh-aw ✅ Correct
scope.version matches service.version 1.0.60 ✅ Correct

Timestamp integrity

Check Result
startTimeUnixNano < endTimeUnixNano ✅ 1780897760079000000 < 1780897764361000000
Start time in validation window ✅ 2026-06-08T05:49:20.079Z
End time in validation window ✅ 2026-06-08T05:49:24.361Z
Duration 4282 ms (reasonable)
Far-future timestamp None

E. Export and Fan-Out Health

Endpoint URL Header Status
Sentry https://o205451.ingest.us.sentry.io/api/4511347087179777/integration/otlp x-sentry-auth (§4.4 rewrite applied ✅) No errors observed
Grafana https://otlp-gateway-prod-eu-west-2.grafana.net/otlp Authorization: Basic ... No errors observed
  • Sentry header rewrite (spec §4.4): Authorizationx-sentry-auth correctly applied ✅
  • URL path appending: send_otlp_span.cjs (line 1037) appends /v1/traces to base URL, producing correctly-formed OTLP endpoint URLs
  • Export error count: 0 — no /tmp/gh-aw/otlp-export-errors.count or .jsonl files written
  • JSONL mirror write status:/tmp/gh-aw/otel.jsonl written (3315 bytes, 1 line)
  • Multi-endpoint fan-out: Promise.allSettled used — failure on one endpoint will not block the other ✅
  • Backend query visibility: Not verifiable (no MCP tools or backend query access in this environment)

F. Root-Cause Hypothesis

Likely cause: No defect detected. WARN status reflects in-progress run state, not a data quality issue.

Supporting evidence:

  • JSONL mirror exists and contains a single well-formed setup span
  • All required span and resource attributes are present and valid
  • Trace ID and span IDs are correctly formatted and consistent with runtime env vars
  • No OTLP export errors logged
  • Sentry header rewrite correctly applied per spec §4.4

Alternative explanations (for WARN, if applicable):

  1. Export failures could occur at conclusion-span emission time (cannot confirm until run finishes)
  2. Backend ingestion delay (≤5 min not considered data loss per validation policy)
  3. Agent span may lack GenAI attributes if token/model data is unavailable from the engine

G. Recommended Fixes (Prioritized)

No critical fixes required based on observed data. Post-run recommendations:

  1. Re-run validation after conclusion — confirm gh-aw.agent.conclusion and gh-aw.agent.agent spans are emitted with all required §10.2 and §10.3 attributes
  2. Verify backend visibility — query Sentry trace 9b2249ae54939556d5f2973ac1f92b4a and Grafana Tempo after 5-minute ingestion delay
  3. Confirm fan-out independence — if one backend fails, check that the other still receives spans (currently no failure to verify against)

H. Validation Queries Used

# Span summary from JSONL mirror
jq -c '.resourceSpans[].scopeSpans[].spans[] | {name, traceId, spanId, parentSpanId, kind, startTimeUnixNano, endTimeUnixNano, "status": .status}' /tmp/gh-aw/otel.jsonl

# Total span count
jq '[.resourceSpans[].scopeSpans[].spans[]] | length' /tmp/gh-aw/otel.jsonl

# Unique trace IDs
jq -r '.resourceSpans[].scopeSpans[].spans[].traceId' /tmp/gh-aw/otel.jsonl | sort -u | wc -l

# Duplicate span check (traceId+spanId)
jq -r '.resourceSpans[].scopeSpans[].spans[] | "\(.traceId):\(.spanId)"' /tmp/gh-aw/otel.jsonl | sort | uniq -c | sort -rn

# Setup span required attributes (§10.1)
jq -c '.resourceSpans[].scopeSpans[].spans[] | select(.name | endswith(".setup")) | {name, attrs: [.attributes[]? | {(.key): .value}] | add}' /tmp/gh-aw/otel.jsonl

# Resource attributes (§11.1)
jq -c '.resourceSpans[].resource.attributes[] | {(.key): .value}' /tmp/gh-aw/otel.jsonl | sort -u

# Trace ID match between JSONL and env var
jq -r '.resourceSpans[].scopeSpans[].spans[].traceId' /tmp/gh-aw/otel.jsonl
echo $GITHUB_AW_OTEL_TRACE_ID  # 9b2249ae54939556d5f2973ac1f92b4a ✅

# Export errors
cat /tmp/gh-aw/otlp-export-errors.jsonl 2>/dev/null || echo "none"
cat /tmp/gh-aw/otlp-export-errors.count 2>/dev/null || echo "0"

# OTLP endpoint config
echo $GH_AW_OTLP_ENDPOINTS | jq .

Telemetry source: Local JSONL mirror (/tmp/gh-aw/otel.jsonl) — cheapest trustworthy source.
Spec reference: specs/otel-observability-spec.md v0.3.0 (§9–§12).
Workflow run: 27118543361Trace ID: 9b2249ae54939556d5f2973ac1f92b4a

Generated by 🧭 OTLP Data Quality Validator · 200.6 AIC · ⌖ 39.1 AIC · ⊞ 23.4K ·

  • expires on Jun 14, 2026, 9:56 PM UTC-08:00

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions