[[NO_REPLY]] marker leaks into Slack replies

Cerrado
#1,741 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
76/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
typescript
Área
backend

Línea de trabajo

Comienza en packages/junior/src/chat/no-reply.ts y, a continuación, sigue el tratamiento de marcadores mixtos a través de packages/junior/src/chat/services/assistant-reply.ts y packages/junior/src/chat/services/turn-result.ts. Añade o actualiza la cobertura para respuestas que contengan únicamente un marcador y para respuestas con una mezcla de marcador y prosa, y verifica que Slack reciba la prosa sin el marcador reservado, mientras que los mensajes que consistan exactamente solo en el marcador sigan suprimidos.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

When a terminal assistant message mixes normal prose with [[NO_REPLY]], Junior posts the full text to Slack, including the reserved marker.

Observed in production: a task turn that intended silence ended with prose plus a trailing [[NO_REPLY]], and Slack received that combined message. Session: https://junior-prod.sentry.dev/conversations/slack%3AC0BSRCZ1F9T%3A1788188446.835629

Verified behavior

  • Prompt/task contract: intentional silence requires the final message to be exactly [[NO_REPLY]].
  • isNoReplyMarker() only matches whole-message equality (packages/junior/src/chat/no-reply.ts).
  • After #1714, decideReply() suppresses only exact marker-only text and delivers any mixed marker+prose unchanged (packages/junior/src/chat/services/assistant-reply.ts).
  • buildTurnResult() logs ai.no_reply_marker.mixed_text for mixed cases but still returns deliverable text that retains the marker (packages/junior/src/chat/services/turn-result.ts).
  • no-reply.ts comments that containsNoReplyMarker exists to detect leaks "before publication strips or rejects them," but delivery does not strip.
  • PR #1714 description said mixed text would strip the marker and post the rest; current code and tests deliver the marker inline.

Evidence

  • Thread example above (assistant reply ended with visible [[NO_REPLY]]).
  • Repeated production warnings: ai.no_reply_marker.mixed_text on project sentry/junior (for example around 2026-08-31T15:03Z–15:08Z, including traces such as ff5484791527491f82bba63e031e6c83).

Related

  • #1714 changed mixed mentions from silence to delivery.
  • #1030 is a different no-reply terminalization bug (timeout resume).

Reported by Matt Quinn.

Requested by Matt Quinn.

--

View Junior Session [Sentry]

Lenguaje dominante
TypeScript
Estrellas
397
Forks
43
Merge medio
8 h 29 min
PR fusionados (30 d)
495

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de getsentry/junior

Todos los issues de getsentry/junior

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.