Tombstones
Deletion memory that prevents re-add loops and enables safer delete propagation in two-way sync.
What a tombstone is (in this codebase)
Why tombstones exist
Storage format
Reading tombstones
keys_for_feature(state_store, feature, pair) -> dict[str, dict]
keys_for_feature(state_store, feature, pair) -> dict[str, dict]TTL (how long tombstones are “active”)
Writing tombstones on successful removals
One-way
Two-way
Observed deletions (two-way) → tombstones
How tombstones block re-adds (and where)
1) Two-way planning
2) apply_blocklist(...) for adds (non-watchlist)
apply_blocklist(...) for adds (non-watchlist)Matching logic: token vs item
Manual operations (practical)
Inspect tombstones for a pair+feature
Remove a single tombstone
Nuke tombstones for one pair+feature
Nuke all tombstones
Common “why is X not syncing?” causes
Related pages
Last updated
Was this helpful?