Skip to content

Support community deletion in versioned media buckets - #6738

Merged
bradseiler merged 1 commit into
block:mainfrom
bradseiler:seiler/versioned-community-deletion
Aug 25, 2026
Merged

Support community deletion in versioned media buckets#6738
bradseiler merged 1 commit into
block:mainfrom
bradseiler:seiler/versioned-community-deletion

Conversation

@bradseiler

@bradseiler bradseiler commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • make community media deletion permanent through the version-aware v5 path by enumerating object versions/delete markers under existing tenant-owned prefixes, including never-versioned buckets that surface null version ids
  • preserve the S3 ListObjectVersions response stream order across interleaved object versions and delete markers, including marker-only keys, repeated keys, and dual-marker pagination
  • fail closed on truncated version-list pages unless both NextKeyMarker and NextVersionIdMarker are present before requesting the next page
  • freeze version-aware manifest entries as (key, version_id, kind), delete each entry by explicit version id, and verify absence with ListObjectVersions
  • close the reviewer-confirmed git repo announcement race by holding a durable serving-write lease across the external S3 manifest/pointer seed/ensure sequence, so deletion fencing/drain cannot freeze the final storage list before the pointer write completes
  • preserve existing deletion safety boundaries: approval/fence/checkpoint behavior, bounded batches, idempotent retry handling, and exclusion of shared fleet-wide CAS blobs
  • document the generic S3 permissions required for every v5 community deletion (s3:ListBucketVersions, s3:DeleteObjectVersion), including never-versioned buckets

Related issue

Buzz thread: buzz-deletion-requests / 9e4aabc6-414c-4978-aba7-b9f5228776de

Review feedback disposition

  • Helm/IAM docs now state s3:ListBucketVersions and s3:DeleteObjectVersion are prerequisites for every community deletion using the v5 path, including never-versioned buckets.
  • Added ignored live MinIO coverage for a never-versioned bucket: list via ListObjectVersions, assert the exact null version-id representation, delete that exact identifier through delete_object_versions, and prove final version-list emptiness.
  • Confirmed bucket_versioning_detected has no callers with rg -n "bucket_versioning_detected" -g '!target' -g '!desktop/src-tauri/target' .; removed the dead API rather than retaining an uncalled probe contract.
  • Reassessed delete_validate_and_checkpoint_manifest_chunk_with: removed the one-call-site generic seam, inlined the production delete/validate/checkpoint sequence, kept a small extracted object_versions_from_manifest_chunk plus existing validation/detail helpers, and preserved the deterministic partial-ack-before-checkpoint regression.
  • Validated legacy v4 resume by adding focused coverage that v4 manifest chunks still decode bare keys for unversioned delete replay. Validated v5 manifest canonicalization/retry stability with focused DB tests for canonical v5 inventory digest round-trip and repeated validation of the same version-entry chunk stream.
  • S3 delete permission preflight remains deliberately list-only: ListObjectVersions can be proven non-destructively before fencing; exact DeleteObjectVersion has no safe dry-run and remains an operator/IAM provisioning contract that the live destructive MinIO tests exercise.

Testing

Exact head: 8b68f8af24f01ca7dbf8ad5c1d2206adef17e362

  • cargo fmt --check — passed
  • git diff --check — passed
  • cargo test -p buzz-deletion -p buzz-media -p buzz-relay -- --test-threads=1 — passed serial package suite at exact head (buzz-relay lib: 910 passed / 48 ignored; buzz-relay main: 11 passed; doctests ok)
  • docker compose up -d minio minio-init postgres redis
  • cargo test -p buzz-relay --lib api::git::transport::track_c_tests::repo_announcement_holds_serving_lease_until_pointer_is_seeded -- --ignored --nocapture — 1 passed; proves repo announcement holds the serving lease until pointer seed completes and deletion fencing/drain waits
  • cargo test -p buzz-media --test versioned_minio -- --ignored --nocapture — 2 passed; verifies never-versioned null version ids, exact null-version delete, dual-marker pagination, explicit version delete/retry, marker-only delete-marker retention/removal, suspended-versioning handling when supported, and final ListObjectVersions emptiness against Docker MinIO
  • just test — passed full unit + integration suite after temporarily stopping the pre-existing Homebrew Redis service on 127.0.0.1:6379; Homebrew Redis was restored afterward and verified listening on 127.0.0.1:6379 / [::1]:6379
  • git push --force-with-lease brad HEAD:seiler/versioned-community-deletion — pre-push hooks passed, including rust-tests and desktop-tauri-checks

Notes:

  • Destination safety checked before push: source block/buzz is public OSS in the allow-listed block org; bradseiler/buzz is a real fork of block/buzz, so updating the PR fork is within the public OSS fork workflow.
  • The earlier parallel/global-state telemetry callsite failure is not claimed as a product failure; the package suite was rerun serially at the pushed head and passed.

@bradseiler
bradseiler force-pushed the seiler/versioned-community-deletion branch from 1f86881 to 75a70ec Compare August 25, 2026 00:02
@bradseiler
bradseiler marked this pull request as ready for review August 25, 2026 00:09
@bradseiler
bradseiler requested a review from a team as a code owner August 25, 2026 00:09
Co-authored-by: Brad Seiler <seiler@squareup.com>
Signed-off-by: Brad Seiler <seiler@squareup.com>
@bradseiler
bradseiler force-pushed the seiler/versioned-community-deletion branch from 75a70ec to 8b68f8a Compare August 25, 2026 01:03
@bradseiler
bradseiler enabled auto-merge (squash) August 25, 2026 14:00
@bradseiler
bradseiler merged commit d12dea4 into block:main Aug 25, 2026
56 of 58 checks passed
wpfleger96 pushed a commit that referenced this pull request Aug 25, 2026
…picker

* origin/main:
  highlight search terms in results and messages (#6702)
  fix(desktop): make lightbox zoom controls interactive (#6710)
  Support community deletion in versioned media buckets (#6738)
  Fix TipTap editor mount race (#6779)
  feat(buzz-agent): gate LLM tool calls on session/request_permission (#5712)

Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
wpfleger96 pushed a commit that referenced this pull request Aug 25, 2026
…arer-auth

* origin/main:
  highlight search terms in results and messages (#6702)
  fix(desktop): make lightbox zoom controls interactive (#6710)
  Support community deletion in versioned media buckets (#6738)

Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
wpfleger96 pushed a commit that referenced this pull request Aug 25, 2026
…-history

* origin/main:
  Add database pressure observability (#6700)
  revert fixed mention highlight (#6716)
  highlight search terms in results and messages (#6702)
  fix(desktop): make lightbox zoom controls interactive (#6710)
  Support community deletion in versioned media buckets (#6738)
  Fix TipTap editor mount race (#6779)
  feat(buzz-agent): gate LLM tool calls on session/request_permission (#5712)
  Add staging dev relay image workflow (#6709)

Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
wpfleger96 pushed a commit that referenced this pull request Aug 25, 2026
…esktop

* origin/main:
  Add database pressure observability (#6700)
  revert fixed mention highlight (#6716)
  highlight search terms in results and messages (#6702)
  fix(desktop): make lightbox zoom controls interactive (#6710)
  Support community deletion in versioned media buckets (#6738)
  Fix TipTap editor mount race (#6779)
  feat(buzz-agent): gate LLM tool calls on session/request_permission (#5712)
  Add staging dev relay image workflow (#6709)

Signed-off-by: Hayt <9e1c23a3fd83f61da34420e4e88ff1b16e45cafcc0cd9019eb07d4ecfa8ca9b0@buzz.block.builderlab.xyz>
wpfleger96 added a commit that referenced this pull request Aug 25, 2026
* origin/main:
  fix(desktop): make lightbox zoom controls interactive (#6710)
  Support community deletion in versioned media buckets (#6738)

Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
loganj added a commit that referenced this pull request Aug 25, 2026
…trigger-foundation

* origin/main:
  Add database pressure observability (#6700)
  revert fixed mention highlight (#6716)
  highlight search terms in results and messages (#6702)
  fix(desktop): make lightbox zoom controls interactive (#6710)
  Support community deletion in versioned media buckets (#6738)
  Fix TipTap editor mount race (#6779)
  feat(buzz-agent): gate LLM tool calls on session/request_permission (#5712)
  Add staging dev relay image workflow (#6709)

Signed-off-by: Logan Johnson <loganj@squareup.com>
kursmark-sq added a commit to kursmark-sq/buzz that referenced this pull request Aug 25, 2026
Co-authored-by: Matt Kursmark <kursmark@squareup.com>

Signed-off-by: Matt Kursmark <kursmark@squareup.com>

* origin/main: (21 commits)
  feat: navigate images across message threads (block#6705)
  Add database pressure observability (block#6700)
  revert fixed mention highlight (block#6716)
  highlight search terms in results and messages (block#6702)
  fix(desktop): make lightbox zoom controls interactive (block#6710)
  Support community deletion in versioned media buckets (block#6738)
  Fix TipTap editor mount race (block#6779)
  feat(buzz-agent): gate LLM tool calls on session/request_permission (block#5712)
  Add staging dev relay image workflow (block#6709)
  Extract community persistence (block#6668)
  Fix mobile Huddle agent voice turn states (block#6611)
  Add inline profile camera capture (block#6680)
  Hide Huddles in mobile agent DMs (block#6676)
  fix(desktop): polish inline chip states (block#6718)
  Centralize replaceable event persistence (block#6660)
  feat(workflows): discover trigger filter values (block#6712)
  feat(desktop): simplify the message action rail (block#6529)
  fix(desktop): restore icon-only remote marker (block#6491)
  fix(ci): prevent poisoned Rust caches (block#6618)
  docs(security): route reports through private advisories (block#6728)
  ...

Signed-off-by: Matt Kursmark <kursmark@squareup.com>
loganj added a commit that referenced this pull request Aug 25, 2026
…trigger-foundation

* origin/main:
  Add database pressure observability (#6700)
  revert fixed mention highlight (#6716)
  highlight search terms in results and messages (#6702)
  fix(desktop): make lightbox zoom controls interactive (#6710)
  Support community deletion in versioned media buckets (#6738)
  Fix TipTap editor mount race (#6779)
  feat(buzz-agent): gate LLM tool calls on session/request_permission (#5712)
  Add staging dev relay image workflow (#6709)

Signed-off-by: Logan Johnson <loganj@squareup.com>
wpfleger96 pushed a commit that referenced this pull request Aug 25, 2026
…r-contracts

* origin/main:
  Qualify canonical relay images for staged delivery (#6781)
  feat(desktop): persist agent addressing across composer messages (#6714)
  feat: navigate images across message threads (#6705)
  Add database pressure observability (#6700)
  revert fixed mention highlight (#6716)
  highlight search terms in results and messages (#6702)
  fix(desktop): make lightbox zoom controls interactive (#6710)
  Support community deletion in versioned media buckets (#6738)
  Fix TipTap editor mount race (#6779)
  feat(buzz-agent): gate LLM tool calls on session/request_permission (#5712)
  Add staging dev relay image workflow (#6709)

Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
@kirkawolff

Copy link
Copy Markdown

On v0.5.18, first remove member from community. Then member attempts to remove community from their buzz desktop client. They are unable because they do not have permission to contact the community.

salman1993 added a commit that referenced this pull request Aug 26, 2026
…cp-sessions

* origin/main: (31 commits)
  fix(desktop): stop pulsing addressed agents on send (#6873)
  fix(desktop): prioritize sidebar channel status (#6861)
  feat(desktop): hyperlink selected composer text on link paste (#6684)
  chore(release): release Buzz Desktop version 0.5.20 (#6839)
  feat(desktop): add KLIPY GIF search to composers (#5554)
  fix(desktop): respect automatic mention preference after send (#6837)
  fix(release): attribute desktop candidates to the operator (#6831)
  fix(ci): check out source in docker.yml merge job (#6833)
  chore(release): release Buzz Desktop version 0.5.19 (#6828)
  Remove public relay signing key fallback (#6729)
  docs(nest): make commit attribution policy-neutral (#6707)
  fix(desktop-messages): preserve inline agent mentions with persistent addressing (#6793)
  Qualify canonical relay images for staged delivery (#6781)
  feat(desktop): persist agent addressing across composer messages (#6714)
  feat: navigate images across message threads (#6705)
  Add database pressure observability (#6700)
  revert fixed mention highlight (#6716)
  highlight search terms in results and messages (#6702)
  fix(desktop): make lightbox zoom controls interactive (#6710)
  Support community deletion in versioned media buckets (#6738)
  ...

Signed-off-by: Salman Mohammed <smohammed@squareup.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants