The MiniCPM-o select_text breakage cost eight CI jobs and surfaced only as "Engine core initialization failed", because the replacement closures that call these helpers are not driven by any unit test. A static check is what actually catches the next removal. Resolves each PromptUpdateDetails attribute referenced under vllm_omni/ against the installed class, so it tracks upstream instead of a hard-coded list, and names the offending file in the failure. Verified by reintroducing select_text: the guard fails with that file named, and passes once reverted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0146Xu5Sgj4vXxLxvLjV5YPj Signed-off-by: tzhouam <tzhouam@connect.ust.hk>