# Correcting a fact without leaving the Assistant

Ask the Assistant to remember something and it writes a memory at one of four tiers — workspace, channel, endpoint or contact — through the memory service rather than into the conversation. That is what the engine reads when it drafts and decides. Asking it to forget removes the entry at the tier holding it, and the decision log keeps both events.

- **Status:** Available
- **Audience:** both
- **In the app:** #/knowledge, #/relationships, #/maya-rules
- **Last verified:** 2026-09-10
- **Canonical:** https://connectbyjbrh.com/docs/assistant/assistant-memory/

## Choosing the tier

Memory resolves narrowest-first, exactly as autonomy does, so where a correction lands decides how far it reaches. Getting this right is most of the skill in using it.

| Tier | Applies to | A correction that belongs here |
|---|---|---|
| Workspace | Everything Connect does for this business | How the business refers to itself; a standing fact about opening hours |
| Channel | One of email, WhatsApp, SMS or voice | A convention that holds on that channel and nowhere else |
| Endpoint | One mailbox or one phone number | This mailbox handles accounts only; that number is the service line |
| Contact | One person | This person prefers WhatsApp; their name is spelled this way; they have asked not to be called before noon |

The narrowest applicable tier is nearly always the right one. A workspace-tier memory that should have been a contact-tier one is the commonest way a correction over-reaches — it silently changes behaviour for everyone to fix something about one person. Asking for a correction 'for this contact' rather than in general is worth the extra three words.

> **Note** When memory is consulted, every tier answers — including the empty ones. 'Nothing is set at this tier' is returned rather than dropped, so you can tell a deliberate silence from an oversight.

## Memory, knowledge, and a rule are three different things

**Memory** — Something Connect was told, held at a tier. Written by `remember`, removed by `forget`, readable and editable by a person at every tier.
**Knowledge** — A source the workspace supplies, from which facts are drawn. Answers are grounded in it. Added by `add_knowledge` — a document, not a note.
**Standing instruction** — A durable direction rather than a fact: how to behave, not what is true. Set deliberately, and read as a rule.
**Autonomy** — Not knowledge at all — permission. What Connect may do on a channel without asking, resolved at four scopes.

Correcting the wrong one of those produces the frustrating outcome where the Assistant agrees with you and nothing changes. 'Always cc the accounts mailbox' is a rule, not a fact, and writing it as a contact memory will not make it happen reliably.

## How a block is stored, and why it is worth knowing

Asking Connect not to contact somebody on a channel is a memory, not a column on the contact. It is stored as a tag — `block:<channel>` — in the memory entry's tag list, and the directive reader looks only at tags. Writing the instruction in the body of a note would read perfectly to a person and be invisible to the thing enforcing it.

The consequence is the useful part: because it is a tagged memory rather than a field on one conversation, a block holds across channels and across future conversations, including ones with a contact who writes in from a new address later. It is a fact about the person, not a state of a thread.

> **Careful** A block is not the same as a do-not-contact suppression. The Assistant can write a block; it cannot clear a do-not-contact entry under any circumstances. If a request to 'unblock' is refused, that is which of the two you are looking at — see [What the Assistant may not do](/docs/assistant/assistant-authority/).

## Correcting well

1. Say the corrected fact plainly, and say who or what it applies to.
   - Result: The proposal shows the tier it would land at. Check that line before confirming — it is the part that decides the blast radius.
2. If an old entry contradicts the new one, forget it rather than layering over it.
   - Result: Two memories at the same tier saying different things is a conflict somebody will meet later — see [When sources disagree](/docs/assistant/source-conflict/).
3. Check it in the memory viewer, which is reachable from the mailbox row, the channel screen and the contact panel.
   - Result: You see what Connect holds at every tier, and can remove any of it yourself without going through the Assistant at all.
4. Re-ask the question that was wrong.
   - Result: The answer now cites the corrected memory. If it does not, the correction landed somewhere other than where the answer is drawn from.

## Questions

### Why did telling the Assistant not fix anything?

Because saying it in conversation is not the same as recording it. The engine that drafts replies reads memory, knowledge and rules — never your chat. Ask for it to be remembered, confirm the proposal, and check the tier it landed at.

### Can I see everything Connect knows about one person?

Yes. The memory viewer shows every tier that applies, empty tiers included, and anything there can be forgotten. It opens from the contact panel as well as from the channel and mailbox screens.

### Does forgetting erase the history?

It removes the entry, so it stops shaping behaviour. The decision log still holds that it was written and that it was removed, which is what makes a later 'why did it start doing that?' answerable.

## Related

- [Memory in Connect](https://connectbyjbrh.com/docs/memory/)
- [Conversation history](https://connectbyjbrh.com/docs/assistant/history/)
- [Making a correction actually change behaviour](https://connectbyjbrh.com/research/memory-correction-that-sticks/)
- [Structured business memory instead of a longer prompt](https://connectbyjbrh.com/research/structured-business-memory/)
- [Knowledge in Connect](https://connectbyjbrh.com/docs/knowledge/)
- [When the Assistant finds two answers](https://connectbyjbrh.com/docs/assistant/source-conflict/)
- [What Connect may do](https://connectbyjbrh.com/docs/autonomy/)

## What this page is based on

- `docs-source/sources/GENERAL.md` §6 — four tiers, `tiers()`, `directives()` and the `block:<channel>` tag
- `docs-source/sources/GENERAL.md` §3 — blocking is deliberately not a column
- `docs-source/sources/GENERAL.md` §8 — `remember`, `forget`, `add_knowledge`
- Connect capability registry (`docs-source/facts.py`) — `memory_tiers`, `memory_editing`, `block_directive`
