product.matrix
Every feature against the command line, the HTTP API, MCP, the Cockpit and the documentation, each mark derived from what the feature names; then every builtin module of the executable, every public command of the shell tool and every kind of the layer with the stable features that name it. A row with no feature is reported as a gap rather than hidden.
Every feature against the command line, the HTTP API, MCP, the Cockpit and the documentation, each mark derived from what the feature names; then every builtin module of the executable, every public command of the shell tool and every kind of the layer with the stable features that name it. A row with no feature is reported as a gap rather than hidden.
- query
- behaviorally_verified
- module product
- #product
- #features
- #coverage
Exposure
Where this one definition is reachable. Absence is explicit: a surface not listed does not carry it.
| surface | as |
|---|---|
| MCP | tool majordomus_product_matrix resource majordomus://product/matrix |
| HTTP | GET /api/v1/product/matrix operationId product.matrix |
| command line | majordomus product matrix |
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 · Matrix
Every feature against every interface, and every module, command and kind against the features that name it.
| property | type | required | description |
|---|---|---|---|
| commands | array | yes | Every public command of the shell tool with the stable features that name it. |
| kinds | array | yes | Every kind of the layer a feature can present, with the stable features that name it. |
| modules | array | yes | Every builtin module of the executable with the stable features that name it. |
| rows | array | yes | One row per feature of any status but deprecated, in presentation order. |
| schema | string | yes | [`SCHEMA`]. |
| surfaces | array | yes | The surface vocabulary. |
JSON Schema
{
"$defs": {
"MatrixRow": {
"description": "One row of the matrix: a feature and the surfaces it is exposed through.",
"properties": {
"exposed": {
"description": "The surface ids that are true.",
"items": {
"type": "string"
},
"type": "array"
},
"id": {
"description": "The feature id.",
"type": "string"
},
"label": {
"description": "The name a narrow column shows.",
"type": "string"
},
"route": {
"description": "`/features/<id>/`.",
"type": "string"
},
"status": {
"description": "`stable` or `draft`.",
"type": "string"
},
"surfaces": {
"$ref": "#/$defs/Surfaces",
"description": "The surfaces, by id, in the vocabulary's order."
}
},
"required": [
"id",
"label",
"route",
"status",
"surfaces",
"exposed"
],
"type": "object"
},
"ProductCoverage": {
"description": "One thing of the product — a module, a public command, a kind — and the features that\nname it. Empty means the product page says nothing about it, which is a gap the\nvalidation reports and the matrix shows rather than hides.",
"properties": {
"features": {
"description": "The stable features that name it.",
"items": {
"type": "string"
},
"type": "array"
},
"id": {
"description": "The id.",
"type": "string"
},
"title": {
"description": "The title.",
"type": "string"
}
},
"required": [
"id",
"title",
"features"
],
"type": "object"
},
"SurfaceInfo": {
"description": "One surface of the vocabulary, as a client reads it.",
"properties": {
"features": {
"description": "How many stable features it exposes.",
"format": "uint",
"minimum": 0,
"type": "integer"
},
"id": {
"description": "`cli`, `api`, `mcp`, `cockpit` or `docs`.",
"type": "string"
},
"route": {
"description": "The route on the website where the surface is documented.",
"type": "string"
},
"title": {
"description": "The name a person reads.",
"type": "string"
}
},
"required": [
"id",
"title",
"route",
"features"
],
"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"
}
},
"description": "Every feature against every interface, and every module, command and kind against the\nfeatures that name it.",
"properties": {
"commands": {
"description": "Every public command of the shell tool with the stable features that name it.",
"items": {
"$ref": "#/$defs/ProductCoverage"
},
"type": "array"
},
"kinds": {
"description": "Every kind of the layer a feature can present, with the stable features that name it.",
"items": {
"$ref": "#/$defs/ProductCoverage"
},
"type": "array"
},
"modules": {
"description": "Every builtin module of the executable with the stable features that name it.",
"items": {
"$ref": "#/$defs/ProductCoverage"
},
"type": "array"
},
"rows": {
"description": "One row per feature of any status but deprecated, in presentation order.",
"items": {
"$ref": "#/$defs/MatrixRow"
},
"type": "array"
},
"schema": {
"description": "[`SCHEMA`].",
"type": "string"
},
"surfaces": {
"description": "The surface vocabulary.",
"items": {
"$ref": "#/$defs/SurfaceInfo"
},
"type": "array"
}
},
"required": [
"schema",
"surfaces",
"rows",
"modules",
"commands",
"kinds"
],
"title": "Matrix",
"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.