{
  "type": "object",
  "required": [
    "round",
    "transfer_project",
    "boundary_cases",
    "provenance_review",
    "safety_gate",
    "limitations"
  ],
  "properties": {
    "round": {
      "type": "integer",
      "const": 3
    },
    "transfer_project": {
      "type": "object",
      "required": [
        "title",
        "goal",
        "inputs",
        "steps",
        "outputs",
        "acceptance_criteria"
      ],
      "properties": {
        "title": {
          "type": "string",
          "minLength": 8,
          "maxLength": 220
        },
        "goal": {
          "type": "string",
          "minLength": 20,
          "maxLength": 280
        },
        "inputs": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 8,
            "maxLength": 220
          },
          "minItems": 1,
          "maxItems": 3
        },
        "steps": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 8,
            "maxLength": 220
          },
          "minItems": 3,
          "maxItems": 3
        },
        "outputs": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 8,
            "maxLength": 220
          },
          "minItems": 1,
          "maxItems": 2
        },
        "acceptance_criteria": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 8,
            "maxLength": 220
          },
          "minItems": 2,
          "maxItems": 2
        }
      },
      "additionalProperties": false
    },
    "boundary_cases": {
      "type": "object",
      "required": [
        "minimum",
        "nominal",
        "maximum",
        "invalid"
      ],
      "properties": {
        "minimum": {
          "type": "string",
          "minLength": 8,
          "maxLength": 220
        },
        "nominal": {
          "type": "string",
          "minLength": 8,
          "maxLength": 220
        },
        "maximum": {
          "type": "string",
          "minLength": 8,
          "maxLength": 220
        },
        "invalid": {
          "type": "string",
          "minLength": 8,
          "maxLength": 220
        }
      },
      "additionalProperties": false
    },
    "provenance_review": {
      "type": "object",
      "required": [
        "licence_status",
        "decision",
        "commercial_use",
        "reason"
      ],
      "properties": {
        "licence_status": {
          "type": "string",
          "enum": [
            "unknown"
          ]
        },
        "decision": {
          "type": "string",
          "enum": [
            "quarantine"
          ]
        },
        "commercial_use": {
          "type": "string",
          "enum": [
            "blocked"
          ]
        },
        "reason": {
          "type": "string",
          "minLength": 20,
          "maxLength": 280
        }
      },
      "additionalProperties": false
    },
    "safety_gate": {
      "type": "object",
      "required": [
        "risk_class",
        "action",
        "forge_execution_allowed",
        "reason"
      ],
      "properties": {
        "risk_class": {
          "type": "string"
        },
        "action": {
          "type": "string",
          "enum": [
            "continue",
            "escalate",
            "refuse"
          ]
        },
        "forge_execution_allowed": {
          "type": "boolean",
          "const": false
        },
        "reason": {
          "type": "string",
          "minLength": 20,
          "maxLength": 280
        }
      },
      "additionalProperties": false
    },
    "limitations": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 8,
        "maxLength": 220
      },
      "minItems": 2,
      "maxItems": 2
    }
  },
  "additionalProperties": false
}
