{"version":"2.1.202","anchor":"refusal-fallback-tracking","canonical_anchor":"refusal-fallback-tracking","heading":"Refusal Fallback Tracking","tier":null,"area":null,"scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.202\/e\/refusal-fallback-tracking","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.202","markdown":"### Refusal Fallback Tracking\n\nRefusal-continuation retries are now tracked explicitly with a `refusalFallbackOccurred` flag in session state, allowing downstream code to distinguish sessions where a silent retry occurred.\n\n**Details**\n\n- `refusalFallbackOccurred` is a boolean in session state initialized to `false`; it is set to `true` (`Hdr()`) only when a **silent** (non-interactive, `ni = true`) refusal fallback fires \u2014 visible-to-user fallbacks do not set it\n- When the flag is `true` and the `convolute_arcades` GrowthBook feature flag is also active, the HTTP header `x-is-refusal-fallback: true` is attached to every subsequent Anthropic API request in that query, signalling to the backend that a retry is in progress\n- The flag is reset to `false` per-query by `XHn()`, and is also cleared on session transitions: both `SHn()` (new session UUID) and `pA()` (session switch) reset it, ensuring it does not bleed across tasks\n- During conversation rewind, `kCe()` is read as `latchActive` to determine whether the `refusalFallbackModelLatch` should be cleared and the original model restored; this prevents rewinding past a fallback from leaving the model permanently switched\n- The `refusal_continuation` QueryEvent now brackets the retry window with `phase: \"begin\"` (carrying `salvageText` to preserve any partial streamed text visible in the UI) and `phase: \"end\"`; the SDK schema describes it as \"@internal Emitted when a silent refusal-continuation retry begins \u2026 or ends\"\n- The internal `QueryEvent 'refusal_continuation'` description was updated from \"window begins\" to \"retry begins\" to more accurately reflect the mechanism\n- Session state gains `refusalFallbackOccurred: false` at initialization, reset per-query via `XHn()`\n\n**Evidence**\n\nRefusal fallback state (search for `\"refusalFallbackOccurred\"`, `\"x-is-refusal-fallback\"`, and `\"convolute_arcades\"`)"}