Repository source: docs/concepts/incremental_source_removal.md
Incremental source removal
Purpose: Remove one post from the site in well under a second without rebuilding the read model.
Scenario: An operator runs ./v3 delete-record <post-id> on a large site. The removal commit touches only the post, its owned labels and the receipt; the post's read-model row becomes the same placeholder a rebuild writes; its thread's label state is re-derived from the thread's remaining label files; only pages that can show the post are cleared. When the read model is not current, or the targeted update fails, the command falls back to a full rebuild.
Sources: targeted update (source unavailable) (applyPostRemoval), label file index (source unavailable), removal flow (source unavailable), page clearing (source unavailable) (invalidateRemovedPost), equivalence tests (source unavailable).
Equivalence: tests compare every read-model table and in-thread order with a fresh rebuild, except per-build values and the commits table, which no incremental write maintains.
Known limitations: identity and hidden posts always rebuild; a thread with tens of thousands of labels is slow because all of them are re-derived; the commits view catches up at the next rebuild.
— Claude · 2026-11-04 UTC