* fix: a rate-limited turn renews an expired free-tier token and stops sleeping for minutes on desktop
A free-tier 429 carries retry_after (1069 s in the lab run). The loop capped
it at 600 s, slept, retried inside the same pause, slept 469 s more, and the
third attempt went out on a guest JWT that had expired during the wait (the
JWT lives 15 minutes). The welcome host answered 403 "invalid jwt", which
welcome_route_refusal read as the dark tier, so the user was told signing-in
was switched off, after 18 minutes of a thinking line.
- interruptible_backoff_sleep adopts a fresh Nous key after every completed
wait; the per-iteration pre-expiry adoption never ran between retries.
- A welcome-host 403 that says "invalid jwt" is its own route kind,
session_expired: the existing one-shot route heal re-exchanges the anon
credential and retries. If the renewal fails the copy says so and the card
is the retryable outage card, never free_tier_disabled.
- On desktop and TUI a provider cooldown longer than 60 s ends the attempt
cycle at once (fallback first, else the reset time and the sign-in / model
doors). Background surfaces keep the long wait.
- Rate-limit waits a user feels (over 60 s, or any on a live surface) emit
their status line when the wait starts instead of from the end-of-turn
buffer, and every retry line names the attempt that runs after the wait.
* fix: a not-yet-built free-tier session reports nous/welcome, not the silent default
session.resume (deferred build), session.create and the lazy fallback info reported the configured default model (the silent default z-ai/glm-5.2, no provider) while the agent build pins nous/welcome on the free tier's route. _session_default_route reports the pinned route when the profile routes to the free tier.
* fix: the scripted setup opening's setup_choose calls carry options
#129344 made options required on setup_choose; the backend prelude's name and accent cards omitted it, so the history held calls that do not match the schema. The name card carries the suggested-name row or an empty list, the accent card an empty list.