Explicit Identity

Pass explicit IDs through async and process boundaries instead of querying for 'latest' or 'current'. Use when crossing process or async boundaries. Trigger phrases: "race condition on ID", "pass session ID", "explicit identifier".

DojoGenesis 9871b3e 1.4 KB Updated

File contents

Explicit Identity Across Boundaries

Never rely on "latest" or "current" when crossing process or async boundaries.

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)

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

Example

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

// GOOD: explicit identity
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

DojoGenesis/plugins/tree/main/plugins/community-skills/skills/explicit-identity commit 9871b3efec

Frequently asked questions

npx skillmds@latest add dojogenesis/explicit-identity