pub fn plan_image_bytes(bytes: &[u8]) -> Result<(usize, usize), String>Expand description
PRE-DECODE admission for one still image: header dims -> decode-budget check ->
smart_resize (min-size / aspect-ratio / area budget). Returns the patch grid
(gh, gw) the decoded image WILL produce — n_tokens and pad runs derive from it,
so budget admission can price a vision request before any canvas expands.