## [5.9.0] 2026-09-28

- [Added] 新增 `ERROR_TYPES` 标准错误类型表（6 条），`CloudBaseError` 构造器支持 `type` 选项（优先决定 `code` / `source` 且不可被调用方覆盖），helper 改引 `ERROR_TYPES`
- [Added] error-docs：自造码按层登记页定位（`source` 为 `cli` / `toolbox` / `manager-node` 时返回 `/error-code/<layer>#<小写码名>` 锚点），manager-node 软降级白名单收敛为层级登记页（`ready: true`）
- [Added] 错误对象契约统一与无 `code` 抛错清零：新增 `CloudBaseError.toJSON()`、`ErrorSource` 联合类型（含 `'toolbox'`）、`isCloudBaseError` / `isValidErrorCode` 识别；171 处原生 `throw new Error` 收敛为统一辅助函数，storage 批量删除补 `code` + `source` + `details`
- [Added] 升级 `@cloudbase/toolbox` 至 `~0.9.0`
- [Added] 更新云函数与云托管集成测试：轮询等待替代固定 sleep，jest 超时统一抬至 10 分钟，新增 `waitUntil` / `waitForSandboxToolSettled` 等辅助函数并补充失败态快速失败诊断
- [Fixed] 修复 `function` 模块必抛 helper 误用于值位置（`reject(throwNetError(...))`）导致 Promise 永不 settle 的回归，改为值位置构造 `new CloudBaseError(msg, { type: ERROR_TYPES.netError })`
- [Fixed] `error`: `toJSON()` 输出层将数值码归一化为字符串（如 `876` ⇒ `"876"`），对象上 `code` 保持保真；`NaN` / `±Infinity` 兜底为 `ERROR`
- [Fixed] `error`: 补 ES5 原型兜底（`Object.setPrototypeOf(this, CloudBaseError.prototype)`），避免第三方降级编译时丢失原型链
- [Fixed] 按代码评审修复多处问题：`aiModel` 抽 `MODEL_STATUS` 常量；`environment` / `cloud-api-request` 拼写 `authoration` → `authorization`；`user` 校验改真值判断；`function` 的 `error: any` → `unknown` 并改用 `WeakMap` 缓存幂等标记；`sandbox` 的 `customConfiguration` / `DNSConfig` 改真值判断避免空指针
- [Fixed] `review`: 响应评审修复 `deploy` 报告不自洽时 `failures[0].id` 空指针；`permission` 的 `description` 改用 `typeof === 'string'` 收窄；`function` 去掉 `as any` 断言并收紧 `isRetryableError` 重试判定
- [Fixed] `deploy`: 镜像 `latest` 标签由拦截（`fail`）降级为提示（`warn`），平台允许 `latest` 属次优而非必然失败
- [Fixed] `error`: 企业版镜像排查指引幂等判断由依赖 `message` 文本改为标记位，避免文本被改动后重复追加
- [Fixed] `error`: 治理 D14/D15/D16/D22 — TCR 权限错误透传上游；触发器创建仅重试可重试错误；`waitFunctionActive` 容忍创建期 `NOT_FOUND`；`toJSON()` 输出 `stack`
- [Refactor] `error`: 抛错 helper 统一改名为 `throwXxx` 形态（如 `invalidParam` → `throwInvalidParam`），调用点即知会中断，共 494 处 / 35 文件
