{"version":"2.1.277","anchor":"artifact-publish-new-429-rate-limit-and-contract-rollout","canonical_anchor":"artifact-publish-new-429-rate-limit-and-contract-rollout","heading":"Artifact publishing recognizes contract-rollout and generic rate-limit errors","tier":"notice","area":"Artifact Publish","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.277\/e\/artifact-publish-new-429-rate-limit-and-contract-rollout","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.277","markdown":"### Artifact publishing recognizes contract-rollout and generic rate-limit errors\n\nArtifact publish failures now get a distinct contract_rollout error code and generic 429 responses are classified as rate-limited\n\n**What**\n\nArtifact publishing error handling gained two refinements:\n\n- Generic 429 (\"too many requests\") responses, beyond the existing capacity-cap case, are now classified as `rate_limited` and shown with a retry-after message\n\n- A new `contract_rollout` error code is added for 422 responses whose message matches a \"is newer than the preferred\" pattern, but only when the request declared `contract:'latest'` (the `latestContract` flag) and there's no already-known contract pin. This is treated as distinct from the existing `contract_echo_rejected` case\n\n**Why**\n\nThese give users and logs a more accurate reason when a publish fails: a genuine rate limit versus a contract version that's being rolled out ahead of what the client expected, rather than lumping both into generic or misleading error codes.\n\n- Area: Artifact Publish\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 2\/5"}