Short write‑ups of problems we hit running a real commerce operation and what we changed in the code because of them. No product announcements; just the reasoning.
The new system's name wasn't invented for a rebrand — and it wasn't even the first name. In October 2020, years before aiku served its first request, a file called trait.Aiku.php appeared inside Aurora, pushing entity changes to a system that barely existed. The app that eventually caught those changes was born as "Pika" — an experiment to extract warehouse picking into a micro-service, started on a warehouse visit in Eastern Europe — and only became aiku by a rename ticket in March 2023. This is the archaeology of a name.
Four years, 1,659 migrations, 793 tables, twenty thousand columns, five thousand indexes. How the aiku schema got this big without getting lost — the group/organisation/shop spine on every row, a stats table beside every entity, slugs as public identity, jsonb where the business is still deciding, and the bridge columns that let us migrate off a twenty‑year‑old system one table at a time.
We did not rewrite the twenty‑year‑old system and flip a switch. We built the new one beside it, pulled the data across entity by entity with 106 fetchers, ran both for years, and moved one company at a time — 588,000 customers, 1.08 million invoices, eventually 88 million rows of history. The "source id" on every row, the fetchers that could not be allowed to overwrite what people had edited in the new system, the guard that froze the catalogue, the import of two decades of audit trail, and the rule that a closed shop must rest in peace.