Skip to content

objects.verify

Read every file the layer was built from and compare it with what this process is serving. The index is built once at start-up and kept, which is what makes every other request cost nothing and what makes a file edited afterwards be served as it was; this is how a running server says whether that has happened, without being restarted to find out. A file that is one object is compared byte for byte; a collection file, whose objects the index keeps as members rather than as text, is compared by size, and every finding says which comparison was made. It reads every file of the layer, so it reports its progress file by file and stops when it is asked to.

Read every file the layer was built from and compare it with what this process is serving. The index is built once at start-up and kept, which is what makes every other request cost nothing and what makes a file edited afterwards be served as it was; this is how a running server says whether that has happened, without being restarted to find out. A file that is one object is compared byte for byte; a collection file, whose objects the index keeps as members rather than as text, is compared by size, and every finding says which comparison was made. It reads every file of the layer, so it reports its progress file by file and stops when it is asked to.

Exposure

Where this one definition is reachable. Absence is explicit: a surface not listed does not carry it.

surfaceas
MCPtool majordomus_verify_objects
HTTPGET /api/v1/objects/verify operationId objects.verify
command line

Schemas

The canonical input and output, from the Rust types; the MCP tool schema and the OpenAPI parameters and responses are derived from these.

input · VerifyInput

The input of `objects.verify`.

propertytyperequireddescription
kind string | null no Only objects of this kind.
limit integer | null no How many objects to read at most; every one of them when absent.
JSON Schema
{
  "additionalProperties": false,
  "description": "The input of `objects.verify`.",
  "properties": {
    "kind": {
      "description": "Only objects of this kind.",
      "type": [
        "string",
        "null"
      ]
    },
    "limit": {
      "description": "How many objects to read at most; every one of them when absent.",
      "format": "uint",
      "minimum": 0,
      "type": [
        "integer",
        "null"
      ]
    }
  },
  "title": "VerifyInput",
  "type": "object"
}

output · VerifyReport

The answer of `objects.verify`.

propertytyperequireddescription
compared_by_content integer yes How many were compared byte for byte rather than by size.
current integer yes How many of them are what the index read.
drifted integer yes How many are not, of any kind of not.
files integer yes How many files were read.
findings array yes The files that are not, with what is wrong with each.
fingerprint string yes The index fingerprint this process is serving.
index_is_current boolean yes Whether the index is still a true picture of the working tree, as far as this comparison can tell.
objects integer yes How many objects of the index those files carry.
JSON Schema
{
  "$defs": {
    "Comparison": {
      "description": "How closely a file could be compared with what the index holds.\n\nA file that is one object is compared byte for byte, because the index kept its whole\ncontent. A collection file holds one object per member, and what the index kept for each\nis that member as JSON rather than the file's text — so the strongest thing that can be\nsaid without re-parsing it is whether its size is what it was. The report says which\ncomparison was made rather than implying the stronger one.",
      "oneOf": [
        {
          "const": "content",
          "description": "Byte for byte against the content the index holds.",
          "type": "string"
        },
        {
          "const": "size",
          "description": "By size against the size the index recorded.",
          "type": "string"
        }
      ]
    },
    "DriftedObject": {
      "description": "One file of the layer that is no longer what the index read.",
      "properties": {
        "comparison": {
          "$ref": "#/$defs/Comparison",
          "description": "How it was compared."
        },
        "detail": {
          "description": "What is wrong, for a person.",
          "type": "string"
        },
        "example_uri": {
          "description": "One of the URIs it holds, so a reader can see what is affected.",
          "type": "string"
        },
        "objects": {
          "description": "How many objects of the index came from it.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "path": {
          "description": "Its repository-relative path.",
          "type": "string"
        },
        "standing": {
          "$ref": "#/$defs/ObjectStanding",
          "description": "How it stands."
        }
      },
      "required": [
        "path",
        "standing",
        "comparison",
        "objects",
        "example_uri",
        "detail"
      ],
      "type": "object"
    },
    "ObjectStanding": {
      "description": "How one file stands against what the index read from it.",
      "oneOf": [
        {
          "const": "current",
          "description": "It is what the index read.",
          "type": "string"
        },
        {
          "const": "changed",
          "description": "It is there and it has changed since the index was built.",
          "type": "string"
        },
        {
          "const": "missing",
          "description": "The file the index read is no longer there.",
          "type": "string"
        },
        {
          "const": "unreadable",
          "description": "It is there and could not be read.",
          "type": "string"
        }
      ]
    }
  },
  "description": "The answer of `objects.verify`.",
  "properties": {
    "compared_by_content": {
      "description": "How many were compared byte for byte rather than by size.",
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    },
    "current": {
      "description": "How many of them are what the index read.",
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    },
    "drifted": {
      "description": "How many are not, of any kind of not.",
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    },
    "files": {
      "description": "How many files were read.",
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    },
    "findings": {
      "description": "The files that are not, with what is wrong with each.",
      "items": {
        "$ref": "#/$defs/DriftedObject"
      },
      "type": "array"
    },
    "fingerprint": {
      "description": "The index fingerprint this process is serving.",
      "type": "string"
    },
    "index_is_current": {
      "description": "Whether the index is still a true picture of the working tree, as far as this\ncomparison can tell.",
      "type": "boolean"
    },
    "objects": {
      "description": "How many objects of the index those files carry.",
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "files",
    "current",
    "drifted",
    "objects",
    "compared_by_content",
    "fingerprint",
    "index_is_current",
    "findings"
  ],
  "title": "VerifyReport",
  "type": "object"
}

Policies

benchmark
required — a target on every transport the exposure declares; the cases are the input type's
cache
disabled — every call runs the handler

Benchmark targets

Derived from the registry for this repository: one requirement per transport, and the cases the input type provides. The whole matrix is on the benchmarks page.

transportstatecasestargets
directcovered1bounded
mcpcovered1bounded
httpcovered1bounded

Claims implemented beside it

Attached by the file that implements each claim; every one links to its page with the implementation and the test that proves it.