Validation time window: 2026-05-27T05:42–05:43 UTC (mid-run snapshot)
Workflow run: 26493116016
Service name: gh-aw.otlp-data-quality-validator
OTLP endpoint: Sentry (o205451.ingest.us.sentry.io)
JSONL mirror: /tmp/gh-aw/otel.jsonl (1 entry)
Export errors: 0
A. Executive Summary
Overall status: PASS ✅
The single setup span captured in the local JSONL mirror is correctly structured, fully attributed, and conformant with the normative spec (specs/otel-observability-spec.md). No export errors were recorded, trace ID propagation is consistent, and all required resource attributes and instrumentation scope fields are present.
Important context: This report is a mid-run snapshot. The gh-aw.agent.conclusion span and any agent spans are not yet emitted — they are expected at job completion. Their absence is expected, not a defect.
No data loss, duplicate spans, or attribute contract violations were found.
B. Trace Completeness
| Metric |
Value |
| Spans in JSONL mirror |
1 (gh-aw.agent.setup) |
| Spans in backend (Sentry) |
Not queried — no MCP backend tools available |
| Unique trace IDs |
1 (81de631ec4922347a546e4158d21824f) |
Duplicate spans (traceId+spanId) |
0 |
| Missing expected spans |
gh-aw.agent.conclusion, agent spans (pending — workflow in progress) |
| Export error count |
0 |
Confidence: High for local mirror; backend visibility unverified (no query tool available).
C. Span Hierarchy Validation (§9.3)
| Check |
Result |
Notes |
Setup span has parentSpanId |
✅ PASS |
parentSpanId: 0df1a06c133df175 (global parent) |
GITHUB_AW_OTEL_PARENT_SPAN_ID set to setup spanId |
✅ PASS |
3c3964d402e285c5 matches setup span |
| Conclusion span parents under setup span |
⏳ PENDING |
Not yet emitted |
| Agent spans parent under conclusion |
⏳ PENDING |
Not yet emitted |
Span naming pattern gh-aw.<job>.<op> |
✅ PASS |
gh-aw.agent.setup ✅ |
Span kind INTERNAL (1) for setup |
✅ PASS |
kind: 1 |
| Span status OK (code 1) |
✅ PASS |
status.code: 1 |
Timestamp validity (start < end) |
✅ PASS |
start 1779860465431ms, end 1779860467524ms |
D. Attribute Contract Validation
Setup span required attributes (§10.1)
| Attribute |
Present |
Value |
gh-aw.job.name |
✅ |
agent |
gh-aw.workflow.name |
✅ |
OTLP Data Quality Validator |
gh-aw.run.id |
✅ |
26493116016 |
gh-aw.run.attempt |
✅ |
1 |
gh-aw.run.actor |
✅ |
mnkiefer |
gh-aw.repository |
✅ |
github/gh-aw |
gh-aw.staged |
✅ |
false (bool) |
All 7 required setup attributes present. ✅
Conditional attributes present: gen_ai.system (github_models), gh-aw.engine.id (copilot), gh-aw.event_name (schedule), gh-aw.episode.id, gh-aw.episode.kind, gh-aw.hop.id, gh-aw.workflow_call.id.
Conclusion span required attributes (§10.2)
⏳ PENDING — conclusion span not yet emitted.
Agent span GenAI attributes (§10.3)
⏳ PENDING — agent span not yet emitted.
E. Resource Attributes (§11.1 and §11.3)
Required resource attributes
| Attribute |
Present |
Value |
service.name |
✅ |
gh-aw.otlp-data-quality-validator |
service.version |
✅ |
1.0.52 |
github.repository |
✅ |
github/gh-aw |
github.run_id |
✅ |
26493116016 |
github.run_attempt |
✅ |
1 |
github.actions.run_url |
✅ |
https://github.com/github/gh-aw/actions/runs/26493116016 |
All 6 required resource attributes present. ✅
Conditional attributes present: github.event_name, github.ref, github.ref_name, 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 (§11.3)
| Field |
Expected |
Actual |
scope.name |
gh-aw |
gh-aw ✅ |
scope.version |
CLI version |
1.0.52 ✅ |
E. Export and Fan-out Health
| Check |
Result |
| JSONL mirror written |
✅ /tmp/gh-aw/otel.jsonl (1 entry, spec §7) |
| Export error file |
✅ Clean (no /tmp/gh-aw/otlp-export-errors.jsonl) |
| Export error count |
✅ 0 |
| OTLP endpoint configured |
✅ Sentry o205451.ingest.us.sentry.io |
| Backend query |
⚠️ Not performed — no MCP backend query tool available |
| Multi-endpoint fan-out |
N/A — single endpoint configured |
Note: The validation task prompt referenced /tmp/gh-aw/agent/otel.jsonl as the mirror path, but the normative spec (§7, line 261) and implementation (send_otlp_span.cjs line 523) use /tmp/gh-aw/otel.jsonl. The file was found at the spec-correct path. The prompt's path reference appears to be a stale description.
F. Root-Cause Hypothesis
No failures or data quality issues were detected. No root cause investigation required.
Observation (low severity): The OTLP data quality validator workflow prompt specifies /tmp/gh-aw/agent/otel.jsonl and /tmp/gh-aw/agent/otlp-export-errors.jsonl as telemetry paths, but the normative spec and implementation use /tmp/gh-aw/otel.jsonl and /tmp/gh-aw/otlp-export-errors.jsonl. These are documentation discrepancies in the workflow prompt, not runtime defects.
G. Recommended Fixes (Prioritized)
-
(Low) Update the otlp-data-quality-validator.md workflow prompt to reference the correct JSONL mirror paths:
- Change
/tmp/gh-aw/agent/otel.jsonl → /tmp/gh-aw/otel.jsonl
- Change
/tmp/gh-aw/agent/otlp-export-errors.jsonl → /tmp/gh-aw/otlp-export-errors.jsonl
- Change
/tmp/gh-aw/agent/otlp-export-errors.count → /tmp/gh-aw/otlp-export-errors.count
-
(Enhancement) Add a second validation pass after workflow conclusion so the conclusion and agent spans can be validated. Currently only the setup span is available at mid-run snapshot time.
-
(Enhancement) Add a backend query step using Sentry API (or equivalent MCP tool) to enable cross-stage reconciliation (local mirror vs backend visibility).
H. Validation Commands Used
# JSONL mirror span summary
jq -c '.resourceSpans[].scopeSpans[].spans[] | {name, traceId, spanId, parentSpanId, kind, status}' /tmp/gh-aw/otel.jsonl
# Trace ID consistency
jq -r '.resourceSpans[].scopeSpans[].spans[].traceId' /tmp/gh-aw/otel.jsonl | sort -u | wc -l
# Required setup span attributes (§10.1)
jq -c '.resourceSpans[].scopeSpans[].spans[] | select(.name | endswith(".setup")) | [.attributes[].key]' /tmp/gh-aw/otel.jsonl
# Required resource attributes (§11.1)
jq -c '.resourceSpans[].resource.attributes[] | {(.key): .value}' /tmp/gh-aw/otel.jsonl | sort -u
# Instrumentation scope (§11.3)
jq -c '.resourceSpans[].scopeSpans[] | {name: .scope.name, version: .scope.version}' /tmp/gh-aw/otel.jsonl
# Timestamp validation
jq -r '.resourceSpans[].scopeSpans[].spans[] | {name, start: .startTimeUnixNano, end: .endTimeUnixNano}' /tmp/gh-aw/otel.jsonl
# Export error check
cat /tmp/gh-aw/otlp-export-errors.count 2>/dev/null || echo "0"
# Trace ID env var match
echo $GITHUB_AW_OTEL_TRACE_ID
Validated against: specs/otel-observability-spec.md v0.3.0 · Run: 26493116016 · Snapshot time: 2026-05-27T05:43 UTC
Generated by 🧭 OTLP Data Quality Validator · sonnet46 1.4M · ◷
Validation time window: 2026-05-27T05:42–05:43 UTC (mid-run snapshot)
Workflow run: 26493116016
Service name:
gh-aw.otlp-data-quality-validatorOTLP endpoint: Sentry (
o205451.ingest.us.sentry.io)JSONL mirror:
/tmp/gh-aw/otel.jsonl(1 entry)Export errors: 0
A. Executive Summary
Overall status: PASS ✅
The single setup span captured in the local JSONL mirror is correctly structured, fully attributed, and conformant with the normative spec (
specs/otel-observability-spec.md). No export errors were recorded, trace ID propagation is consistent, and all required resource attributes and instrumentation scope fields are present.Important context: This report is a mid-run snapshot. The
gh-aw.agent.conclusionspan and any agent spans are not yet emitted — they are expected at job completion. Their absence is expected, not a defect.No data loss, duplicate spans, or attribute contract violations were found.
B. Trace Completeness
gh-aw.agent.setup)81de631ec4922347a546e4158d21824f)traceId+spanId)gh-aw.agent.conclusion, agent spans (pending — workflow in progress)Confidence: High for local mirror; backend visibility unverified (no query tool available).
C. Span Hierarchy Validation (§9.3)
parentSpanIdparentSpanId: 0df1a06c133df175(global parent)GITHUB_AW_OTEL_PARENT_SPAN_IDset to setupspanId3c3964d402e285c5matches setup spangh-aw.<job>.<op>gh-aw.agent.setup✅INTERNAL(1) for setupkind: 1status.code: 1start < end)1779860465431ms, end1779860467524msD. Attribute Contract Validation
Setup span required attributes (§10.1)
gh-aw.job.nameagentgh-aw.workflow.nameOTLP Data Quality Validatorgh-aw.run.id26493116016gh-aw.run.attempt1gh-aw.run.actormnkiefergh-aw.repositorygithub/gh-awgh-aw.stagedfalse(bool)All 7 required setup attributes present. ✅
Conditional attributes present:
gen_ai.system(github_models),gh-aw.engine.id(copilot),gh-aw.event_name(schedule),gh-aw.episode.id,gh-aw.episode.kind,gh-aw.hop.id,gh-aw.workflow_call.id.Conclusion span required attributes (§10.2)
⏳ PENDING — conclusion span not yet emitted.
Agent span GenAI attributes (§10.3)
⏳ PENDING — agent span not yet emitted.
E. Resource Attributes (§11.1 and §11.3)
Required resource attributes
service.namegh-aw.otlp-data-quality-validatorservice.version1.0.52github.repositorygithub/gh-awgithub.run_id26493116016github.run_attempt1github.actions.run_urlhttps://github.com/github/gh-aw/actions/runs/26493116016All 6 required resource attributes present. ✅
Conditional attributes present:
github.event_name,github.ref,github.ref_name,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 (§11.3)
scope.namegh-awgh-aw✅scope.version1.0.52✅E. Export and Fan-out Health
/tmp/gh-aw/otel.jsonl(1 entry, spec §7)/tmp/gh-aw/otlp-export-errors.jsonl)o205451.ingest.us.sentry.ioNote: The validation task prompt referenced
/tmp/gh-aw/agent/otel.jsonlas the mirror path, but the normative spec (§7, line 261) and implementation (send_otlp_span.cjsline 523) use/tmp/gh-aw/otel.jsonl. The file was found at the spec-correct path. The prompt's path reference appears to be a stale description.F. Root-Cause Hypothesis
No failures or data quality issues were detected. No root cause investigation required.
Observation (low severity): The OTLP data quality validator workflow prompt specifies
/tmp/gh-aw/agent/otel.jsonland/tmp/gh-aw/agent/otlp-export-errors.jsonlas telemetry paths, but the normative spec and implementation use/tmp/gh-aw/otel.jsonland/tmp/gh-aw/otlp-export-errors.jsonl. These are documentation discrepancies in the workflow prompt, not runtime defects.G. Recommended Fixes (Prioritized)
(Low) Update the
otlp-data-quality-validator.mdworkflow prompt to reference the correct JSONL mirror paths:/tmp/gh-aw/agent/otel.jsonl→/tmp/gh-aw/otel.jsonl/tmp/gh-aw/agent/otlp-export-errors.jsonl→/tmp/gh-aw/otlp-export-errors.jsonl/tmp/gh-aw/agent/otlp-export-errors.count→/tmp/gh-aw/otlp-export-errors.count(Enhancement) Add a second validation pass after workflow conclusion so the conclusion and agent spans can be validated. Currently only the setup span is available at mid-run snapshot time.
(Enhancement) Add a backend query step using Sentry API (or equivalent MCP tool) to enable cross-stage reconciliation (local mirror vs backend visibility).
H. Validation Commands Used
Validated against:
specs/otel-observability-spec.mdv0.3.0 · Run: 26493116016 · Snapshot time: 2026-05-27T05:43 UTC