Block and guidance directives
Most memory describes how things are. Two kinds direct what Connect does. A block stops contact with somebody on a channel and is carried as a tag, block:<channel>, because directives() reads the tag list and nothing else. A standing instruction is a durable direction written as the row's text, rendered into a draft or a call brief along with the rest of the tier.
A block is a tag, and that is the whole design#
Blocking is deliberately not a column on the contact. It is a connect_memory row against the person with block:<channel> in its tag list — never in the body, because directives() reads only the tags. That one decision buys three properties a column would not have given.
- It holds across channels. One row can name one channel or several, and the same mechanism answers for email, WhatsApp, SMS and voice.
- It holds across future conversations. It is not attached to a thread, so a new enquiry from the same person next year meets the same directive.
- It sits where a person already looks. A block appears in the memory viewer beside everything else known about that person, rather than in a settings screen nobody opens.
Where a block is enforced#
The point of enforcement is the outbound path, not the drafting step, which is what makes it hard to route around. On the phone, an outbound attempt goes through comms_providers.dispatch_call with a placer, so memory blocks, consent, autonomy and budget all gate it — a browser-placed call and a carrier call meet exactly the same set of gates.
| Mechanism | What it is | Who may lift it |
|---|---|---|
| Block | A tagged memory row against one person | Anyone in the workspace, by removing the tag or the row |
| Suppression / do-not-contact | A protection recorded against an address, with its origin | A person, and not casually; the Assistant cannot clear one at all |
Autonomy set to off | A channel-level permission, not a memory | Whoever administers autonomy for that scope |
| Guidance on a live call | The supervisor steering one conversation in progress | It ends with the call — it was never memory |
Those four get confused because all of them can stop a message. They are not interchangeable: a block is about one person, a suppression is about one address and carries a reason, autonomy is about a whole channel, and live guidance is about the next thirty seconds.
Standing instructions#
A standing instruction is a durable direction a person gives Connect: always copy this colleague, never quote a delivery date on this account, open in the customer's language. It lives as memory text at whichever tier it belongs to, and on the realtime voice path voice_engine.brief() renders the contact's facts and standing instructions into the brief once per call, alongside the persona, the line's purpose, the knowledge and the hard rules.
Because it is text, it competes for the character budget — 700 for memory, 600 for the contact block — and it is worth writing like an instruction rather than a paragraph of reasoning. "Always copy the operations manager" survives that budget. Three sentences explaining why may not, and the part that gets cut is not the part you would have chosen.
Writing one that works#
Decide whether you are stopping contact or shaping it. Stopping is a block; shaping is a standing instruction.
Result This picks the mechanism, and getting it wrong is why a politely worded note fails to stop anything.
For a block, set the tag for each channel it covers, on the contact.
Result Outbound on those channels is gated from the next piece of work onwards, on every path including a colleague's browser line.
For a standing instruction, write one imperative sentence at the narrowest tier where it is true.
Result It is read narrowest-first, so it outranks anything broader that speaks to the same subject, and it fits the budget.
Questions#
Does a block stop somebody contacting us?
No, and it is not meant to. It stops Connect initiating or replying on that channel. Inbound mail and inbound calls still arrive and are still recorded — a business usually wants to know that a blocked contact tried to reach it, particularly if the block was a mistake.
Can I block one channel and leave the others open?
Yes. The tag names the channel, so blocking voice while leaving email open is one tag rather than a special case. That is the ordinary shape of the request somebody makes when they say to stop ringing them but keep sending the statements.
Is a standing instruction the same as a rule?
No. Rules are the boundary the business sets and they constrain everything inside it; a standing instruction is a direction that operates within the boundary, at a tier. If the two disagree, the boundary wins and the instruction does not get to widen it.