-
Stefy Lanza (nextime / spora ) authored
Adding `defaults` to the Z-Image-Turbo entry showed they would have been ignored anyway. The manager keeps runtime kwargs FLAT and the models.json entry under `_raw_cfg`, so only keys that `build_runtime_kwargs` promotes exist at the top level — and `defaults` is not one of them. `model_defaults()` read the flat dict, so on the image path a card's steps and guidance were silently dropped: `/v1/models` published them (it reads the entry) while generation used the generic 30 steps at CFG 7.5. A client that read the listing and trusted the server to apply it was wrong twice over. Which means `Z-Image-Turbo-IntoRealism` (10 steps) and `Krea-2-RealDream` (8) had never had their cards applied, and `call_kwargs` sits in the same place — MOSS-Image's `uncond_skip_layers` was never passed either. `card_view()` merges the entry under the flat kwargs, with the flat ones winning a collision because they are what the loader was given, and both readers go through it. The video path had already hit this and merged by hand at its call site; `images.py` never did, and one of the two being right is what made it invisible. Same lesson as the `gpu_split` and `sequential_text_encoder` promotions, three lines apart in that same function. The new test walks the installed catalogue and asserts, for every card carrying `defaults`, that what the listing publishes is what generation would use. Also: a TTS engine's venv no longer reports itself ready on the strength of the engine package alone. `pip install coqui-tts` brought ninety dependencies and no torch, the venv looked complete, `/v1/audio/speech/capabilities` said `env_ready: true`, and the first synthesis failed on `import TTS`. `torch` is in every family's list now. Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014T3rZozi1Ehk96NG1WesgC
82b647de