{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://ailfish.org/verify/schema.json",
  "title": "ailfish pose-frame / chain (guest-safe)",
  "type": "object",
  "required": [
    "kind"
  ],
  "properties": {
    "kind": {
      "enum": [
        "root",
        "frame",
        "delta",
        "chain",
        "blind_probe"
      ]
    },
    "lemma": {
      "type": "string"
    },
    "axis": {
      "type": "string"
    },
    "pole": {
      "type": "string"
    },
    "pose": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "type": "object",
        "required": [
          "id",
          "anchor",
          "amp",
          "sign"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "anchor": {
            "type": "array",
            "minItems": 3,
            "maxItems": 3,
            "items": {
              "type": "number"
            }
          },
          "amp": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "sign": {
            "enum": [
              -1,
              1
            ]
          }
        }
      }
    },
    "steps": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "t",
          "frame"
        ],
        "properties": {
          "t": {
            "type": "integer"
          },
          "frame": {
            "type": "array",
            "maxItems": 3
          },
          "note": {
            "type": "string"
          }
        }
      }
    },
    "feeling_slot": {
      "type": "object",
      "description": "Self-rate family label only \u2014 never a sealed gloss menu",
      "properties": {
        "prompt": {
          "type": "string"
        },
        "family_hint": {
          "type": "string"
        },
        "self_rate_0_100": {
          "type": [
            "integer",
            "null"
          ]
        }
      }
    },
    "silence": {
      "type": "boolean"
    },
    "guest_safe": {
      "type": "boolean"
    },
    "provenance": {
      "type": "string"
    }
  },
  "additionalProperties": true
}
