Description
While responding at ajv-validator/ajv#1082 (comment) I was reminded that we technically allow validators to make an independent decision about supporting unevaluatedProperties
and unevaluatedItems
due to their dependence on annotation collection, which is not required for basic spec conformance.
We did that before the $vocabulary
process had been developed. Which means that whether or not these keywords are considered errors is totally outside of that process, which is otherwise how we give schema authors control over ensuring support for the features on which they depend.
We could split those keywords out of the "applicator" vocabulary (perhaps in to an "annotated-applicator" vocabulary, or just "unevaluated", or something, the name isn't that important).
Then we could provide (or just tell people they can write, like we do with the different "format" vocabulary options) a meta-schema that is just like the standard one, but with the "unevaluated" (or whatever) vocabulary declared with false
, or omitted entirely.
This would require meta-schema updates, but given that 2019-09 has barely been implemented at all and still does not even have a full test suite, rolling everything forward to a 2020-03 or 2020-04 that is aligned with OpenAPI 3.1 would be pretty reasonable. I will file a separate issue for tracking the question of whether the draft-08-patch1 release should be one with a new meta-schema or not.