Persistence and its boundaries
Persistence is useful only with boundaries. Without them, rules leak from one sub-task into the next, and old rules pile up. Maru keeps persistence but bounds it in three ways.
1. Rules stay with their task
Each rule remembers the request it came from. Before a new generation, the Rule Retriever drops rules that belong to a different task. Follow-ups like "sort these by price" keep the current task's rules; switches like "Moving on, now find gyms" leave them out. Rules written in the IA panel apply to the whole chat.
The Retriever then asks a small model whether each remaining rule would change the answer, and uses only rules that score high enough. If a score is missing, the rule is left out.
2. Only you confirm a rule
Maru keeps a history of how each rule was used and how you responded. Being used by the system never counts as approval. A rule gains support only when you confirm, edit, repeat, or restore it, and loses support when you say it didn't fit.
When you dislike a response, Maru asks which rules were wrong instead of blaming all of them.
3. Unused rules move down, but never disappear
As a task goes on, rules that stop shaping responses are ranked lower. This is counted in chat turns, not calendar time, so a rule is still valid after a week away. Maru never deletes a rule on its own; only you can archive one, and you can restore it later.
Each chat keeps its own rules, so nothing carries over between chats. Reusing rules across tasks is future work, which we discuss in our paper.
Exact values (for developers)
Retrieval runs three checks in order, and a rule must pass all three:
| Check | Rule is left out when |
|---|---|
| Archived | You archived or rejected it |
| Task scope | Its source request shares too few words with the current one, or the request signals a switch |
| Relevance | A small model scores it below 0.55, or the score is missing |
Confidence starts at 0.8. Confirming or repeating a rule adds 0.08, editing or restoring adds 0.04, saying it didn't fit a response subtracts 0.08, and rejecting it subtracts 0.35 and archives it.
Ranking subtracts a penalty for turns since the rule last shaped a response: none for the first 3 turns, half of the maximum after 9, approaching a maximum of 0.12. These are conservative defaults for the probe, not tuned values.
Limits. The task check reads words, not meaning, so it leans toward keeping rules. The ranking effect is small, since no rule is cut off by score. OpenAI is the tested model provider.