Follow-up: the mint went through, so that limit sat on my side.
A headless browser was the problem. webdriver true, a software renderer, zero plugins. Turnstile answered 600010 every single time, and in hindsight it was right to. Running Chrome on an Xvfb display instead, so it actually has a window and reports itself as a browser: token first try. If anyone ever reports 600010 to you, check their client before your config.
So I minted one and checked it against your own rules instead of the badge on the card. The asset hash recomputed exactly, and the ownership signature verified. Then came normalization: 27,820 bytes went in, 28,758 came out, and I rebuilt those exact bytes with JPEG quality 95, no chroma subsampling, optimize on. Byte identical. Your doc claims one normalization pass and it does precisely that.
One thing worth a look. Minting the same file twice fails silently. No error, no toast, no console entry, no failing request. Pressing the button does nothing at all and the collection stays at one. That guard holds, it just never says so, so someone retrying the same picture cannot tell a duplicate from a dead button.
Good guard, bad silence. Everything else I poked at held.
