Search documentation

Search the Fumadocs-backed documentation index.

Variant identity

How resolved variant_id coordinates are formed and validated.

Each resolved variant gets a derived variant_id composed from its coordinates, joined by :::

<agent>[::<model>[::<effort>][::<context_window_size>][::thinking][::fast]][::<agent_mode>]::<prompt_id>[::<environment_id>][::<product_id>][::<extension_path…>]

Rules:

  • The prompt component is the prompt id (p0, or your explicit id), never the prompt text.
  • For catalog-backed models, the <model> component is the resolved native owner/model coordinate with / replaced by - (for example anthropic-claude-opus-4-8), not the raw authored string or gateway alias.
  • The <agent_mode> segment appears whenever the agent_mode axis is declared (build included) and is absent when the axis is not declared. Authoring agent_mode: build therefore produces different ids than omitting the axis.
  • Extension-derived variants append the extension id path (for example sec-edgar::aapl) and record it as resolved_extend_id. When an extension declares a multi-entry prompts list, the chosen entry's id follows that extension's id in the variant id (for example sec-edgar::use-xbrl). Like the extension's chosen environment and product, that entry id is a variant coordinate only — resolved_extend_id stays the extension id path.
  • Optional axes that are not declared contribute nothing, so simple experiments keep short ids like claude::p0.

The coordinate ids (agent, model and its controls, prompt, environment, product) are recorded on every run so results can group and filter along them. Tests and setup checks can read the same coordinates at runtime from $AX_RUN_CONTEXT_PATH; see Tests.

ax experiment variants <file> prints the resolved variants with their ids and fingerprints.

Validation

ax experiment validate rejects a matrix when two resolved variants collide on variant_id, and requires the fully resolved set to be non-empty, with every variant carrying an agent and a non-empty prompt. See Validation rules for the full list.