From 8ab801f52007946a4930c8fbdd010d345c4ce9d8 Mon Sep 17 00:00:00 2001 From: Lilly Date: Wed, 1 Jul 2026 18:04:22 +0000 Subject: [PATCH 1/4] fix(tests/e2e): avoid /tmp for Codex home and skip gpt-5-6 Copilot models - Codex refuses to create helper binaries under /tmp by design, so base the E2E codex home outside of pytest's tmp_path. - gpt-5-6 models (luna, sol, terra) return 404 on mlflow/v1/chat/completions; add them to the Copilot skip list alongside the existing gpt-5.5 entry. --- tests/test_e2e.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/test_e2e.py b/tests/test_e2e.py index f0c64e0..0252460 100644 --- a/tests/test_e2e.py +++ b/tests/test_e2e.py @@ -387,8 +387,12 @@ def test_launch_codex_per_model(self, tmp_path, monkeypatch, e2e_state, e2e_work models = self._codex_models(e2e_state) monkeypatch.setattr(config_io_mod, "APP_DIR", tmp_path) - config_dir = tmp_path / "codex_home" / ".codex" - config_dir.mkdir(parents=True) + # Codex CLI refuses to create helper binaries when CODEX_HOME is under + # /tmp, so place the codex home outside the pytest tmp_path. + codex_home = tmp_path.parent / "e2e_codex_home" + codex_home.mkdir(parents=True, exist_ok=True) + config_dir = codex_home / ".codex" + config_dir.mkdir(parents=True, exist_ok=True) config_path = config_dir / "ucode.config.toml" backup_path = tmp_path / "codex-config.backup.toml" monkeypatch.setattr(codex, "CODEX_CONFIG_PATH", config_path) @@ -673,6 +677,8 @@ class TestCopilotLaunch: # gpt-5.5 rejects function tools + reasoning_effort on /chat/completions # ("Please use /v1/responses instead"). "gpt-5-5", + # gpt-5.6 models similarly reject /chat/completions with 404. + "gpt-5-6", ) def _all_models(self, e2e_state: dict) -> list[tuple[str, str]]: From dd7986bfc7e20f6310526e810de9687e3ae0179a Mon Sep 17 00:00:00 2001 From: Lilly Date: Wed, 1 Jul 2026 18:18:36 +0000 Subject: [PATCH 2/4] update --- tests/test_e2e.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/test_e2e.py b/tests/test_e2e.py index 0252460..e95a6af 100644 --- a/tests/test_e2e.py +++ b/tests/test_e2e.py @@ -387,12 +387,8 @@ def test_launch_codex_per_model(self, tmp_path, monkeypatch, e2e_state, e2e_work models = self._codex_models(e2e_state) monkeypatch.setattr(config_io_mod, "APP_DIR", tmp_path) - # Codex CLI refuses to create helper binaries when CODEX_HOME is under - # /tmp, so place the codex home outside the pytest tmp_path. - codex_home = tmp_path.parent / "e2e_codex_home" - codex_home.mkdir(parents=True, exist_ok=True) - config_dir = codex_home / ".codex" - config_dir.mkdir(parents=True, exist_ok=True) + config_dir = tmp_path / "codex_home" / ".codex" + config_dir.mkdir(parents=True) config_path = config_dir / "ucode.config.toml" backup_path = tmp_path / "codex-config.backup.toml" monkeypatch.setattr(codex, "CODEX_CONFIG_PATH", config_path) From 7871dd258a868be39714b6f9bb96c37313e97344 Mon Sep 17 00:00:00 2001 From: Lilly Date: Wed, 1 Jul 2026 20:48:31 +0000 Subject: [PATCH 3/4] update --- src/ucode/agents/codex.py | 3 +++ tests/test_agent_codex.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/ucode/agents/codex.py b/src/ucode/agents/codex.py index f1e3969..83a8a15 100644 --- a/src/ucode/agents/codex.py +++ b/src/ucode/agents/codex.py @@ -64,6 +64,9 @@ CODEX_OPENAI_ID_INCOMPATIBLE_MODELS = { "databricks-gpt-5-2-codex", "databricks-gpt-5-4-nano", + "databricks-gpt-5-6-luna", + "databricks-gpt-5-6-sol", + "databricks-gpt-5-6-terra", } diff --git a/tests/test_agent_codex.py b/tests/test_agent_codex.py index d1fb932..7749776 100644 --- a/tests/test_agent_codex.py +++ b/tests/test_agent_codex.py @@ -339,6 +339,9 @@ def test_openai_model_id_maps_databricks_naming(self): def test_codex_model_id_preserves_openai_incompatible_models(self): assert codex._codex_model_id("databricks-gpt-5-2-codex") == "databricks-gpt-5-2-codex" + assert codex._codex_model_id("databricks-gpt-5-6-luna") == "databricks-gpt-5-6-luna" + assert codex._codex_model_id("databricks-gpt-5-6-sol") == "databricks-gpt-5-6-sol" + assert codex._codex_model_id("databricks-gpt-5-6-terra") == "databricks-gpt-5-6-terra" assert codex._codex_model_id("databricks-gpt-5-4-nano") == "databricks-gpt-5-4-nano" def test_codex_model_id_passes_model_services_id_verbatim(self): From abf853f47871d264175190352c32df01f9bcdf06 Mon Sep 17 00:00:00 2001 From: Lilly Date: Wed, 1 Jul 2026 20:56:38 +0000 Subject: [PATCH 4/4] add logs --- src/ucode/agents/codex.py | 3 --- tests/test_agent_codex.py | 3 --- tests/test_e2e.py | 5 +++++ 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/ucode/agents/codex.py b/src/ucode/agents/codex.py index 83a8a15..f1e3969 100644 --- a/src/ucode/agents/codex.py +++ b/src/ucode/agents/codex.py @@ -64,9 +64,6 @@ CODEX_OPENAI_ID_INCOMPATIBLE_MODELS = { "databricks-gpt-5-2-codex", "databricks-gpt-5-4-nano", - "databricks-gpt-5-6-luna", - "databricks-gpt-5-6-sol", - "databricks-gpt-5-6-terra", } diff --git a/tests/test_agent_codex.py b/tests/test_agent_codex.py index 7749776..d1fb932 100644 --- a/tests/test_agent_codex.py +++ b/tests/test_agent_codex.py @@ -339,9 +339,6 @@ def test_openai_model_id_maps_databricks_naming(self): def test_codex_model_id_preserves_openai_incompatible_models(self): assert codex._codex_model_id("databricks-gpt-5-2-codex") == "databricks-gpt-5-2-codex" - assert codex._codex_model_id("databricks-gpt-5-6-luna") == "databricks-gpt-5-6-luna" - assert codex._codex_model_id("databricks-gpt-5-6-sol") == "databricks-gpt-5-6-sol" - assert codex._codex_model_id("databricks-gpt-5-6-terra") == "databricks-gpt-5-6-terra" assert codex._codex_model_id("databricks-gpt-5-4-nano") == "databricks-gpt-5-4-nano" def test_codex_model_id_passes_model_services_id_verbatim(self): diff --git a/tests/test_e2e.py b/tests/test_e2e.py index e95a6af..90aa027 100644 --- a/tests/test_e2e.py +++ b/tests/test_e2e.py @@ -366,6 +366,11 @@ class TestCodexLaunch: CODEX_INCOMPATIBLE_MODEL_FRAGMENTS = ( # nano endpoint is unreliably slow and times out past the 60s budget. "gpt-5-4-nano", + # These endpoints are discoverable as responses-capable, but the + # backing OpenAI endpoint returns ENDPOINT_NOT_FOUND in the CI region. + "gpt-5-6-luna", + "gpt-5-6-sol", + "gpt-5-6-terra", ) def _codex_models(self, e2e_state: dict) -> list[str]: