Skip to main content
Each research campaign declares one primary metric. In normal agent-first usage, the Onyx orchestrator chooses the first version from your /onyx prompt, records it in onyx/setup.json and onyx/onyx.md, and validates the setup workflow before hypothesis workers start Research.

Metric Fields

Example:
The campaign metric contract is immutable. If its name, unit, or direction is wrong, create a new campaign. Changes to the evaluator implementation or its declared committed inputs remain in the campaign but create a distinct evaluation revision.

Metric Output

The metric step must emit exactly one line for the primary metric. Additional distinct METRIC name=value lines are stored as secondary metrics.

Status and Best Results

Common statuses:
  • succeeded: the workflow passed and the primary metric was parsed.
  • failed: a required non-guardrail command failed or did not emit the primary metric.
  • checks_failed: a required guardrail failed after a valid metric.
  • setup_violation: the result changed protected setup paths or out-of-scope files.
  • accepted or rejected: manually classified outcomes.
Best-so-far builds only from verified, metric-bearing successful experiments that satisfy correctness constraints. Charts and best projections are scoped to one evaluation revision; the app does not rank values from different evaluator fingerprints together.