I am not sure whether this is a bug or just wrong expectations.
If you declare a BOOLEAN field and give it True/False at indexing time, everything's fine.
In case you give it e.g. "true" or "false" or "1" or "0" ... (the same values as you could use at query time), all of them get indexed like True (because bool(str) is True if str is not empty).
So this is basically an API question. What shall the API take? Just the specific type or also text with "meaning"?
This question also applies to the pull request I made today, it is basically same thing for DATETIME.