1
Definition. Feature::define('new-api', fn (User $user) => ...) in a service provider, or a class made by pennant:feature.
2
Scope. What the flag is checked for. The authenticated user unless Feature::for() says otherwise.
3
Resolver, run once per scope. A rule, a Lottery, or a rich value such as a colour for an experiment.
4
Store. The result is written to the features table, so the answer is stable for that scope from then on.
5
Request cache. Checked once, held in memory for the rest of the request, so a loop does not re-query.
6
Check site. Feature::active, @feature in Blade, or EnsureFeaturesAreActive on a route.