Do you mean that any code that has not explicitly declared a variable as "external" or "local" (or defined as a function parameter) ***and visible in the same source file*** must imply that "local" must apply by default ?
The problem may the definition of "file-level scope" : what can happen with code generators or code templates: these templates do not work if they can't use outer variables that are declared by other templates in the appropriate scope.
But for simple autonomous .lua files, this rule would be enough. Code template should not use the ".lua" extension as they are intended to be used within a preprocessor that will assemby and repack them into a runnable lua source "file". Such preprocessor may be for code generator, or it could be a "streaming" preprocessor (taking input from a continuous flow, e.g. a Lua I/O console, whose code is executed progressively as it is entered, while keeping the existing "local" variables and their values between multiple inputs of the same stream: the "file" level in that case is the whole stream, and not an isolated input; this is a special case where Lua code gets parsed, compiled and executed even if it is not complete...).