The job log showed uploads 404ing: sed's greedy .* matched the LAST "id" in the release JSON (a nested user id), not the release's. First-match grep now. Release creation falls back to GET-by-tag on re-runs, and the image job strips any scheme from the internal server URL (http://app:3000) with an ECHOLOT_REGISTRY_HOST override for the public registry host. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>