Is this data accessible as a JSON file?

Yes! The most up-to-date data is always available at: poor.json.

The format of this JSON is:

  {
      "timestamp": integer,
      "data_epochs": [
          integer,
          integer,
          ...
      ],
      "cluster_average_vl": float,
      "cluster_stddev_vl": float,
      "cluster_average_llv": float,
      "cluster_stddev_llv": float,
      "cluster_average_cv": float,
      "cluster_stddev_cv": float,
      "threshold_vl": float,
      "threshold_llv": float,
      "threshold_cv": float,
      "threshold_vo_count": integer,
      "threshold_limit_vl" : float,
      "threshold_limit_llv" : float,
      "threshold_limit_cv" : float,
      "voters": [
          {
              "vote_pubkey": string,
              "identity_pubkey": string,
              "stake": integer,
              "average_vl": float,
              "average_llv": float,
              "average_cv": float,
              "vo": boolean,
              "is_foundation_staked": boolean
          },
          {
              "vote_pubkey": string,
              "identity_pubkey": string,
              "stake": integer,
              "average_vl": float,
              "average_llv": float,
              "average_cv": float,
              "vo": boolean,
              "is_foundation_staked": boolean
          },
          ...
      ]
  }
  

The timestamp is an offset in seconds from the unix epoch, of the time that the data was collected.

The data_epochs are the epochs whose values were averaged into this data. Typically there are two, but this may change in future.

The cluster_average and cluster_stddev values are the corresponding cluster metrics as described here. Validator metrics that violate these limits are considered to be "poor performance".

The threshold_limit values are the maximum or minimum threshold that would ever be applied to determine poor performance. This is discussed in here. Metrics that violate these limits but don't violate the cluster limits are considered to be "marginal performance".

The voters list has the values computed for each validator (note that poor.json includes ONLY the poor performers, and good.json includes ONLY the good performers. No validator appears in both lists).

Each voter has values for that voter, and the lists are always reverse-sorted by stake weight. The "is_foundation_staked" field is true if the validator is staked by any vote account whose stake authority is known to be a Solana Foundation Delegation stake authority.

NOTE that for each voter, the "average_vl", "average_llv", and "average_cv" values are present ONLY IF THE VALIDATOR HAS VOTED. If the validator never voted, then these values are not present.