@xulthekl/team-flow 0.34.1 → 0.36.0

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.
Files changed (49) hide show
  1. package/.claude/always/phase-guard.md +1 -1
  2. package/.claude-plugin/marketplace.json +1 -1
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +1 -1
  5. package/.cursor-plugin/marketplace.json +1 -1
  6. package/.cursor-plugin/plugin.json +1 -1
  7. package/.github/plugin/marketplace.json +2 -2
  8. package/CHANGELOG.md +57 -0
  9. package/GEMINI.md +1 -1
  10. package/INSTALL.md +1 -1
  11. package/README.md +1 -1
  12. package/agents/architecture-reviewer.md +12 -0
  13. package/agents/build-executor.md +23 -0
  14. package/docs/README_en.md +1 -1
  15. package/docs/solutions/INDEX.md +1 -0
  16. package/docs/solutions/cross-phase/2026-08-05-no-summary.md +17 -0
  17. package/gemini-extension.json +1 -1
  18. package/hooks/session-start +2 -2
  19. package/llms.txt +1 -1
  20. package/package.json +1 -1
  21. package/plugin.json +1 -1
  22. package/scripts/guard/checks/arch-gate-exemptions.mjs +68 -0
  23. package/scripts/guard/checks/arch-readiness.mjs +36 -0
  24. package/scripts/guard/checks/arch-snapshot.mjs +35 -0
  25. package/scripts/guard/guard.mjs +10 -2
  26. package/scripts/lib/arch-merge.mjs +405 -316
  27. package/scripts/lib/arch-parse.mjs +162 -0
  28. package/scripts/lib/cmd-arch.mjs +84 -0
  29. package/scripts/lib/cmd-deisolate.mjs +292 -0
  30. package/scripts/lib/cmd-execution.mjs +16 -3
  31. package/scripts/lib/execution-plan.mjs +37 -5
  32. package/scripts/lib/test-merge.mjs +7 -4
  33. package/scripts/team-flow.mjs +7 -0
  34. package/skills/architecture-design/SKILL.md +22 -1
  35. package/skills/architecture-design/chapters/ch06-integration.md +4 -4
  36. package/skills/architecture-design/references/s3.5-architecture-template.md +164 -0
  37. package/skills/architecture-design/references/s3.5-loading-protocol.md +40 -0
  38. package/skills/architecture-design/references/s3.5-product-architecture.md +76 -0
  39. package/skills/release-archivist/SKILL.md +14 -0
  40. package/skills/session-handoff/references/handoff-template.md +2 -2
  41. package/skills/spec-writer/SKILL.md +1 -0
  42. package/skills/workflow-bootstrap/references/agents/arch-reverse-analyst.md +60 -0
  43. package/skills/workflow-orchestrator/references/feedback-loops.md +2 -0
  44. package/skills/workflow-orchestrator/references/s1-path-router.md +1 -1
  45. package/skills/workflow-orchestrator/references/s3-plan-pipeline.md +2 -1
  46. package/skills/workflow-orchestrator/references/s4-split-validate.md +11 -1
  47. package/skills/workflow-orchestrator/references/state-model.md +52 -0
  48. package/skills/workflow-start/SKILL.md +1 -0
  49. package/skills/workflow-start/references/routing-rules.md +1 -0
@@ -17,6 +17,7 @@ const COMMANDS = {
17
17
  checkpoint: () => import('./lib/cmd-checkpoint.mjs'),
18
18
  handoff: () => import('./lib/cmd-handoff.mjs'),
19
19
  isolate: () => import('./lib/cmd-isolate.mjs'),
20
+ deisolate: () => import('./lib/cmd-deisolate.mjs'),
20
21
  execution: () => import('./lib/cmd-execution.mjs'),
21
22
  runtime: () => import('./lib/cmd-runtime.mjs'),
22
23
  solutions: () => import('./lib/cmd-solutions.mjs'),
@@ -34,6 +35,7 @@ const COMMANDS = {
34
35
  'install-zcode': () => import('./lib/cmd-install-zcode.mjs'),
35
36
  'prototype-sync': () => import('./lib/prototype-sync.mjs'),
36
37
  'arch-merge': () => import('./lib/arch-merge.mjs'),
38
+ arch: () => import('./lib/cmd-arch.mjs'),
37
39
  'test-merge': () => import('./lib/test-merge.mjs'),
38
40
  'test-matrix-export': () => import('./lib/test-matrix-export.mjs'),
39
41
  test: () => import('./lib/test-record.mjs'),
@@ -51,6 +53,9 @@ Commands:
51
53
  sync <change-dir> Merge delta specs into main specs
52
54
  prototype-sync <change-dir> [--source <path>] [--prototype-dir <path>]
53
55
  Merge UX delta into global prototype/ + design-system.md
56
+ arch init [--mode reconstruction|design] [--baseline-ref <prd/vN/>]
57
+ Stamp project-level arch_baseline into .team-flow/arch-state.json (v0.35.0 §59.4)
58
+ arch show Show current project architecture baseline state
54
59
  arch-merge <change-dir> [--project-root <path>] [--dry-run]
55
60
  Merge architecture delta into global docs/architecture/
56
61
  test-merge <change-dir> [--project-root <path>] [--dry-run]
@@ -88,6 +93,8 @@ Commands:
88
93
  Upgrade inline/batch to SDD, or replan existing SDD waves, as a new revision
89
94
  execution review <change-dir> --wave <id> --base <sha> --head <sha> --report <path> --verdict pass|fail
90
95
  Record one review receipt for a planned wave
96
+ deisolate <change-dir> [--merge] [--clean] [--json]
97
+ Show worktree status / merge branch back / clean worktree
91
98
  runtime check-update Run a portable update check for canonical skills
92
99
  runtime infer <dir> Infer workflow mode without a plugin-root path
93
100
  runtime guard ... Run a portable phase-transition guard
@@ -67,8 +67,9 @@ description: 基于 4A 企业架构 + DDD 领域驱动设计的架构/API/DB 设
67
67
 
68
68
  - `change-brief.md`(scope / AC / 技术方向)
69
69
  - `prd/vN/plan.md` 高阶技术设计段(模块边界/技术选型/数据流/关键聚合划分)
70
+ - `docs/architecture/iterations/vN/architecture.md`(产品级架构快照,**主输入**,v0.35.0)——BC 边界/聚合所有权/全局契约的唯一事实源
71
+ - 全局 `docs/architecture/`(As-Is 实际态基线,已落地部分)
70
72
  - 现有 `specs/`(若有)
71
- - 全局 `docs/architecture/`(As-Is 基线)
72
73
 
73
74
  ### 五项检查(架构变更判定)
74
75
 
@@ -80,6 +81,15 @@ description: 基于 4A 企业架构 + DDD 领域驱动设计的架构/API/DB 设
80
81
  4. **API 变更**:是否涉及 API 新增/变更(端点、方法签名、请求响应 schema)
81
82
  5. **DB schema 变更**:是否涉及数据库表结构、字段、索引变更
82
83
 
84
+ ### 路由分流(v0.35.0 新增)
85
+
86
+ 当产品级架构快照存在时(已建档项目),判定结果再按"产品级决策 vs change 内实现细节"分流:
87
+
88
+ - 触及**产品级决策**(BC 边界变更 / 聚合所有权变更 / 全局契约变更)→ 引用快照 + 走**架构修订决策门**(不硬阻断,显式确认 + 登记 deviation,P3)
89
+ - 仅 **change 内实现细节**(字段 / 端点 / 状态增量)→ 增量设计,不触发产品级变更
90
+
91
+ 变更级聚合动作限三类:`extend`(既有聚合加字段/指令/事件/状态)、`new`(新增聚合,flag 登记待产品级晋升)、`refactor`(需决策门)。聚合 id 一律引用产品级注册表,不重定义(防重发明,v0.14 §61.3)。
92
+
83
93
  ### 执行流程
84
94
 
85
95
  ```
@@ -149,6 +159,15 @@ changes/<name>/
149
159
 
150
160
  change 进入 closing 阶段时,由 release-archivist 调用 `tf arch-merge` CLI 命令,将 `changes/<name>/architecture/` 下的增量制品合并回全局 `docs/architecture/`,完成 As-Is → To-Be 基线更新。architecture-design 本身不执行合并,只负责产出增量制品。
151
161
 
162
+ ### 调用模式(v0.35.0:变更级 / 产品级)
163
+
164
+ | 模式 | 编排入口 | 判定 | 产出 | owner |
165
+ |------|---------|------|------|-------|
166
+ | 变更级(默认) | workflow-start(exploring→specifying) | 五项检查 | `changes/<name>/architecture/` 三件套 + sql/ | architecture-design 子代理 |
167
+ | 产品级(product 模式) | workflow-orchestrator S3.5(architecture 阶段) | 8 步全系统结构级设计(无五项检查) | `docs/architecture/iterations/vN/architecture.md`(6 产物快照) | architecture-design product 模式子代理(唯一 owner) |
168
+
169
+ **产品级模式执行**:按 `references/s3.5-product-architecture.md` SOP(8 步),模板用 `references/s3.5-architecture-template.md`,加载协议用 `references/s3.5-loading-protocol.md`。产出经 architecture-reviewer product 视角评审(`review_mode: product`)PASS 才进 S4。时序遵守 P1:只写快照不写全局。
170
+
152
171
  ### 独立调用
153
172
 
154
173
  除 workflow-start 编排调用外,本 skill 仍支持用户显式独立调用(`/team-flow:architecture-design`),此时不走五项检查判定门,直接执行完整 4A+DDD 设计。
@@ -182,6 +201,8 @@ architecture-design 执行时的上下文组装:
182
201
 
183
202
  **上下文预算**:单次执行 ~2K tokens(L1 INDEX + 1-2 个 L2 域段 + L3 变更层)
184
203
 
204
+ **产品级三段式加载(v0.35.0,有产品级快照时)**:按 `references/s3.5-loading-protocol.md` 三段式——① 索引层(INDEX + ARCHITECTURE §1-2 厚锚点)② 按域加载(change 触及的 `domains/<bc>.md`)③ 变更增量。迭代中读 `iterations/vN/` 快照(in-flight),迭代收尾读全局当前态(P1)。
205
+
185
206
  ## Scope & Limits
186
207
  本 skill 覆盖 4A+DDD 架构设计方法及其与 team-flow/compound-engineering 的衔接。落地实现结合项目具体工具;超出本范围见相关 skill 或直接问 agent。
187
208
 
@@ -28,10 +28,10 @@ changes/<name>/ # change 容器
28
28
 
29
29
  > **语义分离**:架构产出独立 `architecture/` 目录,不混入 `specs/`(行为规格)。目录存在 = 有架构产出,目录不存在 = 判定为不需要。下游消费方(spec-writer / release-archivist)显式读取此目录。
30
30
 
31
- ## 每变更增量设计(SOP 步骤)
32
- 1. (LLM) 读全局 ARCHITECTURE.md grounding;用活动对象矩阵识别限界上下文/聚合。
33
- 2. (LLM) 出 To-Be:新增/调整聚合、Context Map 关系、CQRS 读写模型、4A 跨域对齐。
34
- 3. **As-Is 冻结**(核心修正):复制全局相关章节**当前原文** + 记版本锚点(`ARCHITECTURE.md@<change_id>#<章节>`),变更内不可变——杜绝活引用漂移。
31
+ ## 每变更增量设计(SOP 步骤,v0.35.0 更新:产品级快照为输入)
32
+ 1. (LLM) 读全局 ARCHITECTURE.md **+ 产品级快照 `iterations/vN/architecture.md`**(v0.35.0,BC 边界/聚合注册表唯一事实源)作 grounding;识别本 change 触及的 BC → 按 `references/s3.5-loading-protocol.md` 三段式装载对应域;用活动对象矩阵识别限界上下文/聚合(变更级只引用产品级注册表,不重定义)。
33
+ 2. (LLM) 出 To-Be:**本 change 增量**(extend/new/refactor 三类动作)——新增/调整聚合、Context Map 关系、CQRS 读写模型、4A 跨域对齐;触及产品级决策走架构修订决策门。
34
+ 3. **As-Is 冻结**(核心修正):复制产品级快照/全局相关章节**当前原文** + 记版本锚点(`iterations/vN/architecture.md@<change_id>#<章节>`),变更内不可变——杜绝活引用漂移。
35
35
  4. (脚本) 填 frontmatter 并校验:`cap_id/date/change_type/bounded_contexts/aggregates_affected/cqrs`。
36
36
  5. (LLM) 写 ADR 理由;API 标 Command/Read/Query + 阻断测试归属。
37
37
  6. (脚本) 回写全局 + 生成 API 索引。
@@ -0,0 +1,164 @@
1
+ # S3.5 产品级架构文档模板(v0.35.0,v0.14 §60)
2
+
3
+ > 产品级架构设计(architecture 阶段)产出的权威文档模板。基于 4A + DDD 方法论,覆盖 6 类产物。
4
+ > 位置:`docs/architecture/iterations/vN/architecture.md`(预测态快照,P1:不写全局当前态)。
5
+ > 产出后须经产品级评审门(architecture-reviewer product 视角)PASS 才进 S4。
6
+
7
+ ## 文档骨架
8
+
9
+ ````markdown
10
+ ---
11
+ iteration_version: v1 # 迭代版本号
12
+ provenance: forward-designed # forward-designed | reverse-engineered | mixed
13
+ established_at: <ISO 8601> # 快照冻结时间
14
+ snapshot_status: in-flight # in-flight | superseded | archived
15
+ superseded_by: null # 下一版快照路径(退役时填)
16
+ ---
17
+ # 产品级架构设计 · 迭代 vN
18
+
19
+ ## 1 限界上下文(Context Map) <a id="bc"></a>
20
+
21
+ | 上下文 | 职责(一句话) | 依赖 | 关系类型 | 语言边界/关键术语 |
22
+ |--------|------------|------|---------|-----------------|
23
+ | order | 订单生命周期与履约 | payment, stock | Customer-Supplier | 客户=下单人 |
24
+ | payment| 收款与对账 | order | Open Host Service | 客户=付款人(同词异义) |
25
+
26
+ > mermaid:上下文关系图
27
+ ```mermaid
28
+ flowchart LR
29
+ order -->|C-S| payment
30
+ order -->|C-S| stock
31
+ ```
32
+
33
+ **关系类型枚举(6 种)**:Shared Kernel / Customer-Supplier / Conformist / Anti-Corruption Layer / Open Host Service / Separate Ways。
34
+
35
+ ## 2 聚合注册表 <a id="aggregates"></a>
36
+
37
+ | 聚合ID | 上下文 | 根实体 | 值对象 | 核心行为 | 关键不变量 | 事务边界 | 状态机锚点 |
38
+ |--------|--------|--------|--------|---------|-----------|---------|-----------|
39
+ | order:Order | order | Order | OrderItem, Address, OrderStatus | PlaceOrder/MarkPaid/Ship/Complete | 总金额=明细和;状态流转有序 | 订单事务 | §4.1 |
40
+
41
+ ### 2.2 聚合→表映射
42
+ | 聚合 | 表集合 | 读模型 |
43
+ |------|--------|--------|
44
+ | order:Order | t_order, t_order_item, t_order_status_history | v_order_summary |
45
+
46
+ ### 2.3 聚合大小自检
47
+ - [ ] 每聚合实体数 ≤5(超过提示拆分)
48
+ - [ ] 事务边界无合并迹象
49
+ - [ ] 并发写冲突高发区已识别
50
+
51
+ > **唯一事实源**:本注册表是 BC 边界/聚合所有权的产品级权威;变更级(change 内)只引用本表 id,不重定义。
52
+
53
+ ## 3 指令与事件识别 <a id="commands-events"></a>
54
+
55
+ ### 3.1 指令表
56
+ | 指令 | 触发方 | 目标聚合 | Command/Read/Query | 结果事件 |
57
+ |------|--------|---------|-------------------|---------|
58
+ | PlaceOrder | Client | order:Order | Command | OrderPlaced |
59
+ | MarkPaid | PaymentCaptured 集成 | order:Order | Command | OrderPaid |
60
+
61
+ ### 3.2 事件表
62
+ | 事件 | 类型(领域/集成/外部) | 源聚合/上下文 | 触发 | 携带数据 | 消费方 | 投影读模型 |
63
+ |------|--------------------|--------------|------|---------|--------|-----------|
64
+ | OrderPlaced | 领域 | order:Order | PlaceOrder | orderId, items | payment, stock | order-summary-view |
65
+ | PaymentCaptured | 集成 | payment:Payment | 支付回调 | orderId, paymentId | order:Order | order-summary-view |
66
+
67
+ ### 3.3 事件流图
68
+ > mermaid:事件→指令级联链(覆盖 saga/process manager 跨聚合长流程一致性)
69
+
70
+ ### 3.4 读模型投影清单
71
+ | 读模型 | 投影来源事件 | 更新方式(同步/异步) |
72
+ |--------|-------------|-------------------|
73
+ | order-summary-view | OrderPlaced, PaymentCaptured | 异步 |
74
+
75
+ > 显式声明:事件用于**变更通知与投影驱动,不引入事件溯源持久化**。事件命名规范 `OrderPlaced`(名词+过去式动词),全系统一致。
76
+
77
+ ## 4 聚合状态迁移 <a id="state-machines"></a>
78
+
79
+ ### 4.1 {order:Order} 状态机
80
+ > mermaid stateDiagram-v2
81
+
82
+ ### 4.2 状态表
83
+ | 状态 | 触发(Command/Event) | 触发源上下文 | 目标状态 | guard 不变量 |
84
+ |------|--------------------|------------|---------|-------------|
85
+ | 创建 | PlaceOrder | order | 已支付 | 总金额>0 |
86
+ | 已支付 | Ship | order | 已发货 | 已收款 |
87
+
88
+ > 区分**聚合状态机**(本表,聚合事务边界内)与**跨聚合流程状态机**(入 saga,不在聚合状态机内表达)。
89
+
90
+ ## 5 数据模型 / ER(概念级) <a id="erd"></a>
91
+
92
+ ### 5.1 聚合边界 ER
93
+ > mermaid erDiagram:同聚合表圈在一起标注聚合根表;跨聚合外键标"引用关系(非事务内)"。
94
+
95
+ ### 5.2 实体表
96
+ | 实体 | 关键字段 | 所属聚合 | 写/读模型 |
97
+ |------|---------|---------|----------|
98
+ | Order | id, status, total | order:Order | 写 |
99
+
100
+ > **派生纪律**:ER 从聚合注册表 + 状态图映射而来,**禁止先画 ER 再定聚合**(DB 表 ≠ 聚合)。
101
+
102
+ ## 6 应用时序(关键用例) <a id="sequences"></a>
103
+
104
+ ### 6.1 用例索引
105
+ | 用例 | 图文件 | 涉及聚合/上下文 |
106
+ |------|--------|---------------|
107
+ | 下单履约 | diagrams/sequences/order-place.md | order, payment, stock |
108
+
109
+ ### 6.2 {用例} 时序图
110
+ > mermaid sequenceDiagram:跨聚合/跨上下文关键流程 Top-N。
111
+
112
+ ## 7 跨域一致性检查 <a id="consistency"></a>
113
+
114
+ ### 7.1 AA ↔ IA 双对齐(F2 门禁)
115
+ | AA 功能 | IA 实体 | 对齐状态 | 说明 |
116
+ |---------|---------|---------|------|
117
+ | PlaceOrder | Order | ✅ | |
118
+
119
+ - [ ] 每个 AA 功能 ≥1 个 IA 实体支撑
120
+ - [ ] 每个 IA 实体 ≥1 个 AA 功能消费(无孤立节点)
121
+
122
+ ### 7.2 语义一致性
123
+ | 概念 | 上下文 A 命名 | 上下文 B 命名 | 一致性 |
124
+ |------|-------------|-------------|--------|
125
+ | 客户 | 下单人(order) | 付款人(payment) | ✅ 显式映射 |
126
+
127
+ ### 7.3 变更分叉级联(F3)
128
+ 直接依赖 / 间接依赖 / 隐式依赖 三层次分析。
129
+
130
+ ## 8 DDD 反模式自检 <a id="antipatterns"></a>
131
+
132
+ - [ ] 贫血模型(聚合只有 getter/setter,行为全在 Service)
133
+ - [ ] 聚合过大(实体 >5 或事务边界膨胀)
134
+ - [ ] 实体滥用(ER 每张表被当实体)
135
+ - [ ] 表驱动聚合(表=聚合=Repository)
136
+ - [ ] 事件命名不一致(大小写/时态混用)
137
+
138
+ ## 演进日志 <a id="evolution-log"></a>
139
+
140
+ | 版本 | 日期 | 变更摘要 |
141
+ |------|------|---------|
142
+ | v1 | <date> | 初始设计 |
143
+
144
+ <!-- arch:current-state:begin -->
145
+ <!-- 此 marker 区由 arch-merge 代码独占写(迭代收尾/change 合并时覆盖),禁止手改 -->
146
+ <!-- arch:current-state:end -->
147
+ ````
148
+
149
+ ## 结构约束
150
+
151
+ - **厚锚点**:§1-2 每行一句话,不展开细节;细节全部下沉 `domains/<bc>.md` 按域详细页与 `diagrams/`。
152
+ - **marker 区**:`<!-- arch:current-state:begin/end -->` 是 arch-merge 覆盖写的替换边界,**只由代码写,不由 LLM 写**。
153
+ - **按域详细页** `domains/<bc>.md`:职责与依赖 / 聚合明细 / 指令与事件(本域)/ 状态迁移图 / 数据片段(ER 局部)/ 应用时序(本域用例)/ 对外契约。单文件 ≤1500 token。
154
+ - **结构级详设边界**:BC/聚合/关键事件/状态机/概念 ER/关键时序做全;**每 API schema、每表全字段留给 change 落地时涌现**。
155
+
156
+ ## 正反向设计差异(旧项目首轮)
157
+
158
+ | 维度 | 正向设计(全新/已建档) | 逆向重建(旧项目首轮) |
159
+ |------|------------------------|----------------------|
160
+ | 输入 | PRD/plan/原型(预测) | 既有代码/DDL/文档(事实) |
161
+ | 推导方向 | 业务能力→BC→聚合→... | 代码结构→候选 BC→聚合根候选→... |
162
+ | 工具 | 方法论 + LLM | recon-probe.sh + codebase-recon-analyst + arch-reverse-analyst |
163
+ | provenance | forward-designed | reverse-engineered + 置信度(high/medium/low) |
164
+ | 深度 | L0 骨架 + 触及域深化 | 同(首轮强制 L0 骨架) |
@@ -0,0 +1,40 @@
1
+ # S3.5 产品级架构按域加载协议(v0.35.0,v0.14 §60.4)
2
+
3
+ > 产品级架构文档(iterations/vN/architecture.md + domains/)供变更级 architecture-design 子代理加载。
4
+ > 硬约束:单次上下文装载 ≤ **~2K token**(设计增强方案 v0.10 §29.1 三层策略)。本协议是 architecture-design SKILL.md「上下文加载协议」的产品级扩展。
5
+
6
+ ## 三段式加载
7
+
8
+ | 段 | 内容 | 预算 |
9
+ |----|------|------|
10
+ | ① 索引层 | `docs/architecture/INDEX.md`(统计摘要)+ ARCHITECTURE.md §1-2(厚锚点:BC 表 + 聚合注册表) | ~400-600 |
11
+ | ② 按域加载(按需) | change 触及的 `domains/<bc>.md`(+ 相关 sequence/erd 片段) | ~800-1400 |
12
+ | ③ 变更增量 | `changes/<id>/architecture/` 增量 + 相关 changelog | ~200-400 |
13
+
14
+ ## 加载规则
15
+
16
+ 1. **先索引、后按域**:子代理先读 ① 索引层做路由(识别 change 触及哪些 BC),再按需加载 ② 该域的详细页。
17
+ 2. **单域单次**:跨多域时一次只装载一个域文件,逐域分步处理(与 ch06 增量 SOP 对齐)。
18
+ 3. **引用非复制**:只读不改;产品级聚合注册表是唯一事实源,change 内设计**引用**注册表 id,不重定义。
19
+ 4. **迭代状态判定**(P1):读快照还是读全局由迭代状态决定——
20
+ - 迭代中(`snapshot_status: in-flight`)→ 读 `iterations/vN/` 快照(产品级决策权威)
21
+ - 迭代收尾(`snapshot_status: superseded/archived`)→ 读全局当前态(唯一权威)
22
+
23
+ ## 跨域降级(横向 change)
24
+
25
+ 横向 change(跨 ≥3 个 BC 的公共组件改造)会突破单次预算。降级路径:
26
+
27
+ 1. 只加载 ① 索引层 + 各域聚合注册表行(不加载详细页)。
28
+ 2. 触及域按"受影响优先级"逐域分步处理(每步 ≤1 域)。
29
+ 3. 加载前做 token 估算,超预算 → 告警 + 降级,而非硬约束失败。
30
+
31
+ ## token 预算自动化校验
32
+
33
+ - 锚点(§1-2)与域页 token 预算加**自动化校验**(镜像 frontmatter-lint 模式,进 npm test)——不靠 LLM 自律。
34
+ - S3.5 产物自检 + S4 审计抽查:`iterations/vN/architecture.md` 的 §1-2 必须一句话级;`domains/<bc>.md` 单文件 ≤1500 token(超出继续拆子页)。
35
+
36
+ ## 与既有加载协议的关系
37
+
38
+ - 本协议**扩展** architecture-design SKILL.md「上下文加载协议」(:166-183),不替代。
39
+ - 变更级 architecture-design 的输入 = 本协议 ① + ②(产品级)+ ③(变更增量);语义层(五项检查判定、评审)仍走既有流程。
40
+ - S3.5 产品级评审门(architecture-reviewer product 视角 A1-A6)验证产物结构满足本协议(A1 结构完备 + A2 marker/锚点可解析),保证下游可按域加载。
@@ -0,0 +1,76 @@
1
+ # S3.5 产品级架构设计 SOP(v0.35.0,v0.14 §59/§60)
2
+
3
+ > architecture 阶段(S3 之后、S4 之前)的执行 SOP。产出 `docs/architecture/iterations/vN/architecture.md`(预测态快照)。
4
+ > **owner**:architecture-design skill 的 **product 模式**子代理(唯一 owner,声明见 architecture-design/SKILL.md「独立调用」扩展)。
5
+ > **时序(P1)**:只写快照不写全局;change 关闭时 arch-merge 回写实际增量;迭代收尾快照标 `archived` 退役。
6
+
7
+ ## 输入
8
+
9
+ - prd/vN/prd.md(frozen_downstream,功能清单 F001_P0 等)
10
+ - prd/vN/plan.md(高阶技术设计段:模块边界/技术选型/数据流/关键聚合划分)
11
+ - prototype/(S2 产物,页面结构)
12
+ - docs/architecture/baseline.md(S1 注入)
13
+ - docs/architecture/CONCEPTS.md(领域词汇)
14
+ - 现有全局基线(旧项目逆向重建场景)
15
+
16
+ ## 8 步执行流程
17
+
18
+ > 复用 architecture-design 方法论(F1-F8 + ch01-ch06),从"每 change 增量"扩展到"全系统结构级设计"。
19
+
20
+ | 步 | 动作 | 方法论 | 产出 |
21
+ |----|------|--------|------|
22
+ | 0 | 输入梳理 | 读 PRD 功能清单 + plan 技术方向 + prototype + CONCEPTS + 现有基线 | 功能域→候选业务能力映射 |
23
+ | 1 | 限界上下文识别 | 功能域分组 + 词汇聚类 + 活动对象矩阵(ch04,重叠>70% 合并) | Context Map:BC 表 + 关系图(6 关系类型)+ 语言边界术语表 |
24
+ | 2 | 聚合识别 | 聚合四要素(ch04)+ 活动对象矩阵 | 聚合注册表(唯一事实源) |
25
+ | 3 | 指令与事件识别 | CQRS 指令分流(ch05:Command/Read/Query + 阻断测试)+ 事件三类 | 指令表 + 事件表 + 事件流图 + 读模型投影清单 |
26
+ | 4 | 聚合状态迁移 | 聚合根=状态机守卫(Vernon) | stateDiagram + 状态表(含触发源上下文、guard 不变量) |
27
+ | 5 | 数据模型/ER(概念级) | 从聚合映射持久化(IA)+ CQRS 写读分区 | 聚合边界 ER + 实体表 + 聚合→表映射表 |
28
+ | 6 | 应用时序(关键用例) | AA→TA 编排(4A) | 关键用例 Top-N 跨聚合时序图 + 用例索引 |
29
+ | 7 | 跨域一致性检查 | F2 双对齐(AA≥1 IA 实体)+ 语义统一 + F3 变更分叉级联 | 一致性检查表 |
30
+ | 8 | 反模式自检 + 评审 | DDD 反模式清单 + 产品级评审门 | 自检清单 + 评审 verdict |
31
+
32
+ **顺序纪律**:聚合在前、ER 在后(ER 是派生产物,禁止先画 ER 再定聚合);BC 边界/聚合所有权/全局契约是**产品级唯一事实源**(聚合注册表),变更级只引用。
33
+
34
+ **模板**:按 `references/s3.5-architecture-template.md` 骨架产出(6 产物 + 厚锚点 + marker + provenance)。
35
+
36
+ ## 产品级评审门(Step 8)
37
+
38
+ 复用 architecture-reviewer agent(`agents/architecture-reviewer.md`),以 **product 视角**审查:
39
+
40
+ | 维度 | 校验 |
41
+ |------|------|
42
+ | A1 | 结构完备(6 产物章节存在 + marker/锚点可解析,机械预检) |
43
+ | A2 | SQL/结构有效(机械 grep,若含 sql/) |
44
+ | A3 | 跨域一致性(AA↔IA 双对齐,F2 门禁) |
45
+ | A4 | 与 PRD 功能清单覆盖映射(F001_P0 逐条 → BC/聚合/API) |
46
+ | A5 | 与全局基线一致性(旧项目逆向重建产物 vs 现状代码) |
47
+ | A6 | conventions 合规 |
48
+
49
+ 规则:≤3 轮修复循环 + 收敛检测(连续两轮不一致项不缩小 → 转人工);PASS 才进 S4。
50
+ **skip 时**:architecture-reviewer 不执行,但 skip 必须物化(iterations/vN/SKIPPED 标记 + 理由)。
51
+
52
+ ## 正向设计 vs 逆向重建
53
+
54
+ | 维度 | 正向设计(全新/已建档) | 逆向重建(旧项目首轮) |
55
+ |------|------------------------|----------------------|
56
+ | 输入 | PRD/plan/原型(预测) | 既有代码/DDL/文档(事实) |
57
+ | 推导方向 | 业务能力→BC→聚合→... | 代码结构→候选 BC→聚合根候选→... |
58
+ | 工具 | 方法论 + LLM | recon-probe.sh + codebase-recon-analyst + arch-reverse-analyst |
59
+ | provenance | forward-designed | reverse-engineered + 置信度(high/medium/low) |
60
+ | 深度 | L0 骨架 + 触及域深化 | 同(首轮强制 L0 骨架,见 v0.14 §63.3) |
61
+
62
+ 逆向重建工具:`workflow-bootstrap` 的 recon-probe.sh(--ddl-out)+ codebase-recon-analyst + 新增 `arch-reverse-analyst`(v0.14 §63.2)。
63
+
64
+ ## 完成条件
65
+
66
+ - `docs/architecture/iterations/vN/architecture.md` 已产出(6 产物,provenance 标注)
67
+ - 产品级评审门 verdict = PASS(或 skip 已物化)
68
+ - orchestrator.yaml 中 ARCH 阶段状态 = completed(workflow_phase: architecture)
69
+ - **未触发** arch-merge 全局覆盖写(预测态不进实际态,P1)
70
+
71
+ ## 常见陷阱
72
+
73
+ - **过度详设**:契约级(每 API schema/每表全字段)留给 change 落地涌现,产品级只做结构级(P4)。
74
+ - **skip 不物化**:跳过必须写 iterations/vN/SKIPPED + 理由,否则 S4 arch-readiness 卡死 hotfix 通道(v0.32.2 C1 死锁链同类)。
75
+ - **事件只识别不投影**:引入事件必须补"读模型投影清单"(§3.4),否则读模型更新无定义。
76
+ - **ER 先行**:先画 ER 再定聚合 = 数据库驱动设计,违背 DDD(顺序纪律)。
@@ -201,6 +201,20 @@ tf solutions capture \
201
201
 
202
202
  This check is advisory — skip silently if no learnable moments are detected.
203
203
 
204
+ ### Worktree Deisolation (v0.35.0) — advisory
205
+
206
+ After compound promotion, check if worktree isolation exists for this change:
207
+
208
+ ```bash
209
+ tf deisolate <change-dir>
210
+ ```
211
+
212
+ If worktrees exist (output shows `found: true` or ahead/behind stats), include the deisolation report in the closing summary. **Do NOT auto-merge** — the orchestrator or user decides the merge strategy. Mark `Worktree deisolation` in the Step 5 report as:
213
+ - `PENDING` — worktrees detected, user action required
214
+ - `N/A` — no worktrees found (single-repo or already cleaned)
215
+
216
+ This step is advisory — skip silently when `tf deisolate` reports no worktrees.
217
+
204
218
  ### Workflow Feedback Check (v0.16.0)
205
219
 
206
220
  Before finalizing the closing, ask the user if they encountered any workflow issues during this change:
@@ -11,7 +11,7 @@ type: session-handoff
11
11
  version: 1
12
12
  created_at: <ISO 8601>
13
13
  requirement_id: <req-id | null>
14
- workflow_phase: <S1-S5 | change-level | null>
14
+ workflow_phase: <S1-S5 | architecture | change-level | null>
15
15
  state_machine: <8态之一 | null>
16
16
  change_dir: <path | null>
17
17
  ---
@@ -26,7 +26,7 @@ change_dir: <path | null>
26
26
  ### §2 工作流状态(自动检测,引用不复制)
27
27
 
28
28
  - 活跃需求:`<req-id>` — `<title>`
29
- - 产品级阶段:`<S1-S5>`(详见 `.team-flow/requirements/<req-id>/orchestrator.yaml`)
29
+ - 产品级阶段:`<S1-S5 | architecture>`(详见 `.team-flow/requirements/<req-id>/orchestrator.yaml`)
30
30
  - 变更级状态:`<state>`(详见 `<change>/.team-flow.yaml`)
31
31
  - PRD 版本:`<vN>`,冻结状态:`<frozen_downstream | frozen_absolute | unfrozen>`
32
32
 
@@ -137,6 +137,7 @@ Generate one at a time. Confirm each before next. This prevents scope drift —
137
137
 
138
138
  ### tasks.md
139
139
  - `## File Structure`, `## Interfaces`, numbered tasks, exact file paths, TDD phases, ≤5 min steps, no placeholders, every requirement mapped, explicit dependencies
140
+ - **接口交叉核对(v0.35.0,v0.14 §61.1)**:若 `architecture/api.md` 存在,机械比对 `tasks.md` `## Interfaces` 声明的端点集合与 `api.md` 架构路由表端点集合——tasks 引用了 api.md 未声明的端点、或 api.md 声明的关键端点 tasks 未落地 → 告警修正(traceability 从自报升级为机械比对)
140
141
 
141
142
  **If any artifact fails validation, fix before handing off to contract-builder.**
142
143
 
@@ -0,0 +1,60 @@
1
+ # Arch Reverse Analyst(v0.35.0,v0.14 §63.2)
2
+
3
+ > 旧项目 S3.5 逆向重建子代理。在 `workflow-bootstrap` B1 侦察之后、S3.5 reconstruction 模式派发。
4
+ > 消费 recon-probe.sh 确定性 JSON + codebase-recon-analyst 维度摘要,补齐**产品级逆向重建**维度:
5
+ > 候选限界上下文 / 聚合根候选 / 聚合状态机草图 / 指令事件表。
6
+ > 只读,不修改任何文件。
7
+
8
+ ## 输入契约
9
+
10
+ 派发 prompt 提供:
11
+ - `recon_json`:recon-probe.sh JSON 输出路径(机械基线:目录树/依赖/LOC/DDL)
12
+ - `root`:项目根
13
+ - 上游维度摘要:codebase-recon-analyst 的 modules / data-model / api-surface / architecture 输出(可选)
14
+
15
+ ## 方法论
16
+
17
+ ### Step 0: 消费基线
18
+ 先读 `recon_json` + 上游摘要。机械采集(文件/依赖/DDL)已由脚本完成,不重跑;只做**语义**判断。
19
+
20
+ ### 维度 1: 候选限界上下文(BC)
21
+ - 从目录树 + 模块边界 + 领域词汇(`docs/architecture/CONCEPTS.md` 若有)聚类候选 BC。
22
+ - 判断依据:命名空间/模块独立性、业务能力分组、依赖方向。
23
+ - 输出:候选 BC 列表 + 职责一句话 + 置信度(high/medium/low)+ 证据(目录路径)。
24
+
25
+ ### 维度 2: 聚合根候选
26
+ - 从实体类/Repository/Service 方法识别聚合根候选 + 事务边界。
27
+ - 判断依据:唯一标识、事务边界、Repository 归属。
28
+ - 输出:聚合根候选(`context:Aggregate` 格式)+ 值对象候选 + 事务边界 + 置信度。
29
+
30
+ ### 维度 3: 聚合状态机草图
31
+ - 从状态枚举/字段 + 状态流转逻辑(Service 方法)还原聚合状态机。
32
+ - 输出:状态清单 + 迁移触发(方法名/事件)草图;不确定标 `[待确认]`。
33
+
34
+ ### 维度 4: 指令与事件
35
+ - 从 Command/Service 方法签名 + 事件类识别指令(Command/Read/Query 分流,复用 ch05 阻断测试)与事件。
36
+ - 输出:指令表 + 事件表(类型/来源/消费),不确定标 `[待确认]`。
37
+
38
+ ### 输出规范(provenance + 置信度,v0.14 §63.2)
39
+ - frontmatter 标 `provenance: reverse-engineered`。
40
+ - 逐条目标注来源:`src/xxx/Order.java`(代码推断)/ `docs/legacy/*.md`(文档)/ `schema-baseline.sql`(DDL)/ `user-confirmed`(用户确认)。
41
+ - 置信度判定:代码路径 + DDL 推导 → high;LLM 语义推断 → medium/low。
42
+ - 仅产出 **L0 骨架**(候选 BC + 聚合根候选 + API 表面总览)首轮必做;状态机/指令事件完整深化留 L1 按域渐进(v0.14 §63.3)。
43
+
44
+ ## Tool Guidance
45
+ - Read/Grep/Glob 定位实体/状态/事件;Bash 仅限重新调用 recon-probe.sh(若基线未提供)。
46
+ - 不修改任何文件,只读。
47
+ - 规模阈值:模块<10 且 LOC<2万 可一次性全量;否则 L0+L1 分层渐进。
48
+
49
+ ## Structured Handoff(强制)
50
+ 你的 final response 必须是结构化交接:
51
+ ```
52
+ {
53
+ status: "done" | "done_with_questions" | "blocked",
54
+ deliverable: <候选 BC/聚合根/状态机/指令事件 结构化摘要(含 provenance + 置信度)>,
55
+ blockers: [ { question, why_blocking, options[] } ],
56
+ outstanding_questions: [ { question, default_assumption } ],
57
+ summary: <3-5 行 gist>
58
+ }
59
+ ```
60
+ 规则:非阻断疑问 → 按 default_assumption 继续 + 记入 outstanding_questions;阻断疑问(recon_json 与 root 均缺失、代码库为空)→ status=blocked + blockers[],绝不强行猜测。
@@ -7,6 +7,8 @@
7
7
  | 回退路径 | 触发条件 | 操作 | 制品处置 |
8
8
  |---------|---------|------|---------|
9
9
  | **S3 → S2** | plan 暴露 PRD scope 问题 | PRD vN 内修订 + 记录变更履历(临时解除 frozen_downstream) | plan.md → plan.md.revN(归档),S3 重入时从零产出 |
10
+ | **ARCH → S3** | 架构设计暴露 plan 拆分问题(v0.35.0 新增) | 调整拆分策略 | plan.md → plan.md.revN(归档);iterations/vN/ 快照未完成部分丢弃 |
11
+ | **S4 → ARCH** | 架构快照不覆盖 change 触及的 BC / 架构产物缺失(v0.35.0 新增) | 回 ARCH 阶段补快照 | iterations/vN/ 增量调整,change 拆分保留 |
10
12
  | **S4 → S3** | 依赖图不可执行/粒度不合理 | 调整拆分策略 | 已创建的 change 目录保留,重新拆分后增量调整 |
11
13
  | **S5 → S4** | 跨 change 冲突需要重新拆分 | 重新评估拆分方案 | 见下方「在途 change 处置」 |
12
14
 
@@ -21,7 +21,7 @@ S1 只做编排动作(需求选择、存在性检查、路径判断、阻塞
21
21
  |------|---------|------|------|
22
22
  | **全新需求** | 无现有 PRD,需求模糊 | → S2 | 完整流程 |
23
23
  | **续版需求** | 有 PRD vN,用户要加功能 | → S2(PRD vN+1) | 新版本迭代 |
24
- | **重新计划** | PRD 已冻结,plan 需调整 | → S3 | 跳过 brainstorm |
24
+ | **重新计划** | PRD 已冻结,plan 需调整 | → S3 | 跳过 brainstorm;S3 完成后进 ARCH(产品级架构设计,v0.35.0)再拆 change |
25
25
  | **继续执行** | changes 已拆分,继续下一个 | → S4/S5 | 先输出状态恢复简报,用户确认后继续 |
26
26
  | **单 change 快速通道** | 需求极清晰,无需 PRD(仅限单一功能点、无 UI、无跨模块依赖的极小变更) | → 直接创建 change → workflow-start | 最轻量路径,无 PRD 锚点,**不可触发 S3→S2 回退** |
27
27
  | **紧急修复(Hotfix)** | bug/生产问题,需最小范围修复 | → 直接创建 change(type: hotfix,注入 bug 描述替代 PRD)→ workflow-start | closing 时强制补录复利 |
@@ -42,9 +42,10 @@ ce-plan 在 orchestrator pipeline 上下文中减少仪式开销,但**保留
42
42
 
43
43
  - plan 是否暴露了 PRD 的范围问题?
44
44
  - **是** → 回退 S2,触发 PRD vN 内修订(记录变更原因)。详见 feedback-loops.md「S3 → S2」
45
- - **否** → 进 S4
45
+ - **否** → 进 ARCH(architecture 阶段,v0.35.0 产品级架构设计,见 state-model.md「architecture 阶段」)
46
46
 
47
47
  ## 完成条件
48
48
 
49
49
  - `prd/vN/plan.md` 已产出,含 change 拆分 + 依赖 DAG + 技术方向
50
50
  - `.team-flow/requirements/<req-id>/orchestrator.yaml` 中 S3 状态 = completed
51
+ - 下一步:进入 ARCH 阶段,产出 `docs/architecture/iterations/vN/architecture.md` 后进 S4(v0.35.0)
@@ -14,9 +14,19 @@
14
14
 
15
15
  ## 步骤
16
16
 
17
+ ### 0. 架构就绪门禁(arch-readiness,v0.35.0 新增)
18
+
19
+ > 设计依据:v0.14 §59.4。产品级架构快照必须覆盖 change 拆分触及的限界上下文,拆分审计才有架构依据。
20
+
21
+ 进入拆分前先校验:
22
+
23
+ - **项目 arch_baseline 缺失(存量/重建未完成)** → WARN 不阻断(reason: 'project architecture baseline not established — S3.5 reconstruction pending'),提示先跑 S3.5 重建产出 L0 骨架。
24
+ - **已建档项目** → 校验 `docs/architecture/iterations/vN/architecture.md` 存在且覆盖 plan.md 各 change 触及的全部 BC。不覆盖 → FAIL,回退 ARCH 阶段补快照(feedback-loops.md「S4 → ARCH」)。
25
+ - **skip 物化**:ARCH 阶段显式跳过(iterations/vN/ 占位含 skipped 标记 + 理由)→ PASS。
26
+
17
27
  ### 1. 拆分质量审计(必选门禁,不可跳过)
18
28
 
19
- 调用 `change-split-auditor` agent 对 `plan.md` 做拆分质量审计,输出审计报告(覆盖矩阵 / DAG 无环 / 粒度均衡 / 字段完整 / **拆分维度合规**)。质量自检清单:
29
+ 调用 `change-split-auditor` agent 对 `plan.md`(**+ `docs/architecture/iterations/vN/architecture.md` 作为架构依据**,v0.35.0)做拆分质量审计,输出审计报告(覆盖矩阵 / DAG 无环 / 粒度均衡 / 字段完整 / **拆分维度合规**)。质量自检清单:
20
30
 
21
31
  **必选约束**:审计 verdict = PASS 是 Step 3(创建脚手架)的前置条件。
22
32
  verdict = FAIL → 必须回退 S3 调整拆分后重新审计,不可绕过直接创建 change。
@@ -16,6 +16,7 @@
16
16
 
17
17
  - **迁移兼容**:检测到旧 `<root>/.workflow-orchestrator.yaml` 存在时,自动迁移到 `.team-flow/requirements/<req-id>/orchestrator.yaml` 并提示用户(一次性)。
18
18
  - **变更级状态**:各 change 的状态文件**当前仍为** `<change>/.team-flow.yaml`,检测逻辑不动;**计划 v1.0.0(P1-6 第二阶段)改名**为 `.team-flow.yaml`(对齐设计增强方案 v0.8 §18.3)。改名落地前,编排层与变更层一律以 `.team-flow.yaml` 为准。
19
+ - **项目级架构状态(v0.35.0 新增)**:`.team-flow/arch-state.json`(架构阶段是产品/迭代级,不放 change 状态)。见下文「architecture 阶段」与「arch_baseline 豁免键」。
19
20
 
20
21
  ## registry.yaml Schema
21
22
 
@@ -42,6 +43,8 @@ phases: # 各阶段状态
42
43
  - { id: S1, status: completed, started_at: "...", completed_at: "...", artifacts: [...] }
43
44
  - { id: S2, status: active, started_at: "...", artifacts: [...] }
44
45
  - { id: S3, status: pending }
46
+ - { id: ARCH, name: 产品级架构设计, status: pending, skip: <迭代无结构性变更|null>, artifacts: [docs/architecture/iterations/vN/architecture.md] }
47
+ - { id: S4, status: pending }
45
48
  custom_phases: [] # reserved
46
49
  replan_log: # 重规划履历
47
50
  - { seq: 1, trigger: "用户要求跳过原型", before: "S2→S3", after: "S2(skip-proto)→S3", approved_by: user }
@@ -71,6 +74,55 @@ prd_version: v1 # PRD 版本
71
74
  - **阻塞**:active → blocked → active(S5 检测到 change 卡死)或 blocked → aborted
72
75
  - **终止**:任何非 completed 状态 → aborted(用户放弃编排)
73
76
 
77
+ ## architecture 阶段(S3.5,v0.35.0 新增)
78
+
79
+ > 产品级架构设计阶段,位于 S3 计划之后、S4 拆分之前。设计依据:设计增强方案 v0.14 §59。
80
+
81
+ **phase id**:`ARCH`;顶层 `workflow_phase: architecture`(语义 kebab-case)。
82
+ **命名约定**:新阶段一律用 kebab-case 语义名(历史值保留不迁移,避免无价值 churn)。
83
+
84
+ ```yaml
85
+ phases:
86
+ - { id: S3, status: completed }
87
+ - { id: ARCH, name: 产品级架构设计, workflow_phase: architecture,
88
+ status: completed, skip: null,
89
+ artifacts: [docs/architecture/iterations/vN/architecture.md] }
90
+ - { id: S4, status: pending }
91
+ ```
92
+
93
+ **场景判定(入口三态)**:
94
+ | 场景 | 判定输入 | S3.5 模式 |
95
+ |------|---------|----------|
96
+ | S0 全新项目 | 无代码库 | 正向设计(首轮不可跳过) |
97
+ | S1 存量代码+无基线 | 有 src/,无 baseline.md | 先 workflow-bootstrap → 逆向重建 |
98
+ | S2 存量+瘦锚点 | baseline.md + ARCHITECTURE 无 BC/聚合层 | 逆向重建(深化) |
99
+ | S3 存量+跑过迭代 | baseline + changes/ + prd/vN/,无 arch_baseline | 逆向重建(首轮强制) |
100
+ | S4 已有产品级架构 | arch_baseline 已打戳 + iterations/ | 正向设计(正轨) |
101
+
102
+ **skip 条件(须物化)**:迭代无结构性变更(纯 bugfix/重构/不新增 BC 或聚合/不改变聚合边界或全局契约)。判定者 = **编排器 + 用户确认**(非 LLM 自判,防 v0.13 §54 绕过教训)。**skip 必须物化**:写入 `docs/architecture/iterations/vN/` 占位(含 skipped 标记 + 理由),guard 才放行——否则 hotfix/快速通道 change 会卡在 arch-readiness 上(v0.32.2 C1 死锁链同类)。
103
+
104
+ **时间盒 + 深度分层**:时间盒 ≤1 天;非触及 BC 只维护锚点行,触及 BC 才做按域深化(v0.14 §60.4)。
105
+
106
+ **输入输出契约**:
107
+ - 输入:prd/vN/prd.md(frozen_downstream)+ plan.md + prototype/ + baseline.md + CONCEPTS.md + 现有全局基线(旧项目)
108
+ - 输出:`docs/architecture/iterations/vN/architecture.md`(6 产物权威快照,预测态,provenance 标注)+ 产品级评审 verdict;**不触发全局覆盖写**(P1:预测态不进实际态)
109
+
110
+ **门禁**(v0.14 §59.4):
111
+ | 门禁 | 挂点 | 校验 | 豁免 |
112
+ |------|------|------|------|
113
+ | 产品级评审门 | ARCH→S4 | architecture-reviewer product 视角 PASS | skip 时仍要物化标记 |
114
+ | arch-readiness | S4 拆分 | iterations/vN/ 快照覆盖 change 触及的 BC | arch_baseline 缺失 → WARN 不 FAIL |
115
+ | arch-snapshot | executing→closing | 本轮快照已落盘 | 在途 change legacy 豁免 |
116
+
117
+ ## arch_baseline 豁免键(v0.35.0 新增)
118
+
119
+ 完全复刻 v0.13 §48.1 schema_version 防污染模式(设计增强方案 v0.14 §59.4/§63.1):
120
+
121
+ - **位置**:`.team-flow/arch-state.json`(项目级状态;架构阶段是产品/迭代级,不放 change 的 `.team-flow.yaml`)
122
+ - **内容**:`{ arch_baseline: "v0", established_at: "<date>", mode: "reconstruction" | "design", snapshot_root: "iterations/", baseline_prd_ref: "prd/vN/" }`
123
+ - **防污染**:仅 `tf arch init` 写入;`tf state set`/rebuild/doctor 一律不得追加(缺失 = 存量信号)
124
+ - **判定**:`arch_baseline == null` → arch-readiness/arch-snapshot 均 PASS + WARN(reason: 'project architecture baseline not established — S3.5 reconstruction pending')
125
+
74
126
  ## 双层冻结语义(解决 §17.3 与 §17.9.1 矛盾)
75
127
 
76
128
  - **`frozen_downstream`**(S2 完成时设置):下游阶段(S3/S4/S5)不可直接修改 PRD,只能通过回退到 S2 修改。**S3→S2 回退 = 临时解除 frozen_downstream**,S2 重新完成后恢复。