Skip to content

proto: bump transcript ID max_len from 128 to 256#2427

Merged
weeco merged 1 commit intomasterfrom
jb/transcript-id-length-256
Apr 28, 2026
Merged

proto: bump transcript ID max_len from 128 to 256#2427
weeco merged 1 commit intomasterfrom
jb/transcript-id-length-256

Conversation

@birdayz
Copy link
Copy Markdown
Contributor

@birdayz birdayz commented Apr 28, 2026

What

Raise the buf-validate max_len from 128 to 256 on all opaque ID fields in transcript.proto:
TranscriptToolCall.tool_call_id, TranscriptTurn.turn_id, TranscriptTurn.model,
TranscriptSummary.conversation_id, TranscriptSummary.user_id, and
GetTranscriptRequest.conversation_id.

Why

128 has no upstream basis. The OTel GenAI semantic conventions don't constrain
gen_ai.conversation.id, and real-world chat platforms produce IDs that exceed it:

  • Microsoft Teams personal-DM thread IDs (a:1NXel3V8F74Kb...) run ~150 characters
  • Slack thread IDs and Discord channel IDs are similarly long
  • BYOA agents are free to use any opaque format the upstream system gives them

When a conversation slips over 128 chars, server-side response validation rejects the
TranscriptSummary. The per-agent Transcripts tab in console comes back empty while
the same spans remain visible in the global tracing view (which doesn't run validation).
The mismatch is hard to debug from the UI side.

256 matches the existing limits on TranscriptSummary.title and TranscriptToolCall.name,
so the contract stays internally consistent.

Implementation details

Six call sites in proto/redpanda/api/dataplane/v1alpha3/transcript.proto. Regenerated
Go and TypeScript bindings via task proto:generate. The descriptor varint changes
from 0x80 0x01 (128) to 0x80 0x02 (256) in the embedded raw descriptor.

No code change required — buf-validate runtime reads the cap from the descriptor.

References

None.

The 128-char cap on conversation_id, turn_id, tool_call_id, model,
and user_id has no upstream basis. OTel doesn't constrain
gen_ai.conversation.id; chat platforms (Microsoft Teams personal-DM
threads, Slack thread IDs, Discord channel IDs) routinely produce
IDs that exceed 128 characters. When buf-validate rejects the
TranscriptSummary response, the per-agent Transcripts tab is empty
even though the spans are visible in the global tracing view.

Bump to 256 across the board for consistency with the existing
title and TranscriptToolCall.name fields.
@github-actions
Copy link
Copy Markdown
Contributor

The latest Buf updates on your PR. Results from workflow Buf CI / validate (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed✅ passed✅ passed✅ passedApr 28, 2026, 4:57 PM

@weeco weeco merged commit e2831c1 into master Apr 28, 2026
26 checks passed
@weeco weeco deleted the jb/transcript-id-length-256 branch April 28, 2026 17:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants