{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://modules.openmercato.com/schema/modules-1.json",
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string",
      "format": "uri"
    },
    "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))$"
    },
    "dataVersion": {
      "type": "string"
    },
    "site": {
      "type": "string",
      "format": "uri"
    },
    "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
    },
    "features": {
      "type": "object",
      "properties": {
        "cliSearch": {
          "type": "boolean"
        }
      },
      "required": [
        "cliSearch"
      ],
      "additionalProperties": false
    },
    "officialCoverage": {
      "type": "object",
      "properties": {
        "listed": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "missing": {
          "maxItems": 50,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 214,
            "pattern": "^(?:@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$"
          }
        }
      },
      "required": [
        "listed",
        "missing"
      ],
      "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
      }
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "crm-sales",
              "catalog-pricing",
              "orders-checkout",
              "warehouse-shipping",
              "payments-finance",
              "marketing-loyalty",
              "communication",
              "integrations-sync",
              "ai-automation",
              "search-analytics",
              "auth-security",
              "content-portal",
              "localization-compliance",
              "storage-infrastructure",
              "devtools",
              "operations"
            ]
          },
          "title": {
            "type": "string"
          },
          "wedge": {
            "type": "string",
            "enum": [
              "sell",
              "operate",
              "money",
              "connect",
              "think",
              "platform"
            ]
          },
          "count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "id",
          "title",
          "wedge",
          "count"
        ],
        "additionalProperties": false
      }
    },
    "counts": {
      "type": "object",
      "properties": {
        "entries": {
          "type": "number"
        },
        "listed": {
          "type": "number"
        },
        "modules": {
          "type": "number"
        },
        "verifiedOnLatest": {
          "type": "number"
        },
        "omQuality": {
          "type": "number"
        },
        "builtIn": {
          "type": "number"
        }
      },
      "required": [
        "entries",
        "listed",
        "modules",
        "verifiedOnLatest",
        "omQuality",
        "builtIn"
      ],
      "additionalProperties": false
    },
    "builtIn": {
      "type": "object",
      "properties": {
        "coreVersion": {
          "type": "string",
          "pattern": "^\\d+\\.\\d+\\.\\d+$"
        },
        "count": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "href": {
          "type": "string"
        }
      },
      "required": [
        "coreVersion",
        "count",
        "href"
      ],
      "additionalProperties": false
    },
    "entries": {
      "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})$"
          },
          "npm": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 214,
                "pattern": "^(?:@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$"
              },
              {
                "type": "null"
              }
            ]
          },
          "github": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9-]{0,38})\\/[A-Za-z0-9._-]{1,100}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "repoPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": "string",
            "enum": [
              "module",
              "provider",
              "library",
              "tool"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "official",
              "community",
              "3rd-party"
            ]
          },
          "enterprise": {
            "type": "boolean"
          },
          "title": {
            "type": "string",
            "maxLength": 80
          },
          "summary": {
            "type": "string"
          },
          "whenToUse": {
            "type": "string"
          },
          "whenNotToUse": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": "string",
            "enum": [
              "crm-sales",
              "catalog-pricing",
              "orders-checkout",
              "warehouse-shipping",
              "payments-finance",
              "marketing-loyalty",
              "communication",
              "integrations-sync",
              "ai-automation",
              "search-analytics",
              "auth-security",
              "content-portal",
              "localization-compliance",
              "storage-infrastructure",
              "devtools",
              "operations"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "providers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "label"
              ],
              "additionalProperties": false
            }
          },
          "moduleIds": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 64,
              "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
            }
          },
          "requires": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "raw": {
                  "type": "string"
                },
                "resolvesTo": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "raw",
                "resolvesTo"
              ],
              "additionalProperties": false
            }
          },
          "replaces": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "slotConflicts": {
            "type": "array",
            "items": {
              "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})$"
            }
          },
          "renamedFrom": {
            "type": "array",
            "items": {
              "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})$"
            }
          },
          "supersededBy": {
            "type": [
              "string",
              "null"
            ]
          },
          "alternatives": {
            "type": "array",
            "items": {
              "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})$"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "hold",
              "unmaintained",
              "delisted",
              "deprecated",
              "archived",
              "stale"
            ]
          },
          "listed": {
            "type": "boolean"
          },
          "featured": {
            "type": "boolean"
          },
          "license": {
            "type": "object",
            "properties": {
              "spdx": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "osi",
                  "proprietary",
                  "enterprise",
                  "unknown"
                ]
              },
              "mismatch": {
                "type": "boolean"
              }
            },
            "required": [
              "spdx",
              "kind",
              "mismatch"
            ],
            "additionalProperties": false
          },
          "version": {
            "type": "object",
            "properties": {
              "latest": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^\\d+\\.\\d+\\.\\d+$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "preview": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "publishedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "integrity": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "installableFrom": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "gitRef": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "recommended": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "pattern": "^(\\d+\\.\\d+|next)$"
                },
                "additionalProperties": {
                  "anyOf": [
                    {
                      "type": "string",
                      "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              }
            },
            "required": [
              "latest",
              "preview",
              "publishedAt",
              "integrity",
              "installableFrom",
              "gitRef",
              "recommended"
            ],
            "additionalProperties": false
          },
          "identity": {
            "type": "object",
            "properties": {
              "builtFrom": {
                "type": "string",
                "enum": [
                  "verified",
                  "none",
                  "lost"
                ]
              },
              "claimed": {
                "type": "boolean"
              },
              "source": {
                "type": "string",
                "enum": [
                  "npm",
                  "github"
                ]
              }
            },
            "required": [
              "builtFrom",
              "claimed",
              "source"
            ],
            "additionalProperties": false
          },
          "compat": {
            "type": "object",
            "properties": {
              "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
              },
              "lines": {
                "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
                }
              },
              "verifiedOn": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^(\\d+\\.\\d+|next)$"
                }
              },
              "inPresets": {
                "description": "Lines whose new app (from the classic preset, what create-mercato-app makes without --preset) already registers the package in src/modules.ts. Nothing to install there: install.cli is for an app that does not have it. The line keeps its verdict in compat.lines, the receipt of the version a new app ships there (compat.ships).",
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^(\\d+\\.\\d+|next)$"
                }
              },
              "inEmptyPreset": {
                "description": "Lines whose app from the empty preset registers the package too, so no app of the line needs to install it.",
                "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. compat.lines[line] is the receipt of that version.",
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "pattern": "^(\\d+\\.\\d+|next)$"
                },
                "additionalProperties": {
                  "type": "string",
                  "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                }
              },
              "isolation": {
                "description": "The signal 'in isolation' per line: the last receipt of the package in an app from the empty preset (twelve modules, the module without the rest of the platform). A second signal, never the main verdict: compat.lines (a new app, the classic preset), verifiedOn, tier, agentPolicy and version.recommended do not read it. finding: what a failed step found, one sentence.",
                "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"
                        }
                      ]
                    },
                    "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"
                      ]
                    },
                    "finding": {
                      "type": "string",
                      "maxLength": 300
                    }
                  },
                  "required": [
                    "status",
                    "step",
                    "moduleVersion",
                    "at",
                    "receipt"
                  ],
                  "additionalProperties": false
                }
              },
              "newerBreaks": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "pattern": "^(\\d+\\.\\d+|next)$"
                },
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "moduleVersion": {
                      "type": "string",
                      "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                    },
                    "step": {
                      "anyOf": [
                        {
                          "type": "string",
                          "enum": [
                            "scaffold",
                            "install",
                            "add",
                            "generate",
                            "typecheck",
                            "initialize",
                            "build",
                            "start",
                            "smoke"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "at": {
                      "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))$"
                    },
                    "receipt": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "moduleVersion",
                    "step",
                    "at",
                    "receipt"
                  ],
                  "additionalProperties": false
                }
              },
              "collisions": {
                "description": "Per line, backend routes of the module that a module of a new app (the classic preset) already has, read statically from the facts of both (route: the module's own; module and from: the app's module and the package that registers it). yarn generate refuses two modules with one backend route. A warning, never a verdict: on a line without a receipt verdict the policy names it (ROUTE_COLLISION).",
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "pattern": "^(\\d+\\.\\d+|next)$"
                },
                "additionalProperties": {
                  "maxItems": 20,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "route": {
                        "type": "string",
                        "maxLength": 200
                      },
                      "module": {
                        "type": "string",
                        "maxLength": 64,
                        "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
                      },
                      "from": {
                        "type": "string",
                        "maxLength": 214
                      }
                    },
                    "required": [
                      "route",
                      "module",
                      "from"
                    ],
                    "additionalProperties": false
                  }
                }
              }
            },
            "required": [
              "builtFor",
              "lines",
              "verifiedOn"
            ],
            "additionalProperties": false
          },
          "anatomy": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "version": {
                    "type": "string",
                    "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                  },
                  "coverage": {
                    "type": "string",
                    "enum": [
                      "full",
                      "partial",
                      "none"
                    ]
                  },
                  "counts": {
                    "type": "object",
                    "properties": {
                      "entities": {
                        "type": "number"
                      },
                      "tables": {
                        "type": "number"
                      },
                      "migrations": {
                        "type": "number"
                      },
                      "routes": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "publicRoutes": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "aclFeatures": {
                        "type": "number"
                      },
                      "eventsEmitted": {
                        "type": "number"
                      },
                      "eventsConsumed": {
                        "type": "number"
                      },
                      "backendPages": {
                        "type": "number"
                      },
                      "frontendPages": {
                        "type": "number"
                      },
                      "widgets": {
                        "type": "number"
                      },
                      "workers": {
                        "type": "number"
                      },
                      "cli": {
                        "type": "number"
                      },
                      "aiTools": {
                        "type": "number"
                      },
                      "aiAgents": {
                        "type": "number"
                      },
                      "extends": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "entities",
                      "tables",
                      "migrations",
                      "routes",
                      "publicRoutes",
                      "aclFeatures",
                      "eventsEmitted",
                      "eventsConsumed",
                      "backendPages",
                      "frontendPages",
                      "widgets",
                      "workers",
                      "cli",
                      "aiTools",
                      "aiAgents",
                      "extends"
                    ],
                    "additionalProperties": false
                  },
                  "lists": {
                    "type": "object",
                    "properties": {
                      "aclFeatures": {
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 100,
                          "pattern": "^[a-z0-9_]+(\\.[A-Za-z0-9_*-]+){1,5}$"
                        }
                      },
                      "eventsEmitted": {
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 100,
                          "pattern": "^[a-z0-9_]+(\\.[A-Za-z0-9_*-]+){1,5}$"
                        }
                      },
                      "eventsConsumed": {
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 100,
                          "pattern": "^[a-z0-9_]+(\\.[A-Za-z0-9_*-]+){1,5}$"
                        }
                      },
                      "env": {
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "pattern": "^[A-Z][A-Z0-9_]{1,63}$"
                        }
                      },
                      "envIfSet": {
                        "description": "Env names the code only checks are set, or reads as an opt-in flag in an isXEnabled() function: optional, not needed to run. Absent: none, or facts older than rentgen 4.",
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "pattern": "^[A-Z][A-Z0-9_]{1,63}$"
                        }
                      },
                      "hosts": {
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 253,
                          "pattern": "^(\\*\\.)?([a-z0-9-]{1,63}\\.)+[a-z]{2,63}$"
                        }
                      },
                      "sdks": {
                        "description": "Dependencies that are SDKs of a known external service (stripe, @aws-sdk/client-s3, @ai-sdk/openai), first 20: the package talks to that service without a URL in its code. A curated, partial list. Absent: none known.",
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 214
                        }
                      },
                      "tables": {
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "publicRoutes": {
                        "maxItems": 10,
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "credentials": {
                        "maxItems": 10,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string"
                            },
                            "type": {
                              "type": "string"
                            },
                            "required": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "key",
                            "type",
                            "required"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "backendPages": {
                        "description": "The package's backend page URLs (first 20), as read from its facts. plan_install lists them in adds.backendPages. Absent: not read (older data, built-in modules).",
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 200
                        }
                      }
                    },
                    "required": [
                      "aclFeatures",
                      "eventsEmitted",
                      "eventsConsumed",
                      "env",
                      "hosts",
                      "tables",
                      "publicRoutes",
                      "credentials"
                    ],
                    "additionalProperties": false
                  },
                  "callout": {
                    "type": "string",
                    "maxLength": 240
                  },
                  "diff": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "from": {
                            "type": "string",
                            "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
                          },
                          "added": {
                            "type": "object",
                            "properties": {
                              "tables": {
                                "type": "number"
                              },
                              "routes": {
                                "type": "number"
                              },
                              "publicRoutes": {
                                "type": "number"
                              },
                              "aclFeatures": {
                                "type": "number"
                              },
                              "env": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "pattern": "^[A-Z][A-Z0-9_]{1,63}$"
                                }
                              },
                              "hosts": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "maxLength": 253,
                                  "pattern": "^(\\*\\.)?([a-z0-9-]{1,63}\\.)+[a-z]{2,63}$"
                                }
                              }
                            },
                            "required": [
                              "tables",
                              "routes",
                              "publicRoutes",
                              "aclFeatures",
                              "env",
                              "hosts"
                            ],
                            "additionalProperties": false
                          },
                          "removed": {
                            "type": "object",
                            "properties": {
                              "tables": {
                                "type": "number"
                              },
                              "routes": {
                                "type": "number"
                              },
                              "aclFeatures": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "tables",
                              "routes",
                              "aclFeatures"
                            ],
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "from",
                          "added",
                          "removed"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "version",
                  "coverage",
                  "counts",
                  "lists",
                  "callout",
                  "diff"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "signals": {
            "type": "object",
            "properties": {
              "receipt": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "pattern": "^(\\d+\\.\\d+|next)$"
                },
                "additionalProperties": {
                  "type": "string",
                  "enum": [
                    "verified",
                    "broken",
                    "quarantine",
                    "harness-red",
                    "infra-error",
                    "untested",
                    "skipped"
                  ]
                }
              },
              "fit": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "pattern": "^(\\d+\\.\\d+|next)$"
                },
                "additionalProperties": {
                  "type": "string",
                  "enum": [
                    "ok",
                    "drift",
                    "no-fit",
                    "unknown"
                  ]
                }
              },
              "anatomy": {
                "type": "string",
                "enum": [
                  "full",
                  "partial",
                  "hidden",
                  "none"
                ]
              },
              "supplyChain": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "ok",
                      "warn",
                      "fail"
                    ]
                  },
                  "reasons": {
                    "maxItems": 10,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 160
                    }
                  }
                },
                "required": [
                  "status",
                  "reasons"
                ],
                "additionalProperties": false
              },
              "hygiene": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "ok",
                      "warn",
                      "fail"
                    ]
                  },
                  "failing": {
                    "maxItems": 30,
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "status",
                  "failing"
                ],
                "additionalProperties": false
              },
              "maintenance": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "current",
                      "behind",
                      "stale",
                      "archived",
                      "deprecated"
                    ]
                  },
                  "lastRelease": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "catchUpDays": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "status",
                  "lastRelease",
                  "catchUpDays"
                ],
                "additionalProperties": false
              },
              "declaredVsObserved": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "match",
                      "mismatch"
                    ]
                  },
                  "notes": {
                    "maxItems": 10,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 160
                    }
                  }
                },
                "required": [
                  "status",
                  "notes"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "receipt",
              "fit",
              "anatomy",
              "supplyChain",
              "hygiene",
              "maintenance",
              "declaredVsObserved"
            ],
            "additionalProperties": false
          },
          "tier": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "listed",
                  "verified"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "quality": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "version": {
                    "type": "string",
                    "pattern": "^\\d+\\.\\d+\\.\\d+$"
                  },
                  "until": {
                    "type": "string",
                    "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                  },
                  "report": {
                    "type": "string"
                  }
                },
                "required": [
                  "version",
                  "until",
                  "report"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "agentPolicy": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "pattern": "^(\\d+\\.\\d+|next)$"
            },
            "additionalProperties": {
              "type": "object",
              "properties": {
                "decision": {
                  "type": "string",
                  "enum": [
                    "allow",
                    "ask",
                    "refuse"
                  ]
                },
                "reasons": {
                  "maxItems": 10,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "code": {
                        "type": "string"
                      },
                      "text": {
                        "type": "string",
                        "maxLength": 160
                      }
                    },
                    "required": [
                      "code",
                      "text"
                    ],
                    "additionalProperties": false
                  }
                },
                "until": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                "consentText": {
                  "type": "string",
                  "maxLength": 160
                }
              },
              "required": [
                "decision",
                "reasons"
              ],
              "additionalProperties": false
            }
          },
          "install": {
            "type": "object",
            "properties": {
              "cli": {
                "type": "string",
                "description": "Install command for the latest line, for an app that does not register the package yet. When the latest line is in compat.inPresets, a new app (from the classic preset) already registers it and there is nothing to install: this is then the command for an app from the empty preset (`yarn mercato module add`; a new app answers `already enabled`), or, when compat.inEmptyPreset names the line too, `yarn add`, which only changes the version. search_modules labels it (presetNote, installEmptyPreset). A module a new app registers behind an env flag (storage_s3 and OM_ENABLE_STORAGE_S3) gets the command of a new app, as plan_install gives it: `yarn add`, the flag in .env and `yarn generate`, never `module add`, which registers it a second time; an app from the empty preset runs `yarn mercato module add` and the flag (plan_install emptyPreset). A GitHub entry with no pinned tag (version.gitRef and every version.recommended null, agentPolicy UNPINNED_GIT) has no installable version: never run this command then, it installs whatever the default branch holds; the card, search_modules and raw/modules.md say there is nothing to install."
              },
              "cmm": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "needsAllowThirdParty": {
                "type": "boolean"
              },
              "moduleFlag": {
                "anyOf": [
                  {
                    "type": "string",
                    "maxLength": 64,
                    "pattern": "^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "cli",
              "cmm",
              "needsAllowThirdParty",
              "moduleFlag"
            ],
            "additionalProperties": false
          },
          "screenshots": {
            "description": "Screenshots of the module in a running app, from the descriptor. src is site-relative (with the base path, a file the catalog hosts) or an https URL on GitHub; resolve a site-relative src against the site origin. alt is plain text. Absent: the descriptor has none.",
            "maxItems": 6,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "src": {
                  "type": "string",
                  "maxLength": 300,
                  "pattern": "^(\\/|https:\\/\\/)"
                },
                "alt": {
                  "type": "string",
                  "maxLength": 120
                }
              },
              "required": [
                "src",
                "alt"
              ],
              "additionalProperties": false
            }
          },
          "stats": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "downloads30d": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "stars": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "downloads30d",
                  "stars"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "sigil": {
            "type": "object",
            "properties": {
              "glyph": {
                "type": "string",
                "pattern": "^[0-3]{7}$"
              },
              "phase": {
                "type": "integer",
                "minimum": 0,
                "maximum": 359
              },
              "publicRoutes": {
                "type": "boolean"
              }
            },
            "required": [
              "glyph",
              "phase",
              "publicRoutes"
            ],
            "additionalProperties": false
          },
          "links": {
            "type": "object",
            "properties": {
              "page": {
                "type": "string"
              },
              "md": {
                "type": "string"
              },
              "json": {
                "type": "string"
              },
              "facts": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "npm": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "repo": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "docs": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "page",
              "md",
              "json",
              "facts",
              "npm",
              "repo",
              "docs"
            ],
            "additionalProperties": false
          },
          "addedAt": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "updatedAt": {
            "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))$"
          },
          "_meta": {
            "default": {},
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "locator",
          "path",
          "npm",
          "github",
          "repoPath",
          "kind",
          "type",
          "enterprise",
          "title",
          "summary",
          "whenToUse",
          "whenNotToUse",
          "category",
          "tags",
          "providers",
          "moduleIds",
          "requires",
          "replaces",
          "slotConflicts",
          "renamedFrom",
          "supersededBy",
          "alternatives",
          "status",
          "listed",
          "featured",
          "license",
          "version",
          "identity",
          "compat",
          "anatomy",
          "signals",
          "tier",
          "quality",
          "agentPolicy",
          "install",
          "stats",
          "sigil",
          "links",
          "addedAt",
          "updatedAt",
          "_meta"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "$schema",
    "schemaVersion",
    "generatedAt",
    "dataVersion",
    "site",
    "dataAsOf",
    "features",
    "officialCoverage",
    "lines",
    "categories",
    "counts",
    "builtIn",
    "entries"
  ],
  "additionalProperties": false
}
