[bot] Anthropic Beta Messages `compaction` parameter (on-demand compaction) not captured in span metadata

Aberta Para iniciantes
#237 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
82/100
Tipo de issue
Funcionalidade
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
ruby
Domínio
observability

Direção de pesquisa

Leia lib/braintrust/contrib/anthropic/instrumentation/beta_messages.rb, com foco em METADATA_FIELDS, BETA_METADATA_FIELDS e capture_beta_fields; lib/braintrust/contrib/anthropic/patcher.rb identifica o ponto de integração. Adicione a captura dos metadados da requisição para compaction na instrumentação beta e, em seguida, confira os testes existentes da instrumentação beta de Messages para confirmar que o campo aparece nas requisições de compaction. O issue não indica nenhum arquivo de teste.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

<!-- provider-gap-audit: anthropic-compaction-param-not-captured -->

Summary

Anthropic's compact-2026-09-04 beta (released September 2026) lets callers trigger on-demand compaction of a conversation via a top-level compaction request parameter on client.beta.messages.create, returning a signed compaction block (stop_reason: "compaction", a summary in content, and a signature) in place of a normal reply. This is a distinct, documented execution mode of the beta Messages API. The compaction parameter is not captured anywhere in this repo's Anthropic beta instrumentation.

What is missing

  • BetaMessages::InstanceMethods::METADATA_FIELDS and BETA_METADATA_FIELDS do not include compaction, so a request that sets it is traced identically to a normal message request — the metadata gives no indication the call was a compaction request.
  • capture_beta_fields explicitly special-cases betas and output_format but has no equivalent handling for compaction.
  • The response's stop_reason: "compaction" is still captured generically via finalize_metadata's existing stop_reason handling, but without the request-side compaction field, there's no way to see why a compaction response was produced versus e.g. hitting a stop sequence.

Braintrust docs status

supported (in another Braintrust SDK, not Ruby) — https://docs.braintrust.dev/integrations/ai-providers/anthropic documents, for the Python SDK, that Messages spans capture request parameters including compaction, context_management, and diagnostics, and separately that OTel export sums anthropic.compaction spans for token accounting. The Ruby-specific sections of the same page describe no equivalent compaction metadata capture — this is a concrete Ruby-specific parity gap against Braintrust's own Python instrumentation of the identical upstream beta.

Upstream sources

Local repo files inspected

  • lib/braintrust/contrib/anthropic/instrumentation/beta_messages.rb — METADATA_FIELDS (lines 29–32), BETA_METADATA_FIELDS (lines 35–37), and capture_beta_fields (lines 146–166) have no compaction handling
  • lib/braintrust/contrib/anthropic/instrumentation/messages.rb — stable (non-beta) METADATA_FIELDS (lines 25–28), shown for contrast; compaction is beta-only upstream so this file is unaffected
  • lib/braintrust/contrib/anthropic/patcher.rb — confirms BetaMessagesPatcher is the integration point that would need the added field
Linguagem predominante
Ruby
Estrelas
9
Forks
11
Merge médio
1d 11h
PRs com merge (30d)
3

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de braintrustdata/braintrust-sdk-ruby

Todas as issues de braintrustdata/braintrust-sdk-ruby

Issues semelhantes

Mais issues de Ruby

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.