From bd5de01b67db87cb96a74f66e75f8bc9d808b6ef Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 24 Aug 2026 21:08:24 +0000 Subject: [PATCH] docs(protocol): name the exception path's "health-check" check entry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `checks[].name` enumeration under the `PluginHealthReport` block named two of the three names `PluginHealthMonitor` can push, presenting itself as exhaustive. The third is the fixed `'health-check'` on the `catch` path, which is what a throwing check — and a `timeout` overrun, which `raceCheckTimeout` surfaces as a rejection — produces. A reader debugging that report found an entry name the page said could not occur. Replace the two-clause sentence with a three-row table, and correct the `"plugin-loaded"` condition while rewriting it: the default entry is also pushed when a `checkMethod` IS configured but does not resolve to a function on the plugin, not only when none is configured. The `PluginHealthReport` JSON block above is untouched. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015ahemw8RcTgqtxrj15PEZx --- content/docs/protocol/kernel/lifecycle.mdx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/content/docs/protocol/kernel/lifecycle.mdx b/content/docs/protocol/kernel/lifecycle.mdx index abb6d95a40..237a27f9e0 100644 --- a/content/docs/protocol/kernel/lifecycle.mdx +++ b/content/docs/protocol/kernel/lifecycle.mdx @@ -741,9 +741,15 @@ this shape over HTTP — it is an in-process model, not a wire body. `checks` is an **array**, and a check's `status` is `"passed" | "failed" | "warning"` — the six-value `"healthy" | "degraded" | "unhealthy" | "failed" | "recovering" | "unknown"` vocabulary belongs to the report's own top-level -`status`, never to an entry inside `checks`. Each entry is named after the -plugin's configured `checkMethod`, or `"plugin-loaded"` when a plugin configures -none. `metrics.uptime` is in **milliseconds** (`Date.now() - startTime`), unlike +`status`, never to an entry inside `checks`. An entry's `name` is one of three: + +| Entry `name` | Pushed when | +| :--- | :--- | +| the plugin's configured `checkMethod` | the custom check ran and returned — `"passed"`, or `"failed"` for the two failing shapes above | +| `"plugin-loaded"` | no `checkMethod` is configured, **or** the configured name does not resolve to a function on the plugin | +| `"health-check"` | the check **threw** — a `timeout` overrun included, since the race surfaces it as a rejection. A fixed name, neither the method's nor the default's, and always `status: "failed"` | + +`metrics.uptime` is in **milliseconds** (`Date.now() - startTime`), unlike the seconds-valued `uptime` of `GET /health` above, and the report carries no `version` field — it identifies its plugin by the key it is stored under. The optional `message` is set only when a check fails; the schema's remaining