**EDGE RELEASE** - Built from edge branch.

This release delivers significant improvements across Delta Sharing protocol support, erasure coding capabilities, storage management, and operational reliability. Key highlights include full Delta Sharing v1.0 protocol implementation, expanded erasure coding to support up to 32 drives per set, enhanced drive usage management, and comprehensive improvements to S3 Tables/Iceberg catalog functionality.

## New Features

### Delta Sharing Protocol
- **Delta Sharing v1.0 Protocol Support** (#2450, #2497): Full implementation of the Delta Sharing open protocol for secure data sharing with bearer token authentication (RFC 6750), delta-sharing-capabilities header negotiation, parquet and delta response formats, NDJSON streaming, pagination support, and case-insensitive name matching per specification
- **Delta Sharing Admin API** (#2497): Admin API now uses share names instead of UUIDs in URLs with improved error handling and comprehensive CLI tooling including Databricks integration
- **Delta Sharing Admin Tracing** (ef2af33): Enable mc admin trace for Delta Sharing API calls with proper classification for debugging and monitoring

### Erasure Coding & Storage
- **Extended Erasure Coding Support** (#2376): Maximum EC set size extended from 16 to 32 drives when explicitly configured via MINIO_ERASURE_SET_DRIVE_COUNT environment variable (default remains 16 drives for optimal performance)
- **Drive Maximum Usage Control** (#2338): New MINIO_DRIVE_MAX_USAGE_PCT configuration returns HTTP 507 Insufficient Storage when drives approach maximum permitted usage, preventing new uploads/copies while allowing healing, decommission, rebalancing, and listing operations

### S3 Features
- **Automatic Multipart Checksums** (#2398): Automatic CRC32 checksum generation for multipart uploads with custom header support per file including Content-Encoding, Content-Type, and X-Amz-Tagging
- **Custom ZIP File Headers** (#2485): Support for per-file custom headers inside ZIP archives using comment field format with CRC32 headers automatically added to all newly uploaded files

### Lifecycle Management
- **ILM NewerNoncurrentVersions During Decommission** (#2400): Pool decommission now respects ILM NewerNoncurrentVersions rules using batch lifecycle evaluation, skipping versions that policies would delete and avoiding unnecessary data copying
- **Dynamic ILM Policy Reload** (#2415): ILM policies dynamically reload during pool decommissioning (within 1 minute) with timestamp tracking to prevent false verification failures when policies change between decommission and verification phases

### Console & UI
- **Console v0.0.34** (#2490): Network and drive performance tests added to UI, health check toggle improvements, and governance-aware bypass toggle visibility
- **Console v0.0.33** (#2441): Site replication removal using site ID, updated health analyzer, KMS auto-encryption display support, replication access key hiding, and batch job UI improvements
- **Network Status in Node Query** (#2397): Node query admin API response now includes network interface details for improved cluster monitoring and diagnostics

### Observability
- **Enhanced Distributed Lock Tracing** (#2433): Distributed lock/unlock operations with keys now included in OpenTelemetry parent traces for improved debugging and performance analysis of lock contention
- **ILM Transition Workers Metric** (#2458): New minio_ilm_transition_num_workers metric tracks active ILM transition worker pool size for monitoring lifecycle operations
- **Improved Erasure Encode Tracing** (#2449): Fixed erasure.Encode operation tracing to capture accurate timing and error information for performance analysis

## Improvements

### S3 Tables & Iceberg
- **Automatic Endpoint Registration** (#2406): S3 Tables API endpoints automatically register during router setup, ensuring GetConfig() always returns correct list of supported endpoints
- **Improved Error Messages** (#2363): Structured error types include namespace and entity names with proper Iceberg REST API error code mapping
- **Iceberg Metadata File Naming** (#2499): Fixed metadata file naming convention to use .metadata.json suffix (dot separator) for Spark DROP TABLE PURGE compatibility
- **Namespace Deletion Cleanup** (#2399): Staged tables and their metadata now explicitly removed during namespace deletion, preventing "namespace not empty" errors
- **Table Registration Permissions** (#2410): Register Table operations now verify user has GetObject permission for metadata files before allowing registration
- **Path Overlap Checking** (#2420): RegisterTables now uses drive storage for overlap checking instead of in-memory cache to handle notification failures
- **Rename Table Support** (#2353): Comprehensive test coverage added for RenameTable API endpoint
- **Identifier Validation** (#2395): Removed hyphen restriction from Iceberg identifiers per REST Catalog specification
- **Dialect Uniqueness Check** (#2396): View representations now enforce each SQL dialect appears at most once per Iceberg specification
- **Supported Operations List** (#2405): Added rename endpoint to supported operations list

### Security
- **LDAP Password Protection** (#2409): Fixed LDAP password leak in audit logs - AssumeRoleWithLDAPIdentity requests now properly exclude LDAPPassword from audit log query parameters
- **Multi-Table Transaction Permissions** (#2352): Multi-table transactions now properly check privileges on each table involved
- **License Support Improvements** (#2477): Free tier licenses without expiry dates no longer trigger expiry warnings, with license type displayed in startup banner

### Quality of Service
- **QoS API Management Enhancements** (#2455): Fixed management API exclusions to prevent throttling lockout (includes GetBucketLocation), improved stats collection with metrics reset on rule changes, and enhanced filtering to exclude deleted rules
- **QoS Failure Mode Tests** (#2263): Added comprehensive validation for QoS enforcement across multi-node clusters during degraded states

### Site Replication
- **Checksum Preservation** (#2332): Batch replication from remote sources now preserves checksums by adding x-amz-checksum-mode header and properly propagating through multipart uploads with encryption
- **Retention/Versioning Settings** (#2457): Object lock and extended versioning settings now preserved during initial site replication setup
- **Self-Removal Protection** (#2424): Sites can no longer remove themselves from site replication via mc admin replicate rm
- **Deployment ID Lookups** (#2475): RemovePeerCluster now supports deployment ID lookups in addition to site names using dual-map lookup

### Batch Operations & Replication
- **Filter Logic Fix** (#2392): Corrected inverted tag and metadata filter logic in batch replication StartFromSource - objects matching filters are now correctly replicated
- **Tagging Without Rewrite** (#2422): Setting object tags no longer triggers object rewrite when only metadata is being updated, preserving ETag consistency

### Performance Optimizations
- **Delete Operations** (#2438): Reduced DeleteObject/DeleteVersions/DeleteBulk span count by approximately 50% through concurrent operations, eliminating duplicate GetObjectInfo calls across pool and set layers, avoiding unnecessary directory deletions, and skipping retries for non-existent inline data
- **Concurrent DiskInfo Fetching** (#2434): DiskInfo calls now execute concurrently in distributed deployments, reducing latency when gathering storage information from remote nodes
- **Optimized File Creation** (#2419): OpenFile now attempts file open first and only creates directories if needed in write mode, reducing unnecessary system calls

### Error Handling & Logging
- **Reduced Redundant Logging** (#2451): Removed unnecessary LogIf calls in HTTP handlers where errors are already returned to clients via writeErrorResponse
- **Warehouse Bucket Deletion** (#2432): Returns proper HTTP 400 Bad Request when attempting to delete Warehouse bucket through S3 API (previously returned 500)
- **Inventory Validation Messages** (#2461): Improved YAML validation error messages with descriptive guidance showing valid values and what was provided
- **OpenID Token Refresh** (#2435): Removed error log when refreshing OpenID token fails (user simply needs to re-login)
- **Tables Error Logging** (#2327): Cleaned up duplicate error logs in AIStor tables handlers
- **CommitMultiTableTransaction Errors** (#2487): Returns HTTP 400 instead of 500 for invalid parameters

### Metrics & Monitoring
- **Metrics Documentation** (#2474, #2479): Updated metrics documentation with missing metrics, fixed incorrect namespaces and metric names, added validation tests to ensure all implemented metrics are documented
- **IAM Metrics Path** (#2295): Renamed metrics-v3-cluster-iam.go to metrics-v3-iam.go reflecting route change from /cluster/iam to /iam
- **ILM Metrics** (#2430): minio_ilm_action_count_delete_version now correctly incremented when noncurrent versions expired via NewerNoncurrentVersions rule
- **Uncached Flag Propagation** (#2437): Uncached flag now properly propagated through entire call chain from admin API to disk info fetching, enabling real-time storage usage queries

### Authentication & IAM
- **JWT RegisteredClaims** (#2428): Upgraded from deprecated StandardClaims to RegisteredClaims for greater flexibility including support for audience claim as array of strings
- **User Info Timestamp** (#2439): User info API now returns user's UpdatedAt timestamp instead of policy's UpdatedAt

## Bug Fixes

### Core Storage
- **Scanner Crash with Multiple Pools** (#2387): Fixed crash in scanner code when cluster has multiple pools with different stripe sizes by making per-drive write failures calculation per erasure set
- **CopyAligned Buffer Overwrite** (#2506): Fixed potential buffer overwrite in ioutil.CopyAligned by adding waitgroup to ensure copy never returns while read is still running
- **CopyObject Checksum** (#2472): Fixed automatic checksum calculation for plain CopyObject when destination is not compressed
- **Queue Store Cross-Device Link** (#2436): Fixed webhook event failures by ensuring queue store creates temp files on same filesystem
- **Certificate Auto-Reload** (#2390): Upgraded github.com/minio/pkg to v3.5.1 to fix certificate auto-reload with atomic rename operations

## Documentation

- **Integration Test Guidelines** (#2483): Added comprehensive test writing guidelines including patterns for subtests, waiting mechanisms, logging, container validation, and timeout constants reference
- **Tables Documentation Updates** (#2456): Updated documentation reflecting changes to IAM policies, CreateTable architecture, file path corrections, and namespace directory changes
- **Metrics Documentation** (#2474): Moved v2.md to docs/metrics/ alongside v3.md and updated references throughout documentation

---

## Security & Compliance

### Software Bill of Materials (SBOM)

This release includes comprehensive SBOM documentation in multiple formats:

- [SPDX JSON](sbom-EDGE.2025-12-13T08-46-12Z.spdx.json) - Standard SBOM format
- [CycloneDX JSON](sbom-EDGE.2025-12-13T08-46-12Z.cyclonedx.json) - Security scanner compatible
- [Go Modules](go-modules-EDGE.2025-12-13T08-46-12Z.txt) - Human-readable dependency list

SBOM files document all direct and transitive dependencies for security auditing and compliance requirements.

---

## Upgrade Instructions

For detailed upgrade instructions, please read: https://docs.min.io/enterprise/aistor-object-store/upgrade-aistor-server/

Platform-specific upgrade guides:
- **Linux/Bare Metal**: https://docs.min.io/enterprise/aistor-object-store/upgrade-aistor-server/upgrade-aistor-linux/
- **Kubernetes with Helm**: https://docs.min.io/enterprise/aistor-object-store/upgrade-aistor-server/upgrade-aistor-kubernetes-helm/

### New Configuration Options

- **MINIO_ERASURE_SET_DRIVE_COUNT**: Set to 17-32 to enable larger erasure coding sets (default remains 16)
- **MINIO_DRIVE_MAX_USAGE_PCT**: Configure maximum drive usage percentage before returning 507 errors on new uploads

### Migration Notes

- **Iceberg Metadata Files**: Existing Iceberg tables will continue to work. New metadata files will use the corrected .metadata.json suffix for compatibility with Spark and other Iceberg clients

### Support

For enterprise support:
- SUBNET Support: https://subnet.min.io
- Documentation: https://docs.min.io

---

## Container Images

- `quay.io/minio/aistor/minio:EDGE.2025-12-13T08-46-12Z`
- `quay.io/minio/aistor/minio:EDGE.2025-12-13T08-46-12Z.fips`

## Downloads

### darwin-arm64

- [minio](https://dl.min.io/aistor/minio/edge/darwin-arm64/archive/minio)
- [minio.EDGE.2025-12-13T08-46-12Z](https://dl.min.io/aistor/minio/edge/darwin-arm64/archive/minio.EDGE.2025-12-13T08-46-12Z)
- [minio.EDGE.2025-12-13T08-46-12Z.sha256sum](https://dl.min.io/aistor/minio/edge/darwin-arm64/archive/minio.EDGE.2025-12-13T08-46-12Z.sha256sum)
- [minio.sha256sum](https://dl.min.io/aistor/minio/edge/darwin-arm64/archive/minio.sha256sum)
- [minio.EDGE.2025-12-13T08-46-12Z.asc](https://dl.min.io/aistor/minio/edge/darwin-arm64/archive/minio.EDGE.2025-12-13T08-46-12Z.asc)
- [minio.EDGE.2025-12-13T08-46-12Z.minisig](https://dl.min.io/aistor/minio/edge/darwin-arm64/archive/minio.EDGE.2025-12-13T08-46-12Z.minisig)
- [minio.asc](https://dl.min.io/aistor/minio/edge/darwin-arm64/archive/minio.asc)
- [minio.minisig](https://dl.min.io/aistor/minio/edge/darwin-arm64/archive/minio.minisig)

### linux-amd64

- [minio](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio)
- [minio.EDGE.2025-12-13T08-46-12Z](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.EDGE.2025-12-13T08-46-12Z)
- [minio-20251213084612.0.0-1.x86_64.rpm.sha256sum](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio-20251213084612.0.0-1.x86_64.rpm.sha256sum)
- [minio.EDGE.2025-12-13T08-46-12Z.sha256sum](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.EDGE.2025-12-13T08-46-12Z.sha256sum)
- [minio.sha256sum](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.sha256sum)
- [minio_20251213084612.0.0_amd64.deb.sha256sum](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio_20251213084612.0.0_amd64.deb.sha256sum)
- [minio_20251213084612.0.0_x86_64.apk.sha256sum](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio_20251213084612.0.0_x86_64.apk.sha256sum)
- [minio.EDGE.2025-12-13T08-46-12Z.asc](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.EDGE.2025-12-13T08-46-12Z.asc)
- [minio.EDGE.2025-12-13T08-46-12Z.minisig](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.EDGE.2025-12-13T08-46-12Z.minisig)
- [minio.asc](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.asc)
- [minio.minisig](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.minisig)
- [minio-20251213084612.0.0-1.x86_64.rpm](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio-20251213084612.0.0-1.x86_64.rpm)
- [minio.apk](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.apk)
- [minio.deb](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.deb)
- [minio.rpm](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.rpm)
- [minio_20251213084612.0.0_amd64.deb](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio_20251213084612.0.0_amd64.deb)
- [minio_20251213084612.0.0_x86_64.apk](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio_20251213084612.0.0_x86_64.apk)

### linux-amd64 (FIPS)

- [minio.EDGE.2025-12-13T08-46-12Z.fips](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.EDGE.2025-12-13T08-46-12Z.fips)
- [minio.fips](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.fips)
- [minio.EDGE.2025-12-13T08-46-12Z.fips.sha256sum](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.EDGE.2025-12-13T08-46-12Z.fips.sha256sum)
- [minio.fips.sha256sum](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.fips.sha256sum)
- [minio.EDGE.2025-12-13T08-46-12Z.fips.asc](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.EDGE.2025-12-13T08-46-12Z.fips.asc)
- [minio.EDGE.2025-12-13T08-46-12Z.fips.minisig](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.EDGE.2025-12-13T08-46-12Z.fips.minisig)
- [minio.fips.asc](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.fips.asc)
- [minio.fips.minisig](https://dl.min.io/aistor/minio/edge/linux-amd64/archive/minio.fips.minisig)

### linux-arm64

- [minio](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio)
- [minio.EDGE.2025-12-13T08-46-12Z](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio.EDGE.2025-12-13T08-46-12Z)
- [minio-20251213084612.0.0-1.aarch64.rpm.sha256sum](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio-20251213084612.0.0-1.aarch64.rpm.sha256sum)
- [minio.EDGE.2025-12-13T08-46-12Z.sha256sum](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio.EDGE.2025-12-13T08-46-12Z.sha256sum)
- [minio.sha256sum](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio.sha256sum)
- [minio_20251213084612.0.0_aarch64.apk.sha256sum](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio_20251213084612.0.0_aarch64.apk.sha256sum)
- [minio_20251213084612.0.0_arm64.deb.sha256sum](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio_20251213084612.0.0_arm64.deb.sha256sum)
- [minio.EDGE.2025-12-13T08-46-12Z.asc](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio.EDGE.2025-12-13T08-46-12Z.asc)
- [minio.EDGE.2025-12-13T08-46-12Z.minisig](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio.EDGE.2025-12-13T08-46-12Z.minisig)
- [minio.asc](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio.asc)
- [minio.minisig](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio.minisig)
- [minio-20251213084612.0.0-1.aarch64.rpm](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio-20251213084612.0.0-1.aarch64.rpm)
- [minio.apk](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio.apk)
- [minio.deb](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio.deb)
- [minio.rpm](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio.rpm)
- [minio_20251213084612.0.0_aarch64.apk](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio_20251213084612.0.0_aarch64.apk)
- [minio_20251213084612.0.0_arm64.deb](https://dl.min.io/aistor/minio/edge/linux-arm64/archive/minio_20251213084612.0.0_arm64.deb)

### windows-amd64

- [minio.exe](https://dl.min.io/aistor/minio/edge/windows-amd64/archive/minio.exe)
- [minio.exe.EDGE.2025-12-13T08-46-12Z](https://dl.min.io/aistor/minio/edge/windows-amd64/archive/minio.exe.EDGE.2025-12-13T08-46-12Z)
- [minio.exe.EDGE.2025-12-13T08-46-12Z.sha256sum](https://dl.min.io/aistor/minio/edge/windows-amd64/archive/minio.exe.EDGE.2025-12-13T08-46-12Z.sha256sum)
- [minio.exe.sha256sum](https://dl.min.io/aistor/minio/edge/windows-amd64/archive/minio.exe.sha256sum)
- [minio.exe.EDGE.2025-12-13T08-46-12Z.asc](https://dl.min.io/aistor/minio/edge/windows-amd64/archive/minio.exe.EDGE.2025-12-13T08-46-12Z.asc)
- [minio.exe.EDGE.2025-12-13T08-46-12Z.minisig](https://dl.min.io/aistor/minio/edge/windows-amd64/archive/minio.exe.EDGE.2025-12-13T08-46-12Z.minisig)
- [minio.exe.asc](https://dl.min.io/aistor/minio/edge/windows-amd64/archive/minio.exe.asc)
- [minio.exe.minisig](https://dl.min.io/aistor/minio/edge/windows-amd64/archive/minio.exe.minisig)
