Currently, strict_variables defaults to false and must default to true in order to enable strict mode by default.
A good thing to verify - take a module like stdlib, test against puppet8 gem, change the setting for strict variables, and make sure the spec tests still pass. Note you can use the PUPPET_GEM_VERSION to pin to a local checkout of puppet rather than building a gem.
Changing the strict_variables default to true causes 14 failed tests and changing to default for strict from warning to error causes ~60 more failed tests. Fixing 70 failed tests seems like a lot for just 1 ticket. Due to this, I think it may be best to split up the work and just change the default for strict_variables for this ticket and make another ticket/s for changing the default for strict.
Here is the ticket to change strict default: https://tickets.puppetlabs.com/browse/PUP-11725 I wasn't sure if it would be best to break it down more but at least there's a ticket as a placeholder for the work
The strict_variables setting was introduced in Puppet 4.x. For Puppet 8, strict mode will be on by default which means strict_variables will be on & default to true and strict will default to error. Previously, strict_variables defaulted to false. With strict_variables on, an evaluation error will be raised when referencing unknown variables but not when referencing variables explicitly set to undef. This change could potentially be a breaking change.
The strict_variables setting was introduced in Puppet 4.x. For Puppet 8, strict mode will be on by default which means strict_variables will be on & default set to true by default and strict will default to error. Previously, strict_variables defaulted to false. With strict_variables on, an evaluation error will be raised when referencing unknown variables but not when referencing variables explicitly set to undef. This change could potentially be a breaking change.