validate

fun validate(call: FunctionCall, surfaceDefault: String? = null): SchemaValidation

Whether call's arguments match what its catalog declares for it.

@index is checked without resolving a catalog, because no catalog defines it: it is the one system function v1.0 has, and common_types.json composes it into FunctionCall alongside the catalog's own. A call that names any other @-prefixed function is not treated as a system function: the specification reserves the whole @ namespace but fills it with @index alone, and bars catalogs from defining into it. So such a call goes through catalog resolution and fails there, which is where the message the agent needs comes from.


fun validate(component: Component, surfaceDefault: String? = null): SchemaValidation

Whether component carries the properties its catalog declares for its type.

The reserved root container is refused before the catalog is consulted. A catalog may not define Surface — the model rejects one that tries — so checking a component that names it against the catalog would report the type as unknown, which is true but misses the point: the name is reserved, and it is reserved whichever catalog is in play.