health.report
Každý rozměr toho, co tento proces servíruje — vrstva tak, jak byla načtena, registr, rozsah, správa verzí, pokrytí měření výkonu, commitnutý manifest registru, sdílený server tohoto checkoutu a připojení peerové — každý posouzený motorem, který jej vlastní, s příkazem, který verdikt reprodukuje.
Každý rozměr toho, co tento proces servíruje — vrstva tak, jak byla načtena, registr, rozsah, správa verzí, pokrytí měření výkonu, commitnutý manifest registru, sdílený server tohoto checkoutu a připojení peerové — každý posouzený motorem, který jej vlastní, s příkazem, který verdikt reprodukuje.
- query
- behaviorally_verified
- module health
- #health
- #introspection
Zpřístupnění
Kde je tato jedna definice dosažitelná. Absence je explicitní: povrch, který není uveden, ji nenese.
| povrch | jako |
|---|---|
| MCP | nástroj majordomus_health zdroj majordomus://health |
| HTTP | GET /api/v1/health operationId health.report |
| příkazová řádka | — |
Schémata
Kanonický vstup a výstup z typů Rustu; schéma nástroje MCP a parametry a odpovědi OpenAPI se odvozují z nich.
vstup · Prázdné
Žádné vlastnosti: schopnost nebere žádný vstup.
JSON Schema
{
"additionalProperties": false,
"description": "No input.",
"title": "Empty",
"type": "object"
}výstup · Health
| vlastnost | typ | povinné | popis |
|---|---|---|---|
| kontroly | array | ano | Každá dimenze ve stabilním pořadí. |
| pozorováno | object | ne | Kdy byl přečten stav, na jehož základě se kontrola rozhodla, podle ID kontroly: smlouva o aktuálnosti (crate::index::AnswerObservation). Kontrola, která zde chybí, rozhodla živě, během tohoto volání. layer a git jsou zde proto, že posuzují obraz, který pořídil index, a ten je stejně starý jako index. |
| repozitář | reference | ano | Nejhorší stav mezi dimenzemi, které popisují repozitář při tomto commitu: každá kontrola kromě těch v PROCESS_DIMENSIONS. Proces, který není server — příkazová řádka nebo čtenář publikovaného snapshotu (ADR 0141) — nemůže rozhodnout, kdo je připojen ani co udělal runtime meshe, a řekne unknown pro ně; toto je verdikt, který je stejný, ať repozitář četl kterýkoli proces, a publikace ukazuje jako první právě ten. |
| status | reference | ano | Stav nejhorší kontroly. |
| součty | object | ano | Kolik kontrol stojí kde, podle slova stavu. |
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"
}Politiky
- benchmark
- povinné — cíl na každém transportu, který expozice deklaruje; případy jsou ty ze vstupního typu
- cache
- process — až 4 položky v procesu, každá 5 s, v rozsahu otisku registru
Cíle benchmarku
Odvozeno z registru pro tento repozitář: jeden požadavek na transport a případy, které poskytuje typ vstupu. Celá matice je na stránce měření výkonu.
Okamžiky, na které to odpovídá
- přijali „hotovo“, protože to řekl model, a druhý den ráno za to zaplatili Plynulé tvrzení o dokončení se přijme jako důkaz, protože nic předem nezapsalo, co by muselo platit.
- našel úlohu "in progress", které se tři týdny nikdo nedotkl Stav, který byl napsán, a ne spočítán, platí v okamžiku zápisu a odtud tiše zastarává.
- našel pět worktrees a nedokázal říct, na kterých ještě záleží Izolace se vytváří levně, ale špatně se o ní uvažuje: nic nezaznamenává, k čemu worktree sloužil ani zda jeho práce přistála.
- našel hotovou práci na větvi, kterou nikdo nikdy nemergoval Workeři vyprodukují mnohem víc, než integrace pojme, a nic nerozlišuje práci hotovou od práce hotové a přistálé.
- našel pravidlo, o kterém všichni věřili, že se vynucuje, a nic ho nikdy nevolalo Existují všechny artefakty vynucování — pravidlo, skript, test — a žádná cesta je nespojuje, takže kontrola je fikce.
- přečetl slib v README, za kterým nestál žádný test Věta popisující, co software dělá, se napíše jednou a nikdy se nepropojí s ničím, co by selhalo, kdyby přestala platit.
- se podíval na účet a nedokázal říct, co z něj cokoli vyprodukovalo Spotřeba se měří po účtech a výsledky se zaznamenávají po lidech, takže je nelze nikdy spojit.
- publikoval stránku, která slíbila víc, než kterýkoli test dokázal podpořit Veřejné materiály vznikají jiným úkonem než kód, takže předbíhají chování a nic je nevrací zpět.
- nedokázal reprodukovat výsledek, protože nic nezaznamenalo stav, ze kterého vzešel Výsledek je zaznamenaný, podmínky, které ho vytvořily, nikoli, takže je to anekdota, a ne měření.