refactor: fallback updates (#68631)
This changes the internals to use an enum for the fallback mode instead
of passing around `boolean | string` which required knowledge to
understand what it meant. The enum values are now more verbose to aid in
readability.