{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://modules.openmercato.com/schema/compat-1.json",
  "type": "object",
  "properties": {
    "schemaVersion": {
      "type": "number",
      "const": 1
    },
    "generatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "dataAsOf": {
      "type": "object",
      "properties": {
        "nightly": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "npm": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "source": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "ci",
                "preview"
              ]
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "nightly",
        "npm"
      ],
      "additionalProperties": false
    },
    "lines": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "pattern": "^(\\d+\\.\\d+|next)$"
          },
          "version": {
            "type": "string",
            "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
          },
          "source": {
            "type": "string",
            "enum": [
              "latest",
              "previous",
              "develop"
            ]
          },
          "cadence": {
            "type": "string",
            "enum": [
              "nightly",
              "weekly"
            ]
          },
          "baseline": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "verified",
                      "broken",
                      "quarantine",
                      "harness-red",
                      "infra-error",
                      "untested",
                      "skipped"
                    ]
                  },
                  "step": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "scaffold",
                          "install",
                          "add",
                          "generate",
                          "typecheck",
                          "initialize",
                          "build",
                          "start",
                          "smoke"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "omVersion": {
                    "type": "string",
                    "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                  },
                  "moduleVersion": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "receipt": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "since": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "precheck": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "pass",
                          "fail"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "patches": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "finding": {
                    "description": "Why the failed step of a broken cell failed, one sentence, when its excerpt says it plainly. The sentence the module page prints under its strip. Absent: no explanation (the receipt has the error).",
                    "type": "string",
                    "maxLength": 300
                  },
                  "installs": {
                    "description": "Set when the cell's receipt judged another version (moduleVersion) than the one a fresh app installs on the line: that version. The cell is then no verdict on the line; status is the other version's, and modules.json signals.receipt[line] says untested.",
                    "type": "string",
                    "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                  }
                },
                "required": [
                  "status",
                  "step",
                  "omVersion",
                  "moduleVersion",
                  "at",
                  "receipt",
                  "since",
                  "precheck",
                  "patches"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "defaultPreset": {
            "description": "The starter preset of a new app on the line (classic: what create-mercato-app makes without --preset), whose receipts give the main verdict, or null when the catalog has not read its modules. compat.inPresets names the packages it registers.",
            "type": [
              "string",
              "null"
            ]
          },
          "presets": {
            "description": "The { id, from } entries a new app (classic) and an app from the empty preset of the line register in src/modules.ts. classic null: not read yet.",
            "type": "object",
            "properties": {
              "classic": {
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "maxLength": 64,
                          "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
                        },
                        "from": {
                          "type": "string",
                          "maxLength": 214,
                          "pattern": "^(?:@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$"
                        }
                      },
                      "required": [
                        "id",
                        "from"
                      ],
                      "additionalProperties": false
                    }
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "empty": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "maxLength": 64,
                      "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
                    },
                    "from": {
                      "type": "string",
                      "maxLength": 214,
                      "pattern": "^(?:@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$"
                    }
                  },
                  "required": [
                    "id",
                    "from"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "classic",
              "empty"
            ],
            "additionalProperties": false
          },
          "isolationBaseline": {
            "description": "The last baseline receipt of an app from the empty preset on the line: the 'in isolation' row of Open Mercato itself.",
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "verified",
                      "broken",
                      "quarantine",
                      "harness-red",
                      "infra-error",
                      "untested",
                      "skipped"
                    ]
                  },
                  "step": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "scaffold",
                          "install",
                          "add",
                          "generate",
                          "typecheck",
                          "initialize",
                          "build",
                          "start",
                          "smoke"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "omVersion": {
                    "type": "string",
                    "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                  },
                  "moduleVersion": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "at": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "receipt": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "since": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "precheck": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "pass",
                          "fail"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "patches": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "finding": {
                    "description": "Why the failed step of a broken cell failed, one sentence, when its excerpt says it plainly. The sentence the module page prints under its strip. Absent: no explanation (the receipt has the error).",
                    "type": "string",
                    "maxLength": 300
                  },
                  "installs": {
                    "description": "Set when the cell's receipt judged another version (moduleVersion) than the one a fresh app installs on the line: that version. The cell is then no verdict on the line; status is the other version's, and modules.json signals.receipt[line] says untested.",
                    "type": "string",
                    "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                  }
                },
                "required": [
                  "status",
                  "step",
                  "omVersion",
                  "moduleVersion",
                  "at",
                  "receipt",
                  "since",
                  "precheck",
                  "patches"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "key",
          "version",
          "source",
          "cadence",
          "baseline"
        ],
        "additionalProperties": false
      }
    },
    "baseline": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "pattern": "^(\\d+\\.\\d+|next)$"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "verified",
              "broken",
              "quarantine",
              "harness-red",
              "infra-error",
              "untested",
              "skipped"
            ]
          },
          "step": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "scaffold",
                  "install",
                  "add",
                  "generate",
                  "typecheck",
                  "initialize",
                  "build",
                  "start",
                  "smoke"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "omVersion": {
            "type": "string",
            "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
          },
          "moduleVersion": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "receipt": {
            "type": [
              "string",
              "null"
            ]
          },
          "since": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "precheck": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "pass",
                  "fail"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "patches": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "finding": {
            "description": "Why the failed step of a broken cell failed, one sentence, when its excerpt says it plainly. The sentence the module page prints under its strip. Absent: no explanation (the receipt has the error).",
            "type": "string",
            "maxLength": 300
          },
          "installs": {
            "description": "Set when the cell's receipt judged another version (moduleVersion) than the one a fresh app installs on the line: that version. The cell is then no verdict on the line; status is the other version's, and modules.json signals.receipt[line] says untested.",
            "type": "string",
            "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
          }
        },
        "required": [
          "status",
          "step",
          "omVersion",
          "moduleVersion",
          "at",
          "receipt",
          "since",
          "precheck",
          "patches"
        ],
        "additionalProperties": false
      }
    },
    "isolationBaseline": {
      "description": "The Open Mercato itself row of an app from the empty preset per line: the baseline of the signal 'in isolation'.",
      "type": "object",
      "propertyNames": {
        "type": "string",
        "pattern": "^(\\d+\\.\\d+|next)$"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "verified",
              "broken",
              "quarantine",
              "harness-red",
              "infra-error",
              "untested",
              "skipped"
            ]
          },
          "step": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "scaffold",
                  "install",
                  "add",
                  "generate",
                  "typecheck",
                  "initialize",
                  "build",
                  "start",
                  "smoke"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "omVersion": {
            "type": "string",
            "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
          },
          "moduleVersion": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "receipt": {
            "type": [
              "string",
              "null"
            ]
          },
          "since": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "precheck": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "pass",
                  "fail"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "patches": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "finding": {
            "description": "Why the failed step of a broken cell failed, one sentence, when its excerpt says it plainly. The sentence the module page prints under its strip. Absent: no explanation (the receipt has the error).",
            "type": "string",
            "maxLength": 300
          },
          "installs": {
            "description": "Set when the cell's receipt judged another version (moduleVersion) than the one a fresh app installs on the line: that version. The cell is then no verdict on the line; status is the other version's, and modules.json signals.receipt[line] says untested.",
            "type": "string",
            "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
          }
        },
        "required": [
          "status",
          "step",
          "omVersion",
          "moduleVersion",
          "at",
          "receipt",
          "since",
          "precheck",
          "patches"
        ],
        "additionalProperties": false
      }
    },
    "baselineCulprits": {
      "description": "Per line whose baseline (a new app, nothing added) is red only because of packages that app already registers: those packages (the smoke check of their route failed, or every TS error was in their files). Their cells are judged as on a green line, the other modules on their own runs. Absent: no such line.",
      "type": "object",
      "propertyNames": {
        "type": "string",
        "pattern": "^(\\d+\\.\\d+|next)$"
      },
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string",
          "maxLength": 214,
          "pattern": "^(?:@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$"
        }
      }
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "locator": {
            "type": "string",
            "pattern": "^(npm:(?:@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*|github:[A-Za-z0-9-]{1,39}\\/[A-Za-z0-9._-]{1,100})$"
          },
          "path": {
            "type": "string",
            "pattern": "^(@[a-z0-9-~][a-z0-9-._~]*\\/[a-z0-9-~][a-z0-9-._~]*|[a-z0-9-~][a-z0-9-._~]*|github\\/[a-z0-9-]{1,39}\\/[a-z0-9._-]{1,100})$"
          },
          "title": {
            "type": "string"
          },
          "version": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
              },
              {
                "type": "null"
              }
            ]
          },
          "builtFor": {
            "type": "object",
            "properties": {
              "range": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "exact-pin",
                  "caret-0x",
                  "bounded",
                  "open",
                  "star",
                  "missing"
                ]
              },
              "lines": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^(\\d+\\.\\d+|next)$"
                }
              },
              "ranges": {
                "description": "The declared peer range per line, of the version a new app has on that line (compat.ships, else the version it installs), for every line whose declaration was read, when the lines are judged on different versions or their ranges differ (search: { '0.8': '0.8.0', '0.9': '0.9.0' }). A line in `ranges` but not in `lines` declares a range that rejects the line's version; a line missing from `ranges` has a version whose peers were not read (a develop snapshot on next). Absent: every line is judged on one version, whose declaration is `range`.",
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "pattern": "^(\\d+\\.\\d+|next)$"
                },
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [
              "range",
              "kind",
              "lines"
            ],
            "additionalProperties": false
          },
          "cells": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "pattern": "^(\\d+\\.\\d+|next)$"
            },
            "additionalProperties": {
              "type": "object",
              "properties": {
                "status": {
                  "type": "string",
                  "enum": [
                    "verified",
                    "broken",
                    "quarantine",
                    "harness-red",
                    "infra-error",
                    "untested",
                    "skipped"
                  ]
                },
                "step": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "scaffold",
                        "install",
                        "add",
                        "generate",
                        "typecheck",
                        "initialize",
                        "build",
                        "start",
                        "smoke"
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "omVersion": {
                  "type": "string",
                  "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                },
                "moduleVersion": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "receipt": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "since": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "precheck": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "pass",
                        "fail"
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "patches": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "finding": {
                  "description": "Why the failed step of a broken cell failed, one sentence, when its excerpt says it plainly. The sentence the module page prints under its strip. Absent: no explanation (the receipt has the error).",
                  "type": "string",
                  "maxLength": 300
                },
                "installs": {
                  "description": "Set when the cell's receipt judged another version (moduleVersion) than the one a fresh app installs on the line: that version. The cell is then no verdict on the line; status is the other version's, and modules.json signals.receipt[line] says untested.",
                  "type": "string",
                  "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                },
                "fit": {
                  "type": "string",
                  "enum": [
                    "ok",
                    "drift",
                    "no-fit",
                    "unknown"
                  ]
                }
              },
              "required": [
                "status",
                "step",
                "omVersion",
                "moduleVersion",
                "at",
                "receipt",
                "since",
                "precheck",
                "patches",
                "fit"
              ],
              "additionalProperties": false
            }
          },
          "inPresets": {
            "description": "Lines whose new app (from the classic preset) already registers the package. Their cells are the receipts of the version a new app ships there (IndexEntry.compat.ships): a verdict like any other. The signal 'in isolation' of each cell is IndexEntry.compat.isolation in modules.json.",
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^(\\d+\\.\\d+|next)$"
            }
          },
          "ships": {
            "description": "On a line of inPresets, the version of the package a new app ships there (IndexEntry.compat.ships): the version that line's cell is about, with or without a receipt. `version` is the one of the latest line; builtFor.ranges names the declared range per line.",
            "type": "object",
            "propertyNames": {
              "type": "string",
              "pattern": "^(\\d+\\.\\d+|next)$"
            },
            "additionalProperties": {
              "type": "string",
              "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
            }
          }
        },
        "required": [
          "locator",
          "path",
          "title",
          "version",
          "builtFor",
          "cells"
        ],
        "additionalProperties": false
      }
    },
    "peersRejectFitting": {
      "type": "object",
      "properties": {
        "rejected": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "fitting": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "rejected",
        "fitting"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "schemaVersion",
    "generatedAt",
    "lines",
    "baseline",
    "rows",
    "peersRejectFitting"
  ],
  "additionalProperties": false
}
