mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-22 22:01:11 +00:00
* fix(acpx): keep leaked non-openai model out of the Codex ACP thinking slot Codex ACP spawn mis-routed an inherited non-OpenAI fleet default into the reasoning-effort slot and aborted (#95780). Replace the splitter with a closed classifier and make the spawn path provenance-aware: drop an inherited leaked default so Codex starts on its own default, but fail closed with ACP_INVALID_RUNTIME_OPTION when a caller explicitly selects an unsupported or malformed model. Thread a modelExplicit flag from resolveAcpSpawnRuntimeOptions through the ACP runtime ensure contract; strip it before the acpx delegate. Dropping the inherited default only at ensureSession was not enough: the manager still persisted the leaked model in runtimeOptions, and the first turn replayed it through applyRuntimeControls -> setConfigOption(model), which the new fail-closed Codex control path then rejected. ensureSession now reports the effective model it applied on the returned handle (applied | dropped), and the manager persists that effective model, so a dropped inherited default is never saved or replayed as a model control before the first turn. Explicit unsupported selections still fail closed at spawn and never persist. * test(acp): split runtime config validation tests --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>