Every builder validates its own output before it is written, so a shape change
fails in the notebook that made it rather than in a browser three steps later.
The schemas are additionalProperties: false at the top level on purpose: a key
the contract does not name is a key the app will not read, and shipping it is how
a bundle quietly grows.
Arguments
- x
the object (a list, as
jsonlite::toJSON()would see it)- name
schema name, see
app_schema_path()- what
label used in the error message