Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Migrating to schema 2

Schema 2 makes unsupported declarations fail visibly. It requires a minimum capable OxyMake binary in every schema-2 file, and catches structural typos. Legacy files keep working, with a warning that their binary requirement is not enforced.

Start with a review:

ox migrate --to-format 2 -f Oxymakefile.toml

The report covers all included files. Generated markers 0.1 and 0.3 become >=0.7.0, because that is the release introducing this contract. Commands and software environments retain their meaning. If the tool cannot justify a requirement or finds unknown fields, resolve those declarations yourself and run the preview again. Do not remove a field until you understand its intent.

Apply the resolved migration explicitly, then inspect the changes:

ox migrate --to-format 2 -f Oxymakefile.toml --write
git diff
ox lint -f Oxymakefile.toml

Use environment = { uv = "requirements.txt" } for the software backend. There is no variables table yet, and rule env is rejected in schema 2. Keep any existing shell assignments in the command. Schema 2 supports named resource classes. Migrate each file that declares or references a class: schema 1 ignores those fields and warns. Overrides preserve the class spelling, so rule cpus = 6 over class cpu = 2 expands both {threads} and {resources.cpu} to 6. Resource exports remain future work.

Migration preserves cache identity. Any future change to execution semantics will state its own cache consequences in that release's notes. Command bytes are preserved, but document formatting, including line endings, may be normalized. Older binaries that predate version enforcement cannot be made to reject a future file retroactively; ensure the installed binary supports schema 2.