A feature flag needs an expiry date at creation

Creating a flag is a deliberate act and removing one is not, so without a mechanism the count only goes up.

Feature::define('new-checkout', expires: '2022-09-01');

// and the test that makes it real
public function testNoFlagIsPastItsExpiry(): void
{
    $expired = Feature::all()->filter(
        fn ($f) => $f->expires->isPast()
    );

    $this->assertEmpty($expired, 'Expired flags: ' . $expired->keys()->join(', '));
}

A failing test is the only mechanism that reliably produces the removal, because a report or a dashboard is something to ignore. The date will be wrong and extending it should require editing the definition, which is a thirty-second conversation with yourself and is exactly the friction that is wanted.