Four local builds and a crash loop
26 October 2026
An order used to live at an address naming its provider. It moved to an address naming only itself, for a reason worth its own post: an address that says which exchange handled your transfer tells every piece of software that sees it something the transfer was meant to keep.
Keeping the old address working alongside the new one is routine. It is also what broke three consecutive releases.
The thing a build does not check
Two dynamic routes existed at the same depth under one path, and their segments were named differently — one calling its first part the identifier, the other calling it the provider. That is not allowed, and the framework says so clearly:
Error: You cannot use different slug names for the same dynamic pathIt says so at boot. Compiling the application does not surface it. The build succeeded locally four times, generated every page, reported no errors and wrote its output. The server then refused to start, crashed, restarted, and crashed again on a ten second cycle.
Why nobody noticed for three releases
Because the site stayed up. A deployment that cannot start never replaces the one already running, so the previous version kept serving every visitor perfectly while three successive releases failed behind it. The only visible symptom was that a change which had definitely shipped was definitely not live.
A second release in the same stretch failed differently and for a related reason: a file that had been written, type-checked and built against for days was never committed. It existed on one machine. Everything passed there and nothing could pass anywhere else.
Build, then boot
Both failures share a shape. The checks being run answered a question nobody was asking — does this compile? — while the question that mattered was does this start, from what is actually committed?
So the release routine gained two steps that cost about a minute between them: start the built server and request the real URLs, and confirm nothing the application imports is untracked. Neither is clever. Both would have caught a fault that four builds, a type check and a passing test suite all missed.
Every figure above can be checked against the providers yourself — no account, no sign-up, and nothing is held for you at any point.