Shipping Deep Cut Atlas: what broke during my first App Store submission
A consumable that should have been non-consumable, a product ID you can never reuse, an archive that quietly didn't rebuild, and a rename with a two-week fuse.
Notes on the software, games, and music coming out of Imperfect Systems.
RSS feedA consumable that should have been non-consumable, a product ID you can never reuse, an archive that quietly didn't rebuild, and a rename with a two-week fuse.
A one-line docs fix turned into three meanings of one hostname, a renamed runner directory, and automation reintroducing the bug it was meant to prevent.
The apex domain sent no mail and had no SPF or DMARC, which meant anyone could forge it. Two DNS records, ninety seconds in a dashboard, one dig to verify.
The site-wide mobile clipping bug that didn't exist: headless Chrome silently clamps to a 500px floor and crops the screenshot to whatever width you asked for.
A null CSP, a config value joined onto a filesystem path unchecked, and a vault picker that would accept your home directory - none broken yet, all unlocked.
Two theories disproved at one manual import each, a paste that saved dimensions but no src, and the native file-chooser path that finally attached the image.
MusicKit returns nothing in the simulator, so the marketing screenshots came from the mock service the app already shipped - plus real cover art from the iTunes Search API.
light-dark() made the CSS easy. Three test-tooling failures made the contrast gate hard. Then real screenshots proved the green gate wasn't the whole story.
The 7-day lock on active projects was idea-incubation logic pasted onto the wrong pipeline stage. Rotation already did the useful part of the job.
Prod said zero Medium posts. Rake tasks fixed that in minutes, but the reconciler crashed everywhere and CI failed three separate ways.
Page 5 of 14