{
 "version": "https://jsonfeed.org/version/1.1",
 "title": "Enterium developer docs — release notes",
 "home_page_url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/",
 "feed_url": "https://enterium-developer-docs.pages.dev/developers/changelog.json",
 "description": "Consumer-facing changes of the developer portal, the REST API and the agent capability surface.",
 "items": [
  {
   "id": "portal:2026-09-07:Machine map under /api/, HEAD on probes, cleaner contract and API-host index",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-09-07--machine-map-under-api-head-on-probes-cleaner-contract-and-api-host-index",
   "title": "Machine map under /api/, HEAD on probes, cleaner contract and API-host index",
   "date_published": "2026-09-07T00:00:00Z",
   "tags": [
    "portal",
    "added",
    "changed"
   ],
   "content_html": "<h3>Added</h3><ul><li>The machine-readable map of the API is reachable at `/api/` (and `/api`) on every host; `GET /` keeps answering it where the edge routes the root to the API.</li><li>Public probes and documentation URLs answer `HEAD` (`/healthz`, `/status.json`, `/api/status.json`, `/llms.txt`, `/mcp-info`, `/reference`, `/redoc`).</li><li>`robots.txt` on the API host and honest `404` for stray root-level documents; `/developers/` on the API host answers a real `301` like the mirror.</li></ul><h3>Changed</h3><ul><li>The API host's own `/llms.txt` now describes the current surface (three MCP mounts, the error envelope, the read-only mount) and points at the portal index; the docs MCP reports the platform build as its version.</li><li>Contract descriptions no longer name source files, fleet sites or internal process; the owner-only Telegram Mini App endpoints left the public contract.</li><li>Docs MCP `search` ranks guides above generated reference pages and ignores stop-words, so natural questions find the right page first.</li><li>The MCP onboarding page fits a phone screen; release notes carry consumer-facing titles.</li><li>The machine map's links are public ones (`/mcp-info`, the portal); the contract lists only the production server and only tags that carry operations.</li><li>Docs MCP: `fetch` and `search` report a miss as an MCP error (`isError`), and the search stems inflected words (`authenticate` finds *Authentication*).</li><li>Markdown twins of per-operation pages resolve on case-sensitive hosts (slugs are lower-case); the landing tagline states what the MCP covers.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "The machine-readable map of the API is reachable at `/api/` (and `/api`) on every host; `GET /` keeps answering it where the edge routes the root to the API.",
      "Public probes and documentation URLs answer `HEAD` (`/healthz`, `/status.json`, `/api/status.json`, `/llms.txt`, `/mcp-info`, `/reference`, `/redoc`).",
      "`robots.txt` on the API host and honest `404` for stray root-level documents; `/developers/` on the API host answers a real `301` like the mirror."
     ],
     "changed": [
      "The API host's own `/llms.txt` now describes the current surface (three MCP mounts, the error envelope, the read-only mount) and points at the portal index; the docs MCP reports the platform build as its version.",
      "Contract descriptions no longer name source files, fleet sites or internal process; the owner-only Telegram Mini App endpoints left the public contract.",
      "Docs MCP `search` ranks guides above generated reference pages and ignores stop-words, so natural questions find the right page first.",
      "The MCP onboarding page fits a phone screen; release notes carry consumer-facing titles.",
      "The machine map's links are public ones (`/mcp-info`, the portal); the contract lists only the production server and only tags that carry operations.",
      "Docs MCP: `fetch` and `search` report a miss as an MCP error (`isError`), and the search stems inflected words (`authenticate` finds *Authentication*).",
      "Markdown twins of per-operation pages resolve on case-sensitive hosts (slugs are lower-case); the landing tagline states what the MCP covers."
     ]
    }
   }
  },
  {
   "id": "portal:2026-09-03:Per-operation reference, typed MCP answers, read-only and docs MCP, status and release notes",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-09-03--per-operation-reference-typed-mcp-answers-read-only-and-docs-mcp-status-and-release-notes",
   "title": "Per-operation reference, typed MCP answers, read-only and docs MCP, status and release notes",
   "date_published": "2026-09-03T00:00:00Z",
   "tags": [
    "portal",
    "added",
    "changed"
   ],
   "content_html": "<h3>Added</h3><ul><li>One page per REST operation (request curl → response → returns → parameters with defaults and constraints), generated from the frozen contract; the tag pages link to them.</li><li>Field-level `Returns` tables on every MCP tool page, from the tools' declared `outputSchema`; the tools index shows the three mount points.</li><li>Read-only MCP mount `/mcp/readonly/` (same token, read tools only) and the token-less docs MCP `/mcp/docs/` (`search` / `fetch` / `submit_feedback`), with one-step connect commands for Claude Code, Cursor and VS Code.</li><li>Error envelope: every 4xx/5xx body now carries `request_id` and `doc_url`; the Errors reference is anchored per status code and lists what to do.</li><li>Idempotency, Versions and Release notes pages; `changelog.json` (JSON Feed 1.1) as the machine-readable changelog.</li><li>Public `/api/status.json` in the Statuspage v2 shape and a live status block on the Platform status page.</li><li>Skills catalog `/.well-known/agent-skills/index.json` with an installable `SKILL.md` on integrating over REST and MCP; `search-index.json` for tool-based search.</li></ul><h3>Changed</h3><ul><li>The landing page opens with a hero and three entry chips (Quickstart · Connecting to MCP · API reference).</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "One page per REST operation (request curl → response → returns → parameters with defaults and constraints), generated from the frozen contract; the tag pages link to them.",
      "Field-level `Returns` tables on every MCP tool page, from the tools' declared `outputSchema`; the tools index shows the three mount points.",
      "Read-only MCP mount `/mcp/readonly/` (same token, read tools only) and the token-less docs MCP `/mcp/docs/` (`search` / `fetch` / `submit_feedback`), with one-step connect commands for Claude Code, Cursor and VS Code.",
      "Error envelope: every 4xx/5xx body now carries `request_id` and `doc_url`; the Errors reference is anchored per status code and lists what to do.",
      "Idempotency, Versions and Release notes pages; `changelog.json` (JSON Feed 1.1) as the machine-readable changelog.",
      "Public `/api/status.json` in the Statuspage v2 shape and a live status block on the Platform status page.",
      "Skills catalog `/.well-known/agent-skills/index.json` with an installable `SKILL.md` on integrating over REST and MCP; `search-index.json` for tool-based search."
     ],
     "changed": [
      "The landing page opens with a hero and three entry chips (Quickstart · Connecting to MCP · API reference)."
     ]
    }
   }
  },
  {
   "id": "capability:2026-09-03.1",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-09-031",
   "title": "Agent capability 2026-09-03.1",
   "date_published": "2026-09-03T00:00:00Z",
   "tags": [
    "capability",
    "added",
    "changed"
   ],
   "content_html": "<h3>Added</h3><ul><li>Read-only MCP mount at /mcp/readonly/ — same bearer token, but only the tools with readOnlyHint=true are listed and callable (start_here, list_domains, my_capabilities, entherium_list_tasks, entherium_get_task, entherium_list_defects, entherium_search_chat). Use it as the default for evaluation and for clients that must never write; the full server stays at /mcp/.</li><li>Every MCP tool now declares an outputSchema: results arrive as structuredContent with typed fields (e.g. list_tasks → {total, tasks[{task_id, title, status, assignee, spec_ref, description, updated_at, note_count, last_note_at}]}); the write tools answer a typed ack {accepted, error?, task_id?}. Field-level tables are on each tool's page in the developer docs.</li></ul><h3>Changed</h3><ul><li>Tools carry tags (read / write) alongside the annotations; a client can group them without inspecting hints.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "Read-only MCP mount at /mcp/readonly/ — same bearer token, but only the tools with readOnlyHint=true are listed and callable (start_here, list_domains, my_capabilities, entherium_list_tasks, entherium_get_task, entherium_list_defects, entherium_search_chat). Use it as the default for evaluation and for clients that must never write; the full server stays at /mcp/.",
      "Every MCP tool now declares an outputSchema: results arrive as structuredContent with typed fields (e.g. list_tasks → {total, tasks[{task_id, title, status, assignee, spec_ref, description, updated_at, note_count, last_note_at}]}); the write tools answer a typed ack {accepted, error?, task_id?}. Field-level tables are on each tool's page in the developer docs."
     ],
     "changed": [
      "Tools carry tags (read / write) alongside the annotations; a client can group them without inspecting hints."
     ]
    }
   }
  },
  {
   "id": "portal:2026-09-02:Contract examples, one error schema, discovery layer and page badges",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-09-02--contract-examples-one-error-schema-discovery-layer-and-page-badges",
   "title": "Contract examples, one error schema, discovery layer and page badges",
   "date_published": "2026-09-02T00:00:00Z",
   "tags": [
    "portal",
    "added",
    "changed",
    "fixed"
   ],
   "content_html": "<h3>Added</h3><ul><li>Request and response examples on the key contract schemas; a single `ErrorResponse` shape and declared 409/429 codes where they are raised.</li><li>MCP tool annotations (`title`, `readOnlyHint`, `destructiveHint`, `idempotentHint`) and parameter descriptions on every tool.</li><li>llms.txt v2 link relations in every page head and in the mirror's `Link` headers; `/.well-known/llms.txt` and the RFC 9727 `/.well-known/api-catalog`.</li><li>`agents.md`; status / access / contract-version badges and View-as-Markdown / Open-in-assistant actions on every page; Russian twins for the generated reference pages.</li></ul><h3>Changed</h3><ul><li>Public surface hygiene: internal identifiers, vendor names and fictional example instances removed from the contract, the docs and `llms.txt`; the pipeline catalog no longer lists inference vendors.</li><li>Security headers on the documentation mirror.</li></ul><h3>Fixed</h3><ul><li>Token-mint path and the `openapi.json` link resolve correctly from every locale; favicon on all pages.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "Request and response examples on the key contract schemas; a single `ErrorResponse` shape and declared 409/429 codes where they are raised.",
      "MCP tool annotations (`title`, `readOnlyHint`, `destructiveHint`, `idempotentHint`) and parameter descriptions on every tool.",
      "llms.txt v2 link relations in every page head and in the mirror's `Link` headers; `/.well-known/llms.txt` and the RFC 9727 `/.well-known/api-catalog`.",
      "`agents.md`; status / access / contract-version badges and View-as-Markdown / Open-in-assistant actions on every page; Russian twins for the generated reference pages."
     ],
     "changed": [
      "Public surface hygiene: internal identifiers, vendor names and fictional example instances removed from the contract, the docs and `llms.txt`; the pipeline catalog no longer lists inference vendors.",
      "Security headers on the documentation mirror."
     ],
     "fixed": [
      "Token-mint path and the `openapi.json` link resolve correctly from every locale; favicon on all pages."
     ]
    }
   }
  },
  {
   "id": "portal:2026-08-28:Public mirror",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-08-28--public-mirror",
   "title": "Public mirror",
   "date_published": "2026-08-28T00:00:00Z",
   "tags": [
    "portal",
    "added"
   ],
   "content_html": "<h3>Added</h3><ul><li>The portal is published on a public mirror with canonical URLs and social previews; the same build is served from the API host under `/developers/`.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "The portal is published on a public mirror with canonical URLs and social previews; the same build is served from the API host under `/developers/`."
     ]
    }
   }
  },
  {
   "id": "capability:2026-07-24.2",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-07-242",
   "title": "Agent capability 2026-07-24.2",
   "date_published": "2026-07-24T00:00:00Z",
   "tags": [
    "capability",
    "changed"
   ],
   "content_html": "<h3>Changed</h3><ul><li>`entherium_search_chat` now requires the `read_all` GLOBAL capability (agent_global_grant) — the work-chat archive is internal cross-contract team traffic. Team agents keep access via a granted `read_all`; client-scoped tokens get a truthful 'not authorized' payload.</li><li>Platform-wide read-all is PER-TOKEN now: the AGENT_READ_ALL env flag remains a global kill-switch, but each agent token also needs the `read_all` capability in its agent_global_grant row. Tokens without it read only their contract pool (client-scoped read-only tokens,.</li></ul>",
   "_enterium": {
    "sections": {
     "changed": [
      "`entherium_search_chat` now requires the `read_all` GLOBAL capability (agent_global_grant) — the work-chat archive is internal cross-contract team traffic. Team agents keep access via a granted `read_all`; client-scoped tokens get a truthful 'not authorized' payload.",
      "Platform-wide read-all is PER-TOKEN now: the AGENT_READ_ALL env flag remains a global kill-switch, but each agent token also needs the `read_all` capability in its agent_global_grant row. Tokens without it read only their contract pool (client-scoped read-only tokens,."
     ]
    }
   }
  },
  {
   "id": "capability:2026-07-24.1",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-07-241",
   "title": "Agent capability 2026-07-24.1",
   "date_published": "2026-07-24T00:00:00Z",
   "tags": [
    "capability",
    "added"
   ],
   "content_html": "<h3>Added</h3><ul><li>The docs portal's How-it-works series grew from 5 to 19 deep-dive pages (engineering showcase): source discovery, ontologies & filtering, the writing framework, copywriting evaluation, scoring systems, media generation, publishing & the site fleet, SEO methodology & authorship, SEO analytics, the topic feedback loop, nightly orchestration, the run engine, observability & alerting, localization — in English and Russian, with structural/timing diagrams. The `docs://portal` resource now maps every deep dive individually (keys `hiw_*`): when a user asks HOW a mechanism works, hand them that page's html link and fetch the md twin yourself.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "The docs portal's How-it-works series grew from 5 to 19 deep-dive pages (engineering showcase): source discovery, ontologies & filtering, the writing framework, copywriting evaluation, scoring systems, media generation, publishing & the site fleet, SEO methodology & authorship, SEO analytics, the topic feedback loop, nightly orchestration, the run engine, observability & alerting, localization — in English and Russian, with structural/timing diagrams. The `docs://portal` resource now maps every deep dive individually (keys `hiw_*`): when a user asks HOW a mechanism works, hand them that page's html link and fetch the md twin yourself."
     ]
    }
   }
  },
  {
   "id": "capability:2026-07-23.1",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-07-231",
   "title": "Agent capability 2026-07-23.1",
   "date_published": "2026-07-23T00:00:00Z",
   "tags": [
    "capability",
    "added"
   ],
   "content_html": "<h3>Added</h3><ul><li>Developer documentation portal: https://enterium-developer-docs.pages.dev/developers/ — platform concepts, guides, REST API and MCP reference, for humans AND agents. Machine entry points: https://enterium-developer-docs.pages.dev/developers/llms.txt (curated map), https://enterium-developer-docs.pages.dev/developers/llms-full.txt (all docs as one Markdown), and a Markdown twin of EVERY page at &lt;route>.md (fetch twins, not HTML). New MCP resource `docs://portal` returns the section map. When a USER asks how the platform works or where to see something, give them the portal URL for that topic — they can open it in a browser and see it with their own eyes.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "Developer documentation portal: https://enterium-developer-docs.pages.dev/developers/ — platform concepts, guides, REST API and MCP reference, for humans AND agents. Machine entry points: https://enterium-developer-docs.pages.dev/developers/llms.txt (curated map), https://enterium-developer-docs.pages.dev/developers/llms-full.txt (all docs as one Markdown), and a Markdown twin of EVERY page at <route>.md (fetch twins, not HTML). New MCP resource `docs://portal` returns the section map. When a USER asks how the platform works or where to see something, give them the portal URL for that topic — they can open it in a browser and see it with their own eyes."
     ]
    }
   }
  },
  {
   "id": "portal:2026-07-17:Developer portal launched",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-07-17--developer-portal-launched",
   "title": "Developer portal launched",
   "date_published": "2026-07-17T00:00:00Z",
   "tags": [
    "portal",
    "added"
   ],
   "content_html": "<h3>Added</h3><ul><li>Platform concepts, guides, how-it-works deep dives, REST API reference generated from the contract, MCP tools reference generated from the server, `llms.txt` / `llms-full.txt`, Markdown twins of every page, `manifest.json` change detection.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "Platform concepts, guides, how-it-works deep dives, REST API reference generated from the contract, MCP tools reference generated from the server, `llms.txt` / `llms-full.txt`, Markdown twins of every page, `manifest.json` change detection."
     ]
    }
   }
  },
  {
   "id": "capability:2026-07-14.2",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-07-142",
   "title": "Agent capability 2026-07-14.2",
   "date_published": "2026-07-14T00:00:00Z",
   "tags": [
    "capability",
    "added",
    "changed"
   ],
   "content_html": "<h3>Added</h3><ul><li>You can now READ the task/defect board — you are no longer writing blind. `entherium_list_tasks(status?, assignee?)` lists tasks with their STATUS; `entherium_get_task(task_id)` returns one task IN FULL incl. its update log (who / what / when — every status change, reassign, spec-retarget and note, in time order); `entherium_list_defects(status?, severity?)` lists defects + incidents. Needs the `manage_task` capability. CALL `entherium_list_tasks` / `entherium_list_defects` BEFORE creating a task or filing a defect, to check it does not already exist (no duplicates).</li></ul><h3>Changed</h3><ul><li>The web board GET stays human-only; the agent's read channel is these three MCP tools.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "You can now READ the task/defect board — you are no longer writing blind. `entherium_list_tasks(status?, assignee?)` lists tasks with their STATUS; `entherium_get_task(task_id)` returns one task IN FULL incl. its update log (who / what / when — every status change, reassign, spec-retarget and note, in time order); `entherium_list_defects(status?, severity?)` lists defects + incidents. Needs the `manage_task` capability. CALL `entherium_list_tasks` / `entherium_list_defects` BEFORE creating a task or filing a defect, to check it does not already exist (no duplicates)."
     ],
     "changed": [
      "The web board GET stays human-only; the agent's read channel is these three MCP tools."
     ]
    }
   }
  },
  {
   "id": "capability:2026-07-14.1",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-07-141",
   "title": "Agent capability 2026-07-14.1",
   "date_published": "2026-07-14T00:00:00Z",
   "tags": [
    "capability",
    "added"
   ],
   "content_html": "<h3>Added</h3><ul><li>The `chat` domain — the team's WORK-CHAT is now archived in the platform and searchable: `entherium_search_chat(query, chat='work', author?, since_days?)` returns real replies (author, verbatim text, date). USE IT to gather CONTEXT before filing a task/defect from a chat request, and to clarify an existing one — who asked, in WHICH WORDS. A message with `is_full: false` is TRUNCATED and must NOT be quoted verbatim. Secrets are redacted.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "The `chat` domain — the team's WORK-CHAT is now archived in the platform and searchable: `entherium_search_chat(query, chat='work', author?, since_days?)` returns real replies (author, verbatim text, date). USE IT to gather CONTEXT before filing a task/defect from a chat request, and to clarify an existing one — who asked, in WHICH WORDS. A message with `is_full: false` is TRUNCATED and must NOT be quoted verbatim. Secrets are redacted."
     ]
    }
   }
  },
  {
   "id": "capability:2026-07-13.2",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-07-132",
   "title": "Agent capability 2026-07-13.2",
   "date_published": "2026-07-13T00:00:00Z",
   "tags": [
    "capability",
    "added"
   ],
   "content_html": "<h3>Added</h3><ul><li>Traceability: tasks AND defects can now TARGET a platform feature by its SPEC id (`spec_ref` = \"SPEC-NNN\"). Pass `spec_ref` to `entherium_create_task` / `entherium_report_defect`, or retarget a task via the new `entherium_target_task_spec` tool. An unknown spec id is REJECTED (never silently unset). Tag work to the right spec so the platform context stays coherent.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "Traceability: tasks AND defects can now TARGET a platform feature by its SPEC id (`spec_ref` = \"SPEC-NNN\"). Pass `spec_ref` to `entherium_create_task` / `entherium_report_defect`, or retarget a task via the new `entherium_target_task_spec` tool. An unknown spec id is REJECTED (never silently unset). Tag work to the right spec so the platform context stays coherent."
     ]
    }
   }
  },
  {
   "id": "capability:2026-07-13.1",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-07-131",
   "title": "Agent capability 2026-07-13.1",
   "date_published": "2026-07-13T00:00:00Z",
   "tags": [
    "capability",
    "added"
   ],
   "content_html": "<h3>Added</h3><ul><li>The `tasks` domain — create / assign / close TASKS for team members via the MCP tools `entherium_create_task` (returns the task_id), `entherium_update_task_status`, `entherium_reassign_task`, `entherium_log_task_note`. Requires the `manage_task` capability; give `assignee` as a person's NAME. The read-only board is human-only.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "The `tasks` domain — create / assign / close TASKS for team members via the MCP tools `entherium_create_task` (returns the task_id), `entherium_update_task_status`, `entherium_reassign_task`, `entherium_log_task_note`. Requires the `manage_task` capability; give `assignee` as a person's NAME. The read-only board is human-only."
     ]
    }
   }
  },
  {
   "id": "capability:2026-07-09.1",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-07-091",
   "title": "Agent capability 2026-07-09.1",
   "date_published": "2026-07-09T00:00:00Z",
   "tags": [
    "capability",
    "added"
   ],
   "content_html": "<h3>Added</h3><ul><li>The `tickets` domain — file a defect via the MCP tool `entherium_report_defect`, or an improvement via `entherium_propose_improvement` (or POST /api/v1/tickets). Give FULL QA detail: steps_to_reproduce/expected/actual/evidence for a defect; problem/proposed_change/benefit for a suggestion. Low-detail reports are quarantined, not tracked. Write-only: a bare 202, nothing comes back.</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "The `tickets` domain — file a defect via the MCP tool `entherium_report_defect`, or an improvement via `entherium_propose_improvement` (or POST /api/v1/tickets). Give FULL QA detail: steps_to_reproduce/expected/actual/evidence for a defect; problem/proposed_change/benefit for a suggestion. Low-detail reports are quarantined, not tracked. Write-only: a bare 202, nothing comes back."
     ]
    }
   }
  },
  {
   "id": "capability:2026-07-08.1",
   "url": "https://enterium-developer-docs.pages.dev/developers/reference/release-notes/#2026-07-081",
   "title": "Agent capability 2026-07-08.1",
   "date_published": "2026-07-08T00:00:00Z",
   "tags": [
    "capability",
    "added"
   ],
   "content_html": "<h3>Added</h3><ul><li>GET /api/v1/errors — the durable error sink is now readable with a read-only token: source / operation / exc_type of recent failures. Read this for WHY a run failed instead of inferring failure rates from run counts.</li><li>The `errors` domain now appears in list_domains / llms.txt / GET / (discovery map).</li></ul>",
   "_enterium": {
    "sections": {
     "added": [
      "GET /api/v1/errors — the durable error sink is now readable with a read-only token: source / operation / exc_type of recent failures. Read this for WHY a run failed instead of inferring failure rates from run counts.",
      "The `errors` domain now appears in list_domains / llms.txt / GET / (discovery map)."
     ]
    }
   }
  }
 ],
 "_enterium": {
  "capability_version": "2026-09-03.1",
  "portal_version": "0.2.0"
 }
}
