carlos / platform Public

Per-app store buckets are unversioned; versioning needs a version-aware delete first Issue open

On branch design-carloku-durability

EnsureBucket (internal/objstore/aws.go:271-292, "Nothing here ever calls PutBucketVersioning", :197) creates carlos-store-* buckets with no versioning and no lifecycle. An overwrite or delete by the app is unrecoverable. The same goes for buckets a deployment adopts (Tito's titogo-uploads, PRO-6190).

The order matters. Once a bucket is versioned, the console's DeleteBucket path fails unless it first deletes every object version and delete marker. So:

  1. Make the console's store-delete path delete all versions and delete markers, then the bucket.
  2. Then turn on versioning in EnsureBucket, with a 30-day noncurrent-version expiry, and backfill existing and adopted buckets.

Design §5.7 (docs/superpowers/specs/2026-10-23-durability-design.md on this branch). Found by Tito's review on 2026-10-23.