fix(auto-reply): default room events to silence#99144
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed July 2, 2026, 11:53 AM ET / 15:53 UTC. Summary PR surface: Source 0, Tests +44. Total +44 across 18 files. Reproducibility: yes. from source. Current main contradicts the ambient room-event docs by prompting the model to decide whether to act, using a reply-presupposing message-tool hint, and retaining a generic status-update visibility claim for message-tool-only prompts. Review metrics: 1 noteworthy metric.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Align all model-bound room-event and message-tool-only prompt surfaces with the documented quiet-context contract, then review the coordinated sibling PRs for the linked ambient group-mode issue together. Do we have a high-confidence way to reproduce the issue? Yes from source. Current main contradicts the ambient room-event docs by prompting the model to decide whether to act, using a reply-presupposing message-tool hint, and retaining a generic status-update visibility claim for message-tool-only prompts. Is this the best way to solve the issue? No. The patch is in the right layer and fixes the per-turn envelope and inbound delivery hint, but it should also remove or specialize the generic message-tool-only status-update sentence before merge. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against f8e1e0c5bfbc. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source 0, Tests +44. Total +44 across 18 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
b32e0a2 to
ba51c1d
Compare
Part of #99142
What Problem This Solves
On ambient
room_eventturns the model chimes into group chats far too often (~11% of ambient turns in a production deployment) because the prompt actively leans toward replying: the envelope's only directive is "Decide whether to act", the embedded delivery hint instructs "Use themessagetool to send the final user-visible answer" (presupposing an answer should exist) and falsely claims status updates are shown (they are fully suppressed on room events), the strongest selectivity guidance ("Be extremely selective...") ships only in the legacy NO_REPLY mode and never in the recommended message-tool ambient config, the always-on group intro says "Address the specific sender" for every message, and the "post only when you have concrete value" etiquette bullet is Discord-only.Why This Change Was Made
Default-silent needs to be stated where the model actually looks — the per-turn envelope — and every ambient surface should agree. The room-event envelope now carries an explicit default-silent contract; room-event turns get a dedicated delivery hint that expects no reply and makes no false delivery claims (non-room-event message-tool turns keep the existing hint); the selectivity line ships in message-tool ambient mode; the always-on intro is lurk-aware; the group etiquette bullet applies to any group/channel message-tool-only session.
buildGroupIntro's dead params were removed along the way.User Impact
Ambient-mode agents stop being nudged toward posting on every observed message. Operator instructions like "only reply when spoken to" stop fighting contradictory harness prompt text.
Evidence
prompt-prelude,inbound-meta,groups,strip-inbound-meta, and system-prompt tests: envelope contains the default-silent contract; room-event turns get the room-event hint while non-room-event message-tool turns keep the old one; ambient group prompts contain the selectivity line.node scripts/run-vitest.mjsover the touched surfaces: 7 files, 379 tests + 91 prompt/media tests; prompt snapshot generator clean locally and verified on Linux Node 24 Testbox (CI truth);pnpm tsgo; oxlint clean; repo autoreview clean (its first pass caught an automatic-delivery wording mismatch, fixed before commit).