Add reconciliation: memory that repairs itself

  • Added reconciliation: memloom goes over its own store, repairs what SQL proves is wrong, folds duplicate entity names, and asks about the rest. Run it with memloom reconcile, preview it with memloom reconcile --dry-run, and take a whole run back with memloom reconcile undo <run id>. Retiring a memory means it goes stale, never deleted, so undo puts it back unless something else changed it first (docs)
  • Reconciliation has five passes, listed in cost order in the viewer's Settings tab. The two free ones are on and act on their own, because everything they do is undoable. The three that spend money are off until you turn them on: let a model resolve uncertain entity pairs, let a model resolve memory conflicts, and look for contradictions the save path could not see
  • The contradiction re-check finds pairs nothing ever compared. A save is only judged against the 5 nearest memories that existed at that moment, so a pair at rank 6 was never looked at by anything and nothing looked again. The re-check goes back over old beliefs against 20 neighbours, capped at 200 a run (about 55 cents), oldest first so the backlog drains with nothing skipped, and brings a belief back around after 30 days
  • Its findings arrive as possible contradictions rather than conflicts, in the Conflicts tab next to memory conflicts and duplicate entities. About 40 percent of them are real, so each one quotes the clashing sentence from both sides and waits for a yes or no. Confirming is what creates the conflict; dismissing means it is never raised again. memloom reconcile possible lists them in a terminal, and memloom reconcile yes <id> or memloom reconcile no <id> answers one
  • The daemon reconciles on its own: shortly after startup when the last run is more than 36 hours old, and when it has been quiet for a while. Automatic runs only ever use the free passes, so a run nobody watched can never spend money. Reconciliation also gets quieter rather than louder: ignore its findings and the next run surfaces fewer
  • The viewer's Settings tab drives all of it, with live progress for a long run, and the Console tab keeps every run in history with stop and undo
  • Set RECONCILE_ENABLED=0 in ~/.memloom/config.env on a host that wants the reports and none of the repairs. It is a kill switch, not an opt-in: reconciliation is on by default with its two free passes (docs)