This is the shortest page here and the most important. Skipping it is how a memory becomes a junk drawer.
Sandra connects facts using verbs: impacts, blocks, supersedes. If everyone uses the same verbs,
you can ask real questions. If they do not, you cannot.
Imagine three people record the same kind of fact:
Payment rewrite impacts mobile-app
Auth change affects mobile-app
Cache fix impacts_the mobile-app
Now ask "what impacts the mobile app?" You get one answer out of three. The other two facts are in there, correctly recorded, and effectively invisible.
Nothing broke. No error appeared. The memory just quietly stopped being trustworthy — which is worse, because you will believe the incomplete answer.
Look before you invent. Before using a new verb, check whether one already means that. Reuse it if so.
This is a habit you ask of your assistant, and it is the single instruction most worth putting in your
project's CLAUDE.md. Sandra makes it possible — there is a tool for exactly this check — but it
cannot enforce it.
Put the specificity in the target, not the verb.
| Instead of | Use |
|---|---|
impacts_mobile_app |
impacts → mobile-app |
blocks_release_23 |
blocks → Release 2.3 |
decided_by_alice |
decided_by → Alice |
A generic verb works everywhere and grows a useful set of answers. A specific one is used once and answers exactly one question.
Rule of thumb: a verb you will only ever use once is probably wrong.
Even if your project runs in another language. Verbs, labels and type names in English; the content — titles, descriptions, notes — in whatever language you work in.
This is not about preference. It keeps one vocabulary rather than two, and AI models reason more reliably over consistent English relationship names.
Decision
title: Le paiement passe par un nouvel endpoint <- your language
...
that decision impacts mobile-app <- always English
Most teams need fewer verbs than they expect. A workable starting set:
| Verb | Meaning |
|---|---|
impacts |
a change affects something |
blocks |
one thing prevents another |
supersedes |
this replaces an earlier thing |
decided_by |
who made the call |
provided_by / consumed_by |
which side of a contract |
belongs_to_module |
which part of the system |
relates_to |
a catch-all, used sparingly |
Add more when you actually need them, not in advance.
It is recoverable. Duplicate concepts can be merged, so affects and impacts_the can be folded into
impacts and the facts recorded under them are preserved. Better to notice at fifty facts than five
thousand.
Merging is deliberately not something an agent can do. Ask whoever runs your Sandra to run:
php artisan sandra:concept:merge affects impacts
It prints what it is about to move and asks for confirmation first. The merged-away word stops existing for everyone sharing the graph, and re-running does not undo it — which is exactly why a person decides rather than an assistant.
Next: Recipes.