Don't lint default and examples siblings to $ref in Draft 7 and older#611
Open
staging-devin-ai-integration[bot] wants to merge 1 commit intomainfrom
Open
Don't lint default and examples siblings to $ref in Draft 7 and older#611staging-devin-ai-integration[bot] wants to merge 1 commit intomainfrom
default and examples siblings to $ref in Draft 7 and older#611staging-devin-ai-integration[bot] wants to merge 1 commit intomainfrom
Conversation
In Draft 7 and older, JSON Schema implementations MUST ignore any keyword that is a sibling to $ref. The ValidDefault and ValidExamples linter rules now skip validation when default/examples are siblings to $ref in Draft 4, Draft 6, and Draft 7 schemas. For 2019-09 and 2020-12, siblings to $ref are valid and continue to be linted as before. Co-Authored-By: bot_apk <apk@cognition.ai>
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Don't lint
defaultandexamplessiblings to$refin Draft 7 and olderSummary
In JSON Schema Draft 7 and older, implementations MUST ignore any keyword that is a sibling to
$ref. TheValidDefaultandValidExampleslinter rules were incorrectly flagging/removingdefaultandexamplesvalues when they appeared as siblings to$refin Draft 4, 6, and 7 schemas.This PR adds an early-return guard in both
ValidDefault::condition()andValidExamples::condition()that skips linting when$refis present and the schema dialect is not 2019-09 or 2020-12 (where$refsiblings are valid and should continue to be linted).Fixes sourcemeta/jsonschema#425
Review & Testing Checklist for Human
!2020-12 && !2019-09) to identify old drafts. Confirm this is the right approach — note that if a future draft introduces a new vocabulary URI, it would fall into the "ignore siblings" path by default until updated.transformer_callback_error) and assert that invaliddefault/examplesare removed. Confirm the expected schemas (withdefault/examplesstripped) are correct.makelocally and confirm all 7 test suites pass and no formatting diff remains.Notes