As Sarah pointed out, waiting and refreshing makes everything work nicely. The added token at the end is generated by Launchpad and returned to the launchpad-integration package in an X-Launchpad-Blob-Token header (James Westby explained this on IRC).
So it appears that Launchpad is generating a token for the uploaded blob and then pretending that the token doesn't exist, which is positively weird.
As Sarah pointed out, waiting and refreshing makes everything work nicely. The added token at the end is generated by Launchpad and returned to the launchpad- integration package in an X-Launchpad- Blob-Token header (James Westby explained this on IRC).
So it appears that Launchpad is generating a token for the uploaded blob and then pretending that the token doesn't exist, which is positively weird.