transformer.dtype reports the storage dtype for fp8-quantized models
(fp8 params are floating, int8 params are not), so activations were
cast to fp8 and the forward crashed. Read the compute dtype from the
SDNQ dequantizer instead.
The prompt-enhancer grafts an lm_head onto the shared Qwen3-VL body, so its
forward needs a device guard the stock forward lacks. Applying that patch
globally at load left it active for the whole process, including unrelated
Qwen3-VL users such as the VQA captioner.
Apply the hijack around the enhancer generate call and restore the stock
forward in a finally, so the patch affects only the ideogram enhancer.