@wneng/create-keel 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/templates/ci-gitee/files/PULL_REQUEST_TEMPLATE.md +15 -2
- package/src/templates/ci-github/files/PULL_REQUEST_TEMPLATE.md +15 -2
- package/src/templates/docs-skeleton/files/governance-change-tiers.md +135 -76
- package/src/templates/root-files/files/AGENTS.md +29 -15
package/package.json
CHANGED
|
@@ -18,13 +18,26 @@
|
|
|
18
18
|
- [ ] **Tier 4** architecture / breaking — 跨服务 / 鉴权变化 / 删字段。已附 ADR + 详细设计 + 迁移 / 回滚预案
|
|
19
19
|
- [ ] **Tier 5** spike — 探索性改动。分支为 `spike/*`,**不会**合入 `main`(合入需重新走 Tier 1-4)
|
|
20
20
|
|
|
21
|
+
## 文档投入(Doc Weight)
|
|
22
|
+
|
|
23
|
+
> 与 Tier 正交。AI 推荐默认值,作者可覆盖。详见 `docs/governance/change-tiers.md` §3。
|
|
24
|
+
>
|
|
25
|
+
> **AI 推荐**:Tier 0/1/2/3 默认 lite;Tier 4 默认 standard;Tier 5 默认 lite。**勾选一项**。
|
|
26
|
+
|
|
27
|
+
- [ ] **lite** — PR 描述自身即文档(含动机 / 方案 / 影响面)。Tier 3 时还要契约 diff + CHANGELOG + 锚点;Tier 4 时还要 ADR
|
|
28
|
+
- [ ] **standard** — lite 之上 + 简短 04 / 05 设计(每份 2-3 段);Tier 4 时还要迁移 / 回滚预案
|
|
29
|
+
- [ ] **full** — standard 之上 + PRD(`docs/01/prd-<slug>.md`);如涉及前端还要 UI 稿
|
|
30
|
+
|
|
31
|
+
> **关键**:Tier 3(加 API / 字段)默认 lite——契约 diff 本身就是设计真值。仅在业务复杂度高(多状态机、跨服务、跨团队)时才升 standard / full;reviewer **不应**仅因"没写设计文档"而打回 Tier 3 + lite 的 PR。
|
|
32
|
+
|
|
21
33
|
## 关联引用
|
|
22
34
|
|
|
23
|
-
<!-- Tier 0/1/2 可省略;Tier 3+
|
|
35
|
+
<!-- Tier 0/1/2 可省略;Tier 3+ 必须填契约锚点;standard / full 还要填 04/05/PRD -->
|
|
24
36
|
|
|
25
37
|
- 契约锚点:`contracts/openapi/api.yaml#/paths/...` 或 `contracts/events/event-catalog.yaml#/events/...`
|
|
26
|
-
-
|
|
38
|
+
- 设计文档(standard / full 时填):`docs/04-后端详细设计/<slug>.md` 或 `docs/05-前端客户端详细设计/<slug>-<platform>.md`
|
|
27
39
|
- ADR(Tier 4 必填):`docs/02-系统方案与架构/adr-<NNNN>-<slug>.md`
|
|
40
|
+
- PRD(full 时填):`docs/01-背景与需求/prd-<slug>.md`
|
|
28
41
|
- spec:`.kiro/specs/<feature>/`(如适用)
|
|
29
42
|
|
|
30
43
|
## 变更类型
|
|
@@ -18,13 +18,26 @@
|
|
|
18
18
|
- [ ] **Tier 4** architecture / breaking — 跨服务 / 鉴权变化 / 删字段。已附 ADR + 详细设计 + 迁移 / 回滚预案
|
|
19
19
|
- [ ] **Tier 5** spike — 探索性改动。分支为 `spike/*`,**不会**合入 `main`(合入需重新走 Tier 1-4)
|
|
20
20
|
|
|
21
|
+
## 文档投入(Doc Weight)
|
|
22
|
+
|
|
23
|
+
> 与 Tier 正交。AI 推荐默认值,作者可覆盖。详见 `docs/governance/change-tiers.md` §3。
|
|
24
|
+
>
|
|
25
|
+
> **AI 推荐**:Tier 0/1/2/3 默认 lite;Tier 4 默认 standard;Tier 5 默认 lite。**勾选一项**。
|
|
26
|
+
|
|
27
|
+
- [ ] **lite** — PR 描述自身即文档(含动机 / 方案 / 影响面)。Tier 3 时还要契约 diff + CHANGELOG + 锚点;Tier 4 时还要 ADR
|
|
28
|
+
- [ ] **standard** — lite 之上 + 简短 04 / 05 设计(每份 2-3 段);Tier 4 时还要迁移 / 回滚预案
|
|
29
|
+
- [ ] **full** — standard 之上 + PRD(`docs/01/prd-<slug>.md`);如涉及前端还要 UI 稿
|
|
30
|
+
|
|
31
|
+
> **关键**:Tier 3(加 API / 字段)默认 lite——契约 diff 本身就是设计真值。仅在业务复杂度高(多状态机、跨服务、跨团队)时才升 standard / full;reviewer **不应**仅因"没写设计文档"而打回 Tier 3 + lite 的 PR。
|
|
32
|
+
|
|
21
33
|
## 关联引用
|
|
22
34
|
|
|
23
|
-
<!-- Tier 0/1/2 可省略;Tier 3+
|
|
35
|
+
<!-- Tier 0/1/2 可省略;Tier 3+ 必须填契约锚点;standard / full 还要填 04/05/PRD -->
|
|
24
36
|
|
|
25
37
|
- 契约锚点:`contracts/openapi/api.yaml#/paths/...` 或 `contracts/events/event-catalog.yaml#/events/...`
|
|
26
|
-
-
|
|
38
|
+
- 设计文档(standard / full 时填):`docs/04-后端详细设计/<slug>.md` 或 `docs/05-前端客户端详细设计/<slug>-<platform>.md`
|
|
27
39
|
- ADR(Tier 4 必填):`docs/02-系统方案与架构/adr-<NNNN>-<slug>.md`
|
|
40
|
+
- PRD(full 时填):`docs/01-背景与需求/prd-<slug>.md`
|
|
28
41
|
- spec:`.kiro/specs/<feature>/`(如适用)
|
|
29
42
|
|
|
30
43
|
## 变更类型
|
|
@@ -1,133 +1,192 @@
|
|
|
1
1
|
---
|
|
2
|
-
last-reviewed: 2026-05-
|
|
2
|
+
last-reviewed: 2026-05-17
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# 变更分级(Change Tiers)
|
|
6
6
|
|
|
7
7
|
> AGENTS.md §6 的细则。澄清"先文档先契约再 code"在不同场景下应该有多厚。
|
|
8
8
|
|
|
9
|
-
## 0.
|
|
9
|
+
## 0. 两件正交的事,不要绑死
|
|
10
10
|
|
|
11
|
-
`AGENTS.md` §2 的
|
|
11
|
+
`AGENTS.md` §2 的 Contract First 与 §6 的"变更分级"要拆成**两件独立的事**:
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
| 维度 | 是什么 | 谁定 |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| **Tier**(变更影响面) | 改动客观属性:动了哪些层、是否破坏性、有几个团队耦合 | AI 按决策树自动判定 |
|
|
16
|
+
| **Doc Weight**(文档投入) | 团队 / 项目 / 这次 PR 想花多少笔墨在 markdown 上 | AI 给默认建议;PR 作者最终决定 |
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
它们是 **and**,不是 **=**。
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
- **A. 方案讨论必须有书面结论**(载体可大可小)—— 总成立
|
|
21
|
-
- **B. 契约必须在 code 之前冻结**—— 仅当变更触及契约时成立
|
|
20
|
+
20 人银行项目和 2 人工具型 startup 改同一个 API 字段,Tier 都是 3,但前者会写后端设计 + 前端联动说明(Doc Weight = standard),后者只在 PR 描述里写一段(Doc Weight = lite)。框架不强行统一两者。
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
## 1. 六档 Tier(变更影响面)
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
| Tier | 名称 | 典型场景 | 是否动契约 |
|
|
25
|
+
|---|---|---|---|
|
|
26
|
+
| **0** | trivial | 拼写、注释、格式化、补测试、依赖 patch 升级 | 不动 |
|
|
27
|
+
| **1** | bugfix | 修 NPE、错误的 SQL、UI 显示错位(无新行为,行为符合既有契约) | 不动 |
|
|
28
|
+
| **2** | small change | 加按钮 / 排序 / 导出列、调文案、加配置项 | 通常不动 |
|
|
29
|
+
| **3** | contract change | 加 API / 字段 / 错误码 / 事件 / 状态(兼容新增) | **必须**先冻结契约 + CHANGELOG |
|
|
30
|
+
| **4** | architecture / breaking | 跨服务、鉴权变化、删字段、改类型、新依赖、数据迁移 | **必须** ADR + 契约 + 迁移说明 |
|
|
31
|
+
| **5** | spike | 探索性、方案未明 | 在 `spike/*` 分支自由探索;合入 `main` 前补到对应 tier |
|
|
26
32
|
|
|
27
|
-
|
|
28
|
-
|---|---|---|---|---|
|
|
29
|
-
| **0** | trivial | 拼写、注释、格式化、补测试、依赖 patch 升级 | PR title + 1-2 行描述 | 不动 |
|
|
30
|
-
| **1** | bugfix | 修 NPE、错误的 SQL、UI 显示错位(无新行为) | PR 描述:**重现 + 根因 + 修复点 + 回归测试** | 不动 |
|
|
31
|
-
| **2** | small change | 加按钮 / 排序 / 导出列、调文案、加配置项 | PR 描述(含动机 + 方案 + 影响面),或 1 页 markdown 进 `docs/过程文档/drafts/` | 通常不动 |
|
|
32
|
-
| **3** | contract change | 加 API / 字段 / 错误码 / 事件 / 状态 | 简短设计章节(写在 `docs/04` 或 `docs/05` 的对应模块里)+ contracts 更新 + CHANGELOG | **必须**先冻结契约 |
|
|
33
|
-
| **4** | architecture / breaking | 新模块、跨服务、数据迁移、鉴权模型变化、删除字段 | PRD(若来自需求)→ ADR → 详细设计 → 契约 → code | **必须** ADR + 契约 + 迁移说明 |
|
|
34
|
-
| **5** | spike | 探索性、方案未明 | 在 `spike/*` 分支自由探索 | 合入 `main` 前补齐到对应 tier |
|
|
33
|
+
## 2. Tier 判定决策树
|
|
35
34
|
|
|
36
|
-
|
|
35
|
+
按从严到宽问自己:
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
1. 改了 `contracts/` 任何文件? → 至少 **Tier 3**
|
|
38
|
+
2. 改动会改变 API / DB schema / 事件 / 鉴权 / 安全语义?(即使现在 contracts 还没收录) → **Tier 3 或 4**,先补契约再继续
|
|
39
|
+
3. 删除或不兼容地修改了已有契约字段? → **Tier 4** 必须 ADR
|
|
40
|
+
4. 跨服务、跨模块边界、跨执行环境(server↔web↔mobile)? → **Tier 4**
|
|
41
|
+
5. 影响 ops/ 或 deploy/ 实际拓扑(新加 service / 新开端口 / 改加密策略)? → **Tier 4**
|
|
42
|
+
6. 探索 / 调研,方案不清楚? → **Tier 5**(`spike/*` 分支)
|
|
43
|
+
7. 以上都不是,纯局部、可逆的改动? → 按体量定 **Tier 0/1/2**
|
|
39
44
|
|
|
40
|
-
|
|
41
|
-
2. **改动会改变 API / DB schema / 事件 / 鉴权 / 安全语义?**(即使现在 contracts 还没收录)→ Tier 3 或 4,**先把契约补上再继续**
|
|
42
|
-
3. **删除或不兼容地修改了已有契约字段?** → Tier 4,**必须** ADR
|
|
43
|
-
4. **跨服务、跨模块边界、跨执行环境(server↔web↔mobile)?** → Tier 4
|
|
44
|
-
5. **会影响 ops/ 或 deploy/ 实际拓扑(新加一个 service / 新开一个端口 / 改加密策略)?** → Tier 4
|
|
45
|
-
6. **是探索 / 调研,方案还不清楚?** → Tier 5(用 `spike/*` 分支)
|
|
46
|
-
7. **以上都不是,纯局部、可逆的改动?** → 按体量定 Tier 0/1/2
|
|
45
|
+
## 3. 三档 Doc Weight(文档投入)
|
|
47
46
|
|
|
48
|
-
|
|
47
|
+
> **默认值**:每个 Tier 的"AI 推荐 doc weight"如下,PR 作者可在 PR 模板里覆盖。
|
|
49
48
|
|
|
50
|
-
|
|
49
|
+
| Tier | AI 默认推荐 | lite 时只要 | standard 时再加 | full 时再加 |
|
|
50
|
+
|---|---|---|---|---|
|
|
51
|
+
| **0** trivial | **lite**(除非异常) | PR 描述 1-2 行 | — | — |
|
|
52
|
+
| **1** bugfix | **lite** | PR 描述:重现 + 根因 + 修复 + 回归测试 | — | — |
|
|
53
|
+
| **2** small change | **lite** | PR 描述:动机 + 方案 + 影响面 | 1 页 markdown 进 `docs/过程文档/drafts/` | — |
|
|
54
|
+
| **3** contract change | **lite**(关键!) | PR 描述 + 契约 diff + CHANGELOG + 契约锚点 | 简短后端 / 前端设计章节进 `docs/04` 或 `docs/05`,每份 2-3 段 | + PRD(`docs/01/prd-<slug>.md`) |
|
|
55
|
+
| **4** arch / breaking | **standard** | PR 描述 + 契约 diff + CHANGELOG + ADR | 简化 04 / 05 详细设计 + 迁移 / 回滚预案 | + PRD + UI 设计稿(如涉及前端) |
|
|
56
|
+
| **5** spike | **lite**(探索期不需要文档) | spike 分支自由实验;合入 `main` 时按目标 tier 补齐 | — | — |
|
|
51
57
|
|
|
52
|
-
|
|
53
|
-
|---|---|---|
|
|
54
|
-
| 修 `web/src/utils/format-date.ts` 的 typo 注释 | 0 | 写 PRD |
|
|
55
|
-
| `GET /users/{id}` 的实现里漏判 null,500 改 404 | 1(行为符合契约) | 改 OpenAPI |
|
|
56
|
-
| 给已有列表加"最近 7 天"筛选选项(前端筛选,后端无变化) | 2 | 写 ADR |
|
|
57
|
-
| `package.json` 里 `lodash 4.17.20 → 4.17.21`(patch) | 0 | 走完整升级流程 |
|
|
58
|
-
| 改 README 一段错别字 | 0 | 同步多份治理文件 |
|
|
59
|
-
| 重构一个内部 helper 函数(不导出) | 0 或 1 | 写详细设计 |
|
|
60
|
-
| 加测试覆盖既有功能 | 0 | 写 PRD |
|
|
58
|
+
**关键修正**(相对 0.4.0):**Tier 3 默认 doc weight 是 lite,不是 standard**。理由:契约 diff 本身就是设计真值;额外的中文设计文档反而和契约漂移。只在业务复杂度高到契约说不清时(复杂状态机、多模块交互、跨团队协作),作者主动升 standard / full。
|
|
61
59
|
|
|
62
|
-
|
|
60
|
+
### 3.1 lite 的最小载体
|
|
63
61
|
|
|
64
|
-
|
|
65
|
-
|---|---|---|
|
|
66
|
-
| 给 `GET /users/{id}` 加返回字段 `lastLoginAt` | 3 | 想成 Tier 2 / 文档"顺手补" |
|
|
67
|
-
| 给已有 List API 加 `?status=` 查询参数 | 3 | 想成 Tier 2 |
|
|
68
|
-
| 把鉴权从 cookie 改为 Bearer token | 4 | 想成 Tier 3 |
|
|
69
|
-
| 把 RBAC 从扁平改为支持继承 | 4 | 想成 Tier 3 |
|
|
70
|
-
| 引入新的消息队列 / 缓存层 / 第三方支付 | 4 | 想成 Tier 3 |
|
|
71
|
-
| 删除 `User.email` 字段 | 4 | 想成 Tier 3(删除 ≠ 兼容新增) |
|
|
72
|
-
| 升级 Spring Boot major 版本(3.x → 4.x) | 4 | 想成 Tier 0(只是版本号) |
|
|
62
|
+
**lite ≠ 没文档**。PR 描述本身就是文档;契约本身就是真值。lite 只是不再要求**额外的 markdown 文件**。
|
|
73
63
|
|
|
74
|
-
|
|
64
|
+
PR 描述至少包含:
|
|
75
65
|
|
|
76
|
-
|
|
66
|
+
- **What**:改了什么
|
|
67
|
+
- **Why**:为什么(业务动机 / 用户痛点 / 技术债)
|
|
68
|
+
- **影响面**:哪些路径 / 服务 / 团队会被影响
|
|
69
|
+
- 如有契约 diff:契约锚点(`contracts/openapi/api.yaml#/paths/~1users/post`)
|
|
70
|
+
- 如是 Tier 1 bugfix:重现步骤 + 根因 + 修复点 + 回归测试
|
|
77
71
|
|
|
78
|
-
|
|
79
|
-
- **Tier 3**:必须看到 contracts 同步、CHANGELOG 同步、契约锚点引用
|
|
80
|
-
- **Tier 4**:必须看到 ADR 存在或新增、详细设计文档、迁移 / 回滚预案
|
|
81
|
-
- **Tier 5**:分支必须是 `spike/*`;如果想合入 `main`,作者必须在合入 PR 中标明落地到了哪个 tier
|
|
72
|
+
### 3.2 何时升 standard / full
|
|
82
73
|
|
|
83
|
-
|
|
74
|
+
AI 在以下信号下**主动建议**升级 doc weight,并在 PR 描述里写一句理由:
|
|
84
75
|
|
|
85
|
-
|
|
86
|
-
|
|
76
|
+
| 信号 | 建议 |
|
|
77
|
+
|---|---|
|
|
78
|
+
| 契约 diff > 5 个 endpoint / schema 变化 | standard |
|
|
79
|
+
| 引入新状态机或改既有状态机的状态数 | standard |
|
|
80
|
+
| 跨服务联动(server 改 + web 改 + 第三方 webhook 改) | standard |
|
|
81
|
+
| 删字段 / 改类型 / 改鉴权(即 Tier 4) | standard 或 full |
|
|
82
|
+
| 业务规则复杂到契约的 description 字段写不下 | standard |
|
|
83
|
+
| 来源是产品同学的需求文档(PRD 是上游产物) | full(PRD 落到 `docs/01/`) |
|
|
84
|
+
| 跨多团队 / 多季度的项目 | full |
|
|
85
|
+
|
|
86
|
+
PR 作者也可主动**降级**:如果 AI 推荐 standard 但作者认为契约自身已说清楚,可以 lite 通过;reviewer 不应仅因"没写设计文档"而打回。
|
|
87
|
+
|
|
88
|
+
## 4. 反例
|
|
89
|
+
|
|
90
|
+
下面这些情况 **不要** 升级 tier 或 doc weight:
|
|
91
|
+
|
|
92
|
+
| 情形 | 正确 Tier | 推荐 Doc Weight | 错误反应 |
|
|
93
|
+
|---|---|---|---|
|
|
94
|
+
| 修 `web/src/utils/format-date.ts` 的 typo 注释 | 0 | lite | 写 PRD |
|
|
95
|
+
| `GET /users/{id}` 实现里漏判 null,500 改 404 | 1 | lite | 改 OpenAPI |
|
|
96
|
+
| 加"最近 7 天"前端筛选选项(后端无变化) | 2 | lite | 写 ADR |
|
|
97
|
+
| `lodash 4.17.20 → 4.17.21`(patch) | 0 | lite | 走完整升级流程 |
|
|
98
|
+
| 改 README 错别字 | 0 | lite | 同步多份治理文件 |
|
|
99
|
+
| 重构一个内部 helper 函数(不导出) | 0 或 1 | lite | 写详细设计 |
|
|
100
|
+
| 加测试覆盖既有功能 | 0 | lite | 写 PRD |
|
|
101
|
+
| **给 `GET /users/{id}` 加返回字段 `lastLoginAt`**(兼容新增) | **3** | **lite**(只改契约 + CHANGELOG) | 想成必须写 04 后端设计 |
|
|
102
|
+
| **给已有 List API 加 `?status=` 查询参数** | **3** | **lite** | 想成 Tier 2 / 必须写 PRD |
|
|
103
|
+
|
|
104
|
+
下面这些情况 **必须** 升级 tier:
|
|
87
105
|
|
|
88
|
-
|
|
106
|
+
| 情形 | 正确 Tier | 推荐 Doc Weight |
|
|
107
|
+
|---|---|---|
|
|
108
|
+
| 把鉴权从 cookie 改为 Bearer token | 4 | standard 或 full |
|
|
109
|
+
| 把 RBAC 从扁平改为支持继承 | 4 | full(PRD + ADR + 详细设计) |
|
|
110
|
+
| 引入新消息队列 / 缓存层 / 第三方支付 | 4 | full |
|
|
111
|
+
| 删除 `User.email` 字段 | 4 | standard(迁移预案 + ADR) |
|
|
112
|
+
| 升级 Spring Boot major 版本(3.x → 4.x) | 4 | standard(兼容性扫描 + 测试矩阵) |
|
|
113
|
+
|
|
114
|
+
## 5. PR 模板里的两个框
|
|
115
|
+
|
|
116
|
+
PR 作者填两件事:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
## Tier(影响面,AI 自动判)
|
|
120
|
+
- [ ] 0 trivial
|
|
121
|
+
- [ ] 1 bugfix
|
|
122
|
+
- [x] 2 small change ← AI 建议
|
|
123
|
+
- [ ] 3 contract change
|
|
124
|
+
- [ ] 4 architecture / breaking
|
|
125
|
+
- [ ] 5 spike
|
|
126
|
+
|
|
127
|
+
## Doc Weight(文档投入,AI 推荐 + 作者覆盖)
|
|
128
|
+
- [x] lite ← AI 推荐:PR 描述足够,不需额外文档
|
|
129
|
+
- [ ] standard
|
|
130
|
+
- [ ] full
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Reviewer 看到 Tier + Doc Weight 后:
|
|
134
|
+
|
|
135
|
+
- **Tier 0/1/2 + lite**:着重看代码 / 测试 / 描述完整性
|
|
136
|
+
- **Tier 3 + lite**:看契约 diff + CHANGELOG + 契约锚点;不要求 04/05 markdown
|
|
137
|
+
- **Tier 3 + standard**:以上 + 简短后端 / 前端设计章节(2-3 段就够)
|
|
138
|
+
- **Tier 3 + full**:以上 + PRD(如有产品需求来源)
|
|
139
|
+
- **Tier 4 + standard**:必须 ADR + 详细设计 + 迁移预案
|
|
140
|
+
- **Tier 4 + full**:以上 + PRD + UI 稿(如涉及)
|
|
141
|
+
|
|
142
|
+
CI 不强制 doc weight 与 tier 的对应关系(reviewer 责任);但 CI **会**校验:
|
|
143
|
+
|
|
144
|
+
- 改了 `contracts/` 必须同改 `contracts/CHANGELOG.md`(已有规则)
|
|
145
|
+
- `spike/*` 分支不能直接合入 `main`(PR 模板 + CODEOWNERS)
|
|
89
146
|
|
|
90
|
-
|
|
147
|
+
## 6. AI 引用义务(按 Tier,doc weight 无关)
|
|
91
148
|
|
|
92
149
|
| Tier | 引用义务 |
|
|
93
150
|
|---|---|
|
|
94
|
-
| 0/1/2 |
|
|
95
|
-
| 3 |
|
|
96
|
-
| 4 | 必须引用 ADR /
|
|
97
|
-
| 5 | 必须标明 spike
|
|
151
|
+
| 0/1/2 | 不强制 |
|
|
152
|
+
| 3 | 必须引用契约锚点(lite 也要) |
|
|
153
|
+
| 4 | 必须引用 ADR + 契约锚点;详细设计在 standard / full 时引用 |
|
|
154
|
+
| 5 | 必须标明 spike 分支与目标 tier |
|
|
98
155
|
|
|
99
|
-
AI
|
|
156
|
+
AI 在 Tier 0/1/2 不要主动制造文档噪音;reviewer 不要因"AI 没引用契约"打回 Tier 0/1/2 的 PR。
|
|
100
157
|
|
|
101
|
-
##
|
|
158
|
+
## 7. 与 spike 的关系
|
|
102
159
|
|
|
103
|
-
`spike/*` 分支是 Tier 5
|
|
160
|
+
`spike/*` 分支是 Tier 5 的载体,**doc weight 默认 lite**:
|
|
104
161
|
|
|
105
162
|
1. 创建 `spike/<topic>` 分支
|
|
106
163
|
2. 自由写代码、跑实验、改方向
|
|
107
164
|
3. 结论清楚后:
|
|
108
165
|
- 不采纳 → 文档进 `docs/过程文档/spike-investigations/`,分支保留备查
|
|
109
|
-
- 采纳 →
|
|
166
|
+
- 采纳 → 反向按目标 Tier 与 Doc Weight 补齐对应内容,再合入 `main`
|
|
110
167
|
|
|
111
|
-
Spike 不是"绕过框架的永久后门"。`spike/*` 不能直接合入 `main
|
|
168
|
+
Spike 不是"绕过框架的永久后门"。`spike/*` 不能直接合入 `main`。
|
|
112
169
|
|
|
113
|
-
##
|
|
170
|
+
## 8. 何时升级 / 降级
|
|
114
171
|
|
|
115
|
-
|
|
172
|
+
**Tier 升级**:开发过程中发现影响面比预想大 → 立即升 tier,停下补对应契约 / 文档。
|
|
173
|
+
**Tier 降级**:通常**不允许**。一旦你声明 Tier 3+ 并写了契约 / ADR / 设计,就保留它(除非改动被裁掉变成 Tier 2)。
|
|
116
174
|
|
|
117
|
-
|
|
175
|
+
**Doc Weight 升级**:欢迎随时升级(写更多文档不是错)。
|
|
176
|
+
**Doc Weight 降级**:作者可在 PR 评审中说明降级理由("契约已自解释"),reviewer 同意即可。
|
|
118
177
|
|
|
119
|
-
##
|
|
178
|
+
## 9. 与契约 SemVer 的关系
|
|
120
179
|
|
|
121
180
|
| Tier | 契约动作 | SemVer 影响 |
|
|
122
181
|
|---|---|---|
|
|
123
182
|
| 0/1/2 | 不动 | 无 |
|
|
124
183
|
| 3(兼容新增) | `MINOR` bump | `0.x.y → 0.(x+1).0`(pre-1.0)/ `x.y.z → x.(y+1).0`(≥1.0) |
|
|
125
|
-
| 3
|
|
184
|
+
| 3(破坏性,但 0.x) | `MINOR` bump + CHANGELOG 标 BREAKING | 同上(pre-1.0 允许) |
|
|
126
185
|
| 4(破坏性,≥1.0) | `MAJOR` bump | `x.y.z → (x+1).0.0` |
|
|
127
186
|
|
|
128
187
|
完整版本策略 → [`../../contracts/README.md`](../../contracts/README.md)。
|
|
129
188
|
|
|
130
|
-
##
|
|
189
|
+
## 10. 关联文档
|
|
131
190
|
|
|
132
191
|
- [`../../AGENTS.md`](../../AGENTS.md) §6(变更分级摘要)
|
|
133
192
|
- [`git-workflow.md`](git-workflow.md)(PR 模板与 CODEOWNERS 完整规则)
|
|
@@ -140,31 +140,45 @@
|
|
|
140
140
|
- 完整规则 → [`docs/governance/integrations.md`](docs/governance/integrations.md)
|
|
141
141
|
<% } %>
|
|
142
142
|
|
|
143
|
-
## 6.
|
|
143
|
+
## 6. 核心协作规则(变更分级 + 文档投入)
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
变更走**两个独立维度**:**Tier**(影响面,AI 自动判)+ **Doc Weight**(文档投入,AI 推荐 + 作者覆盖)。完整判定决策树、反例、与 SemVer 关系 → [`docs/governance/change-tiers.md`](docs/governance/change-tiers.md)。
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
|
150
|
-
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
147
|
+
**Tier(影响面)**
|
|
148
|
+
|
|
149
|
+
| Tier | 典型 | 是否动契约 |
|
|
150
|
+
|---|---|---|
|
|
151
|
+
| 0 trivial | typo / 格式化 / patch 升级 / 补测试 | 不动 |
|
|
152
|
+
| 1 bugfix | 修 NPE / SQL / UI 错位(无新行为) | 不动 |
|
|
153
|
+
| 2 small | 加按钮 / 排序 / 文案 / 配置项 | 通常不动 |
|
|
154
|
+
| 3 contract | 加 API / 字段 / 错误码 / 事件 / 状态 | **必须**先冻结契约 + CHANGELOG |
|
|
155
|
+
| 4 arch | 跨服务 / 鉴权变化 / 删字段 / breaking | **必须** ADR + 契约 + 迁移说明 |
|
|
156
|
+
| 5 spike | 探索 / 方案未明 | `spike/*` 分支自由探索;合入前补到对应 tier |
|
|
155
157
|
|
|
156
158
|
**判定**:改 `contracts/` → 至少 Tier 3;改鉴权 / 跨服务 / 删字段 → Tier 4;纯局部 → 0/1/2;探索 → 5。
|
|
157
159
|
|
|
158
|
-
**AI
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
**Doc Weight(文档投入,AI 推荐 + 作者覆盖)**
|
|
161
|
+
|
|
162
|
+
| Tier | AI 默认推荐 | lite 时 | standard 加 | full 加 |
|
|
163
|
+
|---|---|---|---|---|
|
|
164
|
+
| 0/1/2 | **lite** | PR 描述(含动机 / 方案 / 影响面) | — | — |
|
|
165
|
+
| 3 contract | **lite**(关键) | PR 描述 + 契约 diff + CHANGELOG + 锚点 | 简短 04 / 05 设计(2-3 段) | + PRD(`docs/01/prd-<slug>.md`) |
|
|
166
|
+
| 4 arch | **standard** | PR 描述 + 契约 + ADR | 简化 04 / 05 + 迁移 / 回滚预案 | + PRD + UI 稿 |
|
|
167
|
+
| 5 spike | **lite** | spike 分支自由实验 | — | — |
|
|
168
|
+
|
|
169
|
+
> **关键**:Tier 3 的默认 doc weight 是 **lite**——契约 diff 本身就是设计真值,额外的中文设计文档反而易和契约漂移。复杂度高时(多状态机、跨服务、跨团队)作者主动升 standard / full。
|
|
170
|
+
|
|
171
|
+
**AI 引用义务**(按 Tier,与 Doc Weight 无关):
|
|
172
|
+
- Tier 0/1/2:PR 描述自身即方案记录,**不强制**引用契约 / ADR
|
|
173
|
+
- Tier 3+:commit / PR 必须显式引用契约锚点(如 `contracts/openapi/api.yaml#/paths/~1users/post`)
|
|
174
|
+
- Tier 4:必须引用 ADR;详细设计在 standard / full 时引用
|
|
162
175
|
|
|
163
176
|
其他:
|
|
164
|
-
- `spike/*` 分支允许暂时跳过契约(即 Tier 5);合入 `main`
|
|
177
|
+
- `spike/*` 分支允许暂时跳过契约(即 Tier 5);合入 `main` 前必须补到对应 tier
|
|
165
178
|
- 完整 PR 模板与 CODEOWNERS → [`docs/governance/git-workflow.md`](docs/governance/git-workflow.md)
|
|
166
179
|
- 契约 SemVer / CHANGELOG / 废弃流程 → [`contracts/README.md`](contracts/README.md)
|
|
167
180
|
|
|
181
|
+
|
|
168
182
|
## 7. 按需加载索引
|
|
169
183
|
|
|
170
184
|
### 7.1 路径触发表
|