Skip to content

[OTLP Validation] OTLP Data Quality Validation Report — run 26933463444 #36850

@github-actions

Description

@github-actions

Validation time window: 2026-06-04T05:48:37Z – 2026-06-04T05:49:37Z
Run ID: 26933463444 · Workflow: OTLP Data Quality Validator · Attempt: 1
Telemetry source: Local JSONL mirror (/tmp/gh-aw/otel.jsonl)
Backend: Sentry (https://o205451.ingest.us.sentry.io/api/.../integration/otlp) — not queried (no MCP access)


A. Executive Summary

Status: PASS (with informational notes)

The single span emitted so far (gh-aw.agent.setup) is correctly formed, fully attributed, and consistently correlated. No export errors were recorded. The missing conclusion and agent spans are expected — this workflow is still running when the setup span is written. No data-loss or structural violations were found in the available evidence.


B. Trace Completeness

Metric Value
JSONL mirror span count 1
Unique traceId count 1 (65287eedcc614b173a8efa31225ef078)
Unique span identities (traceId+spanId) 1
Duplicate spans 0
Backend span count unknown (no backend access)
Missing conclusion/agent spans expected — workflow still in progress
Trace ID matches GITHUB_AW_OTEL_TRACE_ID 65287eedcc614b173a8efa31225ef078

Confidence: High for setup span integrity; low for backend visibility (no MCP query performed).


C. Span Hierarchy Validation

Only the gh-aw.agent.setup span is available. The global root parent (689b8d2156032ea3) is referenced as parentSpanId but not present in the mirror — this is expected (the root parent is a synthetic span injected by the runner, not emitted into the mirror).

Check Result
Setup span has parentSpanId (global root) 689b8d2156032ea3
Conclusion span parents under setup ⏳ not yet emitted
Agent spans parent under conclusion ⏳ not yet emitted
Span naming pattern gh-aw.<job>.<op> gh-aw.agent.setup
kind = INTERNAL (1) for setup span
status.code = OK (1)
startTimeUnixNano < endTimeUnixNano ✅ (2082 ms duration)
Timestamps within validation window

D. Attribute Contract Validation

Setup span required attributes (spec §10.1)

Attribute Value
gh-aw.job.name "agent"
gh-aw.workflow.name "OTLP Data Quality Validator"
gh-aw.run.id "26933463444"
gh-aw.run.attempt "1"
gh-aw.run.actor "mnkiefer"
gh-aw.repository "github/gh-aw"
gh-aw.staged false

All required setup attributes present.

i️ Informational: gen_ai.system: "github_models" appears on the setup span. Per spec §10.3, GenAI semantic convention attributes are specified for agent spans, not setup spans. This is not a violation but may indicate the attribute is being added upstream of the span type check.

Conclusion span required attributes (spec §10.2)

⏳ Not yet emitted (gh-aw.run.status, gh-aw.error_count, gh-aw.warning_count, gh-aw.action_minutes, gh-aw.output.item_count, gh-aw.otlp.export_errors).

Agent span GenAI attributes (spec §10.3)

⏳ Not yet emitted.

Resource attributes (spec §11.1)

Attribute Value
service.name "gh-aw.otlp-data-quality-validator"
service.version "1.0.57"
github.repository "github/gh-aw"
github.run_id "26933463444"
github.run_attempt "1"
github.actions.run_url "https://github.com/github/gh-aw/actions/runs/26933463444"

All required resource attributes present.

Instrumentation scope

Check Result
scope.name = "gh-aw"
scope.version = "1.0.57" (matches service.version)

E. Export and Fan-Out Health

Check Result
JSONL mirror written /tmp/gh-aw/otel.jsonl (1 span)
OTLP endpoint configured ✅ Sentry integration endpoint
Export error file present ✅ absent (= 0 recorded errors)
Export error count 0
Multi-endpoint fan-out N/A — single endpoint only
Backend query-visibility unknown — no MCP/backend access

No transport-layer failures detected at the mirror stage.


F. Root-Cause Hypothesis

No active failure found. The single emitted span is clean.

Hypothesis for any future backend visibility gap:

  1. Most likely (if backend spans are missing): Sentry's Authorization header rewrite may not be applied. The Sentry OTLP integration requires the standard Authorization: Bearer <dsn> to be rewritten to x-sentry-auth. If this rewrite is absent, Sentry returns 401 silently and spans are dropped.

    • Evidence strength: theoretical — no 401 recorded in export errors file.
  2. Alternative: The OTLP endpoint URL is missing the /v1/traces suffix. The configured endpoint https://o205451.ingest.us.sentry.io/api/4511347087179777/integration/otlp ends without a path suffix — the exporter may need to append /v1/traces if not doing so automatically.

    • Evidence strength: low — depends on exporter implementation.
  3. Transient delay: Sentry ingestion typically has <60 s visibility lag. Absence in backend queries within 5 minutes should not be treated as data loss (per validation procedure rules).


G. Recommended Fixes (Prioritized)

  1. [High, if backend gaps confirmed] Verify Sentry header rewrite is active for the Authorizationx-sentry-auth transformation. Check send_otlp_span.cjs for the header normalization logic.
  2. [Medium] After run completion, re-run the JSONL query set to confirm conclusion and agent spans are emitted and attributed correctly (spec §10.2, §10.3).
  3. [Low] Consider whether gen_ai.system on setup spans is intentional; if not, restrict GenAI attributes to agent-span-only emission paths.
  4. [Low] Add backend MCP access to the validator workflow to close the "emitted vs query-visible" gap in future runs.

H. Validation Queries Used

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

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

# Instrumentation scope
jq -c '.resourceSpans[].scopeSpans[].scope' /tmp/gh-aw/otel.jsonl

# Span-level attributes
jq -c '.resourceSpans[].scopeSpans[].spans[].attributes[]' /tmp/gh-aw/otel.jsonl

# Trace ID count (expect 1)
jq -r '.resourceSpans[].scopeSpans[].spans[].traceId' /tmp/gh-aw/otel.jsonl | sort -u | wc -l

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

# Trace ID env consistency
echo $GITHUB_AW_OTEL_TRACE_ID

Generated by 🧭 OTLP Data Quality Validator · sonnet46 755K ·

  • expires on Jun 11, 2026, 5:53 AM UTC

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