FlureeLabs

Updates and forgetting

Memories are updated in place. When you update a memory, the same ID is kept and only the changed fields are modified. History is tracked via git, not via internal versioning.

update modifies in place

fluree memory update mem:fact-01JDXYZ... --text "Tests use cargo nextest with --no-fail-fast"

Output:

Updated: mem:fact-01JDXYZ...

The memory keeps its original ID. The TTL file is rewritten with the new content, and git records what changed:

git diff .fluree-memory/repo.ttl
 mem:fact-01JDXYZ a mem:Fact ;
-    mem:content "Tests use cargo nextest" ;
+    mem:content "Tests use cargo nextest with --no-fail-fast" ;
     mem:tag "cargo" ;

forget retracts

forget is different from update. It retracts the memory's triples — the memory stops existing entirely.

fluree memory forget mem:fact-01JDXYZ...
Forgotten: mem:fact-01JDXYZ...

Rule of thumb:

You think...Use
"This was wrong from the start"forget
"This was right but the world changed"update
"I never want anyone to see this again"forget

History via git

Both update and forget rewrite the TTL file, and git tracks the full history. To see how a memory evolved:

git log -p .fluree-memory/repo.ttl

This shows every change — what was added, updated, or forgotten, and when.

Time-travel over memory history

If you want to query memory history with Fluree's time-travel capabilities, you can import your git-tracked memory history into a Fluree ledger:

fluree create my-memory-ledger --memory

This replays each git commit to .fluree-memory/repo.ttl as a Fluree transaction, giving you a full time-travel-capable ledger over your memory history. Use --no-user to exclude user.ttl from the import.