<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Sentinel on Momo Engineering Journal</title><link>/tags/sentinel/</link><description>Recent content in Sentinel on Momo Engineering Journal</description><image><title>Momo Engineering Journal</title><url>/images/og-image.png</url><link>/images/og-image.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 28 Oct 2026 17:47:15 -0600</lastBuildDate><atom:link href="/tags/sentinel/index.xml" rel="self" type="application/rss+xml"/><item><title>S3 Lifecycle Rules on a Content-Addressed Store: Time as a First-Class Dimension</title><link>/posts/058-s3-lifecycle-on-cas/</link><pubDate>Wed, 21 Oct 2026 03:35:13 +0000</pubDate><guid>/posts/058-s3-lifecycle-on-cas/</guid><description>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&amp;rsquo;s delete markers.</description></item><item><title>R2: Degraded-Read Survivor Fallback and Self-Heal</title><link>/posts/020-r2-degraded-read-self-heal/</link><pubDate>Thu, 27 Aug 2026 10:14:18 +0000</pubDate><guid>/posts/020-r2-degraded-read-self-heal/</guid><description>When a local replica is corrupted or missing, degraded read fetches from healthy survivors transparently, while a background rebuild loop restores cluster redundancy.</description></item><item><title>R1: Failure-Domain-Aware Placement</title><link>/posts/019-r1-failure-domain-placement/</link><pubDate>Wed, 26 Aug 2026 23:52:57 +0000</pubDate><guid>/posts/019-r1-failure-domain-placement/</guid><description>Replicas must not ride in the same rack: CRUSH weights become rack/zone/DC-aware so a single domain failure can&amp;rsquo;t lose the data.</description></item><item><title>Reducing Read-Verify Hashing: Trust Earned by Real Verification</title><link>/posts/043-reduce-read-verify-hashing/</link><pubDate>Wed, 26 Aug 2026 19:00:59 +0000</pubDate><guid>/posts/043-reduce-read-verify-hashing/</guid><description>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.</description></item><item><title>Perf Profiling Baseline: Measure Before You Optimize — and Keep pprof Off the Wire</title><link>/posts/042-perf-profiling-baseline/</link><pubDate>Wed, 26 Aug 2026 17:46:56 +0000</pubDate><guid>/posts/042-perf-profiling-baseline/</guid><description>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.</description></item><item><title>Seams, Not Plugins: A Fast Path That Stays Concrete</title><link>/posts/044-plugin-seam-architecture/</link><pubDate>Wed, 26 Aug 2026 16:45:18 +0000</pubDate><guid>/posts/044-plugin-seam-architecture/</guid><description>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.</description></item><item><title>R5 Metrics Phases 2-4: Storage, P2P, and Latency Histograms</title><link>/posts/032-r5-metrics-phases-2-4/</link><pubDate>Tue, 25 Aug 2026 03:25:22 +0000</pubDate><guid>/posts/032-r5-metrics-phases-2-4/</guid><description>R5 Phases 2-4 shipped: storage metrics (disk, CAS, GC), P2P metrics (SWIM, leases, scatter-gather), and opt-in latency histograms — all with &amp;lt;1% overhead via sync/atomic counters.</description></item><item><title>S3 501 Discipline: Remaining Ops — SelectObjectContent, UploadPartCopy, Analytics, Inventory, Metrics, Intelligent-Tiering</title><link>/posts/035-s3-501-discipline-remaining-ops/</link><pubDate>Mon, 24 Aug 2026 21:44:12 +0000</pubDate><guid>/posts/035-s3-501-discipline-remaining-ops/</guid><description>Final 501 sweep: SelectObjectContent, UploadPartCopy, analytics, inventory, metrics, intelligent-tiering now return honest 501 NotImplemented.</description></item><item><title>S3 501 Discipline: Object-Level Subresources (tagging, acl, versionId, retention, legal-hold)</title><link>/posts/034-s3-501-discipline-object-subresources/</link><pubDate>Mon, 24 Aug 2026 21:13:07 +0000</pubDate><guid>/posts/034-s3-501-discipline-object-subresources/</guid><description>5 object-level query parameters now return honest 501 NotImplemented instead of silently falling into GetObject/PutObject/DeleteObject.</description></item><item><title>S3 501 Discipline: Honest 'Not Implemented' for 16 Bucket Config Subresources</title><link>/posts/033-s3-501-discipline-bucket-config/</link><pubDate>Mon, 24 Aug 2026 20:00:50 +0000</pubDate><guid>/posts/033-s3-501-discipline-bucket-config/</guid><description>16 bucket config subresources (versioning, ACL, policy, CORS, lifecycle, etc.) now return honest 501 NotImplemented instead of silently misrouting to ListObjects/GetObject.</description></item><item><title>At-Rest Integrity: Verify-on-Read, Checksums, and GC</title><link>/posts/007-at-rest-integrity-and-gc/</link><pubDate>Mon, 24 Aug 2026 19:36:43 +0000</pubDate><guid>/posts/007-at-rest-integrity-and-gc/</guid><description>CAS keys make verify-on-read free: central verification, x-amz-checksum echo, tombstone GC, and corruption surfacing.</description></item><item><title>Centralized Integrity Verification: Checksums Move to the Storage Core</title><link>/posts/031-core-integrity-verification/</link><pubDate>Mon, 24 Aug 2026 18:03:31 +0000</pubDate><guid>/posts/031-core-integrity-verification/</guid><description>S3 integrity checksums moved from a surface-level adapter into the storage/ingest core via a protocol-agnostic ChecksumProvider seam — every write path verified, replicas re-verify on receive.</description></item><item><title>S3 Integrity Checksums: x-amz-checksum-*</title><link>/posts/012-s3-integrity-checksums/</link><pubDate>Mon, 24 Aug 2026 16:36:34 +0000</pubDate><guid>/posts/012-s3-integrity-checksums/</guid><description>x-amz-checksum-CRC32/SHA256 echo on PUT; integrity surfaced to clients so dirty bytes never masquerade as clean. Teaches: client-verifiable integrity, Bolt zero-allocation on read path, Sentinel honesty guarantee.</description></item><item><title>Confidential Dedup via Threshold OPRF — and Auth Lockout</title><link>/posts/014-confidential-dedup-oprf/</link><pubDate>Fri, 14 Aug 2026 00:26:56 +0000</pubDate><guid>/posts/014-confidential-dedup-oprf/</guid><description>Threshold-OPRF lets E2EE cas blobs dedup without revealing content hashes — plus adaptive failed-auth backoff and lockout.</description></item><item><title>S3 Multipart and Protocol Breadth: 501 Discipline</title><link>/posts/009-s3-multipart-and-breadth/</link><pubDate>Thu, 13 Aug 2026 06:02:26 +0000</pubDate><guid>/posts/009-s3-multipart-and-breadth/</guid><description>Multipart upload support plus a rigorous 501 strategy for unsupported S3 subresources — honest breadths over silent misbehavior.</description></item><item><title>S3 and Inbound TLS: HTTPS-by-Default Enforcement</title><link>/posts/011-s3-https-tls-enforcement/</link><pubDate>Wed, 12 Aug 2026 07:23:29 +0000</pubDate><guid>/posts/011-s3-https-tls-enforcement/</guid><description>The S3 gateway turned HTTPS-or-explicit-insecure into the default: no silent plaintext for the gateway or inbound tcp/quic.</description></item><item><title>S3 Auth: SigV4, Presigned URLs, and Key Decoupling</title><link>/posts/010-s3-auth-presigned-sigv4/</link><pubDate>Tue, 11 Aug 2026 23:11:16 +0000</pubDate><guid>/posts/010-s3-auth-presigned-sigv4/</guid><description>Query-string SigV4 for presigned URLs, mandatory X-Amz-Date freshness, and decoupling gateway access/secret keys from the native auth token.</description></item><item><title>S3 Gateway Core: XML, Buckets, Objects, Lists</title><link>/posts/008-s3-gateway-core/</link><pubDate>Tue, 11 Aug 2026 18:25:16 +0000</pubDate><guid>/posts/008-s3-gateway-core/</guid><description>The S3 gateway: SigV4, S3-compliant XML errors, Head/List/Copy, pagination, ranges, and metadata — a compatible API surface for real clients.</description></item><item><title>Client-Held E2EE: Envelope Encryption Real</title><link>/posts/013-e2ee-envelope-encryption/</link><pubDate>Tue, 11 Aug 2026 16:36:53 +0000</pubDate><guid>/posts/013-e2ee-envelope-encryption/</guid><description>Envelope encryption with a client-held key: the server stores ciphertext and can&amp;rsquo;t read it — across S3 and native transports.</description></item><item><title>Signed Payloads and Server-Sent Events for S3</title><link>/posts/039-signed-payload-sse-s3/</link><pubDate>Tue, 11 Aug 2026 05:14:24 +0000</pubDate><guid>/posts/039-signed-payload-sse-s3/</guid><description>SigV4 signed payload verification for S3 PUT/POST and Server-Sent Events for async operation notifications.</description></item><item><title>AWS Chunked Streaming: Signed Payloads Without Buffering</title><link>/posts/040-aws-chunked-streaming/</link><pubDate>Tue, 11 Aug 2026 04:52:58 +0000</pubDate><guid>/posts/040-aws-chunked-streaming/</guid><description>aws-chunked payload encoding streams large S3 uploads in signed chunks — no full-body buffering, per-chunk SigV4 integrity.</description></item><item><title>The Sentinel Sweep: An Audit-Driven Security Journey</title><link>/posts/015-sentinel-security-audit/</link><pubDate>Tue, 04 Aug 2026 00:47:24 +0000</pubDate><guid>/posts/015-sentinel-security-audit/</guid><description>A 76-deep audit (authed via Sentinel) surfaced CRLF injection, smuggling, traversal and path leaks — the pattern that forged momo&amp;rsquo;s security mindset.</description></item><item><title>External S3 Client Replication Downgrade: When aws-cli Can't Fan Out</title><link>/posts/030-external-s3-client-replication-downgrade/</link><pubDate>Wed, 01 Jul 2026 23:36:39 +0000</pubDate><guid>/posts/030-external-s3-client-replication-downgrade/</guid><description>External S3 clients like aws-cli don&amp;rsquo;t send momo headers — the server detects this and downgrades client-side replication modes to server-side alternatives, ensuring replication never silently drops.</description></item><item><title>🛡 Zero-Crash Hardening: Defensive Patterns for a Networked Object Store</title><link>/posts/037-zero-crash-hardening-patterns/</link><pubDate>Wed, 03 Jun 2026 06:03:39 +0000</pubDate><guid>/posts/037-zero-crash-hardening-patterns/</guid><description>Systematic defensive coding: nil-safety, numeric overflow guards, resource lifecycle discipline, panic recovery at every boundary, and concurrency safety under -race.</description></item><item><title>Replication Strategies and the Polymorphic Engine</title><link>/posts/002-replication-strategies-polymorphic/</link><pubDate>Mon, 04 May 2026 18:54:37 +0000</pubDate><guid>/posts/002-replication-strategies-polymorphic/</guid><description>Chain, Splay, and Primary-Splay replication — and the metrics-driven controller that switches between them at runtime.</description></item></channel></rss>