Mark WAVE0 FROZEN CANDIDATE for Human Review; docs + .ai domain/product only — no apps or migrations. Co-authored-by: Cursor <cursoragent@cursor.com>
2.3 KiB
2.3 KiB
OPS Contract Template(L0–L4 · Loop 强制)
Wave 0 · 每张实现向 ECR / Feature Spec 编码前必须填满
路径:docs/WAVE0/contracts/OPS-CONTRACT-TEMPLATE.md
复制为:docs/PRODUCT_SPEC/ECR-xxx-<slug>.md 或 Feature Spec 内嵌同等章节。
Meta
| 字段 | 值 |
|---|---|
| ECR | |
| Status | Draft | Approved |
| Capability (L0) | 例:AdminGovernance |
| Bounded Context (L1) | 例:Admin_RBAC |
| Change Level | L2 | L3 |
L0 Capability
| 字段 | 内容 |
|---|---|
| Capability ID | |
| Purpose(一句话业务能力) | |
| Why now | |
| Non-goals |
禁止写页面/按钮清单。
L1 Bounded Context
| 字段 | 内容 |
|---|---|
| Primary BC | |
| owns / does_not_own | 引用或摘录 boundary-rules.md |
| allowed / forbidden deps |
L2 Domain
| Entity | 不变式 / 状态机 |
|---|---|
Glossary 词必须已在 .ai/domain/glossary.yaml 登记。
L3 API Contract
| Method | Path | 语义 |
|---|---|---|
- OpenAPI:
proto/openapi.yaml同步意图 - BD:
docs/BACKEND_DESIGN/BD-*-*.md - 必交
contract_diff模板 → 实例:docs/CONTRACT_DIFF/ECR-xxx.yaml
信封:{code,message,data}。Admin ≠ DeviceAuth。
L4 Acceptance Criteria
每个 AC 必须有稳定 ID(如 AC-F-01)。
Functional AC
| ID | Given | When | Then |
|---|---|---|---|
| AC-F-01 |
Security AC
| ID | Given | When | Then |
|---|---|---|---|
| AC-S-01 | Admin 无权限 | 调用 API | 403 且 AuditLog 有记录 |
Performance AC
| ID | Given | When | Then |
|---|---|---|---|
| AC-P-01 | N=(写明) | 打开 admin 列表 | P95 <(写明)ms |
Observability AC
| ID | Given | When | Then |
|---|---|---|---|
| AC-O-01 | 状态迁移发生 | — | AuditLog 存在;若有 trace 则含 trace_id |
危机类另加 Safety AC(独立节,不在本通用表省略生命安全)。
Evidence(实现后)
- TEST_REPORT 映射全部 AC-ID
- contract_diff.breaking_change 解释完毕
- Reviewer 核对 boundary-rules
Forbidden(本切片)
显式列出:真支付 / UGC / 其他 Capability 偷渡项。