As explicitly described in https://github.com/json-schema-org/json-schema-spec/pull/914 -- examine $schema wherever it (legally) appears and adjust evaluation semantics accordingly (including turning on/off keyword support via $vocabularies).
... implementations at least SHOULD check $schema and if available $vocabulary, but are free to error out on unknown or known but unsupported (e.g. old drafts) values.
(Support for earlier drafts' semantics may be covered in a separate issue, to be implemented separately.)
As explicitly described in https://github.com/json-schema-org/json-schema-spec/pull/914 -- examine $schema wherever it (legally) appears and adjust evaluation semantics accordingly (including turning on/off keyword support via $vocabularies).
But as per https://github.com/json-schema-org/json-schema-spec/issues/808#issuecomment-539260485 --
(Support for earlier drafts' semantics may be covered in a separate issue, to be implemented separately.)