Basically, if it doesn't look like an INT, it won't be coerced into it.
The edge case I hit was when it did look like an integer, but had leading zeroes that were important:
sqlite> create table example(a int, b text);
sqlite> insert into example values ('00123', '00123');
sqlite> select * from example;
123|00123
My fault for a bunch of reasons, but still, surprised me.