Skip to content

Add a LangGraph OTel trace as a portability fixture #2

Description

@bamdadd

Context

taintline's ingest (src/taintline/ingest.py) auto-detects two input shapes: an OTLP-ish span list and a Strands AgentResult dict. LangGraph agents can emit OpenTelemetry GenAI spans too, but we have no LangGraph-derived fixture proving the OTLP path ingests one cleanly. A fixture from a third stack strengthens the "producer-agnostic" claim in the README.

Scope note: this rides the existing OTLP path — capture a real OTel export and assert on it. No new ingest mapper is required (that would be a separate help wanted issue).

What to do

  1. Run a small LangGraph agent with OTel GenAI instrumentation and capture the span export as JSON (a tool call + an LLM span is enough).
  2. Add it under tests/fixtures/portability/langgraph_*.json.
  3. Add a case to tests/test_portability.py that loads it via load_trace and asserts the expected spans/tool names normalize correctly (mirror the existing claude_agent_sdk_read_to_bash.json case).

Acceptance criteria

  • New fixture file committed under tests/fixtures/portability/.
  • A test_portability.py case loads it and asserts normalized Span fields (tool_name, tool_output, kind).
  • uv run pytest tests/test_portability.py passes.

Pointers

  • src/taintline/ingest.pyload_trace, OTLP detection
  • tests/fixtures/portability/claude_agent_sdk_read_to_bash.json — pattern to mirror
  • tests/test_portability.py
  • README "Producer-agnostic"

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: llmLarge language modelsgood first issueSelf-contained, <2h, clear acceptance + file pointersize: SAn afternoontype: testTests and fixtures

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions