V4l2-compliance questions regarding create buffer

Not sure if this is the right place to post.
My question is regarding the reasoning behind a particular v4l2-compliance test around VIDIOC_CREATE_BUF.
I’m looking at 1.18 version of v4l2-utils

I’m new to v4l2 so apologies for my ignorance.

this code block

                fmt.s_height(fmt.g_height() / 2);
            for (unsigned p = 0; p < fmt.g_num_planes(); p++)
                fmt.s_sizeimage(fmt.g_sizeimage(p) / 2, p);
            fail_on_test(q.create_bufs(node, 1, &fmt) != EINVAL);

It seems to me it’s expect a fail, EINVAL when downsizing a fmt request.
First, I think fmt.g_height()/2 then fmt.s_sizeimage(fmt.g_sizeimage(p) / 2, p); seems ok to me, as it’s half the height then half the image size too.
Second, it seems the default linux vb2_core_create_bufs does not have any return of EINVAL because of the size checking.

So my question is what this test is expecting and is there a reference doc for it?