ai-robot-channel/spec/contracting.md

66 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# contracting.mdai 必须遵守:契约成熟度与门禁规则)
本文件仅包含**编码智能体必须遵守**的契约约束与门禁规则(面向执行与校验)。
> 约定:若本文件与 `agents.md` 冲突,以 `agents.md` 为准;若本文件与 `spec/<module>/requirements.md` 或 OpenAPI 契约冲突,必须先修正文档再编码,禁止猜测。
---
## 1. 文件与字段硬约束
- 本模块的 OpenAPI 契约拆分为:
- `openapi.provider.yaml`:本模块对外提供的 APIprovider
- `openapi.deps.yaml`:本模块依赖的外部 API 契约consumer 需求侧)
- 两份 OpenAPI 都必须在 `info` 下声明成熟度(全局标记,不按 operation 级):
- `info.x-contract-level: L0 | L1 | L2 | L3`
- provider 端接口(建议强制):
- `operationId` 必须存在且在同文件内唯一
- 应通过 `x-requirements: [AC-...]` 或 requirements 的 traceability 表建立 AC 追踪
---
## 2. 契约成熟度L0-L3最低要求
- **L0占位/可 mock**:允许 schema 粗粒度;仅用于并行启动与 mock。
- **L1可调用/可生成 sdk**:关键请求/响应字段 required/optional 明确;基本状态码集合明确。
- **L2可验收/可契约测试)**:关键字段校验规则与错误语义稳定;可进行 provider-driven schema 校验。
- **L3可演进/可兼容治理)**:具备兼容策略与示例;可治理 breaking change。
---
## 3. 细化路径(粗 → 细)执行规则
- 新增/调整 **AC** 会驱动契约细化;任何字段/错误语义/校验规则的新增,必须能追溯到某条 `AC-*`
- 当实现准备进入可合并状态(尤其是自动合并)时,必须先把 `openapi.provider.yaml` 提升到 **L2**
---
## 4. 门禁规则(软/硬)
### 4.1 feature 分支(软门禁)
允许:
- 使用 `openapi.deps.yaml (L0/L1+)` 生成 mock/sdks推进调用方开发。
禁止:
- 未满足 `openapi.provider.yaml >= L2` 的情况下,将 provider 实现以“自动合并”方式进入 main。
### 4.2 main 分支(硬门禁)
满足以下条件前,禁止合并(或禁止自动合并):
- `openapi.provider.yaml >= L2`
- 契约测试通过(响应符合 openapi schema
- openapi diff 检查通过(无未声明 breaking change
- 需求追踪检查通过AC 引用未断裂)
---
## 5. 最小检查清单(编码智能体自检)
- [ ] openapi 文件可解析
- [ ] `info.x-contract-level`存在且为 L0-L3
- [ ] provider: operationId 唯一
- [ ] provider: 能追踪到 ACx-requirements 或 traceability