Problem
When a Telegram topic/thread is not in the bound runtime state, image-like ingress should not create visible bot reactions. Today the media handlers can still respond to photos/image-equivalent payloads with unbound/bind guidance, which creates noise in topics that are not actively bound to a runtime.
Desired behavior
For Telegram image-equivalent ingress in an unbound/non-bind topic/thread:
- do not download the attachment;
- do not call
session_manager.send_to_window;
- do not show bind/unbound guidance in Telegram;
- do not open or mutate a bind flow;
- at most log/debug internally.
Bound topics keep the current behavior.
Scope
- Incoming
photo_handler images.
- Incoming
sticker_handler image-equivalent stickers/thumbnails.
- Do not change
ccbot send; it remains outbound Telegram delivery.
- Do not change
runtime-input / inject CLI semantics.
- Text/command bind flows should remain unchanged.
Acceptance criteria
- If
control surface -> thread/topic has no active binding/live writable window and is not in the explicit bind state, incoming photos return silently.
- Same silent behavior for sticker ingress.
- No Telegram warning/reply is emitted for these unbound image-equivalent updates.
- Existing bound photo/sticker delivery tests continue to pass.
- Add regression tests proving unbound photo/sticker messages do not call
safe_reply, do not download, and do not call send_to_window.
Notes
This is a noise-control follow-up to image/document/sticker ingress. The runtime payload contract stays unchanged: bound images still become (image attached: <path>).
Problem
When a Telegram topic/thread is not in the bound runtime state, image-like ingress should not create visible bot reactions. Today the media handlers can still respond to photos/image-equivalent payloads with unbound/bind guidance, which creates noise in topics that are not actively bound to a runtime.
Desired behavior
For Telegram image-equivalent ingress in an unbound/non-bind topic/thread:
session_manager.send_to_window;Bound topics keep the current behavior.
Scope
photo_handlerimages.sticker_handlerimage-equivalent stickers/thumbnails.ccbot send; it remains outbound Telegram delivery.runtime-input/injectCLI semantics.Acceptance criteria
control surface -> thread/topichas no active binding/live writable window and is not in the explicit bind state, incoming photos return silently.safe_reply, do not download, and do not callsend_to_window.Notes
This is a noise-control follow-up to image/document/sticker ingress. The runtime payload contract stays unchanged: bound images still become
(image attached: <path>).