f3ad5ede6b
The 3 -> 8 bump in callWithCopilotModelRetry was shared by the generic retryable branch, so a persistent status-less transport blip on Copilot would ramp across 8 attempts (~11.2s of dead time) instead of the 3 it took before, and a repeated Retry-After 429 could stretch the same way on top of the transport's own fetchWithRetry budget. Derive the budget from the failure kind: model-availability 400s keep the 8-attempt reroll, everything else caps at the previous 3. Also read COPILOT_TRANSIENT_MODEL_CODES with Object.hasOwn — `code` is provider-controlled, so a 400 body whose code was `__proto__` or `toString` classified as transient through the prototype chain.