v1.5.1 - release-create idempotent on duplicate-pipeline-fire Single fix: release-create no longer fails when a tag's release already exists. Replaces the GitLab CI release: keyword (which always invokes release-cli with --no-update) with a script that checks the API for an existing release and skips create when one is present. upload-release-assets similarly tolerates pre-existing asset links: 400/409 responses with "already exists" or "has already been taken" downgrade to "already linked" instead of failing the job. Caught during dunn.dev/bairn v0.2.2 release: a manual API trigger and a delayed auto-trigger raced; the second pipeline failed at "Release v0.2.2 already exists." Cosmetic but annoying. With this fix, future duplicate fires complete silently as no-ops. Both jobs now use registry.gitlab.com/dunn.dev/pipeline/ci:latest (curl + jq + bash) which matches the rest of the catalog. No other component changes.