{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.ergoblockchain.org/agent-economy/release-watchlist.schema.v0.json",
  "title": "Ergo Agent Economy Release Watchlist v0",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "type",
    "version",
    "status",
    "last_reviewed",
    "public_claim",
    "security_baseline",
    "mainnet_gate_invariants",
    "deployment_fields_to_record",
    "watch_targets"
  ],
  "properties": {
    "type": {
      "const": "ergo.agent_economy.release_watchlist.v0"
    },
    "version": {
      "const": "v0"
    },
    "status": {
      "const": "testnet_release_watchlist_not_audit_report"
    },
    "last_reviewed": {
      "type": "string",
      "pattern": "^20[0-9]{2}-[0-9]{2}-[0-9]{2}$"
    },
    "public_claim": {
      "type": "string",
      "minLength": 24
    },
    "security_baseline": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "npm_audit",
        "dependency_overrides",
        "required_security_headers",
        "production_claim_guard"
      ],
      "properties": {
        "npm_audit": {
          "type": "string",
          "minLength": 8
        },
        "dependency_overrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "required_security_headers": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string",
            "minLength": 2
          },
          "uniqueItems": true
        },
        "production_claim_guard": {
          "type": "string",
          "minLength": 12
        }
      }
    },
    "mainnet_gate_invariants": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "status",
        "completed",
        "pending",
        "mainnet_ready"
      ],
      "properties": {
        "status": {
          "const": "closed"
        },
        "completed": {
          "const": 4
        },
        "pending": {
          "const": 2
        },
        "mainnet_ready": {
          "const": false
        }
      }
    },
    "deployment_fields_to_record": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string",
        "minLength": 3
      },
      "uniqueItems": true
    },
    "watch_targets": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "url",
          "kind",
          "expect_status"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]*$"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "kind": {
            "enum": [
              "page",
              "api",
              "json",
              "external"
            ]
          },
          "expect_status": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "integer",
              "minimum": 100,
              "maximum": 599
            },
            "uniqueItems": true
          },
          "expect_json": {
            "type": "object",
            "additionalProperties": true
          },
          "check_security_headers": {
            "type": "boolean"
          }
        }
      }
    }
  }
}
