Drop-in IDE autocomplete, CI validation, and standards-body verification — no installation.
The schemas are JSON Schema 2020-12 conformant. They validate the eight required PRML v0.1 fields plus the optional v0.2 additions (streaming variant, runner attestation, revocation). Every v0.1 manifest validates against both schemas — backwards compatibility is mechanically verified across the locked test vectors (12 v0.1 + 8 v0.2).
| Schema | URL | Status |
|---|---|---|
| v0.1 (stable) | prml-v0.1.schema.json | Working draft, public review |
| v0.2 (RFC) | prml-v0.2.schema.json | Comment window through 2026-05-22 23:59 UTC |
Add to your project's .vscode/settings.json:
{
"yaml.schemas": {
"https://spec.falsify.dev/schema/prml-v0.1.schema.json":
["**/*.prml.yaml", "**/manifest.yaml", "**/prml-manifest.yaml"]
}
}
Requires the YAML extension by Red Hat. JetBrains IDEs and Neovim with schemastore integration also pick this up.
The schemas can be added to SchemaStore.org for global IDE auto-detection. PR pending — once accepted, any file matching the patterns above gets autocomplete without per-project config.
pip install jsonschema pyyaml
python3 -c "
import json, yaml, jsonschema, urllib.request
schema = json.loads(urllib.request.urlopen(
'https://spec.falsify.dev/schema/prml-v0.1.schema.json').read())
manifest = yaml.safe_load(open('manifest.yaml'))
jsonschema.validate(manifest, schema)
print('OK — manifest.yaml conforms to PRML v0.1')
"
npm install ajv ajv-formats yaml node-fetch
node -e "
import('node-fetch').then(async ({default: fetch}) => {
const Ajv = (await import('ajv')).default;
const addFormats = (await import('ajv-formats')).default;
const yaml = await import('yaml');
const fs = await import('fs');
const schema = await (await fetch(
'https://spec.falsify.dev/schema/prml-v0.1.schema.json')).json();
const ajv = new Ajv({strict: false});
addFormats(ajv);
const validate = ajv.compile(schema);
const ok = validate(yaml.parse(fs.readFileSync('manifest.yaml', 'utf8')));
console.log(ok ? 'OK' : validate.errors);
});
"
falsify verify or any reference impl for that.The v0.1 schema is locked: any change requires a v0.2+ bump. The v0.2 schema is in RFC and may change before 2026-05-22. Production CI should pin to v0.1 until v0.2 freezes.