Skip to content
This repository was archived by the owner on Aug 12, 2026. It is now read-only.

v0.3.0

Latest

Choose a tag to compare

@RepoRover RepoRover released this 02 Jan 16:36
v0.3.0
08c910d

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}.json requiring reference resolution at runtime
  • After: Output contains only config/{engine}.json with all references fully inlined

Benefits

  • Self-contained schemas - no external $ref dependencies 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 $ref values
  • 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 generated
  • output/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 handling file.json#/path/to/def syntax
  • Added _file_cache for 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 flat config: {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.base and project.config.engines replaced with flat project.config.{engine} mapping
  • Output paths: Config files now at config/{engine}.json instead of config/engines/{engine}.json
  • Downstream tools consuming smap.json or config files will need updates

Supported

  • PostgreSQL 15.0
  • JSON Schema Draft-07
  • Config Format: YAML