{"version":"2.1.225","anchor":"artifact-publishes-retry-429-and-503-with-a-live-progress-li","canonical_anchor":"artifact-publishes-retry-429-and-503-with-a-live-progress-li","heading":"Artifact publishes retry 429 and 503 with a live progress line","tier":"notice","area":"Artifacts","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.225\/e\/artifact-publishes-retry-429-and-503-with-a-live-progress-li","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.225","markdown":"### Artifact publishes retry 429 and 503 with a live progress line\n\nArtifact publishing now retries when the service is busy, showing a live attempt counter instead of failing.\n\n**What**\n\nPublishing an artifact through `\/api\/frame\/deploy\/direct` now retries transient failures instead of failing outright, and shows the retry state while it happens.\n\n**Details**\n\n- A 429 is retried once after the `retry-after` delay, capped; 503s are retried with backoff up to a maximum attempt count.\n- Retries honor the abort signal, logging \"[artifact] \/deploy\/direct retry cancelled by user\".\n- A new progress event type renders \"Publish service temporarily unavailable\" or \"Publish service busy\" followed by \" \u2014 retrying (attempt N of M)\u2026\".\n- Telemetry `deploy_503_retried` \/ `deploy_429_retried` carries `deploy_attempts` and `deploy_final_status`.\n- `onRetry` and `signal` are threaded through the publish call chain. None of this existed in 2.1.224.\n\n**Evidence**\n\n`artifact_publish_retry`\n\n- Area: Artifacts\n- Tier: You'll notice\n- Useful: 4\/5\n- Signal: 0\/5"}