[[NO_REPLY]] marker leaks into Slack replies
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 76/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- typescript
- 領域
- backend
調査の方向性
packages/junior/src/chat/no-reply.ts から始め、packages/junior/src/chat/services/assistant-reply.ts と packages/junior/src/chat/services/turn-result.ts を通じて混在するマーカーの処理を追跡します。マーカーのみの返信と、マーカーと文章が混在する返信のカバレッジを追加または更新し、Slack には予約済みマーカーを含まない文章が届き、マーカーだけで正確に構成されたメッセージは引き続き抑制されることを確認します。
索引モデルが issue の本文から書いたものです。
説明
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()logsai.no_reply_marker.mixed_textfor mixed cases but still returns deliverable text that retains the marker (packages/junior/src/chat/services/turn-result.ts).no-reply.tscomments thatcontainsNoReplyMarkerexists 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_texton projectsentry/junior(for example around2026-08-31T15:03Z–15:08Z, including traces such asff5484791527491f82bba63e031e6c83).
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.
--
- 主要言語
- TypeScript
- スター
- 397
- フォーク
- 43
- 平均マージ
- 7時間 44分
- マージ済み PR(30日)
- 607
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
getsentry/junior のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
getsentry/junior#335 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
getsentry/junior の issue をすべて見る
似ている issue
-
twilio.webhook() rejects valid requests when the query string has an encoded `?` and a `+` spaceオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
twilio/twilio-node#1232 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
メンテナーはふだん 1 日以内に返信
-
Tiling managers are not destroyed in disable(), so window-created handlers keep running (Gio.Settings constructed without schema)対応中かも @gnacho が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
domferr/tilingshell#641 ·
メンテナーはふだん 3 日以内に返信
-
🐛 bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
LibreChat-AI/LibreChat#17887 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100