reasoning_budget_message handler depends on unreliably ordered field processing
The reasoning_budget_message handler now reads ctx.params.sampling.reasoning_budget_end.front() to build the forced token sequence. This vector is populated by the reasoning_budget_end_tags handler (or its alias). If the JSON object is processed in key order (which is not guaranteed per the JSON standard), the reasoning_budget_message handler may execute before the end-tags handler, resulting in an empty reasoning_budget_end and thus a missing forced sequence. The previous code was safe because it used the raw JSON string for reasoning_budget_end_tag directly, without relying on another handler's side effect.