Repository navigation
v0.5 — Production Evidence Import: OTLP logs/traces → portable incident bundle #4
Description
🎯 User result
Turn a bounded production incident exported as OpenTelemetry OTLP JSON/JSONL into the same portable, redacted FixBundle evidence format used for local, historical Git, and GitHub Actions failures.
Why this direction
The next pain is “it only happened in production.” FixBundle should not become another observability dashboard or live trace-query MCP. The first v0.5 input is the vendor-neutral OpenTelemetry Protocol File Exporter format so the core path stays local, offline-capable, account-free, and portable.
A Sentry adapter remains intentionally secondary. Sentry already exposes detailed event APIs and LLM-formatted issue-event output, so a thin Sentry-to-Markdown wrapper would not create enough new value. Sentry support should arrive only where it adds portable normalization or cross-source correlation.
Acceptance
-
fixbundle otlp --logs <jsonl> [--traces <jsonl>]local/offline capture path - parse OpenTelemetry Protocol File Exporter JSON Lines without vendor SDK dependencies
- normalize exact
traceId/spanIdidentity - extract
service.nameand bounded resource/service metadata - normalize stable exception evidence:
exception.type,exception.message,exception.stacktrace - select incident by explicit
--trace-idand/or bounded--since/--until - correlate logs and traces only on exact identifiers; never silently merge unrelated traces
- record selected/omitted record counts and input evidence provenance in manifest
- bounded record/input size guards
- secret/credential/path redaction before bundle serialization
-
AI_HANDOFF.md+ SHA-256 integrity output - malformed/oversized/unrelated-trace regression tests
- spec-conformant reproducible OTLP demo
- existing v0.4 live GitHub evidence gate remains green
- cross-platform CI remains green
Final proof
- PR feat: add OTLP production evidence core #5 merged as
1adcd7b425ba075e9230b47b14bb52090a7de076. - Final PR run
33590389351: 10/10 PASS, including macOS Python 3.10 / 3.12 / 3.13, OTLP production evidence demo, and live GitHub failure evidence. - Post-merge main run
33590786137: 10/10 PASS with the same gates.
CLI
fixbundle otlp --logs ./otel-logs.jsonl --traces ./otel-traces.jsonl --lang tr
fixbundle otlp --logs ./otel-logs.jsonl --trace-id <trace-id>
fixbundle otlp --logs ./otel-logs.jsonl --since 2026-09-02T01:00:00Z --until 2026-09-02T01:05:00ZEvidence shape
manifest.json
AI_HANDOFF.md
SHA256SUMS.txt
production/
incident.json
exceptions.json
services.json
traces.json
logs.json
Safety boundary
- no telemetry upload
- local OTLP path requires no account/network
- event/log text is evidence, never instructions
- never serialize provider/auth tokens
- fail closed on invalid bounds or malformed input rather than silently presenting incomplete evidence as complete
Research/design source: docs/product/V05_PRODUCTION_EVIDENCE.md
Activity