There was no rollback. In terms of technical. On all previous versions of 3.2.1 we manually insert a pre-modified arrays.xml (of framework-miui-res.apk) in order to allow multiple languages and fix the FC on About->Status which is fixed by the 5000 line entry of carriers.
On 3.2.1 I adapted a new method which used a .part file (part of arrays.xml) that we change. (EX: Only the changes of carrier values, id, names and translations). So that part file would get injected into the original arrays.xml per device. Instead of managing hardcoded values. As hardcoding = bad.
The problem on 3.2.1 occurred when the system inserted on the values array, but replaced on the names array.
Imagine the array
name_ids
id[1] = 2
id[2] = 4
and the corresponding values
name_values
values[2] = "ye";
values[4] = "test";
As you can see, the name_ids of 1 corresponding to the metadata of array element 2 (name_values) which equals "ye".
So now we inserted a new value pair of
id[3] = 5;
values[5] = "connor";
into both arrays.
This made it
id[1] = 2;
id[2] = 4;
id[3] = 5;
values[2] = "ye";
values[4] = "test";
values[5] = "connor"
but in reality, this happened.
id[1] = 5;
id[2] = 2;
id[3] = 4;
values[2] = "ye";
values[4] = "test";
values[5] = "connor"
Which made all the names and id pairs out of sync. So there was no organization. IDs were pointing to the wrong carriers. The bug was fixed, but the cosmetic display carrier name was wrong.
tldr; There was no rollback.