Skip to content

health.report

Every dimension of what this process serves — the layer as it was read, the registry, the scope, version control, benchmark coverage, the committed registry manifest, the shared server of this checkout and the attached peers — each decided by the engine that owns it, with the command that reproduces the verdict.

Every dimension of what this process serves — the layer as it was read, the registry, the scope, version control, benchmark coverage, the committed registry manifest, the shared server of this checkout and the attached peers — each decided by the engine that owns it, with the command that reproduces the verdict.

Exposure

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

surfaceas
MCPtool majordomus_health
resource majordomus://health
HTTPGET /api/v1/health operationId health.report
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 · Empty

No input.

No properties: the capability takes no input.

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

output · Health

The health of what this process serves.
propertytyperequireddescription
checks array yes Every dimension, in a stable order.
observed object no When the state a check decided on was read, by check id: the freshness contract (crate::index::AnswerObservation). A check absent here decided live, during this call. layer and git are here because they judge the picture the index took, which is as old as the index.
repository reference yes The worst status among the dimensions that describe the repository at this commit: every check but the ones in PROCESS_DIMENSIONS. A process that is no server — the command line, or the reader of a published snapshot (ADR 0141) — cannot decide who is attached or what the mesh runtime did, and says unknown for them; this is the verdict that is the same whichever process read the repository, and it is what a publication shows first.
status reference yes The worst check's status.
tallies object yes How many checks stand where, by status word.
JSON Schema
{
  "$defs": {
    "AnswerObservation": {
      "description": "When the state behind an answer was read: the freshness contract of a capability answer.\n\nDeclared once and carried in the output type of every answer that is a picture of\nstate, so that the output schema, OpenAPI, the MCP tool schemas and the command line's\nJSON all carry it without a transport of their own. It is set where the state is read —\nthe index build, the git read — never by the executor, which knows when a handler ran\nand not when the state it read was taken.\n\n```\nuse std::time::{Duration, UNIX_EPOCH};\nuse majordomus_cli::index::AnswerObservation;\nlet at = UNIX_EPOCH + Duration::from_secs(1_788_000_000);\nlet o = AnswerObservation::taken(\"git read\", at, Some(Duration::from_secs(120)));\nassert_eq!(o.observed_at, \"2026-08-29T10:40:00Z\");\nassert_eq!(o.stale_after.as_deref(), Some(\"2026-08-29T10:42:00Z\"));\nassert!(!o.is_stale_at(at + Duration::from_secs(120)));\nassert!(o.is_stale_at(at + Duration::from_secs(121)));\n```",
      "properties": {
        "observed_at": {
          "description": "RFC 3339 UTC, whole seconds: when the state behind the answer was read. Empty only\nin an answer from an index that was never built (a hand-made one in a test).",
          "type": "string"
        },
        "source": {
          "description": "What was read at that time: `index build` or `git read`.",
          "type": "string"
        },
        "stale_after": {
          "description": "RFC 3339 UTC: after this the answer is not to be trusted as current even though\nnothing announced a change. Absent when there is no known blind spot.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "observed_at",
        "source"
      ],
      "type": "object"
    },
    "HealthCheck": {
      "description": "One dimension of the system, decided by one engine, with what a reader needs to check\nit themselves.",
      "properties": {
        "decided_by": {
          "description": "The engine that decided it, named so the reader knows what to fix.",
          "type": "string"
        },
        "detail": {
          "description": "One line: what the engine decided and on what.",
          "type": "string"
        },
        "evidence": {
          "description": "What reproduces the verdict: a command, or a path.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "findings": {
          "description": "Findings behind the verdict, when the engine produced any: the diagnostic\nmessages, the stale files, the missing coverage lines.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "id": {
          "description": "A stable id, `[a-z][a-z0-9-]*`.",
          "type": "string"
        },
        "status": {
          "$ref": "#/$defs/HealthStatus",
          "description": "Where it stands."
        },
        "title": {
          "description": "The short name.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "status",
        "detail",
        "decided_by"
      ],
      "type": "object"
    },
    "HealthStatus": {
      "description": "Where one dimension of the system stands. Ordered by severity, so the worst check\ndecides the whole.",
      "oneOf": [
        {
          "const": "ok",
          "description": "The engine that decides this dimension is satisfied.",
          "type": "string"
        },
        {
          "const": "warn",
          "description": "Nothing is broken and something is worth looking at.",
          "type": "string"
        },
        {
          "const": "fail",
          "description": "The engine that decides this dimension is not satisfied.",
          "type": "string"
        },
        {
          "const": "unknown",
          "description": "This process cannot decide it, and says so rather than reporting `ok`.",
          "type": "string"
        }
      ]
    }
  },
  "description": "The health of what this process serves.",
  "properties": {
    "checks": {
      "description": "Every dimension, in a stable order.",
      "items": {
        "$ref": "#/$defs/HealthCheck"
      },
      "type": "array"
    },
    "observed": {
      "additionalProperties": {
        "$ref": "#/$defs/AnswerObservation"
      },
      "description": "When the state a check decided on was read, by check id: the freshness contract\n(`crate::index::AnswerObservation`). A check absent here decided live, during this call.\n`layer` and `git` are here because they judge the picture the index took, which is\nas old as the index.",
      "type": "object"
    },
    "repository": {
      "$ref": "#/$defs/HealthStatus",
      "description": "The worst status among the dimensions that describe the repository at this commit:\nevery check but the ones in `PROCESS_DIMENSIONS`. A process that is no server —\nthe command line, or the reader of a published snapshot (ADR 0141) — cannot decide\nwho is attached or what the mesh runtime did, and says `unknown` for them; this is\nthe verdict that is the same whichever process read the repository, and it is what a\npublication shows first."
    },
    "status": {
      "$ref": "#/$defs/HealthStatus",
      "description": "The worst check's status."
    },
    "tallies": {
      "additionalProperties": {
        "format": "uint",
        "minimum": 0,
        "type": "integer"
      },
      "description": "How many checks stand where, by status word.",
      "type": "object"
    }
  },
  "required": [
    "status",
    "repository",
    "tallies",
    "checks"
  ],
  "title": "Health",
  "type": "object"
}

Policies

benchmark
required — a target on every transport the exposure declares; the cases are the input type's
cache
process — up to 4 entries in the process, 5s each, 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

The moments this answers

Searches the titles and descriptions of every page this site publishes.