This repository was archived by the owner on Aug 12, 2026. It is now read-only.
Repository navigation
v0.3.0 (02.01.2026)
Streamlined release that consolidates engine configuration into fully-resolved, self-contained schema files. Eliminates the need for separate base and engine-specific config files in the output.
Fully-Resolved Engine Configuration
Single Config File Per Engine
- Before: Output contained
config/base.json+config/engines/{engine}.jsonrequiring reference resolution at runtime - After: Output contains only
config/{engine}.jsonwith all references fully inlined
Benefits
- Self-contained schemas - no external
$refdependencies to resolve - Simpler consumption by downstream tools and validators
- Reduced complexity for CLI and web application integration
- Each engine config includes all base definitions (
envVarString,envFilePath,schemaDefinition, etc.)
JSON Reference Resolution Enhancements
JSON Pointer Support (RFC 6901)
- Added support for JSON pointers in
$refvalues - Local references:
#/$defs/foo - External file references with pointers:
engines/postgresql.json#/$defs/envs
Performance Improvements
- File caching during resolution to avoid redundant reads
- Proper circular reference detection for all reference types
Output Structure Changes
New Output Structure
output/
├── smap.json
├── manifest.json
├── config/
│ └── postgresql.json # Fully resolved, self-contained
└── postgresql/
└── v15.0/
├── tables.json
└── snapshot/
├── stored.json
└── working.json
Removed
output/config/base.json- No longer generatedoutput/config/engines/directory - No longer needed
Schema Map (smap.json) Structure Change
Before
{
"project": {
"manifest": "https://example.com/manifest.json",
"config": {
"base": "https://example.com/config/base.json",
"engines": {
"postgresql": "https://example.com/config/engines/postgresql.json"
}
}
}
}After
{
"project": {
"manifest": "https://example.com/manifest.json",
"config": {
"postgresql": "https://example.com/config/postgresql.json"
}
}
}The config section now maps engine names directly to their fully-resolved schema URLs.
Internal Changes
JSONRefResolver (resolution/resolver.py)
- New
_resolve_json_pointer()method for RFC 6901 pointer resolution - New
_resolve_external_ref_with_pointer()for handlingfile.json#/path/to/defsyntax - Added
_file_cachefor caching loaded JSON files during resolution - Enhanced circular reference detection covering all reference types
OutputManager (io/output_manager.py)
- New
write_resolved_engine_config()method for generating fully-resolved config files - Updated
write_schema_map()to output flatconfig: {engine: url}structure - Removed
_write_base_config()method (no longer needed)
SchemaGenerator (cli/generator.py)
- Updated to use
write_resolved_engine_config()for per-engine config generation - Removed base.json generation logic
Test Coverage
- 81 tests passing
- 89% code coverage
- New tests for JSON pointer resolution (24 tests in
test_resolver.py) - Updated integration tests for new output structure
Breaking Changes
- smap.json structure:
project.config.baseandproject.config.enginesreplaced with flatproject.config.{engine}mapping - Output paths: Config files now at
config/{engine}.jsoninstead ofconfig/engines/{engine}.json - Downstream tools consuming
smap.jsonor config files will need updates
Supported
- PostgreSQL 15.0
- JSON Schema Draft-07
- Config Format: YAML