Skip to content

product.feature

One product feature in full: the record as its file declares it, and everything derived from what it names — the capabilities of its modules with their tools, routes and command-line paths, the commands with their summaries, the objects of its kinds counted, the rules with their class and whether the tool enforces them, the documents, the decisions, the claims with their status, the use cases, the Cockpit areas and web surfaces with their routes, the moments it answers, and the interfaces all of that adds up to.

One product feature in full: the record as its file declares it, and everything derived from what it names — the capabilities of its modules with their tools, routes and command-line paths, the commands with their summaries, the objects of its kinds counted, the rules with their class and whether the tool enforces them, the documents, the decisions, the claims with their status, the use cases, the Cockpit areas and web surfaces with their routes, the moments it answers, and the interfaces all of that adds up to.

Exposure

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

surfaceas
MCPtool majordomus_feature
HTTPGET /api/v1/product/feature operationId product.feature
command linemajordomus product show

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

Which feature to read.

propertytyperequireddescription
id string yes The feature's id, as `product.features` gives it. This is also its slug and its route.
JSON Schema
{
  "additionalProperties": false,
  "description": "Which feature to read.",
  "properties": {
    "id": {
      "description": "The feature's id, as `product.features` gives it. This is also its slug and its route.",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "title": "FeatureInput",
  "type": "object"
}

output · ResolvedRefs

One feature, resolved: the record as its file declares it, and everything derived.

propertytyperequireddescription
adr_refs array yes Derived: the decisions it names, with their status.
adrs array no The decisions behind it, by declared id. default []
areas array no The operational areas of the why catalogue it serves. default []
audiences array no The audiences of the why catalogue it is written for. default []
backlinks array yes Derived: the features that name this one in their `related`.
body string no The Markdown body, without its front matter.
claim_refs array yes Derived: the claims it names, with their status.
claims array no Claims that say what is guaranteed here. default []
cockpit array no Areas of the Cockpit that show it. default []
cockpit_refs array yes Derived: the Cockpit areas it names, with their routes.
command_refs array yes Derived: the shell commands it names, as the command registry declares them.
commands array no Public commands of the shell tool it is made of. default []
counts reference yes Derived: how much stands behind it.
doc_refs array yes Derived: the documents it names, with their titles.
docs array no The documents that explain it, by repository-relative path. default []
evidence reference yes Derived: what is guaranteed.
featured boolean no Whether the homepage shows it as a chapter. default false
headline string yes The promise a visitor reads first.
id string yes The identity, the slug and the file name.
kind_refs array yes Derived: the kinds it names, each with its object count.
kinds array no Object kinds of the layer it is made of. default []
module_refs array yes Derived: the modules it names, each with its capabilities and their projections.
modules array no Capability modules of the executable it is made of. default []
moments array yes Derived: the moments that name any command, capability, claim or rule of this feature.
related array no Features explicitly related to this one. The reverse is derived. default []
route string no Derived: `/features/<id>/`. Never authored; the schema refuses a `route` key. default ""
rule_refs array yes Derived: the rules it names, each with its class and whether it is enforced.
rules array no Rules of the effective set that govern it, by id without the version. default []
short_title string | null no Two or three words for a card or a matrix row.
source string no Derived: the repository-relative file the record came from. default ""
status string yes `stable`, `draft` or `deprecated`.
summary string yes One line: what it does.
surfaces reference yes Derived: the interfaces it is exposed through.
tags array no Free tags. default []
title string yes The feature as a heading.
use_case_refs array yes Derived: the use cases it names.
use_cases array no Use cases that show it in use. default []
web array no Web surfaces of the topology it is offered through. default []
web_refs array yes Derived: the web surfaces it names, with their mounts.
weight integer no Presentation order, lowest first. default 0
JSON Schema
{
  "$defs": {
    "AdrRef": {
      "description": "One architecture decision the feature names.",
      "properties": {
        "id": {
          "description": "The declared id.",
          "type": "string"
        },
        "path": {
          "description": "Repository-relative path.",
          "type": "string"
        },
        "status": {
          "description": "`proposed`, `accepted`, `superseded` or `rejected`.",
          "type": "string"
        },
        "title": {
          "description": "The title.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "status",
        "path"
      ],
      "type": "object"
    },
    "CapabilityRef": {
      "description": "One capability of a module the feature names, with the projections the registry\ndeclares for it.",
      "properties": {
        "cli": {
          "description": "The words after `majordomus`, when exposed on the command line.",
          "type": [
            "string",
            "null"
          ]
        },
        "id": {
          "description": "The canonical id.",
          "type": "string"
        },
        "kind": {
          "description": "`query`, `command` or `resource`.",
          "type": "string"
        },
        "resource": {
          "description": "The MCP resource URI, when exposed as one.",
          "type": [
            "string",
            "null"
          ]
        },
        "route": {
          "description": "`METHOD /path`, when exposed over HTTP.",
          "type": [
            "string",
            "null"
          ]
        },
        "stability": {
          "description": "Where it stands.",
          "type": "string"
        },
        "title": {
          "description": "The title.",
          "type": "string"
        },
        "tool": {
          "description": "The MCP tool name, when exposed as one.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "id",
        "title",
        "kind",
        "stability"
      ],
      "type": "object"
    },
    "ClaimRef": {
      "description": "One claim the feature names, with the status the matrix gives it.",
      "properties": {
        "claim": {
          "description": "The sentence.",
          "type": "string"
        },
        "id": {
          "description": "The claim id.",
          "type": "string"
        },
        "status": {
          "description": "`guaranteed`, `advisory`, `planned` or `rejected`.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "claim",
        "status"
      ],
      "type": "object"
    },
    "CockpitAreaRef": {
      "description": "One area of the Cockpit the feature names.",
      "properties": {
        "id": {
          "description": "The area id.",
          "type": "string"
        },
        "route": {
          "description": "The route under the running server.",
          "type": "string"
        },
        "title": {
          "description": "The label the Cockpit shows.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "route"
      ],
      "type": "object"
    },
    "CommandRef": {
      "description": "One public command of the shell tool the feature names, as `share/commands.yaml`\ndeclares it.",
      "properties": {
        "id": {
          "description": "The command.",
          "type": "string"
        },
        "read_only": {
          "description": "Whether it writes nothing.",
          "type": "boolean"
        },
        "stage": {
          "description": "The lifecycle stage it belongs to.",
          "type": [
            "string",
            "null"
          ]
        },
        "summary": {
          "description": "One line.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "summary",
        "read_only"
      ],
      "type": "object"
    },
    "DocRef": {
      "description": "One document the feature names.",
      "properties": {
        "path": {
          "description": "Repository-relative path.",
          "type": "string"
        },
        "title": {
          "description": "The title, when the document has one.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "path"
      ],
      "type": "object"
    },
    "FeatureCounts": {
      "description": "How much stands behind a feature, every number derived.",
      "properties": {
        "adrs": {
          "description": "Decisions it names.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "capabilities": {
          "description": "Builtin capabilities of the modules it names.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "claims": {
          "description": "Claims it names.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "cli_paths": {
          "description": "Command-line paths of the executable among them.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "commands": {
          "description": "Public commands of the shell tool it names.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "docs": {
          "description": "Documents it names.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "enforced_rules": {
          "description": "Rules the tool enforces among them.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "http_routes": {
          "description": "HTTP routes among them.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "mcp_resources": {
          "description": "MCP resources among them, plus one per object of the kinds it names.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "mcp_tools": {
          "description": "MCP tools among them.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "moments": {
          "description": "Moments it answers.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "objects": {
          "description": "Objects of the kinds it names.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "rules": {
          "description": "Rules it names.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        },
        "use_cases": {
          "description": "Use cases it names.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "capabilities",
        "mcp_tools",
        "mcp_resources",
        "http_routes",
        "cli_paths",
        "commands",
        "objects",
        "rules",
        "enforced_rules",
        "docs",
        "adrs",
        "claims",
        "use_cases",
        "moments"
      ],
      "type": "object"
    },
    "FeatureEvidence": {
      "description": "What is guaranteed about a feature, counted from the claims it names: never a word a\nperson wrote about the feature's maturity.",
      "properties": {
        "claims": {
          "additionalProperties": {
            "format": "uint",
            "minimum": 0,
            "type": "integer"
          },
          "description": "Claims by status: `guaranteed`, `advisory`, `planned`, `rejected`.",
          "type": "object"
        },
        "modules": {
          "additionalProperties": {
            "format": "uint",
            "minimum": 0,
            "type": "integer"
          },
          "description": "The modules it names by stability.",
          "type": "object"
        }
      },
      "required": [
        "claims",
        "modules"
      ],
      "type": "object"
    },
    "KindRef": {
      "description": "One object kind the feature names, with how many objects of it the layer holds.",
      "properties": {
        "name": {
          "description": "The kind.",
          "type": "string"
        },
        "objects": {
          "description": "Objects of this kind in the index.",
          "format": "uint",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "name",
        "objects"
      ],
      "type": "object"
    },
    "ModuleRef": {
      "description": "One capability module the feature names.",
      "properties": {
        "capabilities": {
          "description": "The builtin capabilities it composes, in id order.",
          "items": {
            "$ref": "#/$defs/CapabilityRef"
          },
          "type": "array"
        },
        "description": {
          "description": "One paragraph.",
          "type": "string"
        },
        "id": {
          "description": "The module id.",
          "type": "string"
        },
        "source_path": {
          "description": "Repository-relative path of the file its descriptors were composed in.",
          "type": "string"
        },
        "stability": {
          "description": "Where the module stands, when it declared it.",
          "type": [
            "string",
            "null"
          ]
        },
        "title": {
          "description": "The short name.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "description",
        "source_path",
        "capabilities"
      ],
      "type": "object"
    },
    "MomentRef": {
      "description": "One operational moment the feature answers: derived from the moments that name any of\nthe feature's commands, capabilities, claims or rules.",
      "properties": {
        "hook": {
          "description": "The first-person line an index shows.",
          "type": "string"
        },
        "id": {
          "description": "The moment id.",
          "type": "string"
        },
        "route": {
          "description": "`/why/<id>/`.",
          "type": "string"
        },
        "title": {
          "description": "The title.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "hook",
        "route"
      ],
      "type": "object"
    },
    "RuleRef": {
      "description": "One rule the feature names.",
      "properties": {
        "class": {
          "description": "`blocking` or `advisory`.",
          "type": "string"
        },
        "enforced": {
          "description": "Whether the tool enforces it: the rule carries an `x-majordomus` block.",
          "type": "boolean"
        },
        "id": {
          "description": "The rule id, without the version.",
          "type": "string"
        },
        "identity": {
          "description": "The identity the index holds, with the version.",
          "type": "string"
        },
        "path": {
          "description": "Repository-relative path.",
          "type": "string"
        },
        "title": {
          "description": "The title.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "identity",
        "title",
        "class",
        "enforced",
        "path"
      ],
      "type": "object"
    },
    "SurfaceRef": {
      "description": "One web surface of the topology the feature names.",
      "properties": {
        "category": {
          "description": "What it is for.",
          "type": "string"
        },
        "id": {
          "description": "The surface id.",
          "type": "string"
        },
        "mount": {
          "description": "Where it is mounted.",
          "type": "string"
        },
        "title": {
          "description": "The title.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "mount",
        "category"
      ],
      "type": "object"
    },
    "Surfaces": {
      "description": "The interfaces a feature is exposed through, decided from what its references project\nand from nothing a file says. Each is a fact with a reason a reader can check: `cli` is\ntrue when a module of the feature has a capability with a command-line path or the\nfeature names a shell command; `api` when a module has an HTTP route; `mcp` when a module\nhas an MCP tool or resource, or the feature names a kind, since every object of the layer\nis an MCP resource; `cockpit` when the feature names a Cockpit area or a module, since\nevery capability has a Cockpit page; `docs` when it names a document.",
      "properties": {
        "api": {
          "description": "The HTTP routes under `/api/v1/`, and the OpenAPI document over them.",
          "type": "boolean"
        },
        "cli": {
          "description": "The command line: the executable's own, or the shell tool's.",
          "type": "boolean"
        },
        "cockpit": {
          "description": "The Cockpit.",
          "type": "boolean"
        },
        "docs": {
          "description": "The documentation.",
          "type": "boolean"
        },
        "mcp": {
          "description": "MCP: a tool, or a resource.",
          "type": "boolean"
        }
      },
      "required": [
        "cli",
        "api",
        "mcp",
        "cockpit",
        "docs"
      ],
      "type": "object"
    },
    "UseCaseRef": {
      "description": "One use case the feature names.",
      "properties": {
        "category": {
          "description": "The category it is filed under.",
          "type": [
            "string",
            "null"
          ]
        },
        "id": {
          "description": "The use case id.",
          "type": "string"
        },
        "title": {
          "description": "The title.",
          "type": "string"
        }
      },
      "required": [
        "id",
        "title"
      ],
      "type": "object"
    }
  },
  "description": "One feature, resolved: the record as its file declares it, and everything derived.",
  "properties": {
    "adr_refs": {
      "description": "Derived: the decisions it names, with their status.",
      "items": {
        "$ref": "#/$defs/AdrRef"
      },
      "type": "array"
    },
    "adrs": {
      "default": [],
      "description": "The decisions behind it, by declared id.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "areas": {
      "default": [],
      "description": "The operational areas of the why catalogue it serves.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "audiences": {
      "default": [],
      "description": "The audiences of the why catalogue it is written for.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "backlinks": {
      "description": "Derived: the features that name this one in their `related`.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "body": {
      "description": "The Markdown body, without its front matter.",
      "type": "string"
    },
    "claim_refs": {
      "description": "Derived: the claims it names, with their status.",
      "items": {
        "$ref": "#/$defs/ClaimRef"
      },
      "type": "array"
    },
    "claims": {
      "default": [],
      "description": "Claims that say what is guaranteed here.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "cockpit": {
      "default": [],
      "description": "Areas of the Cockpit that show it.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "cockpit_refs": {
      "description": "Derived: the Cockpit areas it names, with their routes.",
      "items": {
        "$ref": "#/$defs/CockpitAreaRef"
      },
      "type": "array"
    },
    "command_refs": {
      "description": "Derived: the shell commands it names, as the command registry declares them.",
      "items": {
        "$ref": "#/$defs/CommandRef"
      },
      "type": "array"
    },
    "commands": {
      "default": [],
      "description": "Public commands of the shell tool it is made of.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "counts": {
      "$ref": "#/$defs/FeatureCounts",
      "description": "Derived: how much stands behind it."
    },
    "doc_refs": {
      "description": "Derived: the documents it names, with their titles.",
      "items": {
        "$ref": "#/$defs/DocRef"
      },
      "type": "array"
    },
    "docs": {
      "default": [],
      "description": "The documents that explain it, by repository-relative path.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "evidence": {
      "$ref": "#/$defs/FeatureEvidence",
      "description": "Derived: what is guaranteed."
    },
    "featured": {
      "default": false,
      "description": "Whether the homepage shows it as a chapter.",
      "type": "boolean"
    },
    "headline": {
      "description": "The promise a visitor reads first.",
      "type": "string"
    },
    "id": {
      "description": "The identity, the slug and the file name.",
      "type": "string"
    },
    "kind_refs": {
      "description": "Derived: the kinds it names, each with its object count.",
      "items": {
        "$ref": "#/$defs/KindRef"
      },
      "type": "array"
    },
    "kinds": {
      "default": [],
      "description": "Object kinds of the layer it is made of.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "module_refs": {
      "description": "Derived: the modules it names, each with its capabilities and their projections.",
      "items": {
        "$ref": "#/$defs/ModuleRef"
      },
      "type": "array"
    },
    "modules": {
      "default": [],
      "description": "Capability modules of the executable it is made of.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "moments": {
      "description": "Derived: the moments that name any command, capability, claim or rule of this feature.",
      "items": {
        "$ref": "#/$defs/MomentRef"
      },
      "type": "array"
    },
    "related": {
      "default": [],
      "description": "Features explicitly related to this one. The reverse is derived.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "route": {
      "default": "",
      "description": "Derived: `/features/<id>/`. Never authored; the schema refuses a `route` key.",
      "type": "string"
    },
    "rule_refs": {
      "description": "Derived: the rules it names, each with its class and whether it is enforced.",
      "items": {
        "$ref": "#/$defs/RuleRef"
      },
      "type": "array"
    },
    "rules": {
      "default": [],
      "description": "Rules of the effective set that govern it, by id without the version.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "short_title": {
      "description": "Two or three words for a card or a matrix row.",
      "type": [
        "string",
        "null"
      ]
    },
    "source": {
      "default": "",
      "description": "Derived: the repository-relative file the record came from.",
      "type": "string"
    },
    "status": {
      "description": "`stable`, `draft` or `deprecated`.",
      "type": "string"
    },
    "summary": {
      "description": "One line: what it does.",
      "type": "string"
    },
    "surfaces": {
      "$ref": "#/$defs/Surfaces",
      "description": "Derived: the interfaces it is exposed through."
    },
    "tags": {
      "default": [],
      "description": "Free tags.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "title": {
      "description": "The feature as a heading.",
      "type": "string"
    },
    "use_case_refs": {
      "description": "Derived: the use cases it names.",
      "items": {
        "$ref": "#/$defs/UseCaseRef"
      },
      "type": "array"
    },
    "use_cases": {
      "default": [],
      "description": "Use cases that show it in use.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "web": {
      "default": [],
      "description": "Web surfaces of the topology it is offered through.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "web_refs": {
      "description": "Derived: the web surfaces it names, with their mounts.",
      "items": {
        "$ref": "#/$defs/SurfaceRef"
      },
      "type": "array"
    },
    "weight": {
      "default": 0,
      "description": "Presentation order, lowest first.",
      "format": "uint32",
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "id",
    "title",
    "headline",
    "summary",
    "status",
    "surfaces",
    "module_refs",
    "command_refs",
    "kind_refs",
    "rule_refs",
    "doc_refs",
    "adr_refs",
    "claim_refs",
    "use_case_refs",
    "cockpit_refs",
    "web_refs",
    "moments",
    "backlinks",
    "counts",
    "evidence"
  ],
  "title": "ResolvedRefs",
  "type": "object"
}

Policies

benchmark
required — a target on every transport the exposure declares; the cases are the input type's
cache
process — up to 64 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
directcovered1first-feature cold+warm
mcpcovered1first-feature cold+warm
httpcovered1first-feature cold+warm