In the case of a database you often can't fix mistakes so overdesign just in case makes sense. Many have been burned.

Probably even more have been burned by overdesign.

If you decided to make your boolean a timestamp, and now realize you need a field with 3 states, now what?

If you'd kept your boolean, you could convert the field from BOOL to TINYINT without changing any data. [0, 1] becomes [0, 1, 2] easily.

While I agree on the over-design point, it doesn't follow that the BOOL is trivially convertible to a TINYINT. In some databases a BOOL is stored as a single bit.

[deleted]

See always having a synthetic primary key