Forgetting with proof
Published 2026-10-15 by Jepela
When a customer asks you to forget something, you need to know it is gone from what your decisions read, not only from a table.
Where facts live in Jepela
Jepela keeps what you know about a subject in that subject's memory: lines of text and rules, held in RAM and flushed to disk. A decision that names the subject recalls the lines that touch the state, places them before it, and lists the lines it used. The engine is not trained on these lines. So a fact removed from the memory is not read by any later decision.
That is also why facts about a person belong in memory and not in training. Fine-tuning learns how you decide across all cases; a memory line can be forgotten at once.
What forget does
POST /v1/memory/forget
{"subject": "hero", "concept": "Coin Hall plain stair"}
The call works in two steps:
- It removes every line that contains all the content words of the concept, and every rule whose text does.
- It asks recall again: with the concept, with questions built from it, and with the rest of each removed line.
verified_forgotten is true only when none of those asks returns a line that still holds all the concept's content words, and no rule still holds them. If one does, leaks lists it and verified_forgotten stays false.
delete removes a whole subject, its lines and its rules, from RAM and disk. Both calls take effect at once. delete also takes the subject's requests, and their results, out of your batches.
In the Jepela Dungeon demo, after "In the Coin Hall, the hero always goes down the narrow plain stair." was forgotten, the next decision took the gold coins again, as it did before the lesson was written.
A measured run
The forgetting cookbook (2026-09-23, jepela-english) wrote three lines about a customer, Fabrikam. One was a contact's opt-out from marketing mail. It then asked two questions about a launch mail: should it be sent, and has the contact opted out.
| Step | Lines stored | Send | Opt-out known |
|---|---|---|---|
| after remember | 3 | 0.09 | 0.66 |
| after forget, verified | 2 | 0.14 | 0.16 |
| after delete | 0 | 0.68 | 0.15 |
After the forget, the opt-out line was no longer among the lines the engine saw, and the opt-out answer dropped from 0.66 to 0.16.
The run also shows a limit we publish. The two lines left, about invoices and support tickets, had nothing to do with mail, yet they held the send answer at 0.14, against 0.68 with no memory at all. Lines can move an answer just by being there. Keep a subject's memory to what matters for its decisions, and check with compare and placebo.
What stays after forget and delete
Forgetting is precise about what it covers. These are kept:
- Your ledger keeps the subject id on each priced request.
- Golden cases keep the requests that named the subject, until you delete them.
- Fine-tuning jobs keep the cases they trained on, with the lines the subject's memory recalled for them, until you delete the model with
POST /v1/finetune/delete. What a model learned from them stays in it until then. - After
forget, batches you ran before it keep their requests and results, with the lines those decisions recalled, until the batch is deleted 30 days after upload.deletetakes the subject's requests out of your batches at once. - After
forget, the subject's aliases stay as they are; change them withPOST /v1/memory/aliases. - Decision records for quality reports keep question ids, a hash of each question and the probabilities for 30 days, never the state or the question text.
POST /v1/decisions/delete removes every decision record and label of your tenant, and POST /v1/golden/delete removes golden cases. Because the ledger keeps subject ids, choose ids that do not name a person.
Using it when someone asks to be forgotten
- Keep facts about a person in memory lines, not in prompts you store or in training cases.
- Call
forgetfor one fact, ordeletefor the whole subject. - Keep the
verified_forgottenresult, and anyleaks, with the request. - Delete golden cases that named the subject, and any fine-tuned model trained on them.
- Ask the next decision with
compareon: it lists the lines it used, and the forgotten one is not among them.