## Problem

A MinIO lifecycle rule that deletes non-current versions with a tag filter never matches anything, so old versions pile up forever. Steps: versioned bucket, objects tagged (e.g. tag-key [your value] lifecycle rule to expire non-current versions keeping at most N, filtered on those tags. The same rule without the tag filter works and expires old versions correctly. Seen on RELEASE.2024-11-07T00-52-20Z. Maintainer krisis reproduced it and found the root cause in how tag-filtered lifecycle rules were evaluated.

## Verified fix

This is a MinIO bug: lifecycle rules with tag-based filters never matched, so nothing expired. Maintainer krisis root-caused it on the thread and fixed it in PR #21096, verified locally. Upgrade MinIO past the release containing that fix and tag-filtered lifecycle rules expire non-current versions as expected. As a workaround before upgrading, run lifecycle rules without tag filters.

Source: https://github.com/minio/minio/issues/20877