CatalogChildResolver
Finds a component's children by reading the catalog, rather than by knowing property names.
The protocol reserves the shapes — common_types.json defines Child and ChildList — but leaves the property names carrying them to the catalog. In the basic catalog alone they are child, children, trigger, content, and one nested inside each element of Tabs.tabs, so a resolver that hard-coded a name or two would silently drop half the tree — silently, because a child that is never found renders as a component with no children rather than as an error.
So the schema is walked alongside the value, and a reference is whatever sits where the schema says a Child or a ChildList goes. That is why this reads the catalog and why it is bounded: the schema is as agent-controlled as the payload once a catalog may be inlined.