--- id: "f78737d1-1085-47f5-8d26-f7815320dcef" name: "Slack Demotion Signals" micro_summary: "Use `slack_get_demotion_signals(source=\"current\", limit=50)` to score visible Slack rows/messages into surface/review/quiet tiers with reasons." status: "resolved" see_also: [] scope: "Browser-visible Slack signals that help decide whether to surface, review, or demote a notification/message for ONEplace." --- ## Helper Use `slack_get_demotion_signals(source="current", limit=50, current_user=None)`. ```python import json signals = json.loads(slack_get_demotion_signals(source="activity", limit=20)) ``` ## Parameters - `source`: `"current"` scores visible Slack content; `"activity"` opens/scans Activity first. - `current_user`: optional display name to demote the user's own messages. - `limit`: maximum rows/messages to score. ## Returns JSON items with `signals.score`, `signals.tier`, and `signals.reasons`. Tiers are `surface`, `review`, or `quiet`; reasons are intended to be shown or logged as demotion/surfacing explanations. ## Usage stance Use this to support subtraction. A quiet tier is a demotion with an audit trail, not deletion. Review is the safe bucket for uncertainty. ## Verification 2026-06-01: `slack_get_demotion_signals(source="current", limit=3)` returned `ok=true`, `count=3`, and produced quiet/surface tiers with reasons.