feat(std/json-schema): unevaluatedProperties, unevaluatedItems and annotation collection #693

Merged
argus merged 2 commits from loop/690-unevaluated into main 2026-10-30 11:50:51 +00:00
Collaborator

Step 3 of #80: std/json-schema validates unevaluatedProperties and unevaluatedItems of 2020-12.

  • The reader accepts both keywords (any schema); the "later step" refusal is gone.
  • The validator returns an internal Outcome (errors + evaluated property names + item indices). Only subschemas that validated hand annotations on (anyOf/oneOf branches, if, contains matches); not evaluates nothing; unevaluated* runs last and sees the schema's own keywords, references and applicators, not its siblings. A meta-schema without the unevaluated vocabulary leaves the keywords out.
  • No public annotation output (design record: internal).

Seed impact: none.

Closes #690

Step 3 of #80: `std/json-schema` validates `unevaluatedProperties` and `unevaluatedItems` of 2020-12. - The reader accepts both keywords (any schema); the "later step" refusal is gone. - The validator returns an internal `Outcome` (errors + evaluated property names + item indices). Only subschemas that validated hand annotations on (anyOf/oneOf branches, `if`, `contains` matches); `not` evaluates nothing; `unevaluated*` runs last and sees the schema's own keywords, references and applicators, not its siblings. A meta-schema without the unevaluated vocabulary leaves the keywords out. - No public annotation output (design record: internal). Seed impact: none. Closes #690
feat(std/json-schema): collect evaluated properties and items
Some checks failed
ci / commit messages (pull_request) Has been cancelled
ci / what the change touches (pull_request) Has been cancelled
ci / gates (pull_request) Has been cancelled
f4e9cb6985
test(std/json-schema): run the unevaluated suite files
All checks were successful
ci / commit messages (pull_request) Successful in 6s
ci / what the change touches (pull_request) Successful in 6s
ci / the VS Code extension (editors/vscode) (pull_request) Has been skipped
pdisc / pdisc (pull_request) Successful in 12s
ci / which runners exist (pull_request) Successful in 1s
ci / bootstrap and conformance (windows-x64) (pull_request) Has been skipped
ci / bootstrap and conformance (linux-arm64) (pull_request) Has been skipped
ci / bootstrap and conformance (macos-arm64) (pull_request) Has been skipped
ci / bootstrap (linux-x64) (pull_request) Successful in 9m29s
ci / tier B (linux-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (windows-x64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (linux-arm64) (pull_request) Has been skipped
ci / cross-compiled on linux-x64 (macos-arm64) (pull_request) Has been skipped
ci / tools/release-sync and tools/registry (linux-x64) (pull_request) Successful in 3m34s
ci / conformance (JavaScript under Node.js) (pull_request) Successful in 11s
ci / the playground (torb as WebAssembly) (pull_request) Successful in 3m17s
ci / every host emits the same C (pull_request) Successful in 9m3s
ci / tier A (linux-x64) (pull_request) Successful in 33m2s
ci / pack the seed (pull_request) Successful in 11s
ci / archives (pull_request) Has been skipped
ci / gates (pull_request) Successful in 0s
f8004b3060
Generate the unevaluatedItems and unevaluatedProperties files of the suite release 23.1.0 into suite-cases.trb, drop the three group exclusions and both file exclusions, and document the two keywords.
orion changed title from WIP: std/json-schema: unevaluatedProperties, unevaluatedItems and annotation collection to feat(std/json-schema): unevaluatedProperties, unevaluatedItems and annotation collection 2026-10-30 09:30:44 +00:00
orion requested review from argus 2026-10-30 09:30:45 +00:00
argus approved these changes 2026-10-30 11:50:50 +00:00
argus left a comment

Checklist (head f8004b3):

  • Tests: ok. New unit group "unevaluated properties and items" (allOf, $ref, $dynamicRef across two resources, strict tree, failed anyOf branch, not/failed if, nesting, vocabulary-less meta-schema); suite files unevaluatedProperties/unevaluatedItems generated (882 -> 1059 cases), all three exclusions and both fileExclusions removed. CI combined status success, incl. tier A.
  • Correctness: ok. Outcome carries errors + evaluated names/indices; annotate (validated only) for anyOf/oneOf/if/contains, merge for own keywords, allOf, refs, then/else, dependentSchemas; not evaluates nothing; unevaluated* runs last and does not see siblings. Error locations stay JSON Pointers as in #690.
  • Scope: ok, matches #690 (Closes #690); no public annotation output, as decided.
  • Security/data/architecture: nothing touched (internal type, no boundary or format change; seed impact none).
  • Docs: ok. docs/standard-library/json-schema.md and the regenerated skill reference updated, "later step" refusal removed, JsonSchema model fields listed.

Non-blocking: none.

Checklist (head f8004b3): - Tests: ok. New unit group "unevaluated properties and items" (allOf, $ref, $dynamicRef across two resources, strict tree, failed anyOf branch, not/failed if, nesting, vocabulary-less meta-schema); suite files unevaluatedProperties/unevaluatedItems generated (882 -> 1059 cases), all three exclusions and both fileExclusions removed. CI combined status success, incl. tier A. - Correctness: ok. Outcome carries errors + evaluated names/indices; annotate (validated only) for anyOf/oneOf/if/contains, merge for own keywords, allOf, refs, then/else, dependentSchemas; not evaluates nothing; unevaluated* runs last and does not see siblings. Error locations stay JSON Pointers as in #690. - Scope: ok, matches #690 (Closes #690); no public annotation output, as decided. - Security/data/architecture: nothing touched (internal type, no boundary or format change; seed impact none). - Docs: ok. docs/standard-library/json-schema.md and the regenerated skill reference updated, "later step" refusal removed, JsonSchema model fields listed. Non-blocking: none.
argus merged commit 9c53410b3d into main 2026-10-30 11:50:51 +00:00
argus deleted branch loop/690-unevaluated 2026-10-30 11:50:52 +00:00
Sign in to join this conversation.
No reviewers
No labels
loop
ready
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
torbscript/language!693
No description provided.