mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-07-15 12:58:04 +00:00
Stabilize local dev merge
Align regression tests with the current Odysseus behavior after merging origin/dev into local main. - keep phone/name-only contacts valid and cover null email without crashes - pin explicit web-search false form submission in chat.js - update Cookbook dependency/download completion tests for combined live + persisted output - expose SGLang OS package repair hints from backend diagnosis - treat MLX and MLX-community repos as servable on Apple Metal while keeping CUDA behavior unchanged - keep desktop new-chat coverage on the shared preferred-model helper - remove a hardcoded crop overlay portal z-index literal - include the local agent-loop cleanup that removes the old manage_notes reminder repair shim Verified with: docker run --rm -v /home/pewds/odysseus-cookbook-fresh:/app -w /app odysseus-cookbook-fresh-odysseus python3 -m pytest -q (4515 passed, 4 skipped).
This commit is contained in:
+11
-11
@@ -43,13 +43,12 @@ def _fake_sysctl(brand="Apple M2 Pro", memsize_gb=32, wired_mb=None, display_jso
|
||||
return run
|
||||
|
||||
|
||||
def test_mlx_models_hidden_on_metal():
|
||||
"""MLX-quantized models can't be served by llama.cpp or Ollama (the only
|
||||
Metal-capable engines Odysseus generates), so they must never be recommended
|
||||
on Apple Silicon — even though the catalog tags them as Apple-only."""
|
||||
def test_mlx_models_visible_on_metal():
|
||||
"""Apple Silicon can serve MLX models through the MLX engine, so Cookbook
|
||||
should surface MLX rows on Metal while still hiding them on CUDA."""
|
||||
results = rank_models(_metal_system(), limit=900)
|
||||
mlx = [m for m in results if str(m.get("quant", "")).startswith("mlx-")]
|
||||
assert mlx == [], f"MLX models surfaced but cannot be served: {[m['name'] for m in mlx]}"
|
||||
assert mlx, "MLX models should be available on Apple Silicon / Metal hardware"
|
||||
|
||||
|
||||
def _cuda_system():
|
||||
@@ -65,17 +64,18 @@ def test_mlx_hidden_on_cuda_backend_unchanged():
|
||||
assert mlx == []
|
||||
|
||||
|
||||
def test_only_gguf_models_recommended_on_metal():
|
||||
"""llama.cpp and Ollama (the only Metal engines) need GGUF. Safetensors-only
|
||||
repos — incl. vLLM-only AWQ/GPTQ/FP8 — can't be served on Metal, so every
|
||||
model recommended on Apple Silicon must ship a servable GGUF."""
|
||||
def test_only_gguf_or_mlx_models_recommended_on_metal():
|
||||
"""Metal recommendations must be servable locally: either GGUF for
|
||||
llama.cpp/Ollama or MLX for the MLX engine."""
|
||||
catalog = {m["name"]: m for m in get_models()}
|
||||
unservable = [
|
||||
r["name"] for r in rank_models(_metal_system(), limit=900)
|
||||
if not (catalog.get(r["name"], {}).get("is_gguf")
|
||||
if not (str(r.get("quant", "")).startswith("mlx-")
|
||||
or str(r.get("name", "")).startswith(("mlx-community/", "lmstudio-community/"))
|
||||
or catalog.get(r["name"], {}).get("is_gguf")
|
||||
or catalog.get(r["name"], {}).get("gguf_sources"))
|
||||
]
|
||||
assert unservable == [], f"{len(unservable)} non-GGUF models on Metal, e.g. {unservable[:3]}"
|
||||
assert unservable == [], f"{len(unservable)} non-servable models on Metal, e.g. {unservable[:3]}"
|
||||
|
||||
|
||||
def test_qwen_catalog_entries_point_at_verified_gguf_repos():
|
||||
|
||||
Reference in New Issue
Block a user