Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
37dc091
feat: add durable community deletion worker
Jul 31, 2026
cee0f20
wip: checkpoint deletion remediation lanes
Jul 31, 2026
9855b97
test: cover deletion lifecycle safety boundaries
Jul 31, 2026
bf1ca3e
fix: harden deletion executor lease handling
Jul 31, 2026
c086eba
fix(relay): restore community write fence on persistent ingest
kalvinnchau Aug 1, 2026
ed0da94
fix: close community deletion serving-write races
Aug 1, 2026
be80ef9
fix(e2e): make live relay checks topology-correct
Aug 1, 2026
ee62fa2
fix(deletion): make community erasure resumable
Aug 2, 2026
6b2c5ef
fix(deletion): resume an uncheckpointed first object
Aug 2, 2026
1fcac0a
test(deletion): exercise crash resume through drained stage
Aug 2, 2026
1ec79f8
fix: preserve admitted git writes through quiescing
Aug 2, 2026
08c9ffd
fix: bind deletion approval to frozen inventory digest
Aug 2, 2026
5c58160
fix: bind community deletion execution to approval
Aug 2, 2026
9aff2db
test: derive owner-limit fixtures from production cap
Aug 2, 2026
34d0e62
chore: keep deletion regressions out of github actions
Aug 3, 2026
8f2585f
fix: freeze destructive deletion evidence
Aug 3, 2026
33f35ba
refactor: remove unused deletion retention scaffolding
Aug 3, 2026
01247b9
refactor: defer deletion worker helm packaging
Aug 3, 2026
858ce27
fix(deletion): support desired-state schema deployments
Aug 3, 2026
61cce19
fix: authorize nip-rs rows during community purge
Aug 3, 2026
8ff19fd
refactor: narrow community deletion to operator execution
Aug 3, 2026
6f90755
feat: scale community deletion to large tenant buckets
kalvinnchau Aug 3, 2026
b77f390
fix: close community deletion safety races
Aug 3, 2026
d5232b3
fix: scope community deletion storage inventory
Aug 3, 2026
a1bb3dd
fix: decouple deletion operator commands
Aug 4, 2026
0b9de2b
test: restore topology-safe live relay fixtures
Aug 4, 2026
4ce597e
fix: advance community deletion migration to 0028
Aug 4, 2026
a41133b
fix: decouple deletion compatibility from migrations
Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ members = [
"crates/buzz-test-client",
"crates/buzz-ws-client",
"crates/buzz-admin",
"crates/buzz-deletion",
"crates/buzz-workflow",
"crates/buzz-media",
"crates/buzz-cli",
Expand Down Expand Up @@ -134,6 +135,7 @@ schemars = { version = "1", default-features = false }
buzz-core = { path = "crates/buzz-core" }
buzz-conformance = { path = "crates/buzz-conformance" }
buzz-db = { path = "crates/buzz-db" }
buzz-deletion = { path = "crates/buzz-deletion" }
buzz-auth = { path = "crates/buzz-auth" }
buzz-pubsub = { path = "crates/buzz-pubsub" }
buzz-search = { path = "crates/buzz-search" }
Expand Down
1 change: 1 addition & 0 deletions crates/buzz-admin/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ path = "src/main.rs"

[dependencies]
buzz-db = { workspace = true }
buzz-deletion = { workspace = true }
buzz-core = { workspace = true }
buzz-auth = { workspace = true }
buzz-pubsub = { workspace = true }
Expand Down
19 changes: 19 additions & 0 deletions crates/buzz-admin/src/deletions.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//! Thin `buzz-admin deletions` adapter.

pub use buzz_deletion::Command as DeletionsCommand;

/// Delegate to the shared durable deletion engine.
pub async fn run(command: DeletionsCommand) -> anyhow::Result<i32> {
buzz_deletion::run(command).await
}

#[cfg(test)]
mod tests {
use clap::Parser;

#[test]
fn continuous_worker_command_is_not_exposed() {
let command = crate::Cli::try_parse_from(["buzz-admin", "deletions", "worker"]);
assert!(command.is_err());
}
}
8 changes: 8 additions & 0 deletions crates/buzz-admin/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
//! newest timestamp and collide on the bumped second. run.sh serialization is
//! the guard against parallel adds (e.g. `xargs -P`).

mod deletions;

use std::sync::Arc;

use anyhow::Result;
Expand Down Expand Up @@ -81,6 +83,11 @@ enum Command {
#[command(subcommand)]
command: ProductFeedbackCommand,
},
/// Durable CLI-only whole-community deletion control plane.
Deletions {
#[command(subcommand)]
command: deletions::DeletionsCommand,
},
/// Emit kind:39000/39002 events for channels missing them.
///
/// Channels created via direct SQL (seed scripts, pre-migration data) won't
Expand Down Expand Up @@ -148,6 +155,7 @@ async fn run(cli: Cli) -> Result<i32> {
Command::ProductFeedback {
command: ProductFeedbackCommand::List { limit },
} => cmd_list_product_feedback(limit).await,
Command::Deletions { command } => deletions::run(command).await,
Command::ReconcileChannels { relay_key } => {
reconcile_channels(relay_key).await?;
Ok(0)
Expand Down
Loading
Loading