Skip to content

v0.5 — Production Evidence Import: OTLP logs/traces → portable incident bundle #4

Description

@yaertu

🎯 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 / spanId identity
  • extract service.name and bounded resource/service metadata
  • normalize stable exception evidence: exception.type, exception.message, exception.stacktrace
  • select incident by explicit --trace-id and/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:00Z

Evidence 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions