{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://hogarmas.net/article-50-portfolio/input-schema.json",
  "title": "H/M Article 50 Portfolio Input",
  "description": "Browser-local input contract for mapping one to 250 supplied AI systems. The contract does not establish portfolio completeness.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "systems"
  ],
  "properties": {
    "portfolioName": {
      "type": "string",
      "maxLength": 120
    },
    "systems": {
      "type": "array",
      "minItems": 1,
      "maxItems": 250,
      "items": {
        "$ref": "#/$defs/system"
      }
    }
  },
  "$defs": {
    "triState": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unsure"
      ]
    },
    "system": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "systemName"
      ],
      "properties": {
        "systemId": {
          "type": "string",
          "pattern": "^[a-z0-9][a-z0-9._-]{0,79}$"
        },
        "systemName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "owner": {
          "type": "string",
          "maxLength": 120
        },
        "tags": {
          "type": "array",
          "maxItems": 8,
          "uniqueItems": true,
          "items": {
            "type": "string",
            "maxLength": 40
          }
        },
        "role": {
          "type": "string",
          "enum": [
            "provider",
            "deployer",
            "both",
            "unsure"
          ],
          "default": "unsure"
        },
        "euExposure": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "professionalUse": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "directInteraction": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "interactionObvious": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "syntheticContent": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "placedOnMarketBefore20260802": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "humanExposure": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "standardEditingOnly": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "contentTypes": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "type": "string",
            "enum": [
              "text",
              "image",
              "audio",
              "video"
            ]
          },
          "default": []
        },
        "emotionOrBiometric": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "deepfake": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "publicInterestText": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "substantiveHumanReview": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "editorialResponsibility": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "visibleDisclosureImplemented": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "machineReadableMarkImplemented": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "detectionTested": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "accessibleDisclosureTested": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "recordsMaintained": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "marketEntryDateDocumented": {
          "$ref": "#/$defs/triState",
          "default": "unsure"
        },
        "modelType": {
          "type": "string",
          "maxLength": 120
        },
        "modelName": {
          "type": "string",
          "maxLength": 120
        },
        "modelIdentifier": {
          "type": "string",
          "maxLength": 160
        },
        "scientificDomain": {
          "type": "string",
          "maxLength": 40
        },
        "humanOversightLevel": {
          "type": "string",
          "enum": [
            "fully_autonomous",
            "prompt_guided",
            "human_validated"
          ]
        }
      }
    }
  }
}
