The cross-language conformance specification for Umpire — the portable form-logic engine.
This repository provides two artifacts:
umpire.schema.json — A JSON Schema (draft 2020-12) that validates .umpire.json files. You can use this in editors to enable autocomplete and inline validation without a Node.js toolchain.conformance/ — Plain JSON fixtures. Any Umpire runtime (TypeScript, Python, Dart, Kotlin, etc.) can consume these to verify behavioral correctness against the reference implementation.npm install
npm run validate
This runs AJV against umpire.schema.json. It verifies that every conformance fixture’s inner schema block is structurally valid and ensures that intentionally malformed documents are rejected.
Read conformance/README.md to understand the fixture shape and how to write a port runner.
To implement a runner:
conformance/index.json.index.fixtures, parse the file, extract fixture.schema, and execute it using your Umpire implementation against each test case.case.expectedAvailability.All fixture paths in index.json are relative to the conformance/ directory.
To enable autocomplete for .umpire.json files:
.vscode/settings.json:
{
"json.schemas": [
{
"fileMatch": ["*.umpire.json"],
"url": "./umpire.schema.json"
}
]
}
This repository uses semver tags (e.g., v1.0.0). Bump the tag whenever the schema or the fixture contract changes in a way that requires port updates.
See LICENSE.