Skip to content

Ping about workspaces only when they need you, with real names - #36

Merged
elitecoder merged 5 commits into
mainfrom
fix/comms-ping-noise
Sep 28, 2026
Merged

elitecoder merged 5 commits into
mainfrom
fix/comms-ping-noise

Conversation

@elitecoder

Copy link
Copy Markdown
Owner

Summary

Follow-up to #35. A review of the channel's history (2,500 posts in 14 days) showed that after #35, workspace pings were the remaining noise. This makes them rare and readable.

  • Idle alerts ping only when the workspace needs you. cmux sends every Claude alert as one bare Notification event with no message (verified in a live capture). Most are Claude's idle alert about a minute after every turn. A ping now goes out only when a permission or plan prompt is up (a tool call with no result yet), the session stopped on an API error, or the agent's last few lines ask you something. By that rule, 25% of 1,496 recent turns would ping.
  • Patterns match the agent's own words. Turn-end patterns ("CI red", "PR opened") now run on the agent's message from the current turn, not 50 lines of screen. The screen is only the fallback when the transcript can't be read.
  • Three noisy word lists are muted. stranded, awaiting-review, and emit-card sent 168 pings in two weeks, mostly on status prose. A muted pattern no longer hides a real one in the same message.
  • Workspaces get real names. When cmux's title is the default "Terminal", the ping uses Claude's own session title, else the folder and branch.

Validation

  • Full suite: 2,950 passed, 1 skipped. The changed-code coverage gate passes. Mutation probes on the prompt check, the API-error check, the current-turn scoping, and screen-versus-message matching all fail a test.
  • Replayed a real captured Notification through the new code: it named the session "assembler-aspect-ratio-reframe test session" and pinged, because the agent's last line asked a question.
  • Two independent reviews (missed signals; regressions and coverage).

Known limits

  • Patterns that only ever matched terminal output, like committed ([main abc1234]), no longer fire.
  • lesson-extractor.py still proposes new patterns from screen evidence, which the watcher now checks against messages instead.

🤖 Generated with Claude Code

elitecoder and others added 5 commits September 28, 2026 12:19
…tch watcher patterns on the agent's own message

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ot hide a real one

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e last few lines, and judge only the current turn

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@elitecoder
elitecoder merged commit 08d6eb9 into main Sep 28, 2026
1 check passed
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.

1 participant