{
  "$defs": {
    "FactorKind": {
      "description": "The kind of edit an experiment factor makes on each of its nodes.\n\n``agent`` answers an llm node with another agent of the project, ``prompt`` replaces the prompt text of an llm\nnode, ``use`` replaces a node with an alternative node of the experiment, ``flow`` points a call node at\nanother flow.",
      "enum": [
        "agent",
        "prompt",
        "use",
        "flow"
      ],
      "title": "FactorKind",
      "type": "string"
    },
    "FactorNode": {
      "pattern": "^[a-z][a-z0-9_]{0,62}$",
      "type": "string"
    }
  },
  "additionalProperties": false,
  "description": "The one factor the variants of an experiment change: ``what`` kind of edit on which ``nodes`` of the subject.\n\n``nodes`` lists local node ids of the subject flow, each once; a nested node is named by its own id. Every\nvariant sets values of this factor only, so a series tells which edit made the difference.",
  "properties": {
    "nodes": {
      "items": {
        "$ref": "#/$defs/FactorNode"
      },
      "minItems": 1,
      "title": "Nodes",
      "type": "array"
    },
    "what": {
      "$ref": "#/$defs/FactorKind"
    }
  },
  "required": [
    "what",
    "nodes"
  ],
  "title": "ExperimentFactor",
  "type": "object"
}
