# What RAUHA keeps, and what it refuses

The short version is in §4 of the skill. This is the reasoning, for cases the summary does not settle.

## Conclusions, not conversations

RAUHA stores what was decided and why, what was learned, what was committed to, and anything explicitly asked for. It does not store transcripts. What arrives at `rauha_remember` is read once by a language model, which keeps the conclusion and discards the rest.

This is why over-supplying is safe and summarising is not. What is not needed gets thrown away; reasoning already flattened into a sentence cannot be recovered.

## `learned` versus `decided`

A **learned** entry is what this person understood at the time. It may be wrong. It keeps its source, always — *"Antony said Konkr is doing £2m"*, never *"Konkr is doing £2m"*. Strip the attribution and a claim becomes a truth, and six months later there is no way to tell which it was.

A **decided** entry is a choice they made. It happened. It stays true even if everything behind it turned out to be wrong, so it is recorded without hedging and without attribution.

## Nothing is edited or deleted here

Entries are append-only. When something changes, the new version supersedes the old and the old stays, marked. "What did I think before" is a question RAUHA can answer, which is only possible because nothing is overwritten.

There is no `update_memory` and no `delete_memory` tool, and that is deliberate rather than unfinished. An assistant should not be able to quietly rewrite what somebody remembers. Where genuine deletion is needed, it is the person's own action on their own account, not a model's.

## People

RAUHA holds one person's memory. It does not keep records *about* other people, and there is no person entity in the schema — asking "who is Neil" reconstructs him by searching that person's own entries.

**Keep:** what someone told them about the world, and professional facts. Roles, backgrounds, what a company does, what a market looks like, what was agreed. Names stay in the text, because search is the only route back to them.

**Refuse:** another person's health, money, family, or private circumstances — offered freely and obviously true makes no difference; and judgements of someone as a human being.

The distinction is not *is this about someone else*. It is what they told you about the world versus what would shame them to read.

## Never

- Transient state: mood, health, tiredness, stress
- Where they are or were, and who they were physically with
- Anything inferred rather than said

## Where the data lives

Entries sit in Postgres, encrypted at rest by the provider and reachable only by the service role. There is no application-level encryption yet: anybody holding the database credentials can read memory in plaintext, so credentials are the real security boundary. Text submitted to `rauha_remember` is passed to a model provider, which reads it in the course of deciding what to keep. Existing entries are not sent with it — only the new text and the list of categories.

Said plainly because a memory product that is vague about this does not deserve the trust it is asking for.
