3e91783da8
getOpenRouterRouteSuffix() used strict parseThinkingLevel(), which never recognizes the max->xhigh alias, so openrouter/<id>:max was consumed as an OpenRouter route suffix and cloned into a literal <id>:max model id with the reasoning level dropped. This hit every exact-selector funnel (parseModelPattern -> resolveCliModel/--model, resolveModelRoleValue/modelRoles + model picker, SDK default role) for the dominant aggregator provider. Exclude max via parseThinkingSuffix(.., MAX_THINKING_SUFFIX_OPTIONS) so the pattern falls through to the existing max-aware selector split. Literal :max ids stay safe (none exist under openrouter; nanogpt literals win via exact lookup before this path). Adds an openrouter/<id>:max regression test.