# 错误码契约（manager-node · 本仓指引）

**规则的唯一来源** → `cloudbase-cli/specs/error-rules.md`（**改规则只改那一处**；本文件只写**本仓差异**）。

## 本仓差异

- **字段**：三仓应有项全有（含 `docs`、`meta`）+ **本仓专属 `meta.failures`**（多项失败明细登记，见 rules §5）
- **`docs`**：`this.docs = opts.docs ?? resolveErrorDoc(this.code, this.source)`（**类内派生**，依赖本仓 `src/error-docs.ts`）
  > ⚠️ 映射表**只在本仓并不充分**：TB 侧错误拿不到 `docs` ⇒ 按判据 C 应走**单一来源**（文档站生成）或下沉共享基座；本仓不应成为映射表唯一归属点
- **机制**：有 `isCloudBaseError` / `isValidErrorCode` / 8 个 helper（含 `throwCredentialError`）；**缺 `errorSourceOf`**（R3 前置，待对齐）
- **守卫**：`test/error.test.ts`（burn-down 平衡括号 + 码表）、`test/error-no-code-baseline.json`（`{}`）
- **本仓特殊约定**：错误对象是**对外 API**（CLI / MCP / 第三方 SDK 直接读 `.code` / `.docs` / `.meta`）⇒ 字段增删按 §3 冻结形状处理，不随基座版本漂移
- **新增自造码 ⇒ 必须同步文档站**：到 `cloudbase-docs` 跑 `node scripts/generate-sdk-error-code-pages.mjs`（分层登记页由生成器产出，**勿手工建页**、**勿加进 `basic.md`**；详见该仓 `.codebuddy/skills/error-code-manager`）
