Skip to content
Back to skills

Langfuse Trace Ingestion Medic

ASecurity

Investigate missing, partial or incorrectly nested Langfuse observations by reconciling a captured OTLP batch with Observations API v2 readbacks. Use when traces disappear after a serverless exit, exported spans are absent, or parent context differs. Trigger with "Langfuse spans missing", "flush succeeded but no observations" or "why is this Langfuse child at the root?".

  • 2,902 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentspythonbashgitapi

Works with

  • cursor
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add jeremylongshore/tons-of-skills-marketplace --skill langfuse-trace-ingestion-medic --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Langfuse Trace Ingestion Medic?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Langfuse Trace Ingestion Medic
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jeremylongshore-langfuse-trace-ingestion-medic/badge)](https://www.skillsdirectory.com/skills/jeremylongshore-langfuse-trace-ingestion-medic)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: langfuse-trace-ingestion-medic
description: |
  Investigate missing, partial or incorrectly nested Langfuse observations by
  reconciling a captured OTLP batch with Observations API v2 readbacks. Use when
  traces disappear after a serverless exit, exported spans are absent, or parent
  context differs. Trigger with "Langfuse spans missing", "flush succeeded but no
  observations" or "why is this Langfuse child at the root?".
allowed-tools: Read, Bash(python3:*)
version: 2.0.0
author: Jeremy Longshore <jeremy@intentsolutions.io>
license: MIT
tags: [langfuse, tracing, ingestion, diagnostics, opentelemetry]
compatibility: Python 3.10+ standard library; supplied OTLP JSON and Langfuse Observations API v2 evidence. No SDK or credentials needed for offline analysis.
argument-hint: '[ingestion-receipt.json]'
---

# Langfuse Trace Ingestion Medic

## Overview

Explain which exported spans are visible in supplied Langfuse readbacks, which
facts conflict, and what bounded check would resolve the remaining uncertainty.
Distinguish local span creation, transport acceptance, background processing and
per-span read visibility. None of those alone proves complete instrumentation.

This workflow reads evidence. It never reruns customer operations, replays an
export, changes sampling, rotates keys, flushes a live SDK or deploys a service.

## Prerequisites

- A precise symptom, affected project/region and absolute incident window.
- An existing authorized private capture of one OTLP JSON batch and its scoped
  Observations API v2 pages, or an explicit statement that this evidence is missing.
- Python 3.10+ and the [receipt contract](references/receipt-contract.md).
- Permission to inspect the evidence. The analyzer needs no authentication;
  any separate provider read needs existing approved access and scope.

Read [runtime diagnostics](references/runtime-diagnostics.md) for SDK compatibility,
sampling, lifecycle and authentication checks. Do not enable raw debug logging
or duplicate production exporters merely to obtain a fixture.

## Instructions

### Step 1: Bound the incident and evidence

Record the expected operation, trace/span identities, capture times, project,
region and SDK/runtime versions privately. State whether the capture covers a
single export batch, a synthetic canary or actual affected traffic. A canary
cannot certify customer coverage. Preserve the original artifacts.

If no batch or readback exists, return an evidence gap and the smallest useful
next check. Do not invent native pages or execute the business operation again.
Binary protobuf and console-exporter text are not the helper's JSON contract.

### Step 2: Map the supplied receipts

Follow the [contract](references/receipt-contract.md). Keep native resource/scope
span nesting, exact IDs, parent IDs and nanosecond times. Retain the response for
that same batch when available, including a partial-success envelope.

Readbacks must use the reviewed project and explicit trace/window selectors,
stable queries and complete cursor chains. Request only necessary fields. A
first page, old recent trace or successful auth check cannot prove recovery.

### Step 3: Reconcile without retrying

```sh
python3 scripts/inspect-ingestion.py private-ingestion-receipt.json
```

Use the packaged script relative to this skill's directory. Keep the private
receipt out of Git. The script returns content-free findings and counts; it
does not query the provider or execute callbacks.

Inspect missing IDs, project/trace mismatches, cursor gaps, ended timing,
physical-parent mismatches and export warnings independently. Timing matches
are at millisecond resolution, not proof of nanosecond equality.

### Step 4: Separate defects from hypotheses

A parent outside this batch is a capture boundary requiring review; it is not
proof that Langfuse dropped it. An exported parent cycle or a different returned
parent is separate evidence. A transport HTTP 200 or completed flush is not a
per-span read acknowledgement. Missing readback rows remain “not observed in
these pages,” not a universal freshness breach or proven data loss.

Inspect tracing enablement, sampling/export filters, compatibility and lifecycle
configuration next. Preserve business exceptions. An instrumentation failure
must never trigger a second call to the application callback.

### Step 5: Return the evidence ledger

For each finding give the report code, private evidence pointer, consequence,
confidence and next discriminating check. Preserve investigation and held states.
Any further read must remain within existing authorization; production fixes
require their own implementation and rollout review.

## Output

Return `langfuse-ingestion-report.json` plus a short supplied-data assessment:
expected/matched span counts, coverage limits, confirmed receipt defects,
unresolved hypotheses and next check. `observed-supplied-batch` establishes only
the captured batch's correspondence with supplied pages, not service health.

## Examples

- **Flush succeeded; one span is missing:** report its absence from the supplied
  pages, check ended-span/export lifecycle and retained pagination; do not replay
  the order-processing function.
- **Child appears at root:** distinguish a parent absent from this batch from a
  different physical parent in the readback. Investigate export filtering and
  context propagation before blaming storage.
- **Export accepted an empty batch:** retain `empty-export-batch`; a successful
  transport response does not demonstrate ingestion.

## Error Handling

Exit 0 means the supplied batch was observed; exit 1 needs investigation; exit 2
holds invalid or oversized input with a fixed error code. Correct the capture or
mapping, not observed values. Missing credentials or native evidence is a gap,
not permission to create keys, widen access or synthesize a passing report.

## Resources

- [Receipt contract and primary sources](references/receipt-contract.md).
- [Runtime, access and lifecycle diagnostics](references/runtime-diagnostics.md).
- [Evaluation specification](eval-spec.yaml): proposed behavioral checks, not evidence that they ran.

Files in this skill

  • SKILL.md6 KB
  • eval-spec.yaml2 KB
  • references/receipt-contract.md8.3 KB
  • references/runtime-diagnostics.md5.1 KB
  • scripts/inspect-ingestion.py13.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.