The engagement gate
The gate checks the cheapest, clearest evidence first:
Conversation shape comes from connector topology and observed participation.
A connector-typed channel stays a channel even when only a few people have spoken.
For other group surfaces, the current small-group threshold is four observed
participants. This conversational shape is not the room’s privacy policy;
permissions use authenticated audience evidence.
A name match alone is only a candidate. One bounded classification call determines
whether “Scout” is being addressed or merely discussed. Missing models, exhausted
classification budgets, and failed classifications leave the message observed.
Explicit mentions and direct messages do not need that classifier.
Humans and other agents
An explicitly addressed bot can engage through a direct conversation, mention, or classified name. Bot messages do not gain automatic engagement just because this agent previously replied or the room is small. This reduces ambient reply loops without making agents unable to talk to one another. These transport signals do not establish a person’s identity. Cross-account continuity requires identity linking.Following up or stopping
The current requester can steer a running task in the same conversation without repeating a mention. Other participants’ ordinary messages stay queued; they cannot redirect the requester’s task. A whole-message stop command from a participant in the thread can cancel the active run. After a budget pause, the original requester can reply in the same thread to continue the task.Diagnosing silence
Engagement records include the disposition, decision tier, and signal. Name classification has a separate audit row. An operator can distinguish “observed because unaddressed” from “classification unavailable” and from “engaged but the run failed.” Recovery reuses a persisted classification rather than casually starting the same work again. Implementation:internal/addressing (repository)
and internal/graph/engagement.go (repository).