taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit 256705655f05c1eccf650e10582741a44b1d640d
parent 6fd5dd13117c2aeb4900eb82763dbba33a942ccb
Author: Iván Ávalos <avalos@disroot.org>
Date:   Mon,  3 Aug 2026 16:39:32 +0200

dd92: add deletion paragraph

Diffstat:
Mdesign-documents/092-incremental-backup-sync.rst | 18+++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/design-documents/092-incremental-backup-sync.rst b/design-documents/092-incremental-backup-sync.rst @@ -1646,6 +1646,17 @@ backup that was previously deleted by another wallet, an item is deemed deleted iff it no longer appears in any of its origin blocks, allowing it to be safely removed from the local database as well. +Mechanically, a wallet deletes an item by scrubbing its increments out of the +pending buffer and rewriting every origin block that still carries them: a +block that keeps other content is replaced in place (``PUT``, under its +original nonce), one that becomes empty is removed from the linked list +(``DELETE``, relinking its neighbours). A block rewritten in place keeps its +nonce, so the other wallets detect the change only by noticing that the +block's hash no longer matches their local copy; a deleted block shows up as a +gap in the linked list. On either signal a wallet re-applies the whole linked +list and drops every item that no longer appears in any origin block, which is +what makes deletions propagate across the sync group. + Deletion groups ~~~~~~~~~~~~~~~ @@ -1913,9 +1924,10 @@ Definition of done * [x] Design wallet-core API. * [ ] Wallet-core implementation (block and blob encoding, CRDT merge, sync protocol client and signatures, increment collection, the scheduled backup - cycle with its pull/merge/apply half, the API request handlers and the - account payment flow are done; item deletion and the remaining increment - types still missing). + cycle with its pull/merge/apply half, the API request handlers, the account + payment flow and item deletion (retro-redaction of the ``originBlocks`` plus + the pull-side "deleted iff absent from all origin blocks" sweep) are done; + the remaining increment types still missing). * [x] Design sync API (+ auth). * [ ] Server-side implementation (partial: block GET/POST/PUT/DELETE, object store GET/POST with reference counting, /config and payments done;