Issue #99: Enforce RFC 8927 semantics for {} schema and remove AJV compatibility
Problem
Current codebase contains legacy AJV/JSON Schema compatibility where {} could mean "accept anything".
This contradicts RFC 8927: {} always means an object with no properties allowed
(properties = {}, optionalProperties = {}, additionalProperties = false).
This dual behavior causes complexity and test contradictions.
Goals
- Rip out all AJV-style "compatibility mode" handling (
fromRef, EmptySchema fallback).
- Make
{} always RFC 8927 strict (PropertiesSchema with no properties, no additionalProperties).
- Add an
INFO log warning whenever {} is compiled to help developers spot semantic differences from AJV/JSON Schema.
- Rewrite AJV-derived tests to expect failures or exceptions under RFC mode.
- Update README.md and AGENTS.md to document the difference.
Implementation Notes
- Follow Markdown-Driven-Development: update documentation before code
- Add INFO-level logging when {} schema is compiled
- Ensure all tests validate strict RFC 8927 behavior
- Update user-facing documentation to explain the semantic difference
EOF < /dev/null
Issue #99: Enforce RFC 8927 semantics for {} schema and remove AJV compatibility
Problem
Current codebase contains legacy AJV/JSON Schema compatibility where
{}could mean "accept anything".This contradicts RFC 8927:
{}always means an object with no properties allowed(
properties = {},optionalProperties = {},additionalProperties = false).This dual behavior causes complexity and test contradictions.
Goals
fromRef,EmptySchema fallback).{}always RFC 8927 strict (PropertiesSchemawith no properties, no additionalProperties).INFOlog warning whenever{}is compiled to help developers spot semantic differences from AJV/JSON Schema.Implementation Notes
EOF < /dev/null