Skip to main content
A validation spec records what to measure, how to run the test, and how the result will be judged. A PR can use a committed .remyx/validation.yaml file or ask Validate to propose one. Review the comparison, required metrics and criteria before execution.

Start with a working example

The minimal example below uses a test or command that exists in the linked repository. Copy its files together and check the expected metric output before adapting it.
.remyx/validation.yaml
This example includes the test files it runs. Copy the spec and its referenced files together, then adjust the repository paths, data and criteria for your change. Full spec on the branch · The notebook it runs · Executed notebook · Read the GitHub result

Full schema

The reference below defines supported questions, suites, metrics, policy, compute, repair, model selection, artifacts and defaults.

Location and precedence

Rules the parser applies before anything runs:
  • A file that only carries model: is configuration, not a spec. Its model: still applies to the design.
  • A flat spec (benchmark keys at the top level) is lifted into a one-entry benchmarks: list. Both shapes are accepted.
  • Keys the proposer sometimes writes under the benchmark (compute, metrics, policy, baseline, variants) are hoisted; top level wins on collision.
  • A hand-written spec is never revised by feedback on the PR. Edit the file and mention the bot with validate.
  • With a committed spec, instructions in your mention are ignored and the started comment says so.
Lint before you commit: POST /api/v1.0/validate/specs/lint {yaml} runs the same parser and returns problems; the Studio spec editor uses it on every keystroke.

Key reference

Top level

question

Baselines. The baseline arm is skipped when the repo publishes its own numbers (baseline: with a reference dict, or a results corpus the harness reads) or when a prior validation on the same base commit and the same spec wiring already measured it. Reuse is exact-match only; anything less re-runs the arm. baseline: none runs one arm with absolute bars.

benchmarks[0]

suite forms metrics[] Target rows gate with warn severity, guardrails with fail severity. Cost, latency and diagnostic rows are measured and shown but never gate; a threshold on them is a bound shown for context.

compute

loop

The loop can never edit the confirmed test or the criteria, and a second identical failure after a fix stops it regardless of these settings.

Examples

1. Does it work?

Tests only. The verdict is Your tests pass or do not pass.

2. Compare with a guardrail

Both arms run on the base branch and the PR; the target must improve and the guardrail must not regress.

3. Parity with published numbers

No baseline arm. The reference values come from the repo’s own results corpus.

4. Capability with no baseline

The base branch cannot run this code, so one arm runs against absolute bars. Illustrative configuration.

5. GPU notebook with a smoke path and W&B

A notebook that reads REMYX_SMOKE=1 gets a smoke stage before the full run. The W&B block pulls your connected key into the pod.
The notebook reads REMYX_SMOKE and, when set, runs a handful of steps and still emits every declared metric. The smoke run posts no verdict and is never charged.

Lint, push, and the PR

Edit the spec from the repo’s spec card in Studio. The editor lints against the engine’s own parser as you type and Open a PR commits the yaml to a new branch and opens a pull request as remyx-ai[bot]. It never writes to the default branch; nothing changes until that PR merges. The same path is POST /api/v1.0/validate/specs/push {repo, yaml, project_id?}.
auto_promote never changes PR state unless you opt in. The default off reports only. on_pass marks the PR ready for review when the verdict is a pass.

Next steps

Run a validation tutorial · Read the validation spec · Use the API

Validate

How a validation runs and how to read the verdict

Billing

What a run costs and when it is charged