Skip to content

Design

54 pages
  • Adding Multilingual Support to SILO

    In Design

    DesignConsoleInternationalization

    Adding Multilingual Support to SILO

    Console PR #83, contributed by Eduardo Andrade Machado, supplies Brazilian Portuguese. silo#277, opened by siyahkut, requests Turkish. These contributions led to a configurable ten-language UI. Status as of 2026-11-09: the ten-language UI, reviewed …

    Console PR #83, contributed by Eduardo Andrade Machado, supplies Brazilian Portuguese. silo#277, opened by siyahkut, requests Turkish. These contributions led to a configurable ten-language UI. Status as of 2026-11-09: the ten-language UI, reviewed …

  • Native Restore in Two Phases

    In Design

    DesignTieringLockingAvailability

    Native Restore in Two Phases

    This record covers issue #284 and two regressions of the first native-restore safeguards for #281, described in Restored Copies: Expire the Copy, Not the Object. It was evaluated against main at 69fcf50cd and the integration branch for the next …

    This record covers issue #284 and two regressions of the first native-restore safeguards for #281, described in Restored Copies: Expire the Copy, Not the Object. It was evaluated against main at 69fcf50cd and the integration branch for the next …

  • A Partial View Must Not Report an Existing Object as Missing

    In Design

    DesignErasure CodingAvailabilityS3 Compatibility

    A Partial View Must Not Report an Existing Object as Missing

    This record covers a defect found during local acceptance of the next release. It reproduces on the local integration of the next release and on 69fcf50cd. It has no GitHub issue yet. Status: fix approved by an adversarial review (with nits, all …

    This record covers a defect found during local acceptance of the next release. It reproduces on the local integration of the next release and on 69fcf50cd. It has no GitHub issue yet. Status: fix approved by an adversarial review (with nits, all …

  • A Failed Multipart Completion Can Strand the Upload

    In Design

    DesignMultipartErasure CodingS3 Compatibility

    A Failed Multipart Completion Can Strand the Upload

    This record covers a defect found during local acceptance of the next release. It reproduces on 69fcf50cd and is inherited from upstream MinIO. It has no GitHub issue yet. Status: analyzed and reproduced. A fix was drafted, but an adversarial review …

    This record covers a defect found during local acceptance of the next release. It reproduces on 69fcf50cd and is inherited from upstream MinIO. It has no GitHub issue yet. Status: analyzed and reproduced. A fix was drafted, but an adversarial review …

  • Lock Domains of Large Single-Pool Clusters

    In Design

    DesignLockingStorageOperations

    Lock Domains of Large Single-Pool Clusters

    This record covers a lock-domain defect found during review of the restored-copy fix (Restored Copies: Expire the Copy, Not the Object), evaluated against main at 69fcf50cd. No issue has been filed yet. Status: fix approved by review and committed …

    This record covers a lock-domain defect found during review of the restored-copy fix (Restored Copies: Expire the Copy, Not the Object), evaluated against main at 69fcf50cd. No issue has been filed yet. Status: fix approved by review and committed …

  • Restored Copies: Expire the Copy, Not the Object

    In Design

    DesignLifecycleTieringData Safety

    Restored Copies: Expire the Copy, Not the Object

    This record covers issue #281 and PR #282 by Denis Babchuk, evaluated against main at 69fcf50cd. The fix ships in the same maintainer integration PR as the multi-pool lifecycle fix (Multi-Pool Lifecycle Expiry, #278). That PR keeps the contributor …

    This record covers issue #281 and PR #282 by Denis Babchuk, evaluated against main at 69fcf50cd. The fix ships in the same maintainer integration PR as the multi-pool lifecycle fix (Multi-Pool Lifecycle Expiry, #278). That PR keeps the contributor …

  • Failed Writes and Phantom Empty Prefixes

    In Design

    DesignStorageListObjectsOperations

    Failed Writes and Phantom Empty Prefixes

    This record covers issue #285 and PR #286 by Denis Babchuk, evaluated against main at 69fcf50cd and the PR head ed05d982a. Status: fix approved by review and committed locally. Tested together with the other fixes for the next release on one …

    This record covers issue #285 and PR #286 by Denis Babchuk, evaluated against main at 69fcf50cd and the PR head ed05d982a. Status: fix approved by review and committed locally. Tested together with the other fixes for the next release on one …

  • Multi-Pool Lifecycle Expiry: Decide on the Whole Object

    In Design

    DesignLifecycleStorage PoolsData Safety

    Multi-Pool Lifecycle Expiry: Decide on the Whole Object

    This record covers issue #278 and PR #279 by Denis Babchuk, evaluated against main at 69fcf50cd. The fix will ship through a maintainer integration PR that keeps the contributor commits unchanged and adds the maintainer follow-ups described below. …

    This record covers issue #278 and PR #279 by Denis Babchuk, evaluated against main at 69fcf50cd. The fix will ship through a maintainer integration PR that keeps the contributor commits unchanged and adds the maintainer follow-ups described below. …

  • Heal Dry Run Must Not Delete Data

    In Design

    DesignHealingData SafetyOperations

    Heal Dry Run Must Not Delete Data

    This record covers the dry-run part of PR #280 by Jasper Bernhardt (@dihmandrake), evaluated against main at 69fcf50cd. The same PR also verifies an object’s drives concurrently during deep scans. That optimization is reviewed separately and is …

    This record covers the dry-run part of PR #280 by Jasper Bernhardt (@dihmandrake), evaluated against main at 69fcf50cd. The same PR also verifies an object’s drives concurrently during deep scans. That optimization is reviewed separately and is …

  • Lifecycle Delete-All Must Stay on One Key

    In Design

    DesignLifecycleBatch ExpirationData Safety

    Lifecycle Delete-All Must Stay on One Key

    This record covers a defect found during review of the #278 fix (Multi-Pool Lifecycle Expiry). It was evaluated against main at 69fcf50cd and against the maintainer integration branch for #278 and #281, which is not yet published. Status: fix …

    This record covers a defect found during review of the #278 fix (Multi-Pool Lifecycle Expiry). It was evaluated against main at 69fcf50cd and against the maintainer integration branch for #278 and #281, which is not yet published. Status: fix …

  • Bucket Quota in the Console: List Display and Numeric Validation

    In Design

    DesignConsoleQuotaRetention

    Bucket Quota in the Console: List Display and Numeric Validation

    This record covers silo-console#72 (a quota set in the web Console shows as a dash in the bucket list) and silo-console#73 (numeric validation in the bucket-creation form). It is evaluated against the Console source before the fix, 3d264aea9, and the …

    This record covers silo-console#72 (a quota set in the web Console shows as a dash in the bucket list) and silo-console#73 (numeric validation in the bucket-creation form). It is evaluated against the Console source before the fix, 3d264aea9, and the …

  • Audit Webhooks After a Peer Reload

    In Design

    DesignAuditLoggingConfigurationOperations

    Audit Webhooks After a Peer Reload

    This record covers issue #259, reported by Henrik Feldt, evaluated against main at 69fcf50cd. The fix completes earlier, uncommitted maintainer work. It adds the Kafka call site, a handoff of records queued in a target that never started, and Kafka …

    This record covers issue #259, reported by Henrik Feldt, evaluated against main at 69fcf50cd. The fix completes earlier, uncommitted maintainer work. It adds the Kafka call site, a handoff of records queued in a target that never started, and Kafka …

  • ILM Expiry and Pool Migration Ordering

    In Design

    DesignLifecycleStorage PoolsReplication

    ILM Expiry and Pool Migration Ordering

    This record covers issue #265, the contributor change PR #266, and maintainer follow-up #276. The merged #264 and #267 are relevant predecessors. The review was updated against main after #276 on 2026-11-02. #266’s decommission commit is 19910230a, …

    This record covers issue #265, the contributor change PR #266, and maintainer follow-up #276. The merged #264 and #267 are relevant predecessors. The review was updated against main after #276 on 2026-11-02. #266’s decommission commit is 19910230a, …

  • Tier Free Versions Are Internal Cleanup Records

    In Design

    DesignTieringLifecycleStorage PoolsCompatibility

    Tier Free Versions Are Internal Cleanup Records

    This record covers issue #263 and PR #264, updated against main at 0fc5a0b5, with the #264 merge recorded at 0cfca29c. The PR is three linked repairs, not three unrelated workarounds. Short answer The report is real. A free version is an internal …

    This record covers issue #263 and PR #264, updated against main at 0fc5a0b5, with the #264 merge recorded at 0cfca29c. The PR is three linked repairs, not three unrelated workarounds. Short answer The report is real. A free version is an internal …

  • Mixed EC Layouts and Migration Listing

    In Design

    DesignStorage PoolsErasure CodingMigration

    Mixed EC Layouts and Migration Listing

    This record covers issue #261 and PR #262, updated against main at 0fc5a0b5 after the #276 follow-up. The fix was merged through maintainer PR #267; #262 was the superseded duplicate. Short answer The report is real. A successful degraded overwrite …

    This record covers issue #261 and PR #262, updated against main at 0fc5a0b5 after the #276 follow-up. The fix was merged through maintainer PR #267; #262 was the superseded duplicate. Short answer The report is real. A successful degraded overwrite …

  • Pool Migration Integrity Review: #261, #263, and #265

    In Design

    DesignStorage PoolsLifecycleCompatibility

    Pool Migration Integrity Review: #261, #263, and #265

    This record reviews #261, #263, and #265, together with their fixes #262, #264, and #266. It also records the maintainer follow-up #276. It is a design and review record, not a release note. The review was updated against the post-#276 main branch on …

    This record reviews #261, #263, and #265, together with their fixes #262, #264, and #266. It also records the maintainer follow-up #276. It is a design and review record, not a release note. The review was updated against the post-#276 main branch on …

  • Multi-Pool Deletion: Preserve the Latest Copy on Failure

    In Design

    DesignS3StoragePerformance

    Multi-Pool Deletion: Preserve the Latest Copy on Failure

    Decision, October 24, 2026: merge the corrected PR #257 (shipped in Server 20261026). Commit aafe4f8886 fixes the multi-pool deletion failures reported in issue #256 and closes the in-flight failure window after preflight checks. The core invariant …

    Decision, October 24, 2026: merge the corrected PR #257 (shipped in Server 20261026). Commit aafe4f8886 fixes the multi-pool deletion failures reported in issue #256 and closes the in-flight failure window after preflight checks. The core invariant …

  • Overwrite Pool Affinity: Why #245 Was Not Adopted

    In Design

    DesignS3StoragePerformanceReview

    Overwrite Pool Affinity: Why #245 Was Not Adopted

    Decision, October 24, 2026: do not merge the tested pool-affinity changes (PR #245). The experiment addressed a real space-efficiency problem, but neither the broad policy nor the narrower unversioned-only policy achieved an acceptable performance …

    Decision, October 24, 2026: do not merge the tested pool-affinity changes (PR #245). The experiment addressed a real space-efficiency problem, but neither the broad policy nor the narrower unversioned-only policy achieved an acceptable performance …

  • FULL_OBJECT Checksum Replication: Preserve the Type at Upload Initiation

    In Design

    DesignReplicationS3Checksum

    FULL_OBJECT Checksum Replication: Preserve the Type at Upload Initiation

    Issue #254 reported a replication failure affecting multipart objects uploaded with a FULL_OBJECT CRC32 or CRC32C checksum: the object uploads and reads normally on the source, but the replication target rejects CompleteMultipartUpload with 400 …

    Issue #254 reported a replication failure affecting multipart objects uploaded with a FULL_OBJECT CRC32 or CRC32C checksum: the object uploads and reads normally on the source, but the replication target rejects CompleteMultipartUpload with 400 …

  • LDAP Long DNs: Restoring Login Without Hiding Revocation Errors

    In Design

    DesignLDAPIAMOperations

    LDAP Long DNs: Restoring Login Without Hiding Revocation Errors

    Server PR #250 (merged at d43adc0f2 and shipped in Server 20261026) fixes a login failure affecting LDAP users whose normalized Distinguished Name (DN) exceeds the 255-byte single-component filename limit of the object-storage IAM backend, while …

    Server PR #250 (merged at d43adc0f2 and shipped in Server 20261026) fixes a login failure affecting LDAP users whose normalized Distinguished Name (DN) exceeds the 255-byte single-component filename limit of the object-storage IAM backend, while …

  • IAM Policy Reloads: Lock Scope, Cancellation, and Time Budgets

    In Design

    DesignIAMKMSS3Review

    IAM Policy Reloads: Lock Scope, Cancellation, and Time Budgets

    Commit 1b5477f3d (pgsty/silo#251) resolves two coupled failure modes under slow KMS/KES responses: Authentication-cache lock contention: ListPolicies and ListPolicyDocs now load and decrypt policy replacements outside the in-memory …

    Commit 1b5477f3d (pgsty/silo#251) resolves two coupled failure modes under slow KMS/KES responses: Authentication-cache lock contention: ListPolicies and ListPolicyDocs now load and decrypt policy replacements outside the in-memory …

  • Alias regions: a small configuration change with compatibility boundaries

    In Design

    DesignmcliS3Compatibility

    Alias regions: a small configuration change with compatibility boundaries

    Decision, 2026-10-23: mcli PR #44 is merged on main at 91006a587. We accepted the per-alias region design, kept its small production implementation and supplemented the regression coverage. This records the original design decision. The capability is …

    Decision, 2026-10-23: mcli PR #44 is merged on main at 91006a587. We accepted the per-alias region design, kept its small production implementation and supplemented the regression coverage. This records the original design decision. The capability is …

  • SILO, KES and OpenBao: Key Ownership and Recovery

    In Design

    DesignKESSecurityOperations

    SILO, KES and OpenBao: Key Ownership and Recovery

    SILO integrates with external key-management systems through PGSTY KES (MINIO_KMS_KES_ENDPOINT). The current release is KES 20261026 (built with Go 1.27.3 and updated cloud dependencies while retaining the API, configuration, and key formats …

    SILO integrates with external key-management systems through PGSTY KES (MINIO_KMS_KES_ENDPOINT). The current release is KES 20261026 (built with Go 1.27.3 and updated cloud dependencies while retaining the API, configuration, and key formats …

  • LIST Recovery: Confirm Only Uncertain Names and Bound the Waiting Cost

    In Design

    DesignS3ListObjectsPerformanceReview

    LIST Recovery: Confirm Only Uncertain Names and Bound the Waiting Cost

    Shipped in SILO Server 20261018, PR #239 (merged as fbcb51197, closing #218 and retaining mr javad seydi’s original signed commits from #221) and the October 18 directory/common-prefix follow-ups (3dd53eb81 and 2080b3d03) resolve silent object …

    Shipped in SILO Server 20261018, PR #239 (merged as fbcb51197, closing #218 and retaining mr javad seydi’s original signed commits from #221) and the October 18 directory/common-prefix follow-ups (3dd53eb81 and 2080b3d03) resolve silent object …

  • IAM Admin API Authorization Boundaries

    In Design

    DesignIAMSecurityCompatibility

    IAM Admin API Authorization Boundaries

    Server 20261018 ships Server PR #242 (commit 2616d43fb on baseline 00a375c4e, merged as 4e55fc7db) and the bulk self-listing follow-up 995439260 to close SN-2026-017. This design note records the problem scope, handler-level authorization contract, …

    Server 20261018 ships Server PR #242 (commit 2616d43fb on baseline 00a375c4e, merged as 4e55fc7db) and the bulk self-listing follow-up 995439260 to close SN-2026-017. This design note records the problem scope, handler-level authorization contract, …

  • Clearing Stale Fields in Legacy Metadata and Scanner Responses

    In Design

    DesignReliabilityStorageScanner

    Clearing Stale Fields in Legacy Metadata and Scanner Responses

    This article records the design and verification of PR #233 (tested head 86c5a92eef3d, merged as d94b3b3c9251), which shipped in Server 20261018. It fixes stale fields carried over when legacy xl.meta version headers and remote namespace-scanner …

    This article records the design and verification of PR #233 (tested head 86c5a92eef3d, merged as d94b3b3c9251), which shipped in Server 20261018. It fixes stale fields carried over when legacy xl.meta version headers and remote namespace-scanner …

  • Pinned TLS Parameters and Handshake Compatibility

    In Design

    DesignTLSOIDCOperationsCompatibility

    Pinned TLS Parameters and Handshake Compatibility

    After the Go TLS default repair 48e184652 shipped in Server 20260916, the reporter of issue #154 retested on that release and still saw connection reset by peer on OIDC discovery. Meanwhile, upstream Go issues reported the exact same symptom and …

    After the Go TLS default repair 48e184652 shipped in Server 20260916, the reporter of issue #154 retested on that release and still saw connection reset by peer on OIDC discovery. Meanwhile, upstream Go issues reported the exact same symptom and …

  • A Listing Must Not Drop a Null Version That Still Has Quorum

    In Design

    DesignS3ListObjectsReview

    A Listing Must Not Drop a Null Version That Still Has Quorum

    This record covers the listing omission investigated on 2026-09-16: an unversioned bucket under concurrent overwrites returned HTTP 200 listings that lacked keys the same endpoint could still GET. It describes the confirmed mechanism, the targeted …

    This record covers the listing omission investigated on 2026-09-16: an unversioned bucket under concurrent overwrites returned HTTP 200 listings that lacked keys the same endpoint could still GET. It describes the confirmed mechanism, the targeted …

  • Go 1.27 TLS Defaults and OIDC Discovery Failure Modes

    In Design

    DesignTLSOIDCOperations

    Go 1.27 TLS Defaults and OIDC Discovery Failure Modes

    After SILO’s toolchain moved to Go 1.27, the Server TLS repair 48e184652 (“fix(tls): honor Go key exchange defaults across transports”, shipped in Server 20260916) removed explicit curve overrides across eight Server TLS configuration points. This …

    After SILO’s toolchain moved to Go 1.27, the Server TLS repair 48e184652 (“fix(tls): honor Go key exchange defaults across transports”, shipped in Server 20260916) removed explicit curve overrides across eight Server TLS configuration points. This …

  • Request-Header Deadlines: Absolute Header Limits and Rolling Body Idle Timeouts

    In Design

    DesignHTTPS3Review

    Request-Header Deadlines: Absolute Header Limits and Rolling Body Idle Timeouts

    This article records the repair of Server’s HTTP read deadlines, merged in PR #196 (fix 055030ea5) and shipped in Server 20260916 (40220bd836cbd066ca424fa4dc5dbb90057fb55a). The investigation was prompted by a slow-HTTP DoS scanner report (#183) and …

    This article records the repair of Server’s HTTP read deadlines, merged in PR #196 (fix 055030ea5) and shipped in Server 20260916 (40220bd836cbd066ca424fa4dc5dbb90057fb55a). The investigation was prompted by a slow-HTTP DoS scanner report (#183) and …

  • Replica Metadata Normalization: What a Trusted Copy May Not Re-Inject

    In Design

    DesignReplicationS3Review

    Replica Metadata Normalization: What a Trusted Copy May Not Re-Inject

    Shipped in SILO Server 20260916 (40220bd836cbd066ca424fa4dc5dbb90057fb55a), PR #194 (commit 4fcdf37ce, merged as 9f3037e941, retaining Mikhail Khadarenka’s original implementation from PR #187) fixes a regression where a trusted replication receiver …

    Shipped in SILO Server 20260916 (40220bd836cbd066ca424fa4dc5dbb90057fb55a), PR #194 (commit 4fcdf37ce, merged as 9f3037e941, retaining Mikhail Khadarenka’s original implementation from PR #187) fixes a regression where a trusted replication receiver …

  • Replicated Tag Ordering: Revision Timestamps, Tombstones, and Resurrection

    In Design

    DesignReplicationS3Review

    Replicated Tag Ordering: Revision Timestamps, Tombstones, and Resurrection

    Shipped in SILO Server 20260916 (40220bd836cbd066ca424fa4dc5dbb90057fb55a), PR #193 (commit 03027727d) and PR #196 (commit 680eac66e) fix two defects in how object tags preserve ordering across bucket replication: SSE-KMS destination copies silently …

    Shipped in SILO Server 20260916 (40220bd836cbd066ca424fa4dc5dbb90057fb55a), PR #193 (commit 03027727d) and PR #196 (commit 680eac66e) fix two defects in how object tags preserve ordering across bucket replication: SSE-KMS destination copies silently …

  • SSE-C Replica Integrity

    In Design

    DesignS3Operations

    SSE-C Replica Integrity

    This article records the SSE-C replica integrity contract formed by #122, #123, #124, #126, and #134, which shipped in Server 20260916, building on the earlier zero-byte/read-attribute authentication and destination-key checksum repairs from Server …

    This article records the SSE-C replica integrity contract formed by #122, #123, #124, #126, and #134, which shipped in Server 20260916, building on the earlier zero-byte/read-attribute authentication and destination-key checksum repairs from Server …

  • Object Lock Replication Ordering

    In Design

    DesignS3Operations

    Object Lock Replication Ordering

    Initial Object Lock replication timestamp ordering (f4c1286c9) shipped in SILO Server 20260903 (recorded in the security advisory ledger). Subsequent fixes for timestamp-only removals, SSE-C replica retransmission, and multi-pool Object Lock …

    Initial Object Lock replication timestamp ordering (f4c1286c9) shipped in SILO Server 20260903 (recorded in the security advisory ledger). Subsequent fixes for timestamp-only removals, SSE-C replica retransmission, and multi-pool Object Lock …

  • Multi-Pool Object Consistency

    In Design

    DesignS3Operations

    Multi-Pool Object Consistency

    Shipped in SILO Server 20260916, PR #178 repairs multi-pool mutation ordering, PR #207 extends current-object selection to conditional PUT (closing #133 and #144), and commit fced86303 preserves object tags across pool rebalance and decommission. …

    Shipped in SILO Server 20260916, PR #178 repairs multi-pool mutation ordering, PR #207 extends current-object selection to conditional PUT (closing #133 and #144), and commit fced86303 preserves object tags across pool rebalance and decommission. …

  • Federated CopyObject: Preserve the Destination Contract

    In Design

    DesignS3Operations

    Federated CopyObject: Preserve the Destination Contract

    Server 20260916 repairs the legacy etcd bucket-federation CopyObject path across PR #157, PR #159, PR #163, PR #177, and PR #179. When CopyObject forwards a copy across federated deployments as a remote PutObject, the proxy streams logical source …

    Server 20260916 repairs the legacy etcd bucket-federation CopyObject path across PR #157, PR #159, PR #163, PR #177, and PR #179. When CopyObject forwards a copy across federated deployments as a remote PutObject, the proxy streams logical source …

  • Durable IAM Revocations

    In Design

    DesignS3Operations

    Durable IAM Revocations

    SILO retains the revision of every deleted IAM record so an offline site cannot resurrect a deleted identity or policy grant when it reconnects. This mechanism covers built-in users, service accounts, groups, policy documents, and policy mappings …

    SILO retains the revision of every deleted IAM record so an offline site cannot resurrect a deleted identity or policy grant when it reconnects. This mechanism covers built-in users, service accounts, groups, policy documents, and policy mappings …

  • Bucket Configuration Replication: Source Times, Deletions, and Deterministic Convergence

    In Design

    DesignReplicationS3

    Bucket Configuration Replication: Source Times, Deletions, and Deterministic Convergence

    #77 is a site-replication correctness defect repaired in Server 20260916 (PR #180, commit 48ec10312). Before this repair, a receiving site overwrote the peer’s source timestamp with local arrival time (UTCNow) and could then reject a genuinely newer …

    #77 is a site-replication correctness defect repaired in Server 20260916 (PR #180, commit 48ec10312). Before this repair, a receiving site overwrote the peer’s source timestamp with local arrival time (UTCNow) and could then reject a genuinely newer …

  • Replication Reliability: Delete Completion, MRF Visibility, and Resync Cancellation

    In Design

    DesignReplicationS3Review

    Replication Reliability: Delete Completion, MRF Visibility, and Resync Cancellation

    This article records the root-cause analysis, design tradeoffs, and validation across three rounds of replication reliability repairs shipped in Server 20260916: Round 1 (PR #162, merged as d1105bbb): addresses #153, #152, and #137, covering …

    This article records the root-cause analysis, design tradeoffs, and validation across three rounds of replication reliability repairs shipped in Server 20260916: Round 1 (PR #162, merged as d1105bbb): addresses #153, #152, and #137, covering …

  • SigV4 Signed-Header Coverage: Rejecting Unsigned x-amz-* Headers

    In Design

    DesignSecuritySigV4CopyObjectPresignedCompatibility

    SigV4 Signed-Header Coverage: Rejecting Unsigned x-amz-* Headers

    This article records the unsigned-header coverage repair committed to SILO as 123325430 in PR #173 (tracked as SN-2026-011) and the follow-up signing and payload-verification fixes in PR #177 (tracked as SN-2026-012), which shipped in Server …

    This article records the unsigned-header coverage repair committed to SILO as 123325430 in PR #173 (tracked as SN-2026-011) and the follow-up signing and payload-verification fixes in PR #177 (tracked as SN-2026-012), which shipped in Server …

  • SILO Server 20260903 Pre-release Review

    In Design

    DesignReviewSecurityCompatibilityRelease

    SILO Server 20260903 Pre-release Review

    This is the pre-release engineering review behind SILO 20260903 (RELEASE.2026-09-03T13-18-01Z at 9b11dc9469e650815b775cb47b039610644f5da4, reviewed candidate 6e112d1856d4f3655f30fc81ee47e9f43d50d8f3, against baseline RELEASE.2026-08-06T00-00-00Z at …

    This is the pre-release engineering review behind SILO 20260903 (RELEASE.2026-09-03T13-18-01Z at 9b11dc9469e650815b775cb47b039610644f5da4, reviewed candidate 6e112d1856d4f3655f30fc81ee47e9f43d50d8f3, against baseline RELEASE.2026-08-06T00-00-00Z at …

  • No I/O Before Auth, No Privilege From Headers

    In Design

    DesignSecurityCORSReplicationSSE-CCompatibility

    No I/O Before Auth, No Privilege From Headers

    This note documents the CORS hot-path and replication-request trust repair merged in PR #101 (938603458 through 04b097fd9), tracked as SN-2026-008, and shipped in Server 20260903. Overview Two defects that appeared unrelated shared a single …

    This note documents the CORS hot-path and replication-request trust repair merged in PR #101 (938603458 through 04b097fd9), tracked as SN-2026-008, and shipped in Server 20260903. Overview Two defects that appeared unrelated shared a single …

  • Read-Only Checksum Audit and Reliable CLI Output

    In Design

    DesignS3CompatibilityChecksummcli

    Read-Only Checksum Audit and Reliable CLI Output

    This is the design and implementation record for MCLI’s read-only checksum verification workflow and pgsty/mc#5, the non-TTY output defect discovered during release review. The command merged into pgsty/mc through pull requests #8 and #13 and shipped …

    This is the design and implementation record for MCLI’s read-only checksum verification workflow and pgsty/mc#5, the non-TTY output defect discovered during release review. The command merged into pgsty/mc through pull requests #8 and #13 and shipped …

  • Two SSE-C Keys, One CopyObject Response

    In Design

    DesignS3SSE-CChecksumCompatibility

    Two SSE-C Keys, One CopyObject Response

    This note documents the CopyObject SSE-C checksum response repair committed as e73436c99 and shipped in Server 20260903. It covers the successful CopyObject XML and HTTP response after the destination object has committed; stored object bytes, …

    This note documents the CopyObject SSE-C checksum response repair committed as e73436c99 and shipped in Server 20260903. It covers the successful CopyObject XML and HTTP response after the destination object has committed; stored object bytes, …

  • Config Environment Files Are Not Shell Scripts

    In Design

    DesignConfigurationCompatibilityOperations

    Config Environment Files Are Not Shell Scripts

    This note defines the startup contract for MINIO_CONFIG_ENV_FILE and documents the compatibility repair committed as 2aea7fe9c and shipped in Server 20260903. The file is a SILO input format; supporting an optional export prefix for operator …

    This note defines the startup contract for MINIO_CONFIG_ENV_FILE and documents the compatibility repair committed as 2aea7fe9c and shipped in Server 20260903. The file is a SILO input format; supporting an optional export prefix for operator …

  • BadDigest, InvalidRequest, and the CompleteMultipartUpload Checksum Contract

    In Design

    DesignS3CompatibilityChecksum

    BadDigest, InvalidRequest, and the CompleteMultipartUpload Checksum Contract

    The repairs for #48 and #50 shipped in Server 20260903, and the streaming-checksum follow-up (PR #143) shipped in Server 20260916. This record supersedes the earlier August proposal to leave CRC64NVME canonicalization unchanged. 20261018: Message …

    The repairs for #48 and #50 shipped in Server 20260903, and the streaming-checksum follow-up (PR #143) shipped in Server 20260916. This record supersedes the earlier August proposal to leave CRC64NVME canonicalization unchanged. 20261018: Message …

  • A ListObjects Shortcut Must Not Turn a Missing Bucket into an Empty One

    In Design

    DesignS3CompatibilityListObjects

    A ListObjects Shortcut Must Not Turn a Missing Bucket into an Empty One

    Shipped in SILO Server 20260903, PR #37 (commit e9c5340be, merged as 49c8aeac4, closing SILO #32) fixes an S3 compatibility regression where three early-return shortcuts in ListObjects, ListObjectsV2, and ListObjectVersions returned HTTP 200 OK with …

    Shipped in SILO Server 20260903, PR #37 (commit e9c5340be, merged as 49c8aeac4, closing SILO #32) fixes an S3 compatibility regression where three early-return shortcuts in ListObjects, ListObjectsV2, and ListObjectVersions returned HTTP 200 OK with …

  • One Endpoint, Two Privileges: Separating User and Group Status

    In Design

    DesignIAMSecurityCompatibility

    One Endpoint, Two Privileges: Separating User and Group Status

    This article records the authorization design and verification for upstream issue minio/minio#21478, SILO PR #73 (commits 58735ee38 / 2e2377d1c), and the set-group-status follow-up (229fe2b3c), which shipped in Server 20260903. Too Long; Didn’t Read …

    This article records the authorization design and verification for upstream issue minio/minio#21478, SILO PR #73 (commits 58735ee38 / 2e2377d1c), and the set-group-status follow-up (229fe2b3c), which shipped in Server 20260903. Too Long; Didn’t Read …

  • Conditional DELETE: One Condition, One Logical Object

    In Design

    DesignS3CompatibilityDELETE

    Conditional DELETE: One Condition, One Logical Object

    Single-object conditional deletion (If-Match on DeleteObject) landed in PR #145, and PR #178 repaired multi-pool serialization and reconciliation. Both changes shipped in Server 20260916. An earlier August proposal around PR #12 sketched a broader …

    Single-object conditional deletion (If-Match on DeleteObject) landed in PR #145, and PR #178 repaired multi-pool serialization and reconciliation. Both changes shipped in Server 20260916. An earlier August proposal around PR #12 sketched a broader …

  • Why CompleteMultipartUpload Must Return ChecksumType: Review of PR #57

    In Design

    DesignS3CompatibilityChecksum

    Why CompleteMultipartUpload Must Return ChecksumType: Review of PR #57

    PR #57, contributed by Shooks (@Dansyuqri), resolved #47 and shipped in Server 20260903. It restores the ChecksumType element in CompleteMultipartUpload XML responses whenever an object stores an additional S3 checksum. The Defect and Its Scope …

    PR #57, contributed by Shooks (@Dansyuqri), resolved #47 and shipped in Server 20260903. It restores the ChecksumType element in CompleteMultipartUpload XML responses whenever an object stores an additional S3 checksum. The Defect and Its Scope …

  • Optional Checksums, Mandatory Failure: Repairing UploadPart and UploadPartCopy Compatibility

    In Design

    DesignS3CompatibilityChecksum

    Optional Checksums, Mandatory Failure: Repairing UploadPart and UploadPartCopy Compatibility

    This is the design and implementation record for SILO #46 (merged as 7fea6d5a5 and shipped in Server 20260903, with follow-up items #63 and #64). It documents how handling an optional S3 part checksum header affected multipart completion semantics, …

    This is the design and implementation record for SILO #46 (merged as 7fea6d5a5 and shipped in Server 20260903, with follow-up items #63 and #64). It documents how handling an optional S3 part checksum header affected multipart completion semantics, …

  • When the Total Is Unknown: Folder Download Progress

    In Design

    DesignConsoleDownload

    When the Total Is Unknown: Folder Download Progress

    SILO Console v2.1.1 displayed NaN% in the Downloads / Uploads drawer while downloading a folder. Although the streamed ZIP archive continued transferring normally and stored objects were intact, the progress bar entered an invalid determinate …

    SILO Console v2.1.1 displayed NaN% in the Downloads / Uploads drawer while downloading a folder. Although the streamed ZIP archive continued transferring normally and stored objects were intact, the progress bar entered an invalid determinate …

  • Preview Text, Never Execute It: SILO Console Text Preview Design

    In Design

    DesignConsolePreviewSecurity

    Preview Text, Never Execute It: SILO Console Text Preview Design

    SILO Console previews images, PDFs, audio, and video, but in v2.1.1 it could not preview the small logs, text files, JSON documents, and XML documents that operators inspect every day. Even when an object stored an accurate Content-Type, the frontend …

    SILO Console previews images, PDFs, audio, and video, but in v2.1.1 it could not preview the small logs, text files, JSON documents, and XML documents that operators inspect every day. Even when an object stored an accurate Content-Type, the frontend …

  • DSN-Only Database Notifications: A Compatibility Boundary for #53

    In Design

    DesignNotificationCompatibility

    DSN-Only Database Notifications: A Compatibility Boundary for #53

    Shipped in SILO Server 20260903 via commit f1ba68358, this design resolves SILO issue #53 by establishing the compatibility boundary, legacy-migration behavior, and startup error handling for PostgreSQL and MySQL bucket-notification targets. Decision …

    Shipped in SILO Server 20260903 via commit f1ba68358, this design resolves SILO issue #53 by establishing the compatibility boundary, legacy-migration behavior, and startup error handling for PostgreSQL and MySQL bucket-notification targets. Decision …