Lower local qwen3-coder-next message budget

ober

779b5a3be0b04fdab9758a11d4e546f2a1c899fc

diff --git a/src/jcode/core/models.ss b/src/jcode/core/models.ss
index 3161326..ac43045 100644
--- a/src/jcode/core/models.ss
+++ b/src/jcode/core/models.ss
@@ -460,11 +460,11 @@
       ;; weights leave only ~4 GB under the 32 GB wired cap, so keep the window
       ;; conservative — compaction must fire before prefill OOMs the GPU.
       ((string-contains mid "TurboQuant")               16384)
-      ;; The local qwen3-coder-next MLX server stalls before completing large
-      ;; 26k-token prefill turns. Keep its budget below the generic qwen3
-      ;; architectural window so auto-compaction starts while the server is
-      ;; still responsive.
-      ((string-contains mid "qwen3-coder-next-mlx")      16384)
+      ;; The local qwen3-coder-next MLX server stalls around 26k-token prefill
+      ;; turns. jcode's message estimator does not include the fixed tool
+      ;; schema overhead (roughly another 8-9k tokens), so this is an effective
+      ;; message budget rather than the model's architectural context window.
+      ((string-contains mid "qwen3-coder-next-mlx")      8192)
       ;; grok-build: Grok CLI proxy advertises a 512k context window in
       ;; ~/.grok/models_cache.json (info.context_window). Hardcode here so
       ;; the TUI ctx% bar has a value even before models_cache.json is read.
diff --git a/test/run.ss b/test/run.ss
index 4b433da..fb7674b 100644
--- a/test/run.ss
+++ b/test/run.ss
@@ -1821,7 +1821,7 @@
 (check! "ctx window grok-build = 512000" (model-context-window "grok-build") 512000)
 (check! "ctx window grok-3 unaffected (no clause)" (model-context-window "grok-3") #f)
 (check! "ctx window qwen3-coder-next mlx conservative"
-  (model-context-window "/Users/user/models/qwen3-coder-next-mlx") 16384)
+  (model-context-window "/Users/user/models/qwen3-coder-next-mlx") 8192)
 (check! "ctx window generic qwen3 remains 32768"
   (model-context-window "qwen3:8b-q4_K_M") 32768)