{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:orbiplex:schema:operator-task-profile-change-result:v1",
  "title": "Operator Task Profile Change Result v1",
  "x-dia-workflow": "project",
  "x-dia-status": "draft",
  "x-dia-basis": [
    "doc/project/40-proposals/094-operator-task-packs-for-bounded-problem-solving.md"
  ],
  "description": "Per-axis diff between a binding's accepted task profile and the one its package now pins, each change classified as narrowing, widening or substitution, and whether the binding now follows the new profile. Values are enum names, numbers as text, or refs and digests; never local paths. `local-binding/digest` identifies the binding's revision after the request, which an acceptance names as its expected revision.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema",
    "schema/v",
    "binding/ref",
    "local-binding/digest",
    "from/digest",
    "to/digest",
    "changes",
    "accepted"
  ],
  "properties": {
    "schema": {
      "const": "operator-task-profile-change-result.v1"
    },
    "schema/v": {
      "const": 1
    },
    "binding/ref": {
      "$ref": "operator-task-common.v1.schema.json#/$defs/ref"
    },
    "local-binding/digest": {
      "$ref": "operator-task-common.v1.schema.json#/$defs/digest"
    },
    "from/digest": {
      "$ref": "operator-task-common.v1.schema.json#/$defs/digest"
    },
    "to/digest": {
      "$ref": "operator-task-common.v1.schema.json#/$defs/digest"
    },
    "changes": {
      "type": "array",
      "maxItems": 64,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "axis",
          "kind"
        ],
        "properties": {
          "axis": {
            "enum": [
              "hil/mode",
              "runtime-network/ceiling",
              "impact-class/max",
              "first-step/class",
              "max/passages",
              "max/experiments",
              "max/cycles",
              "max/solver-passages",
              "max/reviewer-passages",
              "max/wall-time-ms",
              "required-capability/ids",
              "image-variants",
              "prepared-system",
              "command-profiles",
              "patch-policy",
              "observation-descriptors",
              "actuation-descriptors",
              "thematic-profile",
              "inference-flow",
              "agent-policy",
              "roles",
              "verifier",
              "verifier/command-profile",
              "verifier/result-schema",
              "rollback",
              "input-schema",
              "candidate-schema",
              "offer-template",
              "taxonomy",
              "topics",
              "service/type",
              "resource-envelope",
              "refusal-corpus"
            ]
          },
          "kind": {
            "enum": [
              "narrowing",
              "widening",
              "substitution"
            ]
          },
          "from": {
            "type": "string",
            "maxLength": 512
          },
          "to": {
            "type": "string",
            "maxLength": 512
          }
        }
      }
    },
    "accepted": {
      "type": "boolean"
    }
  }
}
