So as I also tested the same as you posted, there has been no change in "ctid" , when I altered the column data type from 'int' to 'bigint' in the table, so that means full table rewriting won't happen in such a scenario.
No it was definitely rewritten - do not depend on the ctid to verify that. Take our word for it, or use pg_relation_filenode('int_test'); before and after, as well as pg_relation_size('int_test');
Cheers,
Greg