S3 Lifecycle Rules on a Content-Addressed Store: Time as a First-Class Dimension

Lifecycle rules are the first feature that makes momo delete data on a schedule rather than on request β€” which turns age, storage class, and delete markers into correctness problems. This post walks through the expiration and transition engine, why a background worker is the only safe place to run it, and how expiration composes with versioning’s delete markers.

πŸ› ARCHITECTUREβ€’STORAGEβ€’October 21, 2026β€’5 min

R2: Degraded-Read Survivor Fallback and Self-Heal

When a local replica is corrupted or missing, degraded read fetches from healthy survivors transparently, while a background rebuild loop restores cluster redundancy.

πŸ› ARCHITECTUREβ€’DURABILITYβ€’August 27, 2026β€’7 min

R1: Failure-Domain-Aware Placement

Replicas must not ride in the same rack: CRUSH weights become rack/zone/DC-aware so a single domain failure can’t lose the data.

πŸ› ARCHITECTUREβ€’DURABILITYβ€’August 26, 2026β€’7 min

Reducing Read-Verify Hashing: Trust Earned by Real Verification

Verify-on-read re-hashes the full object on every local read (~8x slower than write). A ReadVerifier seam skips re-verification for blobs verified this process, while scrub still catches bitrot.

🐞 ISSUE FIXβ€’PERFORMANCEβ€’August 26, 2026β€’7 min

Perf Profiling Baseline: Measure Before You Optimize β€” and Keep pprof Off the Wire

Phase-0 profiling harness via go test -cpuprofile/-memprofile; Rule 75 forbids networked pprof on unauthenticated listeners. The baseline proved stdlib SHA-256 already uses AVX2.

πŸ› ARCHITECTUREβ€’PERFORMANCEβ€’August 26, 2026β€’3 min

Seams, Not Plugins: A Fast Path That Stays Concrete

Adaptive behaviors use compile-time Go interface seams injected at decision points β€” not dynamic plugins. The fast path stays concrete; the trust core stays auditable; policy is declarative.

πŸ› ARCHITECTUREβ€’GOVERNANCEβ€’August 26, 2026β€’3 min

R5 Metrics Phases 2-4: Storage, P2P, and Latency Histograms

R5 Phases 2-4 shipped: storage metrics (disk, CAS, GC), P2P metrics (SWIM, leases, scatter-gather), and opt-in latency histograms β€” all with <1% overhead via sync/atomic counters.

πŸ› ARCHITECTUREβ€’METRICSβ€’August 25, 2026β€’4 min

S3 501 Discipline: Remaining Ops β€” SelectObjectContent, UploadPartCopy, Analytics, Inventory, Metrics, Intelligent-Tiering

Final 501 sweep: SelectObjectContent, UploadPartCopy, analytics, inventory, metrics, intelligent-tiering now return honest 501 NotImplemented.

🐞 ISSUE FIXβ€’S3β€’August 24, 2026β€’3 min

S3 501 Discipline: Object-Level Subresources (tagging, acl, versionId, retention, legal-hold)

5 object-level query parameters now return honest 501 NotImplemented instead of silently falling into GetObject/PutObject/DeleteObject.

🐞 ISSUE FIXβ€’S3β€’August 24, 2026β€’3 min

S3 501 Discipline: Honest 'Not Implemented' for 16 Bucket Config Subresources

16 bucket config subresources (versioning, ACL, policy, CORS, lifecycle, etc.) now return honest 501 NotImplemented instead of silently misrouting to ListObjects/GetObject.

🐞 ISSUE FIXβ€’S3β€’August 24, 2026β€’4 min