explicit-identity

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Explicit Identity Across Boundaries

跨边界的显式身份标识

Never rely on "latest" or "current" when crossing process or async boundaries.
在跨越进程或异步边界时,绝不要依赖“latest(最新)”或“current(当前)”这类模糊标识。

Pattern

模式

Pass explicit identifiers through the entire pipeline. "Most recent" is a race condition.
在整个流程中传递显式标识符。“最新的”这种表述会引发竞态条件。

DO

正确做法

  • Pass
    --session-id $ID
    when spawning processes
  • Store IDs in state files for later correlation
  • Use full UUIDs, not partial matches
  • Keep different ID types separate (don't collapse concepts)
  • 生成进程时传递
    --session-id $ID
    参数
  • 将ID存储在状态文件中,以便后续关联
  • 使用完整的UUID,不要使用部分匹配
  • 区分不同类型的ID(不要混淆概念)

DON'T

错误做法

  • Query for "most recent session" at execution time
  • Assume the current context will still be current after await/spawn
  • Collapse different ID types:
    • session_id
      = Claude Code session (human-facing)
    • root_span_id
      = Braintrust trace (query key)
    • turn_span_id
      = Braintrust turn within session
  • 在执行时查询“最新会话”
  • 假设await/生成操作后当前上下文仍然保持不变
  • 混淆不同类型的ID:
    • session_id
      = Claude Code会话(面向用户)
    • root_span_id
      = Braintrust追踪(查询键)
    • turn_span_id
      = 会话内的Braintrust轮次

Example

示例

typescript
// BAD: race condition at session boundaries
spawn('analyzer', ['--learn'])  // defaults to "most recent"

// GOOD: explicit identity
spawn('analyzer', ['--learn', '--session-id', input.session_id])
typescript
// 错误:会话边界存在竞态条件
spawn('analyzer', ['--learn'])  // 默认使用“最新会话”

// 正确:显式身份标识
spawn('analyzer', ['--learn', '--session-id', input.session_id])

Source Sessions

来源会话

  • 1c21e6c8: Defined session_id vs root_span_id distinction
  • 6a9f2d7a: Fixed wrong-session attribution via explicit passing
  • a541f08a: Confirmed pattern prevents race at session boundaries
  • 1c21e6c8:定义了session_id与root_span_id的区别
  • 6a9f2d7a:通过显式传递修复了会话归属错误
  • a541f08a:确认该模式可避免会话边界的竞态问题