Thanks for the comments.
So if I understand correctly then, I (and countless others?) have two options...a ) run Tool's restore and lose everything I've ever customized (WTH?!), or b ) not be able to upgrade past 4.11.3.
I must be missing something.
Not sure what exactly you are loosing ? :)
You got two options
Either you do all change manually via phpmyadmin or you run tools sql file. Have you at least looked at it?
Personally I did all manually, by editing each field that did not match original. I did this because I have few additional statuses (do not wanted to loose those) that generates invoice number and credit memo.
Upgrade script is checking if status names and their description match these below, if not it stops..
INSERT INTO cscart_status_descriptions (`status_id`, `description`, `email_subj`, `email_header`, `lang_code`) VALUES ('2', 'Complete', 'has been completed', 'Your order has been completed. Thank you for choosing us.', 'en');
INSERT INTO cscart_status_descriptions (`status_id`, `description`, `email_subj`, `email_header`, `lang_code`) VALUES ('1', 'Paid', 'has been paid', 'Your order has been paid successfully.', 'en');
INSERT INTO cscart_status_descriptions (`status_id`, `description`, `email_subj`, `email_header`, `lang_code`) VALUES ('3', 'Open', 'has been placed successfully.', 'Thank you for the order. You are welcome to come back!', 'en');
INSERT INTO cscart_status_descriptions (`status_id`, `description`, `email_subj`, `email_header`, `lang_code`) VALUES ('4', 'Failed', 'failed', 'Your order has been unsuccessful. Please contact shop administration.', 'en');
INSERT INTO cscart_status_descriptions (`status_id`, `description`, `email_subj`, `email_header`, `lang_code`) VALUES ('5', 'Declined', 'has been declined', 'Your order has been declined. Please contact shop administration.', 'en');
INSERT INTO cscart_status_descriptions (`status_id`, `description`, `email_subj`, `email_header`, `lang_code`) VALUES ('6', 'Backordered', 'has been backordered', 'Your order has been backordered.', 'en');
INSERT INTO cscart_status_descriptions (`status_id`, `description`, `email_subj`, `email_header`, `lang_code`) VALUES ('7', 'Canceled', 'has been canceled', 'Your order has been canceled. Please contact shop administration.', 'en');
INSERT INTO cscart_status_descriptions (`status_id`, `description`, `email_subj`, `email_header`, `lang_code`) VALUES ('8', 'Picked up', '', '', 'en');
INSERT INTO cscart_status_descriptions (`status_id`, `description`, `email_subj`, `email_header`, `lang_code`) VALUES ('9', 'Packed', '', '', 'en');
INSERT INTO cscart_status_descriptions (`status_id`, `description`, `email_subj`, `email_header`, `lang_code`) VALUES ('10', 'Shipped', '', '', 'en');
Additionally all above statuses need to be set as default Y in cscart_statuses