Skip to content

Make allow_extra_fields as default - #99

Merged
pedrobslisboa merged 1 commit into
mainfrom
pedrolisboa/allow_extra_fields_default
Jul 6, 2026
Merged

Make allow_extra_fields as default#99
pedrobslisboa merged 1 commit into
mainfrom
pedrolisboa/allow_extra_fields_default

Conversation

@pedrobslisboa

@pedrobslisboa pedrobslisboa commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Why

The Melange JSON deriver ignores unknown object keys by default, but ppx_deriving_jsonschema generated "additionalProperties": false for records unless users opted in with [@@jsonschema.allow_extra_fields]. This made the generated schemas stricter than — and inconsistent with — the runtime decoders they're meant to describe. This change flips the default to match, mirroring melange-community/melange-json#92.

What

  • records now generate "additionalProperties": true by default, matching the Melange JSON deriver which ignores unknown object keys.
  • Add [@@jsonschema.disallow_extra_fields] (and [@jsonschema.disallow_extra_fields] on constructors with inline records in variants) to opt back into strict objects ("additionalProperties": false).
  • Keep [@@jsonschema.allow_extra_fields] accepted for backwards compatibility — it is now a no-op — and reject using both allow_extra_fields and disallow_extra_fields on the same type/constructor.

@pedrobslisboa pedrobslisboa self-assigned this Jul 6, 2026
@pedrobslisboa
pedrobslisboa force-pushed the pedrolisboa/allow_extra_fields_default branch from aef6f98 to 0667318 Compare July 6, 2026 18:00
@pedrobslisboa
pedrobslisboa force-pushed the pedrolisboa/allow_extra_fields_default branch from 0667318 to 81b1685 Compare July 6, 2026 21:47
@pedrobslisboa
pedrobslisboa merged commit 5651f57 into main Jul 6, 2026
9 checks passed
@pedrobslisboa
pedrobslisboa deleted the pedrolisboa/allow_extra_fields_default branch July 6, 2026 22:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant