Skip to content

why.validate

Every finding over the catalogue: a reference that resolves to nothing, with the nearest candidate; a duplicate identity; a file name that disagrees with its id; and a public record that does not meet the floor its status promises. Errors make the catalogue invalid; warnings do not.

Every finding over the catalogue: a reference that resolves to nothing, with the nearest candidate; a duplicate identity; a file name that disagrees with its id; and a public record that does not meet the floor its status promises. Errors make the catalogue invalid; warnings do not.

  • query
  • behaviorally_verified
  • module why
  • #why
  • #introspection

Exposure

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

surfaceas
MCPtool majordomus_why_validate
HTTPGET /api/v1/why/validate operationId why.validate
command linemajordomus why validate

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 · Empty

No input.

No properties: the capability takes no input.

JSON Schema
{
  "additionalProperties": false,
  "description": "No input.",
  "title": "Empty",
  "type": "object"
}

output · ValidationReport

What the catalogue's own validation found.

propertytyperequireddescription
counts reference yes The counts the catalogue reached.
errors integer yes How many findings are errors: a reference that resolves to nothing, a duplicate identity, a file name that disagrees with its id.
findings array yes The findings, errors first, then by file.
valid boolean yes True when nothing is an error. Warnings do not make it false.
warnings integer yes How many findings are warnings: a public record that does not meet its floor.
JSON Schema
{
  "$defs": {
    "Counts": {
      "description": "How much the catalogue holds. Every count anywhere — a page, a heading, a report — is\none of these, so no number is ever written down.",
      "properties": {
        "areas": {
          "description": "Public areas.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "audiences": {
          "description": "Public audiences.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "examples": {
          "description": "Concrete situations across the public moments.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "moments": {
          "description": "Public moments.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "moments_all": {
          "description": "Moments of every status, drafts included.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "signals": {
          "description": "Signals across the public moments: the size of the questionnaire.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "moments",
        "moments_all",
        "audiences",
        "areas",
        "signals",
        "examples"
      ],
      "type": "object"
    },
    "Finding": {
      "description": "One thing wrong with the catalogue, named where it is, with the nearest candidate when\nthere is one. A finding always carries enough to fix it without searching.",
      "properties": {
        "code": {
          "description": "A short category: `unknown_reference`, `duplicate_identity`, `missing_content`, ...",
          "type": "string"
        },
        "did_you_mean": {
          "description": "The nearest existing name, when the value looks like a typo of one.",
          "type": [
            "string",
            "null"
          ]
        },
        "field": {
          "description": "The front-matter key the finding is about, when one key owns it.",
          "type": [
            "string",
            "null"
          ]
        },
        "id": {
          "description": "The record's identity, when one record owns the finding.",
          "type": [
            "string",
            "null"
          ]
        },
        "message": {
          "description": "What is wrong, in one sentence.",
          "type": "string"
        },
        "path": {
          "description": "The repository-relative file the finding is in.",
          "type": "string"
        },
        "severity": {
          "$ref": "#/$defs/Severity",
          "description": "`error` or `warning`."
        }
      },
      "required": [
        "severity",
        "code",
        "path",
        "message"
      ],
      "type": "object"
    },
    "Severity": {
      "description": "How bad a diagnostic is. `Error` excludes the file it concerns from the index and puts\nthe index into the degraded state; `Warning` and `Info` do neither.",
      "oneOf": [
        {
          "const": "info",
          "description": "Worth knowing; changes nothing.",
          "type": "string"
        },
        {
          "const": "warning",
          "description": "Something to look at; the object is still served.",
          "type": "string"
        },
        {
          "const": "error",
          "description": "The file is excluded and the index is degraded.",
          "type": "string"
        }
      ]
    }
  },
  "description": "What the catalogue's own validation found.",
  "properties": {
    "counts": {
      "$ref": "#/$defs/Counts",
      "description": "The counts the catalogue reached."
    },
    "errors": {
      "description": "How many findings are errors: a reference that resolves to nothing, a duplicate\nidentity, a file name that disagrees with its id.",
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    },
    "findings": {
      "description": "The findings, errors first, then by file.",
      "items": {
        "$ref": "#/$defs/Finding"
      },
      "type": "array"
    },
    "valid": {
      "description": "True when nothing is an error. Warnings do not make it false.",
      "type": "boolean"
    },
    "warnings": {
      "description": "How many findings are warnings: a public record that does not meet its floor.",
      "format": "uint",
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "valid",
    "errors",
    "warnings",
    "counts",
    "findings"
  ],
  "title": "ValidationReport",
  "type": "object"
}

Policies

benchmark
required — a target on every transport the exposure declares; the cases are the input type's
cache
process — up to 2 entries in the process, scoped by the registry fingerprint

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
directcovered1default cold+warm
mcpcovered1default cold+warm
httpcovered1default cold+warm