This is really amazing.
How you keep trying to make up a fault that does not exist. At least not in the faintest fashion of how you portrait it?
Read it again, slowly please: typecasting any value other than 0 and 1 to boolean is INVALID. It's not rocket scientce, it's that simple.
It is invalid, if and only if you want the value to be valid boolean data.
The language allows storing arbitrary data (with size limits) in any type. TStringList(1) is not giving you a stringlist. But you can store the data 1 in a variable of that type. Yes, its an abuse. But it's an allowed abuse. It's part of the language. (again: good, bad, ugly, beautiful, whatever...)
So yes, the compiler should allow you to store arbitrary data (within size limits) in a variable of type boolean. Even if it means the data is not valid for the type, and the variable no longer functions as if it was of the type. That is the price to pay. And it is by design.
In addition to that, look at the code the compiler generates for a boolean: it is WRONG. The compiler is testing for nibbles, bytes, words, etc instead of testing a single bit as it should.
Read my section on "representation" very very very slowly. I had discussions with you before, I know you are way above average, and ** if you want ** you can easily comprehend it.
The tests in the generated asm are correct. And I explained that in great detail before. Another good bit of explanation for a slow read...
About representation: You made at some time the point that true and false should ( or maybe you even said "must") be represented by zero and one.
Given that, then there are plenty of documents, books, papers, ... that (according to you) wrongly use True/False or T/F or even translation there of.
And how do we represent those two numbers? #$30 and #$31 ? Short-strings with the text one/zero?
Or is there an official all binding definition that say boolean value must be represented by a single point in an electrical circuit that has a specific current for each of the two states? How was boolean ever done on paper?