Fixes #519 /claim #519

Implements a pure algebraic schema migration system for ZIO Schema 2.

What this adds

  • typed Migration[A, B] built on serializable DynamicMigration
  • path-based migration actions over DynamicValue
  • migration builder support for record, enum, collection, and map transformations
  • structural reverse support and composition laws
  • Scala 3 selector macro support for building DynamicOptic paths
  • Scala 2 compatibility path for migration builder usage
  • migration law, runtime, and macro-focused test coverage

Implementation notes

  • fixes Scala 2 migration macro compilation by importing DynamicOptic in the Scala 2 macro implementation
  • adds missing license headers in version-specific migration sources/tests
  • formats the migration sources/tests so repo lint passes cleanly

Local verification

  • sbt "++2.13.18" "schemaJVM/testOnly zio.blocks.schema.migration.DynamicMigrationSpec zio.blocks.schema.migration.MigrationSpec zio.blocks.schema.migration.MigrationLawSpec"
  • sbt "++3.3.7" "schemaJVM/testOnly zio.blocks.schema.migration.DynamicMigrationSpec zio.blocks.schema.migration.MigrationSpec zio.blocks.schema.migration.MigrationLawSpec zio.blocks.schema.migration.MigrationMacroSpec"
  • sbt "++3.3.7" "schemaJS/testOnly zio.blocks.schema.migration.DynamicMigrationSpec zio.blocks.schema.migration.MigrationSpec zio.blocks.schema.migration.MigrationLawSpec zio.blocks.schema.migration.MigrationMacroSpec"
  • sbt "++2.13; check; headerCheckAll; ++3.7; check; headerCheckAll"

This branch is based directly on main and can be reviewed independently.

Claim

Total prize pool $8,000
Total paid $0
Status Pending
Submitted March 27, 2026
Last updated March 27, 2026

Contributors

AY

Ayush Singh

@Flamki

100%

Sponsors

MA

marianaguzmanguerrero16-dev

@marianaguzmanguerrero16-dev

$4,000
ZI

ZIO

@ZIO

$4,000