fix(parity): controls that existed on one surface and silently died on another
Five defects found by tracing every user-settable control from where it is set to where it is read. None of them error; they all silently do nothing, which is why they survived. Panel gateway, /api/generate dropped the top-level images array. Ollama puts media at the top level of a generate body, not inside a message, and the gateway built a plain string — so a vision request became text-only and the model answered about nothing, with no error. This is the same regression the Python route already fixed and documented; the gateway's own /api/chat was never affected. The synthetic user message now goes through the shared translateOllamaMessages so the two paths cannot drift apart again. Panel gateway dropped the seed on both Ollama routes. The Python route honours options.seed and the top-level spelling, so the identical request was reproducible against the engine port and silently non-deterministic through the gateway. hy3 turned reasoning OFF when asked for the LOWEST effort. Its template opens the thinking rail only for low/high, and "minimal" — a first-class tier on the effort ladder and in Ollama's think levels — matched no branch, so the normalizer returned None and the template silently rendered no_think. Every stamped family clamps the same value to low. An unrecognized effort still falls through as before, but now logs a warning instead of silently disabling reasoning. /v1/messages never ACCEPTED min_p, repetition_penalty, cache_salt or skip_prefix_cache, so pydantic dropped them. The server already resolves all four off the converted request, so the dialect was the only thing missing; this is the same class of drift that reasoning_effort and seed were added for earlier, with the same fix. --prefix-cache-max-bytes reached argv but MLLMSchedulerConfig never declared the field, so _resolve_prefix_cache_byte_budget always read None and every VL session ignored the flag, falling back to the RAM-percent default. The budget was not unbounded, but a flag the user set did nothing. One of two schedulers, again. Each test was checked against the unfixed code: 7 of 18 engine tests and 2 of 4 gateway tests fail without these changes.
J
Jinho Jang committed
8208b368e4f25eddc997e65d916af68f483ae6b8
Parent: b05b0b2