Every Estimate Before the First One Is a Guess
Four apps had to converge onto one shared component. Before any of them had, the honest state of knowledge was: nobody knew what a conversion cost. Everyone had opinions, all of them derived from reading code rather than from moving it, and code reading systematically underestimates — it shows you the shape of the work and hides the accumulated exceptions.
So the order was cheapest first, deliberately, and the first conversion was written up in detail: what moved into the shared component, what had to be deleted from the app, what the shared component had to grow, and what turned out not to be a problem at all.
The Write-Up Is the Deliverable
That record did real work three more times. Each subsequent conversion started by reading it and asking which of those costs applied here. Sometimes the answer was none — the same architectural question came up in all three that followed and cost nothing in any of them, because only the first app had actually exposed the affected controls to a user.
Without the write-up, that question would have been re-litigated three times from scratch, each time by somebody reasoning about it rather than checking. With it, the question took a minute: does this app expose those controls? No. Then this cost does not apply.
The Last One Was the Cheapest, and That Is Not a Contradiction
The ordering was by expected cost, and the expectation was wrong at the far end. The app everybody assumed would be worst — different platform, its own settings store, a bridge into an editor — turned out to be the cheapest of the four, because most of what it feared did not survive contact.
Its supposed blocker was that a component swap would break an editor bridge. Reading the file settled it: the bridge listens on the window and replies through the message event's source, so it never holds the frame element at all and a swap cannot touch it. And its layout already satisfied the shared component's structural requirement without any change.
That is worth generalizing. Fear-based cost estimates are the least reliable kind, and they are cheapest to disprove. An hour of reading the specific file that worries you will either remove the fear or turn it into a real, sized problem — and either outcome is better than an estimate carrying it as an unexamined premium.