{
  "$defs": {
    "Digest": {
      "description": "The first eight lowercase hex characters of a SHA-256, the same witness convention `NodeId`\nuses. The full digest is computed and compared internally; only this short form ever\nreaches the wire.",
      "examples": [
        "3f9a1c2e"
      ],
      "pattern": "^[0-9a-f]{8}$",
      "type": "string"
    },
    "Documentation": {
      "description": "One block of documentation attached to a declaration, in the markup it was written in.",
      "properties": {
        "format": {
          "$ref": "#/$defs/DocumentationFormat",
          "description": "Markup the comment text uses."
        },
        "text": {
          "description": "The body of the comment, with the comment syntax stripped.",
          "type": "string"
        }
      },
      "required": [
        "format",
        "text"
      ],
      "type": "object"
    },
    "DocumentationBlock": {
      "additionalProperties": false,
      "description": "Documentation metadata addressing bytes held by an existing content owner.",
      "properties": {
        "chunks": {
          "description": "Existing ranked documents intersecting this block, in source order.",
          "items": {
            "$ref": "#/$defs/DocumentationChunk"
          },
          "type": "array"
        },
        "content_digest": {
          "$ref": "#/$defs/DocumentationDigest",
          "description": "Digest of the block's exact bytes."
        },
        "heading_path": {
          "description": "Headings owning the block, in increasing depth order.",
          "items": {
            "$ref": "#/$defs/DocumentationHeading"
          },
          "type": "array"
        },
        "identity": {
          "$ref": "#/$defs/DocumentationDigest",
          "description": "Digest of canonical source identity and structural position."
        },
        "kind": {
          "$ref": "#/$defs/DocumentationBlockKind",
          "description": "Whether the range carries prose or code."
        },
        "language": {
          "description": "Authored code language, when supplied by the format.",
          "type": "string"
        },
        "line": {
          "description": "One-based line where the block starts.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "range": {
          "$ref": "#/$defs/TextRange",
          "description": "Exact range in the regular source or decoded notebook cell."
        },
        "source": {
          "$ref": "#/$defs/DocumentationContentIdentity",
          "description": "Source record containing revision, format, origin, and license facts."
        },
        "symbol": {
          "$ref": "#/$defs/SymbolId",
          "description": "Owning declaration for an attached comment."
        }
      },
      "required": [
        "identity",
        "source",
        "content_digest",
        "range",
        "line",
        "kind"
      ],
      "type": "object"
    },
    "DocumentationBlockKind": {
      "description": "The content a documentation block addresses.",
      "oneOf": [
        {
          "const": "prose",
          "description": "Authored prose and its markup.",
          "type": "string"
        },
        {
          "const": "code",
          "description": "Authored code without execution or inferred name resolution.",
          "type": "string"
        }
      ]
    },
    "DocumentationChunk": {
      "additionalProperties": false,
      "description": "A baseline search document intersecting one block.",
      "properties": {
        "identity": {
          "description": "Existing symbol or text document identity.",
          "type": "string"
        },
        "range": {
          "$ref": "#/$defs/TextRange",
          "description": "Exact content range held by this document."
        }
      },
      "required": [
        "identity",
        "range"
      ],
      "type": "object"
    },
    "DocumentationContentIdentity": {
      "additionalProperties": false,
      "description": "One content owner: a regular source or decoded notebook cell.",
      "properties": {
        "cell": {
          "$ref": "#/$defs/NotebookCell",
          "description": "Decoded cell when the parent source is a notebook."
        },
        "source": {
          "$ref": "#/$defs/DocumentationSourceIdentity",
          "description": "Original workspace file or package source unit."
        }
      },
      "required": [
        "source"
      ],
      "type": "object"
    },
    "DocumentationCoverage": {
      "additionalProperties": false,
      "description": "Counts recording what one collection parsed or omitted.",
      "properties": {
        "omitted": {
          "description": "Sources omitted because their format or content was refused.",
          "format": "uint32",
          "minimum": 0,
          "type": "integer"
        },
        "parsed": {
          "description": "Sources whose supported structure was parsed.",
          "format": "uint32",
          "minimum": 0,
          "type": "integer"
        },
        "selected": {
          "description": "Accepted source records before extraction.",
          "format": "uint32",
          "minimum": 0,
          "type": "integer"
        },
        "truncated": {
          "description": "Sources whose output reached a collection bound.",
          "format": "uint32",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "selected",
        "parsed",
        "omitted",
        "truncated"
      ],
      "type": "object"
    },
    "DocumentationDigest": {
      "description": "Full lowercase SHA-256 digest for documentation content and identity.",
      "examples": [
        "3f9a1c2e7b4d6a09876543210fedcba9876543210fedcba9876543210fedcba"
      ],
      "maxLength": 64,
      "minLength": 64,
      "pattern": "^[0-9a-f]{64}$",
      "type": "string"
    },
    "DocumentationFormat": {
      "description": "Which markup the text is written in, since whoever displays a doc comment is the one that\nrenders it.",
      "oneOf": [
        {
          "const": "plain",
          "description": "Plain text with no markup to render.",
          "type": "string"
        },
        {
          "const": "markdown",
          "description": "Markdown as authored in the source.",
          "type": "string"
        }
      ]
    },
    "DocumentationHeading": {
      "additionalProperties": false,
      "description": "One heading in a block's ordered section path.",
      "properties": {
        "level": {
          "description": "Heading depth established by the format parser.",
          "format": "uint32",
          "minimum": 0,
          "type": "integer"
        },
        "name": {
          "description": "Heading identity, including the parser's duplicate-heading disambiguator.",
          "type": "string"
        }
      },
      "required": [
        "level",
        "name"
      ],
      "type": "object"
    },
    "DocumentationIndex": {
      "additionalProperties": false,
      "description": "Documentation metadata published alongside an existing search corpus.",
      "properties": {
        "blocks": {
          "description": "Blocks in source, range, kind, and identity order.",
          "items": {
            "$ref": "#/$defs/DocumentationBlock"
          },
          "type": "array"
        },
        "coverage": {
          "$ref": "#/$defs/DocumentationCoverage",
          "description": "Counts describing the accepted collection."
        },
        "documentation_revision": {
          "$ref": "#/$defs/Digest",
          "description": "Revision of extraction, identity, linking, and chunk rules."
        },
        "links": {
          "description": "Authored links and their resolution.",
          "items": {
            "$ref": "#/$defs/DocumentationLink"
          },
          "type": "array"
        },
        "references": {
          "description": "Exact references used by symbol reads.",
          "items": {
            "$ref": "#/$defs/DocumentationReference"
          },
          "type": "array"
        },
        "selection_digest": {
          "$ref": "#/$defs/DocumentationDigest",
          "description": "Digest of sorted source identities, content digests, formats, and origins."
        },
        "sources": {
          "description": "Source facts in content identity order.",
          "items": {
            "$ref": "#/$defs/DocumentationSource"
          },
          "type": "array"
        },
        "unresolved_references": {
          "description": "Unresolved spellings used for incremental invalidation.",
          "items": {
            "$ref": "#/$defs/DocumentationReferenceCandidate"
          },
          "type": "array"
        },
        "warnings": {
          "description": "Source-specific incomplete conditions.",
          "items": {
            "$ref": "#/$defs/DocumentationWarning"
          },
          "type": "array"
        }
      },
      "required": [
        "documentation_revision",
        "selection_digest",
        "sources",
        "blocks",
        "links",
        "references",
        "unresolved_references",
        "coverage",
        "warnings"
      ],
      "type": "object"
    },
    "DocumentationLicense": {
      "additionalProperties": false,
      "description": "License metadata supplied by the source adapter.",
      "properties": {
        "expression": {
          "description": "Declared expression; collection does not infer a license from source text.",
          "type": "string"
        },
        "files": {
          "description": "License files whose bytes the adapter verified.",
          "items": {
            "$ref": "#/$defs/DocumentationLicenseFile"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "DocumentationLicenseFile": {
      "additionalProperties": false,
      "description": "One license file's address and byte digest.",
      "properties": {
        "digest": {
          "$ref": "#/$defs/DocumentationDigest",
          "description": "Digest of the license file's original bytes."
        },
        "path": {
          "$ref": "#/$defs/ProjectPath",
          "description": "Path relative to the source's project or package root."
        }
      },
      "required": [
        "path",
        "digest"
      ],
      "type": "object"
    },
    "DocumentationLink": {
      "additionalProperties": false,
      "description": "One authored link and its exact location inside a block.",
      "properties": {
        "authored": {
          "description": "Authored destination text.",
          "type": "string"
        },
        "block": {
          "$ref": "#/$defs/DocumentationDigest",
          "description": "Block containing the link."
        },
        "range": {
          "$ref": "#/$defs/TextRange",
          "description": "Destination range in the block's content owner."
        },
        "resolution": {
          "$ref": "#/$defs/DocumentationLinkResolution",
          "description": "Exact target or reason the link remains unresolved."
        }
      },
      "required": [
        "block",
        "authored",
        "range",
        "resolution"
      ],
      "type": "object"
    },
    "DocumentationLinkResolution": {
      "description": "The result of resolving one authored destination.",
      "oneOf": [
        {
          "additionalProperties": false,
          "description": "An exact target exists in the accepted source set.",
          "properties": {
            "state": {
              "const": "resolved",
              "type": "string"
            },
            "target": {
              "$ref": "#/$defs/DocumentationTarget",
              "description": "The identified destination."
            }
          },
          "required": [
            "state",
            "target"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "The destination does not establish an exact target.",
          "properties": {
            "reason": {
              "$ref": "#/$defs/DocumentationUnresolvedReason",
              "description": "Bounded classification of the unresolved destination."
            },
            "state": {
              "const": "unresolved",
              "type": "string"
            }
          },
          "required": [
            "state",
            "reason"
          ],
          "type": "object"
        }
      ]
    },
    "DocumentationReference": {
      "additionalProperties": false,
      "description": "An exact declaration reference authored inside standalone documentation.",
      "properties": {
        "authored": {
          "description": "Exact authored spelling.",
          "type": "string"
        },
        "block": {
          "$ref": "#/$defs/DocumentationDigest",
          "description": "Block containing this reference."
        },
        "evidence": {
          "$ref": "#/$defs/DocumentationReferenceEvidence",
          "description": "Rule that established the target."
        },
        "identity": {
          "$ref": "#/$defs/DocumentationDigest",
          "description": "Digest of block, target, evidence, spelling, and occurrence ordinal."
        },
        "range": {
          "$ref": "#/$defs/TextRange",
          "description": "Reference range in its content owner."
        },
        "target": {
          "$ref": "#/$defs/SymbolId",
          "description": "Exact declaration this reference describes."
        }
      },
      "required": [
        "identity",
        "block",
        "target",
        "range",
        "authored",
        "evidence"
      ],
      "type": "object"
    },
    "DocumentationReferenceCandidate": {
      "additionalProperties": false,
      "description": "An inline code candidate retained for later declaration changes.",
      "properties": {
        "authored": {
          "description": "Authored declaration spelling.",
          "type": "string"
        },
        "block": {
          "$ref": "#/$defs/DocumentationDigest",
          "description": "Block containing the candidate."
        },
        "language": {
          "$ref": "#/$defs/Language",
          "description": "Declared language limiting candidate declarations, when present."
        },
        "range": {
          "$ref": "#/$defs/TextRange",
          "description": "Exact source range of the inline code content."
        },
        "reason": {
          "$ref": "#/$defs/DocumentationUnresolvedReason",
          "description": "Why no exact declaration was selected."
        }
      },
      "required": [
        "block",
        "range",
        "authored",
        "reason"
      ],
      "type": "object"
    },
    "DocumentationReferenceEvidence": {
      "description": "Evidence establishing a documentation reference, ordered strongest first.",
      "oneOf": [
        {
          "const": "provider",
          "description": "A typed contribution naming an exact declaration.",
          "type": "string"
        },
        {
          "const": "authored_link",
          "description": "An authored link resolving to one declaration location.",
          "type": "string"
        },
        {
          "const": "qualified_name",
          "description": "Inline code equal to one declaration's qualified name.",
          "type": "string"
        },
        {
          "const": "unique_name",
          "description": "Inline code equal to one unique declaration name.",
          "type": "string"
        }
      ]
    },
    "DocumentationSelectionReason": {
      "description": "Why the caller selected this source.",
      "oneOf": [
        {
          "const": "workspace",
          "description": "Visible documentation in the captured workspace.",
          "type": "string"
        },
        {
          "const": "package_archive",
          "description": "Source selected from one exact package's acquired bytes.",
          "type": "string"
        },
        {
          "const": "attached_comment",
          "description": "Comment supplied by its declaration's syntax provider.",
          "type": "string"
        },
        {
          "const": "cloud_resolver",
          "description": "Source supplied by a cloud resolver.",
          "type": "string"
        }
      ]
    },
    "DocumentationSource": {
      "additionalProperties": false,
      "description": "Source facts shared by every block belonging to one content owner.",
      "properties": {
        "byte_length": {
          "description": "Exact content length in UTF-8 bytes.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "content_digest": {
          "$ref": "#/$defs/DocumentationDigest",
          "description": "Digest of the content owner's exact bytes."
        },
        "format": {
          "$ref": "#/$defs/DocumentationSourceFormat",
          "description": "Parser selected for these bytes."
        },
        "identity": {
          "$ref": "#/$defs/DocumentationContentIdentity",
          "description": "Canonical address of the bytes block ranges use."
        },
        "language": {
          "$ref": "#/$defs/Language",
          "description": "Declared source language, when known."
        },
        "license": {
          "$ref": "#/$defs/DocumentationLicense",
          "description": "License facts recorded by the source adapter."
        },
        "media_type": {
          "description": "Media type supplied by the source adapter.",
          "type": "string"
        },
        "origin": {
          "$ref": "#/$defs/SymbolOrigin",
          "description": "Ownership and generation facts supplied by the caller."
        },
        "physical_ranges": {
          "description": "Original JSON string-token ranges for a decoded notebook cell, in source order.",
          "items": {
            "$ref": "#/$defs/TextRange"
          },
          "type": "array"
        },
        "revision": {
          "$ref": "#/$defs/DocumentationDigest",
          "description": "Source revision supplied by the caller."
        },
        "selection": {
          "$ref": "#/$defs/DocumentationSelectionReason",
          "description": "Why the source adapter selected these bytes."
        }
      },
      "required": [
        "identity",
        "revision",
        "content_digest",
        "origin",
        "format",
        "media_type",
        "selection",
        "byte_length"
      ],
      "type": "object"
    },
    "DocumentationSourceFormat": {
      "description": "The selected source's format.",
      "oneOf": [
        {
          "const": "markdown",
          "description": "Markdown block and inline syntax.",
          "type": "string"
        },
        {
          "const": "mdx",
          "description": "Recognized Markdown ranges inside MDX.",
          "type": "string"
        },
        {
          "const": "restructured_text",
          "description": "Supported reStructuredText block and reference syntax.",
          "type": "string"
        },
        {
          "const": "text",
          "description": "Plain text paragraphs.",
          "type": "string"
        },
        {
          "const": "notebook",
          "description": "Selected markdown and code cells from a notebook.",
          "type": "string"
        },
        {
          "const": "attached_comment",
          "description": "Documentation attached by a syntax provider.",
          "type": "string"
        }
      ]
    },
    "DocumentationSourceIdentity": {
      "description": "The selected source's canonical address.",
      "oneOf": [
        {
          "additionalProperties": false,
          "description": "A visible workspace file.",
          "properties": {
            "kind": {
              "const": "project",
              "type": "string"
            },
            "path": {
              "$ref": "#/$defs/ProjectPath",
              "description": "Path relative to the workspace root."
            }
          },
          "required": [
            "kind",
            "path"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "A source unit supplied by an exact package adapter.",
          "properties": {
            "kind": {
              "const": "package",
              "type": "string"
            },
            "unit": {
              "$ref": "#/$defs/SourceUnitId",
              "description": "Canonical package source identity."
            }
          },
          "required": [
            "kind",
            "unit"
          ],
          "type": "object"
        }
      ]
    },
    "DocumentationStage": {
      "description": "The collection step reporting incomplete documentation.",
      "oneOf": [
        {
          "const": "source",
          "description": "Source selection and byte validation.",
          "type": "string"
        },
        {
          "const": "extract",
          "description": "Format parsing and block extraction.",
          "type": "string"
        },
        {
          "const": "resolve",
          "description": "Authored link and declaration reference resolution.",
          "type": "string"
        },
        {
          "const": "index",
          "description": "Mapping metadata to existing ranked documents.",
          "type": "string"
        }
      ]
    },
    "DocumentationTarget": {
      "description": "An authored link's resolved destination.",
      "oneOf": [
        {
          "additionalProperties": false,
          "description": "A collected documentation block.",
          "properties": {
            "identity": {
              "$ref": "#/$defs/DocumentationDigest",
              "description": "Stable block identity."
            },
            "kind": {
              "const": "block",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "identity"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "A location inside one content owner.",
          "properties": {
            "kind": {
              "const": "source",
              "type": "string"
            },
            "range": {
              "$ref": "#/$defs/TextRange",
              "description": "Target range in its original content."
            },
            "source": {
              "$ref": "#/$defs/DocumentationContentIdentity",
              "description": "Target content owner."
            }
          },
          "required": [
            "kind",
            "source",
            "range"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "One exact declaration.",
          "properties": {
            "kind": {
              "const": "symbol",
              "type": "string"
            },
            "symbol": {
              "$ref": "#/$defs/SymbolId",
              "description": "Target declaration identity."
            }
          },
          "required": [
            "kind",
            "symbol"
          ],
          "type": "object"
        }
      ]
    },
    "DocumentationUnresolvedReason": {
      "description": "Why an authored link or inline code candidate remains unresolved.",
      "oneOf": [
        {
          "const": "missing",
          "description": "No selected source or declaration names this target.",
          "type": "string"
        },
        {
          "const": "ambiguous",
          "description": "More than one declaration satisfies the exact spelling.",
          "type": "string"
        },
        {
          "const": "external",
          "description": "Destination uses an external scheme; collection performs no fetch.",
          "type": "string"
        },
        {
          "const": "fragment",
          "description": "Fragment has no explicit authored target.",
          "type": "string"
        },
        {
          "const": "invalid",
          "description": "Target is outside the accepted path or identity form.",
          "type": "string"
        }
      ]
    },
    "DocumentationWarning": {
      "additionalProperties": false,
      "description": "One bounded warning with repeated conditions counted per source.",
      "properties": {
        "count": {
          "description": "Number of items omitted or truncated for this condition.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "kind": {
          "$ref": "#/$defs/DocumentationWarningKind",
          "description": "Typed condition the caller can inspect."
        },
        "source": {
          "$ref": "#/$defs/DocumentationContentIdentity",
          "description": "Source whose documentation is incomplete."
        },
        "stage": {
          "$ref": "#/$defs/DocumentationStage",
          "description": "Collection step reporting the condition."
        }
      },
      "required": [
        "source",
        "stage",
        "kind",
        "count"
      ],
      "type": "object"
    },
    "DocumentationWarningKind": {
      "description": "Why one documentation source is incomplete.",
      "oneOf": [
        {
          "const": "source_unavailable",
          "description": "Source bytes or their format are unavailable.",
          "type": "string"
        },
        {
          "const": "source_truncated",
          "description": "Retained source ends before an addressed range.",
          "type": "string"
        },
        {
          "const": "unsupported_format",
          "description": "Format and extension do not select a supported parser.",
          "type": "string"
        },
        {
          "const": "malformed_source",
          "description": "Parser refused malformed source.",
          "type": "string"
        },
        {
          "const": "omitted_range",
          "description": "Recognized syntax was excluded from documentation metadata.",
          "type": "string"
        },
        {
          "const": "limit_exceeded",
          "description": "A configured or format bound stopped output.",
          "type": "string"
        }
      ]
    },
    "ExactKind": {
      "description": "A provider-local kind preserving the construct name used by that language implementation.",
      "pattern": "^[A-Za-z][A-Za-z0-9._-]*$",
      "type": "string"
    },
    "ExtensionValue": {
      "additionalProperties": false,
      "description": "Versioned extension value. data is validated against the schema advertised for its key\nand version.",
      "properties": {
        "data": {
          "description": "The value itself, shaped by whatever that key and version advertise. Rift carries it\nand never interprets it."
        },
        "version": {
          "description": "Which version of the key's advertised schema shaped `data`. A consumer skips a value\nwhose version it does not implement.",
          "format": "uint64",
          "minimum": 1,
          "type": "integer"
        }
      },
      "required": [
        "version",
        "data"
      ],
      "type": "object"
    },
    "Extensions": {
      "additionalProperties": false,
      "description": "Facts a provider carries that the model has no field for, under a reverse-domain key.\nKeys and values use RFC 8785 canonical JSON. Consumers skip entries they do not\nimplement.",
      "patternProperties": {
        "^[a-z0-9]+(?:[.-][a-z0-9]+)+\\.[A-Za-z][A-Za-z0-9_-]*$": {
          "$ref": "#/$defs/ExtensionValue"
        }
      },
      "type": "object"
    },
    "Language": {
      "description": "A language name and its optional dialect, joined by `:`. `sql` and `sql:postgresql` are two languages with two symbol spaces.",
      "examples": [
        "rust"
      ],
      "maxLength": 129,
      "pattern": "^[a-z][a-z0-9._-]*(?::[a-z][a-z0-9._-]*)?$",
      "type": "string"
    },
    "NodeId": {
      "description": "Identity of one syntax-tree node. The byte range locates the node in the tree the request\ntargets; the fragment after `#` is its witness - the first eight lowercase hex characters\nof the SHA-256 of the node's source bytes. The identity describes the node in the\nrevision the response names.",
      "examples": [
        "rift://node/rust/lib.rs@220-268#3f9a1c2e"
      ],
      "maxLength": 8192,
      "minLength": 27,
      "pattern": "^rift://node/[A-Za-z][A-Za-z0-9._-]*(?::[A-Za-z][A-Za-z0-9._-]*)?/(?:[A-Za-z0-9._~!$&'()*+,;=:@/-]|%[0-9A-F]{2}){1,1000}@\\d+-\\d+#[0-9a-f]{8}$",
      "type": "string"
    },
    "NotebookCell": {
      "additionalProperties": false,
      "description": "A selected cell addressed within its parent notebook.",
      "properties": {
        "identity": {
          "$ref": "#/$defs/NotebookCellIdentity",
          "description": "Authored identifier or original cell position."
        },
        "kind": {
          "$ref": "#/$defs/NotebookCellKind",
          "description": "Which content the cell carries."
        }
      },
      "required": [
        "identity",
        "kind"
      ],
      "type": "object"
    },
    "NotebookCellIdentity": {
      "description": "The authored cell identifier or its position when no identifier exists.",
      "oneOf": [
        {
          "additionalProperties": false,
          "description": "A valid identifier stored in the notebook.",
          "properties": {
            "id": {
              "description": "Identifier accepted by the notebook format.",
              "type": "string"
            },
            "kind": {
              "const": "authored",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "id"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "The cell's zero-based position in its notebook.",
          "properties": {
            "index": {
              "description": "Position among every cell, including unselected cells.",
              "format": "uint32",
              "minimum": 0,
              "type": "integer"
            },
            "kind": {
              "const": "indexed",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "index"
          ],
          "type": "object"
        }
      ]
    },
    "NotebookCellKind": {
      "description": "The selected notebook cell's content kind.",
      "oneOf": [
        {
          "const": "markdown",
          "description": "Markdown source decoded from a markdown cell.",
          "type": "string"
        },
        {
          "const": "code",
          "description": "Source decoded from a code cell, without execution.",
          "type": "string"
        }
      ]
    },
    "PackageAnalysisWarning": {
      "allOf": [
        {
          "if": {
            "properties": {
              "code": {
                "enum": [
                  "identity_unresolved",
                  "object_unavailable"
                ]
              }
            }
          },
          "then": {
            "oneOf": [
              {
                "required": [
                  "unit",
                  "range"
                ]
              },
              {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "unit"
                      ]
                    },
                    {
                      "required": [
                        "range"
                      ]
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "if": {
            "properties": {
              "code": {
                "enum": [
                  "identity_unresolved",
                  "object_unavailable"
                ]
              },
              "unit": {
                "type": "null"
              }
            }
          },
          "then": {
            "properties": {
              "range": {
                "type": "null"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "code": {
                "enum": [
                  "identity_unresolved",
                  "object_unavailable"
                ]
              },
              "range": {
                "type": "null"
              }
            }
          },
          "then": {
            "properties": {
              "unit": {
                "type": "null"
              }
            }
          }
        }
      ],
      "description": "What an analyzer run could not do.",
      "oneOf": [
        {
          "additionalProperties": false,
          "description": "A retained object has no established identity, so its source binding cannot enter\nthe exact declaration directory.",
          "properties": {
            "code": {
              "const": "identity_unresolved",
              "type": "string"
            },
            "qualified_name": {
              "description": "Qualified name captured by the provider.",
              "type": "string"
            },
            "range": {
              "$ref": "#/$defs/TextRange",
              "description": "Original declaration range in that unit."
            },
            "unit": {
              "$ref": "#/$defs/SourceUnitId",
              "description": "Physical source unit carrying the retained facts."
            }
          },
          "required": [
            "code",
            "qualified_name"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "One public object was left out because a field exceeds its enforced bound.\nOriginal source and provider facts remain retained.",
          "properties": {
            "bound": {
              "description": "Enforced bound for that field, in the field's advertised units.",
              "format": "uint64",
              "minimum": 1,
              "type": "integer"
            },
            "code": {
              "const": "object_unavailable",
              "type": "string"
            },
            "field": {
              "description": "Public field that exceeds its enforced bound.",
              "maxLength": 128,
              "minLength": 1,
              "type": "string"
            },
            "qualified_name": {
              "description": "Qualified name captured by the provider.",
              "type": "string"
            },
            "range": {
              "$ref": "#/$defs/TextRange",
              "description": "Original declaration range in that unit."
            },
            "unit": {
              "$ref": "#/$defs/SourceUnitId",
              "description": "Physical source unit carrying the retained facts, when one exists."
            }
          },
          "required": [
            "code",
            "qualified_name",
            "field",
            "bound"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "One selected file was left out: no shipped provider parses its extension, its\nbytes are not valid UTF-8, or its parse was refused.",
          "properties": {
            "code": {
              "const": "unit_unavailable",
              "type": "string"
            },
            "detail": {
              "description": "Why it was left out - prose for a reader; nothing keys on it.",
              "maxLength": 4096,
              "type": "string"
            },
            "path": {
              "$ref": "#/$defs/ProjectPath",
              "description": "The file the analyzer left out, relative to the package root."
            }
          },
          "required": [
            "code",
            "path",
            "detail"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "A record's retained source was cut at the analyzer's bound. The record's own\ndigest still covers the whole content it was built from.",
          "properties": {
            "code": {
              "const": "source_truncated",
              "type": "string"
            },
            "dropped": {
              "description": "Bytes the record did not retain.",
              "format": "uint64",
              "minimum": 0,
              "type": "integer"
            },
            "path": {
              "$ref": "#/$defs/ProjectPath",
              "description": "The file whose source was cut."
            }
          },
          "required": [
            "code",
            "path",
            "dropped"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "The run reached a collection bound and stopped there, so records past it are\nabsent from this publication.",
          "properties": {
            "bound": {
              "description": "The bound the collection stopped at.",
              "format": "uint64",
              "minimum": 0,
              "type": "integer"
            },
            "code": {
              "const": "publication_truncated",
              "type": "string"
            },
            "collection": {
              "description": "The collection that reached its bound: `units`, `symbols`, or `documents`.",
              "maxLength": 64,
              "type": "string"
            }
          },
          "required": [
            "code",
            "collection",
            "bound"
          ],
          "type": "object"
        }
      ]
    },
    "PackageArtifact": {
      "additionalProperties": false,
      "description": "The selected immutable package artifact and its observed compatibility tags.",
      "properties": {
        "content_digest": {
          "$ref": "#/$defs/SourceDigest",
          "description": "Complete digest of the selected archive bytes."
        },
        "filename": {
          "$ref": "#/$defs/ProjectPath",
          "description": "Original archive filename, retained as one basename."
        },
        "tags": {
          "description": "Expanded tags accepted from the selected wheel's filename and metadata.",
          "items": {
            "$ref": "#/$defs/WheelTag"
          },
          "maxItems": 64,
          "type": "array"
        }
      },
      "required": [
        "filename",
        "content_digest",
        "tags"
      ],
      "type": "object"
    },
    "PackageCoverage": {
      "additionalProperties": false,
      "description": "Independent coverage of one selected language and its relationship facets.",
      "properties": {
        "applicability_complete": {
          "description": "Selected artifact and platform or export conditions establish this scope.",
          "type": "boolean"
        },
        "identity_complete": {
          "description": "Every retained object and binding has an established canonical identity.",
          "type": "boolean"
        },
        "inventory_complete": {
          "description": "Every source in the accepted inventory was retained and analyzed.",
          "type": "boolean"
        },
        "language": {
          "$ref": "#/$defs/Language",
          "description": "Language this coverage describes."
        },
        "relationships": {
          "description": "Coverage of each relationship facet, independent of identity lookup.",
          "items": {
            "$ref": "#/$defs/RelationshipCoverage"
          },
          "type": "array"
        }
      },
      "required": [
        "language",
        "inventory_complete",
        "identity_complete",
        "applicability_complete",
        "relationships"
      ],
      "type": "object"
    },
    "PackageDocument": {
      "additionalProperties": false,
      "description": "One searchable record, carrying the fields a ranking reads.\n\nA field a provider does not supply is absent rather than filled from a neighbor: an\nabsent signature is an absent signature, never the declaration source repeated.",
      "properties": {
        "content_digest": {
          "$ref": "#/$defs/Digest",
          "description": "The digest of the content this document was built from."
        },
        "declaration_source": {
          "description": "The declaration's own source. Absent on a file document.",
          "maxLength": 67108864,
          "type": "string"
        },
        "digest": {
          "$ref": "#/$defs/Digest",
          "description": "The digest of this record's canonical content."
        },
        "documentation": {
          "description": "The attached documentation body, when the grammar attaches any.",
          "type": "string"
        },
        "file_content": {
          "description": "The file's content. Absent on a symbol document.",
          "maxLength": 67108864,
          "type": "string"
        },
        "identifier_terms": {
          "description": "The words `name` and `qualified_name` split into on case and separator boundaries,\nlowercased, deduplicated, in first-seen order, at most\n[`PACKAGE_IDENTIFIER_TERMS_CEILING`] of them. Kept apart from the names so a ranking\ncounts each term once.",
          "items": {
            "type": "string"
          },
          "maxItems": 65536,
          "type": "array"
        },
        "identity": {
          "description": "The document's stable key: the symbol identity for a declaration, the unit\nidentity for a file.",
          "type": "string"
        },
        "kind": {
          "$ref": "#/$defs/PackageDocumentKind",
          "description": "What the document ranks."
        },
        "language": {
          "$ref": "#/$defs/Language",
          "description": "The language whose provider parsed the unit."
        },
        "name": {
          "description": "The declaration name, or the file name including its extension.",
          "type": "string"
        },
        "owner": {
          "$ref": "#/$defs/SymbolOwner",
          "description": "Exact logical owner of the document."
        },
        "qualified_name": {
          "description": "The container-qualified name. Absent on a file document.",
          "type": "string"
        },
        "signature": {
          "description": "The rendered signature, when the declaration has one.",
          "type": "string"
        },
        "unit": {
          "$ref": "#/$defs/SourceUnitId",
          "description": "The unit the document was built from."
        }
      },
      "required": [
        "identity",
        "kind",
        "unit",
        "language",
        "owner",
        "content_digest",
        "name",
        "digest"
      ],
      "type": "object"
    },
    "PackageDocumentKind": {
      "description": "What one search document ranks.",
      "oneOf": [
        {
          "const": "symbol",
          "description": "One public declaration.",
          "type": "string"
        },
        {
          "const": "file",
          "description": "One selected file, ranked by its content.",
          "type": "string"
        }
      ]
    },
    "PackageIdentity": {
      "additionalProperties": false,
      "description": "One package as its package manager identifies it.",
      "properties": {
        "manager": {
          "description": "Package manager or ecosystem name.",
          "maxLength": 128,
          "type": "string"
        },
        "name": {
          "description": "Package name in that ecosystem.",
          "maxLength": 4096,
          "type": "string"
        },
        "registry": {
          "description": "Canonical registry endpoint, including its path when that path identifies the registry.\nCredentials, query and fragment are never part of this owner.",
          "maxLength": 4096,
          "minLength": 1,
          "type": "string"
        },
        "version": {
          "description": "Resolved package version.",
          "maxLength": 4096,
          "type": "string"
        }
      },
      "required": [
        "manager",
        "registry",
        "name",
        "version"
      ],
      "type": "object"
    },
    "PackageSourceUnit": {
      "additionalProperties": false,
      "description": "One analyzed file of a package.",
      "properties": {
        "content_digest": {
          "$ref": "#/$defs/Digest",
          "description": "The digest of the file's whole bytes, whatever `source` retained."
        },
        "digest": {
          "$ref": "#/$defs/Digest",
          "description": "The digest of this record's canonical content, so two publications compare record\nby record."
        },
        "language": {
          "$ref": "#/$defs/Language",
          "description": "The language whose provider parsed it."
        },
        "path": {
          "$ref": "#/$defs/ProjectPath",
          "description": "The file's path relative to the package root."
        },
        "source": {
          "description": "The file's source, cut at the analyzer's retained-source bound.",
          "maxLength": 67108864,
          "type": "string"
        },
        "source_complete": {
          "description": "Whether `source` holds the whole file. `false` means the bytes were cut at the\nbound; `content_digest` still covers the whole file.",
          "type": "boolean"
        },
        "unit": {
          "$ref": "#/$defs/SourceUnitId",
          "description": "The unit this file is filed under."
        }
      },
      "required": [
        "unit",
        "path",
        "language",
        "content_digest",
        "source",
        "source_complete",
        "digest"
      ],
      "type": "object"
    },
    "PackageSymbol": {
      "additionalProperties": false,
      "description": "One declaration a package's source carries.\n\n`Eq` is not derived: [`Signature`](crate::read::Signature) carries a confidence value,\nso it is not `Eq`.",
      "properties": {
        "digest": {
          "$ref": "#/$defs/Digest",
          "description": "The digest of this record's canonical content."
        },
        "documentation_indices": {
          "description": "Entries in the logical object's documentation array supplied by this binding.",
          "items": {
            "format": "uint64",
            "minimum": 0,
            "type": "integer"
          },
          "type": "array"
        },
        "line": {
          "description": "The one-based line the declaration starts on.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "origin": {
          "$ref": "#/$defs/SymbolOrigin",
          "description": "Where the declaration came from: the package, and whether it was authored."
        },
        "public": {
          "description": "Whether the declaration is public under its language's own rules. A consumer\nanswering a package read serves public declarations alone.",
          "type": "boolean"
        },
        "range": {
          "$ref": "#/$defs/TextRange",
          "description": "The declaration's byte range inside its unit."
        },
        "signature_indices": {
          "description": "Entries in the logical object's signature array supplied by this binding.",
          "items": {
            "format": "uint64",
            "minimum": 0,
            "type": "integer"
          },
          "type": "array"
        },
        "source": {
          "description": "The declaration's own source, cut at the analyzer's retained-source bound.",
          "maxLength": 67108864,
          "type": "string"
        },
        "source_complete": {
          "description": "Whether `source` holds the whole declaration.",
          "type": "boolean"
        },
        "symbol": {
          "$ref": "#/$defs/SymbolId",
          "description": "The declaration's identity."
        },
        "type_indices": {
          "description": "Entries in the logical object's type array supplied by this binding.",
          "items": {
            "format": "uint64",
            "minimum": 0,
            "type": "integer"
          },
          "type": "array"
        },
        "unit": {
          "$ref": "#/$defs/SourceUnitId",
          "description": "The unit the declaration was read from."
        }
      },
      "required": [
        "symbol",
        "origin",
        "unit",
        "range",
        "line",
        "signature_indices",
        "type_indices",
        "documentation_indices",
        "source",
        "source_complete",
        "public",
        "digest"
      ],
      "type": "object"
    },
    "Parameter": {
      "description": "One parameter of a `Signature`: what it is called, the types bound to it, and how a call\nmay pass it. A receiver is one of these too, held in its own field because it has no\nposition in the parameter list.",
      "properties": {
        "default": {
          "description": "The default value as written in the source. Absent where there is none.",
          "type": "string"
        },
        "extensions": {
          "$ref": "#/$defs/Extensions",
          "default": {},
          "description": "Parameter facts the model has no field for, namespaced by the provider that emitted\nthem. Absent when empty."
        },
        "name": {
          "description": "What the parameter is called. Absent where the language allows an unnamed one, as\na positional parameter in a function type.",
          "type": "string"
        },
        "node": {
          "$ref": "#/$defs/NodeId",
          "description": "Where this parameter is written in the source."
        },
        "optional": {
          "description": "Whether a call may leave it out.",
          "type": "boolean"
        },
        "types": {
          "default": [],
          "description": "What it accepts, absent when empty. An array because a declared type and an\ninferred one are separate bindings.",
          "items": {
            "$ref": "#/$defs/TypeBinding"
          },
          "type": "array"
        },
        "variadic": {
          "description": "Whether it absorbs the arguments that follow - `*args`, `...rest`.",
          "type": "boolean"
        }
      },
      "required": [
        "optional",
        "variadic"
      ],
      "type": "object"
    },
    "ProjectPath": {
      "description": "One path below the workspace root, using forward slashes and UTF-8 in Unicode NFC - Rift\nnormalizes what it emits and what it accepts, and compares byte-for-byte. The empty path\nnames the root itself. Absolute paths, backslashes, control characters, empty segments,\nand `.` or `..` segments are refused before the filesystem is touched. The limit is 1000\nUTF-8 bytes, not characters. A workspace holding two entries whose NFC forms are equal\nfails the read that touches them with `content_unavailable`.",
      "examples": [
        "src/lib.rs"
      ],
      "maxLength": 1000,
      "pattern": "^(?:(?:[^\\\\\\u0000-\\u001F\\u007F/.][^\\\\\\u0000-\\u001F\\u007F/]*|\\.\\.[^\\\\\\u0000-\\u001F\\u007F/]+|\\.[^\\\\\\u0000-\\u001F\\u007F/.r][^\\\\\\u0000-\\u001F\\u007F/]*|\\.r(?:[^\\\\\\u0000-\\u001F\\u007F/i][^\\\\\\u0000-\\u001F\\u007F/]*|i(?:[^\\\\\\u0000-\\u001F\\u007F/f][^\\\\\\u0000-\\u001F\\u007F/]*|f(?:[^\\\\\\u0000-\\u001F\\u007F/t][^\\\\\\u0000-\\u001F\\u007F/]*|t[^\\\\\\u0000-\\u001F\\u007F/]+)?)?)?)(?:/(?:\\.*[^\\\\\\u0000-\\u001F\\u007F/.][^\\\\\\u0000-\\u001F\\u007F/]*|\\.{3,}))*)?$",
      "type": "string"
    },
    "Relationship": {
      "additionalProperties": false,
      "description": "One directed edge between two symbols. Its evidence is the nodes it was read from, and\nits derivation is how much the provider knew when it was read.",
      "properties": {
        "confidence": {
          "description": "How likely a `heuristic` edge is to hold, from 0 to 1. Absent for any other\nderivation.",
          "format": "double",
          "maximum": 1,
          "minimum": 0,
          "type": "number"
        },
        "derivation": {
          "$ref": "#/$defs/RelationshipDerivation",
          "description": "How this edge was established."
        },
        "evidence": {
          "default": [],
          "description": "The nodes this edge was read from. Absent when empty.",
          "items": {
            "$ref": "#/$defs/NodeId"
          },
          "type": "array"
        },
        "extensions": {
          "$ref": "#/$defs/Extensions",
          "default": {},
          "description": "Edge facts the model has no field for, namespaced by the provider that emitted them.\nAbsent when empty."
        },
        "facets": {
          "description": "Portable classification, so a query for `imports` finds local kinds such as `import`\nand `use` alike.",
          "items": {
            "$ref": "#/$defs/RelationshipFacet"
          },
          "minItems": 1,
          "type": "array"
        },
        "from": {
          "$ref": "#/$defs/SymbolId",
          "description": "The symbol the edge starts at."
        },
        "kind": {
          "$ref": "#/$defs/ExactKind",
          "description": "What the edge is in this provider's vocabulary, such as `import`, `use`, or\n`implements`."
        },
        "occurrence": {
          "$ref": "#/$defs/SourceUnitSpan",
          "description": "Exact physical occurrence when this edge was read from source, independent of\nwhether the provider supplied a source node."
        },
        "to": {
          "$ref": "#/$defs/SymbolId",
          "description": "The symbol the edge points at. One Rift cannot read carries the `external` origin;\nthe edge is the same either way."
        }
      },
      "required": [
        "from",
        "kind",
        "facets",
        "to",
        "derivation"
      ],
      "type": "object"
    },
    "RelationshipCoverage": {
      "additionalProperties": false,
      "description": "Coverage of one relationship facet within a selected language.",
      "properties": {
        "complete": {
          "description": "Whether every relationship in the accepted scope was captured.",
          "type": "boolean"
        },
        "facet": {
          "$ref": "#/$defs/RelationshipFacet",
          "description": "Relationship facet this coverage describes."
        }
      },
      "required": [
        "facet",
        "complete"
      ],
      "type": "object"
    },
    "RelationshipDerivation": {
      "description": "How this edge was established. Every edge reaches Rift from a provider, and this field\nrecords whether the provider resolved the edge semantically, read it from syntax, or\ninferred it.",
      "oneOf": [
        {
          "const": "resolution",
          "description": "The provider resolved the edge semantically, so a consumer may act on it directly.",
          "type": "string"
        },
        {
          "const": "syntax",
          "description": "The edge was read from syntax alone, without semantic resolution.",
          "type": "string"
        },
        {
          "const": "heuristic",
          "description": "The edge is a guess, qualified by `confidence`.",
          "type": "string"
        }
      ]
    },
    "RelationshipFacet": {
      "description": "One portable category an edge falls into. The local kinds `import` and `use` can share\nthe `imports` facet, which lets one query cross languages.",
      "oneOf": [
        {
          "const": "contains",
          "description": "The source contains the target within its scope.",
          "type": "string"
        },
        {
          "const": "declares",
          "description": "The source declares the target.",
          "type": "string"
        },
        {
          "const": "augments",
          "description": "The source adds to a declaration made elsewhere.",
          "type": "string"
        },
        {
          "const": "references",
          "description": "The source mentions the target.",
          "type": "string"
        },
        {
          "const": "calls",
          "description": "The source invokes the target.",
          "type": "string"
        },
        {
          "const": "constructs",
          "description": "The source creates an instance of the target.",
          "type": "string"
        },
        {
          "const": "reads",
          "description": "The source reads the target's value.",
          "type": "string"
        },
        {
          "const": "writes",
          "description": "The source assigns to the target.",
          "type": "string"
        },
        {
          "const": "imports",
          "description": "The source brings the target into scope.",
          "type": "string"
        },
        {
          "const": "exports",
          "description": "The source exposes the target outside its unit.",
          "type": "string"
        },
        {
          "const": "extends",
          "description": "The source inherits from the target.",
          "type": "string"
        },
        {
          "const": "implements",
          "description": "The source fulfils the target's interface.",
          "type": "string"
        },
        {
          "const": "has_type",
          "description": "The source is typed by the target.",
          "type": "string"
        },
        {
          "const": "overrides",
          "description": "The source replaces the target inherited from a supertype.",
          "type": "string"
        },
        {
          "const": "aliases",
          "description": "The source is another name for the target.",
          "type": "string"
        },
        {
          "const": "generates",
          "description": "The source produces the target as generated code.",
          "type": "string"
        },
        {
          "const": "depends_on",
          "description": "The source requires the target to build or run.",
          "type": "string"
        },
        {
          "const": "annotated_by",
          "description": "The source carries the target as an annotation.",
          "type": "string"
        },
        {
          "const": "throws",
          "description": "The source can raise the target.",
          "type": "string"
        },
        {
          "const": "catches",
          "description": "The source handles the target when raised.",
          "type": "string"
        },
        {
          "const": "bounded_by",
          "description": "The source's type parameter is constrained by the target.",
          "type": "string"
        },
        {
          "const": "instantiates",
          "description": "The source applies concrete arguments to the generic target.",
          "type": "string"
        },
        {
          "const": "specializes",
          "description": "The source is a specialization of the generic target.",
          "type": "string"
        },
        {
          "const": "overloads",
          "description": "The source and target are separately dispatched forms of one name.",
          "type": "string"
        },
        {
          "const": "mixes_in",
          "description": "The source incorporates the target as a mixin.",
          "type": "string"
        },
        {
          "const": "embeds",
          "description": "The source embeds the target within its own definition.",
          "type": "string"
        },
        {
          "const": "tests",
          "description": "The source exercises the target as a test.",
          "type": "string"
        },
        {
          "const": "configures",
          "description": "The source supplies configuration for the target.",
          "type": "string"
        },
        {
          "const": "binds",
          "description": "The source binds a name or value to the target.",
          "type": "string"
        }
      ]
    },
    "RuntimeIdentity": {
      "additionalProperties": false,
      "description": "One exact runtime or compiler release.",
      "properties": {
        "runtime": {
          "description": "Canonical runtime or compiler name.",
          "maxLength": 128,
          "minLength": 1,
          "type": "string"
        },
        "version": {
          "description": "Exact runtime or compiler version.",
          "maxLength": 4096,
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "runtime",
        "version"
      ],
      "type": "object"
    },
    "Signature": {
      "description": "One callable form of a symbol: the text it renders as, the symbols that text points at,\nand its structure. Overloads are separate entries.",
      "properties": {
        "display": {
          "description": "The signature as a reader sees it, in the language's own syntax.",
          "type": "string"
        },
        "effects": {
          "default": [],
          "description": "Effect keywords the declaration carries, in the language's own words: `async`,\n`unsafe`, `pure`. The spelling is preserved and never mapped onto a portable\nmeaning; absent when empty.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "extensions": {
          "$ref": "#/$defs/Extensions",
          "default": {},
          "description": "Signature facts the model has no field for, namespaced by the provider that emitted\nthem. Absent when empty."
        },
        "language": {
          "$ref": "#/$defs/Language",
          "description": "The language whose syntax `display` is written in."
        },
        "links": {
          "default": [],
          "description": "Symbols named inside `display`, each with the byte range of `display` that names it,\nso a renderer can turn the rendered text into links. Absent when empty.",
          "items": {
            "$ref": "#/$defs/SignatureLink"
          },
          "type": "array"
        },
        "parameters": {
          "default": [],
          "description": "Declared parameters, in source order. Absent when empty.",
          "items": {
            "$ref": "#/$defs/Parameter"
          },
          "type": "array"
        },
        "receiver": {
          "$ref": "#/$defs/Parameter",
          "description": "The implicit first parameter - `self`, `this`. Absent for a free function, and for\nlanguages that have no such thing."
        },
        "returns": {
          "default": [],
          "description": "What the call yields, absent when empty. An array because a language may return\nseveral values, and because a declared and an inferred return are separate\nbindings.",
          "items": {
            "$ref": "#/$defs/TypeBinding"
          },
          "type": "array"
        },
        "throws": {
          "default": [],
          "description": "Types this form declares it can raise. Absent when empty.",
          "items": {
            "$ref": "#/$defs/TypeExpression"
          },
          "type": "array"
        },
        "type_parameters": {
          "default": [],
          "description": "The generic parameters this form declares, each as the symbol that declares it.\nAbsent when empty.",
          "items": {
            "$ref": "#/$defs/SymbolId"
          },
          "type": "array"
        }
      },
      "required": [
        "display",
        "language"
      ],
      "type": "object"
    },
    "SignatureLink": {
      "description": "One symbol named inside a rendered signature, with the byte range of that rendering which\nnames it.",
      "properties": {
        "range": {
          "$ref": "#/$defs/TextRange",
          "description": "Offsets into the rendered string in `Signature.display`."
        },
        "symbol": {
          "$ref": "#/$defs/SymbolId",
          "description": "The symbol that stretch of text names."
        }
      },
      "required": [
        "range",
        "symbol"
      ],
      "type": "object"
    },
    "SourceDigest": {
      "description": "Complete lowercase SHA-256 digest of immutable source bytes.",
      "maxLength": 64,
      "minLength": 64,
      "pattern": "^[0-9a-f]{64}$",
      "type": "string"
    },
    "SourceKind": {
      "description": "How source or a declaration came to exist.",
      "oneOf": [
        {
          "const": "authored",
          "description": "A person wrote it.",
          "type": "string"
        },
        {
          "const": "generated",
          "description": "A tool produced it from other source.",
          "type": "string"
        },
        {
          "const": "synthetic",
          "description": "The provider minted it without any source text.",
          "type": "string"
        }
      ]
    },
    "SourceLocationKind": {
      "description": "Which of the four places a declaration's source belongs, on `SymbolOrigin`. Package\nownership is the separate `package` field: a `project` declaration can carry one too,\nand `dependency` always does.",
      "oneOf": [
        {
          "const": "project",
          "description": "Owned by the current workspace.",
          "type": "string"
        },
        {
          "const": "dependency",
          "description": "Owned by one resolved dependency. The ECMAScript built-ins, such as `Array`, belong\nto the npm `typescript` package, whose `lib.*.d.ts` files declare them.",
          "type": "string"
        },
        {
          "const": "stdlib",
          "description": "Installed with the language toolchain: `stdlib/rust`, `stdlib/node`, or\n`stdlib/python`.",
          "type": "string"
        },
        {
          "const": "external",
          "description": "Outside the project, dependency graph, and standard library.",
          "type": "string"
        }
      ]
    },
    "SourceUnitId": {
      "description": "Physical source identity with a defining package or runtime owner, or a source resolver and canonical unit key. The codec validates decoded paths, UTF-8 and canonical percent-encoding before lookup.",
      "else": {
        "pattern": "^rift://source/[a-z][a-z0-9_.-]{0,127}/(?:[A-Za-z0-9._!$&'()*+,;=:@~-]|%(?:2[0-9A-E]|[34689A-F][0-9A-F]|5[0-9ABDEF]|7[0-9A-E]))+(?:/(?:[A-Za-z0-9._!$&'()*+,;=:@~-]|%(?:2[0-9A-E]|[34689A-F][0-9A-F]|5[0-9ABDEF]|7[0-9A-E]))+)*$"
      },
      "examples": [
        "rift://source/project/src/lib.rs",
        "rift://source/npm/npmjs.org/@types/node@26.6.4/fs.d.ts",
        "rift://source/stdlib/cpython@3.12.9/Lib/sys.py"
      ],
      "if": {
        "pattern": "^rift://source/(?:cargo|npm|pypi|stdlib)/"
      },
      "maxLength": 8192,
      "minLength": 17,
      "not": {
        "anyOf": [
          {
            "pattern": "/\\.{1,2}(?:/|$)"
          },
          {
            "pattern": "^rift://source/[^/]+/[A-Za-z]:"
          },
          {
            "pattern": "^rift://source/(?:(?:cargo|npm|pypi)/[^/]+/(?:@[^/]+/)?[^/]+@[^/]+/)[A-Za-z]:"
          },
          {
            "pattern": "^rift://source/stdlib/[^/]+@[^/]+/[A-Za-z]:"
          }
        ]
      },
      "pattern": "^rift://source/[a-z][a-z0-9_.-]{0,127}/(?:[A-Za-z0-9._!$&'()*+,;=:@~-]|%[0-9A-F]{2})+(?:/(?:[A-Za-z0-9._!$&'()*+,;=:@~-]|%[0-9A-F]{2})+)*$",
      "then": {
        "pattern": "^rift://source/(?:(?:cargo|npm|pypi)/(?:[A-Za-z0-9._!$&'()*+,;=:-]|%[0-9A-F]{2})+/(?:@[a-z0-9._-]+/)?[a-z0-9._-]+@[^/?#@]+/|stdlib/[a-z][a-z0-9_-]*@[^/?#@]+/)(?:[A-Za-z0-9._!$&'()*+,;=:@-]|%(?:2[0-9A-E]|[34689A-F][0-9A-F]|5[0-9ABDEF]|7[0-9A-E]))+(?:/(?:[A-Za-z0-9._!$&'()*+,;=:@-]|%(?:2[0-9A-E]|[34689A-F][0-9A-F]|5[0-9ABDEF]|7[0-9A-E]))+)*$"
      },
      "type": "string"
    },
    "SourceUnitSpan": {
      "additionalProperties": false,
      "description": "One byte range in a source-catalog unit.",
      "properties": {
        "range": {
          "$ref": "#/$defs/TextRange",
          "description": "Half-open UTF-8 byte range in that unit."
        },
        "unit": {
          "$ref": "#/$defs/SourceUnitId",
          "description": "Source unit containing the bytes."
        }
      },
      "required": [
        "unit",
        "range"
      ],
      "type": "object"
    },
    "SymbolFacet": {
      "description": "One portable category a symbol falls into. Kinds are language-specific; facets are\nshared, so a filter written once applies to every served language.",
      "oneOf": [
        {
          "const": "namespace",
          "description": "A named scope that groups declarations.",
          "type": "string"
        },
        {
          "const": "module",
          "description": "A compilation or import unit.",
          "type": "string"
        },
        {
          "const": "type",
          "description": "Names a type.",
          "type": "string"
        },
        {
          "const": "value",
          "description": "Holds a runtime value.",
          "type": "string"
        },
        {
          "const": "callable",
          "description": "Can be invoked.",
          "type": "string"
        },
        {
          "const": "member",
          "description": "Belongs to a containing type.",
          "type": "string"
        },
        {
          "const": "member_container",
          "description": "Owns members of its own.",
          "type": "string"
        },
        {
          "const": "parameter",
          "description": "A declared input of a callable.",
          "type": "string"
        },
        {
          "const": "type_parameter",
          "description": "A generic parameter a declaration abstracts over.",
          "type": "string"
        },
        {
          "const": "constructible",
          "description": "Instances of it can be created.",
          "type": "string"
        },
        {
          "const": "extensible",
          "description": "Other types can inherit from it.",
          "type": "string"
        },
        {
          "const": "implementable",
          "description": "Other types can fulfil it.",
          "type": "string"
        },
        {
          "const": "macro",
          "description": "Expands at compile time.",
          "type": "string"
        },
        {
          "const": "test",
          "description": "Exercises other code as a test.",
          "type": "string"
        },
        {
          "const": "annotation",
          "description": "Decorates other declarations.",
          "type": "string"
        },
        {
          "const": "extension",
          "description": "Adds members to a type declared elsewhere.",
          "type": "string"
        },
        {
          "const": "variant",
          "description": "One case of an enumeration.",
          "type": "string"
        },
        {
          "const": "enumeration",
          "description": "A closed set of variants.",
          "type": "string"
        },
        {
          "const": "alias",
          "description": "Another name for an existing symbol.",
          "type": "string"
        },
        {
          "const": "property",
          "description": "A member accessed like a field but backed by code.",
          "type": "string"
        },
        {
          "const": "abstract",
          "description": "Declared without a complete implementation.",
          "type": "string"
        },
        {
          "const": "constructor",
          "description": "Creates instances of its container.",
          "type": "string"
        },
        {
          "const": "static",
          "description": "Belongs to the type rather than an instance.",
          "type": "string"
        },
        {
          "const": "mutable",
          "description": "Its value can change after initialization.",
          "type": "string"
        },
        {
          "const": "public",
          "description": "Visible outside its declaring scope.",
          "type": "string"
        },
        {
          "const": "deprecated",
          "description": "Marked as discouraged for new use.",
          "type": "string"
        },
        {
          "const": "entrypoint",
          "description": "Where execution starts.",
          "type": "string"
        },
        {
          "const": "operator",
          "description": "Invoked through operator syntax.",
          "type": "string"
        },
        {
          "const": "async",
          "description": "Runs asynchronously.",
          "type": "string"
        },
        {
          "const": "generator",
          "description": "Yields a sequence of values over time.",
          "type": "string"
        }
      ]
    },
    "SymbolId": {
      "description": "Canonical logical symbol identity with local, profile, registered local, registered local profile, package or runtime ownership. The portable codec validates exact versions, UTF-8 and canonical percent-encoding before lookup.",
      "examples": [
        "rift://symbol/local/rust/app/parser/parse",
        "rift://symbol/local@cloud/rust/app/load",
        "rift://symbol/local:docs/typescript/page/beacon",
        "rift://symbol/local@cloud:docs/typescript/page/beacon",
        "rift://symbol/npm/npmjs.org/@types/node@26.6.4/typescript/node/buffer/Buffer",
        "rift://symbol/stdlib/cpython@3.12.9/python/builtins/len"
      ],
      "maxLength": 8192,
      "minLength": 1,
      "not": {
        "pattern": "/\\.{1,2}(?:/|~|$)"
      },
      "pattern": "^rift://symbol/(?:local(?:@[a-z][a-z0-9_-]*)?(?::[a-z][a-z0-9_-]*)?/|stdlib/[a-z][a-z0-9_-]*@[^/?#]+/|[a-z][a-z0-9_-]*/[^/?#]+/(?:@[a-z0-9._-]+/)?[a-z0-9._-]+@[^/?#]+/)[a-z][a-z0-9._-]*(?::[a-z][a-z0-9._-]*)?/(?:[A-Za-z0-9._!$&'()*+,;=:@-]|%[0-9A-F]{2})+(?:/(?:[A-Za-z0-9._!$&'()*+,;=:@-]|%[0-9A-F]{2})+)*(?:~[1-9][0-9]*\\?rev=[0-9a-f]{64})?$",
      "type": "string"
    },
    "SymbolOrigin": {
      "description": "Where a symbol belongs and how its declaration came to exist. Source location and\ngeneration are separate: generated code can belong to the project or to a dependency.\nAbsent from `Symbol` entirely when it says a project declaration, authored, with no\npackage.",
      "properties": {
        "location": {
          "$ref": "#/$defs/SourceLocationKind",
          "description": "Which of the four places the declaration belongs. Absent exactly when\n`source_kind` is `synthetic`."
        },
        "package": {
          "$ref": "#/$defs/PackageIdentity",
          "description": "The package that owns the declaration: present for `dependency`, and optionally\nfor `project`. Absent for `stdlib`, `external`, and a synthetic declaration."
        },
        "runtime": {
          "$ref": "#/$defs/RuntimeIdentity",
          "description": "Exact runtime or compiler release that owns a standard-library declaration.\nMutually exclusive with `package`."
        },
        "source_kind": {
          "$ref": "#/$defs/SourceKind",
          "description": "Whether the declaration is authored, generated, or synthetic."
        }
      },
      "required": [
        "source_kind"
      ],
      "type": "object"
    },
    "SymbolOwner": {
      "description": "Defining owner of a logical symbol.",
      "oneOf": [
        {
          "additionalProperties": false,
          "description": "The project served by the current workspace.",
          "properties": {
            "kind": {
              "const": "local",
              "type": "string"
            }
          },
          "required": [
            "kind"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "An explicitly registered project in the current connection.",
          "properties": {
            "kind": {
              "const": "named_local",
              "type": "string"
            },
            "name": {
              "description": "Accepted registration name.",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "name"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "One profile defined in the root workspace configuration.",
          "properties": {
            "kind": {
              "const": "profile_local",
              "type": "string"
            },
            "name": {
              "description": "Accepted profile name.",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "name"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "One profile defined in the root configuration of an extra project.",
          "properties": {
            "kind": {
              "const": "named_profile_local",
              "type": "string"
            },
            "name": {
              "description": "Profile name defined in that project's root configuration.",
              "type": "string"
            },
            "project": {
              "description": "Accepted registration name of the extra project.",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "project",
            "name"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "One exact release from its defining registry.",
          "properties": {
            "kind": {
              "const": "package",
              "type": "string"
            },
            "manager": {
              "description": "Package manager or ecosystem name.",
              "type": "string"
            },
            "name": {
              "description": "Canonical package name, including an npm scope when present.",
              "type": "string"
            },
            "registry": {
              "description": "Canonical registry authority and optional endpoint path.",
              "type": "string"
            },
            "version": {
              "description": "Exact release version.",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "manager",
            "registry",
            "name",
            "version"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "description": "Standard-library object owned by a runtime or compiler.",
          "properties": {
            "kind": {
              "const": "runtime",
              "type": "string"
            },
            "runtime": {
              "description": "Canonical runtime or compiler name.",
              "type": "string"
            },
            "version": {
              "description": "Exact runtime or compiler version.",
              "type": "string"
            }
          },
          "required": [
            "kind",
            "runtime",
            "version"
          ],
          "type": "object"
        }
      ]
    },
    "TextRange": {
      "description": "Half-open UTF-8 byte offsets over authoritative UTF-8 source. Every provider converts\nfrom whatever its toolchain counts in at its own boundary, so two toolchains' column\nnumbers arrive here on the same scale. No JSON Schema keyword can tie one field to\nanother, so that `end` is never below `start` is asserted by the surface\nvalidation tests instead.",
      "examples": [
        {
          "end": 0,
          "start": 0
        }
      ],
      "properties": {
        "end": {
          "description": "One past the last byte. Equal to `start` for an empty range, which is how a position\nbetween two bytes is spelled.",
          "format": "uint64",
          "maximum": 9007199254740991,
          "minimum": 0,
          "type": "integer"
        },
        "start": {
          "description": "First byte of the range, counted from the start of the file.",
          "format": "uint64",
          "maximum": 9007199254740991,
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "start",
        "end"
      ],
      "type": "object"
    },
    "TypeBinding": {
      "description": "One type a symbol carries, together with the role it plays for that symbol.",
      "properties": {
        "origin": {
          "$ref": "#/$defs/TypeBindingOrigin",
          "description": "Where the type fact came from."
        },
        "role": {
          "$ref": "#/$defs/TypeBindingRole",
          "description": "The role this type plays for the symbol."
        },
        "type": {
          "$ref": "#/$defs/TypeExpression",
          "description": "The type itself."
        }
      },
      "required": [
        "role",
        "origin",
        "type"
      ],
      "type": "object"
    },
    "TypeBindingOrigin": {
      "description": "Where the type fact came from. A declared type and an inferred one can both be present\nand disagree, which is the interesting case.",
      "oneOf": [
        {
          "const": "declared",
          "description": "Written in the source by the author.",
          "type": "string"
        },
        {
          "const": "inferred",
          "description": "Worked out by the provider from usage.",
          "type": "string"
        },
        {
          "const": "expected",
          "description": "Required by the surrounding context.",
          "type": "string"
        }
      ]
    },
    "TypeBindingRole": {
      "description": "What this type is to the symbol that carries it.",
      "oneOf": [
        {
          "const": "receiver",
          "description": "The type of the implicit first parameter.",
          "type": "string"
        },
        {
          "const": "parameter",
          "description": "The type a parameter accepts.",
          "type": "string"
        },
        {
          "const": "return",
          "description": "The type a call yields.",
          "type": "string"
        },
        {
          "const": "field",
          "description": "The type a field holds.",
          "type": "string"
        },
        {
          "const": "bound",
          "description": "A constraint on a type parameter.",
          "type": "string"
        },
        {
          "const": "element",
          "description": "The type of a collection's entries.",
          "type": "string"
        },
        {
          "const": "key",
          "description": "The type a map is indexed by.",
          "type": "string"
        },
        {
          "const": "error",
          "description": "The type of the failure a fallible result carries.",
          "type": "string"
        },
        {
          "const": "underlying",
          "description": "The type an alias or wrapper stands for.",
          "type": "string"
        },
        {
          "const": "yielded",
          "description": "The type a generator produces per step.",
          "type": "string"
        },
        {
          "const": "awaited",
          "description": "The type awaiting the value resolves to.",
          "type": "string"
        },
        {
          "const": "discriminant",
          "description": "The type that tags which variant a value holds.",
          "type": "string"
        }
      ]
    },
    "TypeExpression": {
      "description": "How a type is written in the source, plus the symbol that declares it when one does. A\ntype with a declaration resolves to that symbol; a structural type - `string | null`,\n`{ a: string }` - has the spelling and nothing to resolve to.",
      "properties": {
        "extensions": {
          "$ref": "#/$defs/Extensions",
          "default": {},
          "description": "Type facts the model has no field for, namespaced by the provider that emitted them.\nAbsent when empty."
        },
        "language": {
          "$ref": "#/$defs/Language",
          "description": "The language the spelling is in, and so which provider produced it."
        },
        "resolved": {
          "$ref": "#/$defs/SymbolId",
          "description": "The symbol that declares this type, where one does. Absent for a structural type,\nwhich has a spelling and nothing to open."
        },
        "source": {
          "description": "The type as it is written: `Optional[Config]`, `&mut [u8]`, `string | null`.",
          "type": "string"
        }
      },
      "required": [
        "language",
        "source"
      ],
      "type": "object"
    },
    "WheelTag": {
      "additionalProperties": false,
      "description": "One expanded Python, ABI and platform compatibility tag.",
      "properties": {
        "abi": {
          "description": "ABI required by the artifact.",
          "type": "string"
        },
        "platform": {
          "description": "Platform required by the artifact.",
          "type": "string"
        },
        "python": {
          "description": "Python implementation and version required by the artifact.",
          "type": "string"
        }
      },
      "required": [
        "python",
        "abi",
        "platform"
      ],
      "type": "object"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "One package or runtime owner's analyzed source, as the analyzer publishes it.\n\n`Eq` is not derived: [`PackageSymbol`] is not `Eq`.",
  "properties": {
    "analyzer_revision": {
      "$ref": "#/$defs/Digest",
      "description": "The analyzer that produced it: the digest of the grammar versions and extraction\nsource the run depended on. Two publications with equal package bytes and equal\n`analyzer_revision` are equal."
    },
    "artifact": {
      "$ref": "#/$defs/PackageArtifact",
      "description": "Selected immutable artifact when the caller established its identity."
    },
    "coverage": {
      "description": "Independent coverage of each selected language. Unknown applicability is not\ncomplete, even when every selected source was parsed.",
      "items": {
        "$ref": "#/$defs/PackageCoverage"
      },
      "type": "array"
    },
    "declarations": {
      "description": "Established source bindings, in symbol, unit and range order.",
      "items": {
        "$ref": "#/$defs/PackageSymbol"
      },
      "maxItems": 50000000,
      "type": "array"
    },
    "documentation": {
      "$ref": "#/$defs/DocumentationIndex",
      "description": "Documentation facts over the selected source units."
    },
    "documents": {
      "description": "Every search document, in document identity order.",
      "items": {
        "$ref": "#/$defs/PackageDocument"
      },
      "maxItems": 55000000,
      "type": "array"
    },
    "format_revision": {
      "description": "The publication shape this document follows. A consumer refuses a revision it does\nnot know.",
      "format": "uint32",
      "minimum": 1,
      "type": "integer"
    },
    "identity_format": {
      "description": "Canonical symbol identity format supported by this publication.",
      "format": "uint32",
      "minimum": 0,
      "type": "integer"
    },
    "objects": {
      "description": "Every normalized logical object, including objects omitted from public directories.\nUnresolved objects retain their facts with no ID. Artifact consumers enforce aggregate\nand complete-record byte bounds before parsing and restoration. Public directories\napply the public character bound separately.",
      "items": {
        "description": "Readable Symbol assembled from normalized Contributions. Source structure lives in Node\nand is connected through Relationship.",
        "properties": {
          "container": {
            "$ref": "#/$defs/SymbolId",
            "description": "The symbol this one belongs to - the class that owns a method, the module that owns\na function. Ownership is not lexical: a Go method sits beside its type and a Rust\nmethod inside an `impl` block, both naming the type here; absent at the top level."
          },
          "document_local": {
            "default": false,
            "description": "Whether language semantics confine this symbol to the document that declares it. The\nprovider classifies locality from its language model; absent when `false`.",
            "type": "boolean"
          },
          "documentation": {
            "default": [],
            "description": "Doc comments attached to the declaration, with the markup format they were written\nin. Absent when empty.",
            "items": {
              "$ref": "#/$defs/Documentation"
            },
            "type": "array"
          },
          "extensions": {
            "$ref": "#/$defs/Extensions",
            "default": {},
            "description": "Language-specific facts with no portable equivalent, namespaced by the provider that\nemitted them. Absent when empty."
          },
          "facets": {
            "default": [],
            "description": "Portable classification for cross-language queries, absent when empty. The local\nkinds `trait` and `interface` can both carry the `type` facet.",
            "items": {
              "$ref": "#/$defs/SymbolFacet"
            },
            "type": "array"
          },
          "id": {
            "$ref": "#/$defs/SymbolId",
            "description": "Unique identifier of this Symbol across the whole workspace. Absent for an\nunestablished symbol: no accepted evidence, or more than one, established its\nidentity."
          },
          "kind": {
            "$ref": "#/$defs/ExactKind",
            "description": "What this symbol is in the provider's vocabulary, such as `trait`, `function`, or\n`table`."
          },
          "language": {
            "$ref": "#/$defs/Language",
            "description": "The language this symbol belongs to."
          },
          "modifiers": {
            "default": [],
            "description": "Language keywords qualifying the declaration: `export`, `async`, `const`. Absent\nwhen empty.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The human-readable name, as written in the source: `parseConfig`. Rendered\nsignatures live in `signatures`.",
            "type": "string"
          },
          "origin": {
            "$ref": "#/$defs/SymbolOrigin",
            "default": {
              "location": "project",
              "source_kind": "authored"
            },
            "description": "Where the declaration belongs and how it was produced. Absent when it says a\nproject declaration, authored, with no package - the common case."
          },
          "signatures": {
            "default": [],
            "description": "One entry per callable form, absent when empty. Where the language dispatches\noverloads separately they are separate symbols joined by the `overloads` edge;\nseveral entries here are alternative forms of one dispatch target, as\n`typing.overload` writes them.",
            "items": {
              "$ref": "#/$defs/Signature"
            },
            "type": "array"
          },
          "types": {
            "default": [],
            "description": "The types this symbol carries, each tagged with the role it plays: a return type, a\nfield type, a bound. Absent when empty.",
            "items": {
              "$ref": "#/$defs/TypeBinding"
            },
            "type": "array"
          },
          "visibility": {
            "description": "How widely the symbol is visible, in the language's own terms - `public`, `private`,\n`pub(crate)`. Absent where the language has no such concept.",
            "type": "string"
          }
        },
        "required": [
          "language",
          "name",
          "kind"
        ],
        "type": "object"
      },
      "maxItems": 50000000,
      "type": "array"
    },
    "owner": {
      "$ref": "#/$defs/SymbolOwner",
      "description": "Exact defining package, runtime, or compiler owner."
    },
    "relationships": {
      "description": "Normalized relationships, preserving their source occurrences and derivation.",
      "items": {
        "$ref": "#/$defs/Relationship"
      },
      "type": "array"
    },
    "source_digest": {
      "$ref": "#/$defs/Digest",
      "description": "The digest of the package source this publication was produced from, over every\nunit's path and content in unit order."
    },
    "units": {
      "description": "Every analyzed source unit, in unit identity order.",
      "items": {
        "$ref": "#/$defs/PackageSourceUnit"
      },
      "maxItems": 5000000,
      "type": "array"
    },
    "warnings": {
      "description": "What the analyzer could not do, in the order it met each. Absent when the run\nanalyzed every selected file whole.",
      "items": {
        "$ref": "#/$defs/PackageAnalysisWarning"
      },
      "maxItems": 65536,
      "type": "array"
    }
  },
  "required": [
    "format_revision",
    "identity_format",
    "analyzer_revision",
    "owner",
    "source_digest",
    "units",
    "objects",
    "declarations",
    "relationships",
    "coverage",
    "documents",
    "documentation"
  ],
  "title": "PackagePublication",
  "type": "object"
}
