Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Eve provider ignores parentTraceContext, so eve.turn is always a root span

クローズ 初心者向け
#2,552 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
85/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
typescript
領域
observability

調査の方向性

src/instrumentation/plugins/eve-instrumentation.ts の turn-started handler から始め、Eve の turn.started イベントについて説明されている parentTraceContext フィールドとの処理の違いを比較します。parentTraceContext があり parentLineage がない turn が、指定された trace ID と span ID の下にネストされ、既存の parentLineage と root span の動作が変わらなければ完了です。

索引モデルが issue の本文から書いたものです。

説明

Summary

braintrustEveInstrumentation() always starts eve.turn as a root span, so Eve sessions created inside a traced request show up as separate traces instead of nesting under the caller's span.

Eve already propagates the caller's context. When a session request carries a W3C traceparent, Eve (0.56) sets parentTraceContext on the provider's turn.started event (dist/src/instrumentation/native-events.js). The SDK declares the field on EveProviderTurnStartedEvent (3.35.0, index.d.ts), but the provider bridge's turn-started handler in src/instrumentation/plugins/eve-instrumentation.ts never reads it. When parentLineage is absent, it always uses:

parentSpanIds: { parentSpanIds: [], rootSpanId }   // rootSpanId = this turn's own spanId

startSpan also runs under withCurrent(NOOP_SPAN, ...), so async context can't supply a parent either.

Expected

If turn.started has parentTraceContext and no parentLineage, parent the turn to it:

parentSpanIds: { rootSpanId: parentTraceContext.traceId, spanId: parentTraceContext.spanId }

This assumes the caller's span IDs are W3C-compatible (OTel ID mode), so injectTraceContext() on the caller and Eve's traceparent handling line up. If parentTraceContext.traceFlags marks the context as unsampled, Eve already drops the session, so nothing else is needed.

Repro

  1. Inside traced(...) in a Next.js route, create an Eve session through eve/client and send a traceparent header from injectTraceContext().
  2. Eve 0.56 server with braintrustEveInstrumentation({ metadata }) exported from agent/instrumentation.
  3. In Braintrust logs, eve.turn is the root of its own trace. You can only find it from the caller's trace by searching for eve.session_id.

Versions

  • braintrust 3.33.0 and 3.35.0
  • eve 0.56.0

Why it matters

Online scoring rules on the caller's span can't see Eve's tool calls, such as data an agent loads from its sandbox. Following one request currently means jumping between traces by eve.session_id.

主要言語
TypeScript
スター
28
フォーク
15
平均マージ
1日 22時間
マージ済み PR(30日)
73

環境構築

  • Dockerfile または Docker Compose ファイルあり
  • プルリクエストのテンプレートなし
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

braintrustdata/braintrust-sdk-javascript のほかの issue

braintrustdata/braintrust-sdk-javascript の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。