# Doc Layer System

> AI 驱动开发七层文档体系的可执行通用 skill。在任何涉及代码开发、文档同步、代码审查、测试编写的任务中，Agent 必须遵循此体系的分层规则、授权角色裁决规则、同步流程和变更钩子机制。项目特定规则（目录路径、治理角色、域列表、死亡线区域清单、金标准领域清单等）通过项目级 skill 补丁扩展，本 skill 不硬编码任何项目特定内容。触发场景：编写/修改代码或文档后需要同步、新增接口/数据库/页面功能、执行 /review、编写测试用例、处理文档与代码之间的矛盾、询问「这个东西该放哪里」或「这几个文档矛盾了听谁的」。

- Skill: `backtocimacoppi/doc-layer-system` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add backtocimacoppi/doc-layer-system`
- Raw SKILL.md: https://api.skillmd.com/api/skills/backtocimacoppi/doc-layer-system/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: BackToCimaCoppi (https://skillmd.com/u/backtocimacoppi)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/backtocimacoppi/doc-layer-system

---


# 七层文档体系

本 skill 是七层文档体系的**可执行版本**，用户级通用，可跨项目使用。

项目特定约定（目录路径、域列表、死亡线区域清单、金标准领域清单等）通过**项目级 skill 补丁**扩展，不写进本文件。

---

## 0. 适用范围与形态映射

本 skill 的七层划分是**功能性抽象**，可跨技术形态使用。

| 抽象层 | 通用含义 | 常见实现形态 |
|---|---|---|
| L1 需求层 | 产品意图与业务规则的完整载体 | 功能文档、业务需求书、线框/原型图 |
| L2 交互规格层 | 用户可见的交互规格（**可选层**：无 UI 项目可省略） | Web/移动端页面视觉规格；CLI 的命令行交互规格；低保真交互流程图；状态页（loading/empty/error/disabled） |
| L3 契约层 | 系统对外暴露的接口契约 | HTTP REST API；RPC/gRPC；CLI 命令签名；事件 Schema；消息队列消息格式 |
| L4 持久化规格层 | 数据存储结构规格 | 关系型数据库表结构；KV Store Schema；文件格式规范；消息存储结构 |
| L5 客户端实现规约（**可选层**：无客户端项目可省略） | 客户端/前端的架构规范与主要链路 | Web/移动端前端；桌面端；CLI 客户端逻辑层 |
| L6 服务端实现规约 | 服务端/后端的架构规范与主要链路 | REST 后端；微服务；数据管道；定时任务系统；事件消费者 |
| L7 测试用例层 | 对 L1~L6 各层设计意图的验证规格 | 自动化测试用例规格；手工验证场景规格 |

**L2 与 L5 是可选层**：纯后端服务、CLI 工具、数据管道、事件驱动系统等项目，可在项目级补丁中声明省略 L2 和/或 L5，直接从 L1 接入 L3/L4/L6/L7。

### 0.1 审核能力矩阵

每层文档的每次正式变更，需要由具备对应审核能力的人确认。能力要求是通用约束，具体绑定到哪个角色/岗位/人，由**项目级补丁**声明；若项目缺失某项能力，也应在补丁中显式声明降级方案（例如「L4 副审由主审兼任」）。

| 层 | 主审所需能力 | 副审所需能力 |
|---|---|---|
| L1 需求 | 业务判断能力（能确认功能边界与业务规则） | 技术可行性判断能力 |
| L2 交互规格层 | 视觉与交互判断能力 | 客户端实现判断能力 |
| L3 契约层 | 契约设计能力（客户端 + 服务端双侧） | 测试设计能力 |
| L4 持久化规格层 | 存储设计能力 | 架构判断能力 |
| L5 客户端实现规约（架构治理类） | 架构判断能力 | 全体技术可参与 |
| L5 客户端实现规约（实现方案类） | 客户端实现判断能力 | 业务判断能力（涉及业务时） |
| L6 服务端实现规约（架构治理类） | 架构判断能力 | 全体技术可参与 |
| L6 服务端实现规约（实现方案类） | 服务端实现判断能力 | 业务判断能力（涉及业务时） |
| L7 测试用例 | 测试设计能力 | 业务判断能力（金标准） |

### 0.2 项目形态与层裁剪

不同项目形态适用不同的层组合。项目级补丁应在文件开篇声明当前形态（如 `> 项目形态：纯后端`）。

| 项目形态 | 适用层 | 省略层 |
|---|---|---|
| **全栈**（前端 + 后端） | L1 / L2 / L3 / L4 / L5 / L6 / L7 | 无 |
| **纯后端**（无独立客户端） | L1 / L3 / L4 / L6 / L7 | L2（无 UI）/ L5（无客户端） |
| **纯前端**（对接外部 API） | L1 / L2 / L3 / L5 / L7 | L4（无自有持久化）/ L6（无自有服务端） |
| **纯前端**（离线 / 无后端） | L1 / L2 / L5 / L7 | L3 / L4 / L6 |

说明：
- 「纯前端对接外部 API」场景中 L3 仍然适用，用于记录前端所依赖的**外部 API 契约**（只读，非自有）
- 裁剪后不适用的层在本项目中跳过，对应文档路径和扫描矩阵条目无效
- 项目补丁声明形态后，`code-to-7layer` 反推 skill 会据此自动裁剪子任务列表

### 0.3 业务域与功能模块

本 skill 使用**「域/模块」**作为贯穿各层的组织轴：

- **有明确领域边界的项目**（DDD 实践、微服务等）：以**业务域**（如「用户」「订单」「支付」）为轴
- **无明确领域边界的项目**（按技术模块或功能分组）：以**功能模块**（如「认证」「消息推送」「管理后台」）为轴

两者组织方式完全等价，后文「域」均指「业务域或功能模块」，以项目实际情况为准。项目级补丁应在文件开篇声明域/模块列表。

---

## 1. 七层定义速查

| 层级 | 名称 | 核心问题 | 审核强度 |
|:---:|------|---------|:---:|
| L1 | 需求层 | 产品是什么形态、有哪些功能、业务链路如何、交互原型是什么样的 | 🔴 diff 逐字审 |
| L2 | 交互规格层 | 用户/调用方看到的交互流程、界面状态、视觉规格具体是什么样的 | 🟡 方向性确认 |
| L3 | 契约层（接口层） | 系统与外部之间约定什么接口契约 | 🔴 diff 逐字审 |
| L4 | 数据库层 | 数据如何存储 | 🔴 diff 逐字审 |
| L5 | 客户端实现规约层（前端技术层） | 客户端/前端用什么技术、走什么主要业务链路、遵守什么架构规范 | 🔴 diff 逐字审（治理类） / 🟠 关键面抽查（实现方案类） |
| L6 | 服务端实现规约层（后端技术层） | 服务端/后端用什么技术、走什么主要业务链路、遵守什么架构规范 | 🔴 diff 逐字审（治理类） / 🟠 关键面抽查（实现方案类） |
| L7 | 测试用例层 | 怎样验证 L1~L6 各层的设计意图是否被正确实现 | 🟠 关键面抽查（金标准）/ 🟡 方向性确认（其余） |

**审核强度说明**：
- 🔴 **diff 逐字审**：对本次 diff（新增/修改行）逐字确认；存量内容不重审但评审人须确认 diff 与上下文一致。死亡线区域任何 diff 自动升级为 diff 逐字审 + 死亡线双轨审查。
- 🟠 **关键面抽查**：重点审架构规范的禁止模式清单、主要链路覆盖度、技术选型记录；其他细节抽查。
- 🟡 **方向性确认**：整体浏览方向一致、重要字段/状态无缺漏即可。

### 1.1 层间关系

```
裁决链（排序参考，非自动执行依据）：

  L1 需求
     ↓
  L2 交互层（可选：无 UI/交互界面时跳过）
     ↓
  L3 契约层  ‖  L4 持久化规格层    （无一一映射，但有显式耦合面，见下方说明）
     ↓
  L5 客户端实现规约（可选：无客户端时跳过）  ‖  L6 服务端实现规约
     ↓
  L7 测试用例
```

**关于 L5/L6 与代码的关系**：L5/L6 是**设计型**层，不是代码镜像层。它们是**重大业务/技术裁决的锁定层**——人在此审核拍板、锁定决策，AI 后续施工只能在框架内执行，**不得自行重裁、不得违反已锁定的链路思维**。L5/L6 文档对以下内容有效力：① 架构骨架与分层方向（脚手架结构、禁止越层方向）；② 跨模块红线/禁忌清单；③ 关键技术选型；④ **本层级/域/模块的全部核心业务链路**——"核心业务链路"按**决策风险轴**判定（定义见 §5.5/§5.6 与 `references/L5L6写作指南.md`），**不设数量上限**：有多少条需人拍板的决策点/复杂编排，就逐条说明多少。真正的实现细节（私有方法、SQL、DTO/VO 转换、标准 CRUD、纯透传/字段映射）属于**文档未规定的实现自由**：实现者可自行选择手段，但必须满足冻结规格与验证条件。任何层都不得用“以代码/实现为准”描述这条边界。

**关于同级层关系**：L3 与 L4 没有一一映射关系，但存在**显式耦合面**——以下情形改动一层时需扫描另一层：① 接口字段直接透传表字段（字段名/类型相同）；② 表字段被接口响应引用；③ 枚举值在接口与表中共用。其他改动（如索引调整、内部注释变化）不触发跨层扫描。L5 ↔ L6 互不强制驱动，两者通过 L3 接口层对话。

### 1.2 版本归属与生命周期状态

**禁止进度状态词**（这些归任务总控/任务级设计文档，不进正式文档）：
`已完成`、`开发中`、`已上线`、`测试中`、`待发布`

**版本归属字段**（必填，记录能力属于哪个版本）：

| 场景 | 写法 |
|---|---|
| 文档对应单一版本 | `> 版本归属：V2` |
| 文档跨多版本共用 | `> 适用版本：V1、V2` |
| 跨版本长期成立 | `> 版本归属：通用` |

**生命周期状态不进入正式规格正文**：正式 L1~L7 默认表示对应版本的当前有效规格；草稿、过时、待修订、施工中、已废弃等状态统一记录在任务总控、真值收敛清单、归档索引或 Git 历史。项目补丁不得把“过时待修订”当作正式规格的合法终态。

### 1.3 文档元数据要求

每份 L1~L6 正式文档顶部必须包含以下**必填字段**：

| 字段 | 说明 |
|---|---|
| `版本归属` | 见 §1.2 规则；项目可采用等价的适用版本字段 |

**推断元数据**（不强制人工维护，由 Git/PR 系统推断）：

| 字段 | 推断来源 |
|---|---|
| 最后审核日期 | 对应 PR 合并时间 / 最后一次 commit 时间 |
| 最后审核人 | 对应 PR Reviewer / commit author |

项目补丁可声明推断脚本，将 Git 元数据注入文档头部的可选字段。

AI 在冲突分级（§2）时，若能推断出「文档上次合并时间早于代码相关变更时间」，应在报告中附注「文档可能过时（最后合并 X，相关代码已于 Y 变更）」作为裁决参考，不直接据此修改任何层。

### 1.4 真值不得下放（强制）

- L1~L7 是规格；代码、Migration、实时数据库、运行日志、任务总控、轻量设计和测试脚本是证据、执行投影或上游过程资产，**不得取得正式规格的裁决权**。
- 正式规格禁止出现“以代码/实现/Entity/Mapper/Migration/数据库现状/施工结果为准”“施工时确定”等把规范内容留给下游决定的表述。
- 允许描述运行时权威关系（如“客户端状态以服务端响应为准”），但文档必须同时完整定义该响应语义；不得借运行时权威逃避规格定义。
- 正式正文只保留当前有效规则。禁止“后节覆盖前节”“新条款优先于旧条款但旧条款保留”的补丁式演进；旧方案留 Git、任务总控或归档。
- 轻量设计只保存决策理由；其全部有效规格语义必须在冻结前物化到 L1~L7。施工者不应依赖轻量设计或任务总控才能补全正式规格。

### 1.5 业务语义来源与授权裁决记录

- 正式 L1~L7 是最终规格真值，但**修改正式真值的来源必须可审计**。凡新增/改变业务结果、死亡线规则、对外契约、持久化语义或不可逆架构归属，必须来自既有正式上游真值，或由业务决策负责人作出的任务级 `_shared/用户裁决记录.md#DEC-x`。文件名为兼容既有工具保留，不表示当前交互方自动拥有裁决权。
- `DEC-x` 必须保存授权角色原话或明确选项、实际角色、日期、来源位置和适用范围。AI 摘要、评审建议、主线程偏好、代码现状和任务发起行为都不能伪装成“已批准”。
- 多项独立业务选择必须逐项编号，不得捆成一句“用户总体同意”。AI 应把本切片全部真实缺口合并成一张表一次询问，减少用户打断，但留痕仍逐项。
- 评审者只能暴露缺口；若没有有效 `DEC-x`，不得把候选方案写入“已决策·不得重开”区，也不得物化为正式业务规则。
- 正式正文完成物化后独立自足；可以保留一行“日期 + DEC-x”来源注记，但不得依赖任务资产才能理解规则。

---

## 2. 冲突处理规则

> [!CAUTION]
> 这是本 skill 相对旧式文档法的**最大改动**：推翻了"AI 按裁决链自动修正低优先级层"的旧规则，改为三级分级处理。

**适用范围**：所有跨层冲突、任何层与代码的冲突。

### 2.1 三级冲突分级

| 级别 | 定义 | AI 动作 |
|---|---|---|
| **L0 表面冲突** | 措辞/排版/字段注释/同义词差异，不影响语义 | AI 直接按裁决链上游对齐；在 PR 描述中列出已对齐项，无需停机 |
| **L1a 局部语义冲突** | 业务规则/状态流/字段含义不一致，且影响面**仅限**单一未发布功能、非死亡线区域 | 标注 `[SEMANTIC-DEFER]`，允许继续当轮编码；但**交付前必须完成裁决**，未裁决不可合并 |
| **L1b 跨域语义冲突** | 同 L1a 定义，但影响面跨已发布功能、跨域，或命中死亡线区域 | AI 立刻停止，明确报告冲突，请求人工裁决后继续 |
| **L2 契约破坏冲突** | 接口签名/字段类型/数据库字段名/枚举值/鉴权方式不一致 | AI 立即停机 + 标红 + **默认拒绝继续编码**，必须人工裁决后解锁 |

**判断分级的辅助输入**：变更面（是否涉及契约面）+ 死亡线标记（死亡线区域的任何语义冲突自动升级到 L2；非死亡线但跨已发布功能的语义冲突升级到 L1b）。

### 2.2 人工裁决流程（适用 L1 / L2 级）

1. **停止对冲突条款的写入或施工**，但继续完成当前已声明任务切片的有界只读扫描
2. **明确报告冲突**：「发现 [来源 A] 与 [来源 B] 不一致：[具体不一致内容]」
3. **合并询问而非逐条打断**：把本切片全部真实决策缺口收集成一张裁决表，再一次性请人裁决；不得每发现一处就问一次
4. **等待人的决定**，不允许 AI 用裁决链"猜"哪个对
5. 人做出决定后，AI 按人的指示统一更新所有相关层

**禁止行为**（L1 / L2 冲突）：

- ❌ AI 看到 L3 和代码不一致，自己按 L3 改代码
- ❌ AI 看到 L6 文档和代码主要链路不一致，自己按代码反写 L6
- ❌ AI 看到 L1 决策和 L2 页面不一致，自己按 L1 改 L2
- ❌ 任何"我觉得显然是 X 对"的自动行为

**裁决链的唯一用途**：告诉人"理论上谁优先"，供人做决定时参考；也作为 L0 表面冲突自动对齐的依据。不允许 AI 用它自动解决 L1/L2 冲突。

### 2.3 goal 执行态例外（结果管控模式）

> **适用前提（三条全中，缺一不适用）**：
> ① 本次任务的规格**已在施工前一次性冻结**（五项冻结闸门全绿，含 `spec_hash` 或等价锚点；`spec_hash` 计算规范见 `test-case-design` §5），**不是**仓库里的存量陈旧文档
> ② 冻结件由 goal **之外**产出并已过评审
> ③ 存在**飞行决策日志**，每条自愈留痕，用户事后逐条追认
>
> **轻量档（`plan-goal`）取值**：前提②的「已过评审」= 用户对计划逐条拍板批准（`plan-goal` §3 评审等价物）；「计划赢」仅覆盖计划明写语义，未覆盖的语义冲突仍照 §2.2 停机。

满足前提时，§2.2 的「立刻停止 + 人工裁决」在 goal 自主执行期间让位于下表。**否则 goal 每撞一次文档不一致就要停机，结果管控当场退化回过程管控**——这正是要治的病。

| 情况 | goal 内动作 |
|---|---|
| 代码 ≠ **本次冻结的规格** | **按规格改代码**，记飞行日志，不停机 |
| 未规定事项属于**纯实现自由**：任一选择都不改变可观察结果、契约、数据语义、架构边界，也不影响按规格重建 | 在代码中选取合规实现并记日志；**不写 L1–L7**，避免把代码细节污染成规格 |
| **规格有洞但不需要新业务裁决**：影响可重建的 L5/L6 选择，且现有正式真值给出唯一合法方向 | 暂停当前施工切片，走“有界重新冻结”：补轻量设计 `SD-x` → 职责正确的正式层 → 对应 `AC-x`，更新哈希、主题唯一性账、业务语义差异表与覆盖报告，五项冻结闸门重跑全绿后继续；不问用户、不重开对抗评审 |
| goal 中**意外发现**的存量陈旧描述，且最新冻结真值已给出唯一答案 | 同样走有界重新冻结，保证轻量设计、正式规格、L7 与覆盖报告同步；若开工前已知，则说明原冻结无效，必须退回冻结阶段 |
| 规格错了 / 洞会改变业务结果 / 命中死亡线 / **两份都已冻结的真值真矛盾** | **例外不覆盖，照 §2.2 停机**（停机后默认按 goal-charter §4 修改方案热修续跑；回炉 = 终止本 goal 退回上游子任务重来，例外档，定义见 `goal-charter` §5） |

**禁止只补 L5/L6**：任何正式层变更都必须同步其 `SD-x / TOPIC-x / AC-x / provenance_refs / semantic_diff` 与最新覆盖报告。否则“施工时补漏”会让轻量设计、测试和七层重新分叉，直接制造下一轮文档腐烂。

**飞行日志无规格裁决权**：日志只能记录施工事实、证据与纯实现自由。出现“不再”、“改为”、“取消原”、“与正式规格不同但”、“实现选择”等可能改写结果的表述时，必须立即证明它满足“任一选择均不改变可观察结果、契约、数据语义、架构边界与可重建性”；无法证明就回退至冻结或按 §2.2 停机，不得靠日志使新语义生效。

**为什么 §2.2 禁止行为第 1 条（「AI 看到 L3 和代码不一致，自己按 L3 改代码」）在此不适用**：那条防的是**按"陈旧"文档改代码**——文档可能早就过时，盲目对齐会毁掉正确的代码。而本次冻结件**刚刚产出并经评审，不陈旧**，它就是本次施工的法律。**前提①存在的全部意义就是分开这两种情况。**

**没有冻结件 = 没有"文档赢"的资格**：日常改动、bug 修复、探索性工作一律照 §2.2 原样执行。本例外不能靠声明"我在跑 goal"取得。

---

## 3. 变更钩子机制

「变更钩子」是当文档/代码改动时，主动扫描有依赖关系的下游层是否需要跟着改的机制。

### 3.1 改动扫描矩阵

| 改动来源 | 必须扫描的下游 |
|---|---|
| L1 需求变更 | L2 页面、L3 接口、L4 数据库、L7 金标准测试；L5/L6 核心业务链路（仅当 L1 调整命中已登记的决策点/编排时） |
| L2 页面变更 | L3（页面新增字段/操作时）、L5 前端技术、L7 测试 |
| L3 接口变更 | L5 前端技术、L6 后端技术、L7 接口测试 |
| L4 数据库变更 | L6 后端技术、L7 实现验证测试；L3（命中显式耦合面：字段透传/接口引用/共用枚举时） |
| L5 前端技术变更 | 前端代码、L7 前端测试 |
| L6 后端技术变更 | 后端代码、L7 实现验证/金标准测试 |
| 代码变更（按位置细化）| 见下方展开表 |

**代码变更扫描展开表**：

| 代码改动位置 | 必须扫描 |
|---|---|
| Controller / DTO / VO / 接口签名 | L3 接口层、L7 接口验证测试 |
| Entity / Migration / Repository 映射 | L4 数据库层、L7 实现验证测试 |
| Service / Repository 业务规则、状态机、判定逻辑 | L1 业务规则、L6 状态机描述、L7 金标准测试 |
| 架构骨架（包结构/分层/命名规范）变更 | L5/L6 架构治理类 |
| 前端页面/组件/状态管理/服务层封装 | L2 视觉规格（如有）、L5 业务链路 |
| 算法核心（死亡线区域） | L1 业务规则、L7 金标准、要求项目指定的真人审查角色审查 |
| 私有方法、严格不改变结果集语义的 SQL 优化（同结果集/同顺序/同分页语义）、样式微调 | 不触发扫描 |
| SQL 优化涉及 join 方式/去重策略/排序/分页语义/隔离级别变化 | L4 数据库层、L6 后端技术、L7 实现验证测试 |

### 3.2 钩子实现三层联动

1. **AI 主动扫描层**：AI 在执行任务时，按 §3.1 矩阵主动扫描；发现不一致 → 人工裁决
2. **脚本检查层**：项目可选地实现 `post-change-check` 脚本，文件改动后自动跑（示例（MyApp）：`.claude/hooks/post-change-check.sh`）
3. **评审拦截层**：评审工作流中作为强制检查项（项目可自定义触发器与命名，如 /review）

### 3.3 冻结前跨层可实现性检查（强制）

`SD → 正式规格 → AC` 全部有引用，只能证明“传播完整”，不能证明“能够实现”。进入施工冻结前必须再做一次**跨层可满足性**检查：

| 规格要求 | 必须证明 |
|---|---|
| L5/L6/L7 要求读取某个业务状态 | L3 有合法输入/输出或域内有合法读取来源；不得靠未定义接口猜值 |
| L5/L6/L7 要求冻结、快照、预留、幂等或跨时点保持状态 | L4 有合法承载与生命周期，或正式说明为什么该状态可无持久化地唯一推导 |
| L7 断言某个错误码、状态或数据终态 | L1/L3/L4/L5/L6 中有职责正确的正式来源，且测试数据可合法构造 |
| 跨域链路需要对方信息或写入 | 正式契约中有合法接口面与一致性边界，不得依赖跨域直读/写 |

任一要求只有 L6/L7 描述、却找不到合法 L3/L4/域内承载路径，判定为**规格不可满足**，不得冻结，不得留给 Goal 发明接口或 Schema。

### 3.4 业务主题唯一性检查（强制）

“每条设计都已回写”不等于“回写后只有一个业务答案”。冻结件必须建立 `semantic_topics`，把任务切片内每个可改变用户可观察结果、契约、持久化语义或架构边界的问题登记为稳定 `TOPIC-x`。每个主题至少包含：

- `question`：本主题只回答的一个问题
- `positive_rule`：唯一生效的正向规则
- `forbidden_outcomes`：至少一个明确禁止的反向结果
- `boundary`：生效时刻、入口、平台、并发、失败与超时边界
- `failure_closure`：失败后的唯一收口结果
- `formal_spec_refs`：承载该规则的全部正式 L1–L7 锚点
- `provenance_refs`：对应 `SD-x`、上游真值或 `DEC-x`

检查器和主线必须对每个 `TOPIC-x` 打开**全部** `formal_spec_refs`，对比正向规则、禁止结果、边界与失败收口。同一主题在两个正式锚点中可同时成立相反结果，即为真值矛盾，不得用“下游更新”、“以测试为准”或“按代码实现”解消。

覆盖报告必须同时给出 `materialization_pass / semantic_uniqueness_pass / satisfiability_pass / decision_provenance_pass / semantic_diff_pass`；**五项全真**才可进入章程。`semantic_uniqueness_pass=true` 必须由完整主题账和已执行的跨锚点比对支撑——该比对必须由检查器机械执行（逐 `TOPIC-x` 解析全部 `formal_spec_refs` 锚点做交叉核对）；项目暂无法机器化时，该项降级为候选终审的人工检查项，**不得以自报布尔充数**。评审闭环不设独立布尔：冻结前检查「凡触发过对抗评审的对象，其评审报告的封闭式整改验收终态 = PASS」，以报告本身为证据（见 `adversarial-review` / `closed-remediation-review`），不自证。

**冻结闸门的诚实定位**：闸门审的是覆盖报告的**结构与追溯完整性**，不审规格本身是否正确；语义正确性的防线是 goal 运行时停机与候选终审。闸门全绿不得被表述或理解为语义担保。

同时生成一次**业务语义差异表**：对比评审前设计基线、用户 `DEC-x` 与最终正式规格，逐条列出新增/删除/改写的业务结果。任何无法追到上游真值或 `DEC-x` 的变化都必须撤销或停机裁决。

---

## 4. 开发流程同步规则

### 4.0 工作模式选择

在开始具体开发流程前，先选定当前工作模式：

| 模式 | 适用场景 | 文档要求 |
|---|---|---|
| **施工模式**（默认） | 正常功能开发、计划内修改 | 按 §4.1~§4.4 线性流程，先更新文档再编码 |
| **设计探索窗口** | 技术预研、产品原型、PoC 验证，或需求边界未定时的并行实现 | 允许先编码（提交标注 `[EXPLORATORY]`），步骤 1~3 文档与代码可并行推进；**必须选择以下两个出口之一**：① 探索结束 → 冻结 L3/L4 契约（进入「已审核」状态）→ 切换到施工模式；② 探索作废 → 弃稿，不留 [EXPLORATORY] 残骸在主干 |
| **止血模式** | 线上故障紧急修复、安全漏洞 | 允许直接改代码（提交标注 `[HOTFIX]`）；要求 24 小时内补齐 L3/L4/L6 变更记录与 L7 回归测试 |
| **RCA 模式** | Bug 归因不明，需要先做证据收集 | 先复现 + 收集证据，再判定属哪一层的偏差；不强制开局判定层，进入 §4.3 时再走对应流程 |

§4.3 Bug 修复：若可立刻判定 bug 属哪层偏差，直接按原有步骤；若不可判定，先进入 RCA 模式做证据收集和归因，再决定走哪条路径。

**契约冻结定义**：L3/L4 文档的生命周期状态进入「已审核」即视为契约冻结。契约冻结后，任何 L3/L4 修改按 §4.2「改接口/数据库」分支处理，不得退回设计探索窗口。

### 4.1 新增功能开发

```
步骤 1：确认 L1（需求是否已覆盖此功能）
    ↓ 如果 L1 未覆盖 → 先与用户确认，更新 L1
步骤 2：更新 L2（页面视觉规格，如适用）（无 UI 的项目跳过此步骤）
步骤 3：更新 L3（接口契约）+ L4（数据库设计）
    ↓ 用户确认 → "L3/L4 已审核"
步骤 4：编写代码（按 L5/L6 架构规范执行）
步骤 5：检查 L5/L6 主要链路描述是否与新代码对齐（如有偏差 → 人工裁决）
步骤 6：编写/更新 L7（测试用例）
步骤 7：执行评审动作（项目可自定义触发器与命名，如 /review）
```

### 4.2 修改现有功能

```
步骤 1：判断修改范围
    ├─ 仅实现优化（不改接口/行为）
    │   → 改代码 → 检查 L5/L6 主要链路是否需要更新 → 更新 L7
    ├─ 改接口/数据库
    │   → 先更新 L3/L4 → 用户确认 → 改代码 → 检查 L5/L6 → 更新 L7
    └─ 改功能设计
        → 先更新 L1/L2 → 用户确认 → 改代码 → 检查 L3/L4/L5/L6 → 更新 L7
```

遇到冲突：任何步骤中发现两层不一致 → **人工裁决**，不继续执行。

### 4.3 Bug 修复

```
步骤 1：定位 bug 属于哪一层的偏差
    ├─ 代码不符合 L3/L2 → 报告冲突，等用户确认是改代码还是改文档
    └─ 某层设计本身有问题 → 请示用户修改对应层
步骤 2：按用户决定修改代码
步骤 3：检查相关层是否需要更新
步骤 4：补充/更新 L7 测试（确保此 bug 不再回归）
```

### 4.4 版本调整

```
步骤 1：在 L1（项目总览）更新当前发布版本或版本边界
步骤 2：更新对应模块 L1 的版本归属
步骤 3：更新 L2/L3/L4/L5/L6 的版本归属（如受影响）
步骤 4：更新 L7 的版本归属，只让当前发布版本资产进入当前准入
```

---

## 5. 各层文档编写规则

> 每层规则的完整字段结构：层定位 / 核心问题 / 职责边界 / 应包含 / 不应包含 / 文档路径模板 / 审核强度 / 裁决位置 / 变更触发 / 下游联动 / 与代码的关系

### 5.0 第一原则：七层全是规格层，不是代码镜像

> [!IMPORTANT]
> **重建判据（唯一试金石）**：**把代码全删了，能不能照文档重做出来？**
> 这就是 SDD（规格驱动开发）里「规格」的定义，也是判断"这段内容该不该进七层"的唯一标准。

由此推出三条，贯穿 §5.1~§5.7：

| | 内容 | 地位 |
|---|---|---|
| **七层 L1~L7** | 需求 / 交互 / 契约 / 表结构 / L5·L6 的**管辖范围** / L7 用例规格 | **规格。先于代码存在**，是施工的输入 |
| **代码自由范围** | 函数内部逻辑、样式写法、DTO/VO 转换、SQL 实现、标准 CRUD、性能微调 | **不进任何文档**——删了也能照规格重做，写进来只会让文档追代码 |
| **执行产物** | 测试脚本、测试执行记录、交付记录、飞行日志、截图证据 | **不是规格，不进七层**。落任务过程资产目录或项目执行记录路径 |

**没有"实录层"这种东西。** 七层里不存在"施工后按代码回写"的层——那是代码镜像层的定义，而 §5.5/§5.6 明确写着 L5/L6 **不是**代码镜像层、**不腐烂正是因为不追代码细节**。任何要求"施工后把实现细节回写进 L5/L6"的流程设计都是错的：它会亲手把这两层变成腐烂源。

**修订纪律（适用 L1~L7 全部正式文档）**：修订经裁决后必须**改写正文为当前真值**——禁止追加式演进：不得用「与前节冲突以后节为准」的优先序规则、「上文应理解为」式补丁标注、整节"已撤销留痕"让读者自行合并出真值；版本历史归 git，正文至多一行版本注记。正文亦**不得引用任务过程产物**（任务总控工作包 / 蓝图 / 评审报告）作为效力依据——效力依据是裁决本身，至多留一行「日期 + 决策号」出处。

> **实测教训**：篇幅失控的施工蓝图之所以自己跟自己打架（同一文件前后给出相反的施工指令），根因就是它承载了"施工指令书"这种**无上游、只能靠猜**的内容。把同类内容塞进 L5/L6，只是给它换了个地位更高的马甲，腐烂了更难纠正。

### 5.1 L1 需求层

**层定位**：七层体系最高层，是产品形态的完整载体。使用**产品/业务语言**（文字描述）或**交互原型**（Figma 线框/原型图）表达。所有下游层的设计必须能回溯到某条 L1 的功能或业务规则。

**核心问题**：产品是什么形态、有哪些功能、业务链路如何、交互原型是什么样的。

**职责边界**：

L1 管：产品目标与用户价值；功能列表（用户能做哪些操作）；业务链路（含关键判定点与分支）；业务规则（约束条件/触发逻辑/计算规则的业务语言表述）；异常边界；交互原型（线框图/Figma 链接/文字描述布局与交互）；版本边界。

L1 不管：UI 视觉规格（颜色/字体/样式，归 L2）；接口字段契约（归 L3）；表名/字段/SQL（归 L4）；框架/库/中间件选型（归 L5/L6）；测试验证规格（归 L7）；进度状态词。

**应包含**：产品目标、用户价值、功能列表、业务链路（含分支）、业务规则、异常边界、交互原型（满足以下之一：Figma 线框/原型图截图、Figma 链接、文字描述布局与交互）、版本归属。

**禁止用实现语言替代需求表达**（口诀：这里写的是「业务是什么」还是「代码怎么做」？）：
- ❌ 用调用链替代需求（「调用 `UserService.checkPermission`」）、用循环替代规则（「`for` 遍历订单」）
- ✅ 允许**引用**精确字段名/错误码/枚举值/公式名作为需求规则的精确锚点：「VIP 等级满足 `level >= 3`」「错误码 `USER_BANNED`」「积分按消费金额百分比计算」
- 区别：**引用**精确标识 ≠ **用实现替代**需求表达；精确锚点是让需求可以无歧义地被验证

**L1 与 L2 分工**：L1 保留业务目标、用户流程主干、核心场景与业务规则；交互细节（含低保真流程图、状态页、交互说明）归 L2 交互规格层。L2 是高保真视觉设计稿或交互规格文档（"交互流程/界面状态具体是什么样"）。

**文档路径模板**：
```
通用模板：{docs_root}/01-需求/01-{NN}-{domain_name}/
示例（MyApp）：docs/01-需求/01-{NN}-{domain}/
```

**审核强度**：🔴 diff 逐字审。每条业务规则、每张原型图都必须人类逐字确认。

**裁决位置**：顶端。与其他层冲突时理论上 L1 优先——但发现冲突时**不允许 AI 自动覆盖下游**，必须人工裁决。

**变更触发**：产品方向调整、功能增减、业务链路变化、业务规则/异常边界变更、交互原型实质性改动、版本边界调整。不触发：UI 视觉规格调整（归 L2）；接口/数据库/前后端技术变化（归对应层）。

**下游联动**：L2（功能/交互形态变化）、L3（接口相关业务规则变化）、L4（持久化业务概念变化）、L7 金标准（核心业务规则变化）。发现不一致 → 人工裁决。

**与代码的关系**：**描述型**。代码行为必须与 L1 功能描述一致；代码实现细节变化不要求 L1 更新；发现不一致 → 人工裁决。

---

### 5.2 L2 交互规格层

**层定位**：可选层，位于 L1 之下、L3 之上。回答交互规格问题：用户/调用方看到的交互流程、界面状态（正常/加载/空/错误/禁用）、视觉呈现如何规格化。读者是设计师、界面开发者、交互评审者。L2 支持**精简形态**（文字描述交互流程 + 状态页说明，无专职设计师时合法）和**完整形态**（高保真设计稿 + 交互规格）。

**核心问题**：这个功能区的交互流程、界面状态、视觉规格具体是什么样的。

**职责边界**：

L2 管：配色方案（颜色规格）；字体规格（字号/字重/行高）；组件视觉样式；间距与布局；视觉状态（正常/禁用/加载中/空/错误的视觉形态）；图标与图片的视觉规格；高保真设计稿。

L2 不管：业务目标/用户流程主干/业务规则（归 L1）；接口字段契约（归 L3）；数据库结构（归 L4）；前端组件实现方案/CSS 代码/动画细节（归 L5）；进度状态词。

**应包含**（精简/完整形态二选一）：
- 精简形态（对视觉要求不高时）：每个功能区的交互流程描述（步骤级）；所有界面状态的文字说明（正常/loading/empty/error/disabled/permission）；全局视觉约定（如有则注明来源）。**允许低保真 wireflow、状态页流程图**。
- 完整形态（有专职设计师时）：高保真设计稿截图或 Figma 高保真页面链接；颜色/字体/间距规格；所有重要视觉状态的设计稿；交互流程图

两种形态均需标明：所属功能域、版本归属。

**Figma 归属规则**：同一 Figma 文件中，线框/原型页面 → L1；高保真视觉设计页面 → L2。

**文档路径模板**：
```
通用模板：{docs_root}/02-交互规格/{platform_or_domain}/
示例（MyApp）：docs/02-交互规格/{platform}/
```

项目级补丁挂载点（项目特例，不进通用规则）：多平台项目可按平台或业务域组织子目录，每份文档元数据头声明所属业务域（`所属业务域`）。

**审核强度**：🟡 方向性确认。整体浏览确认视觉方向一致、重要状态覆盖完整。

**裁决位置**：第二层。L2 向 L1 负责；L2 对 L5 有约束（前端视觉还原须与 L2 一致）。冲突时人工裁决。

**变更触发**：L1 功能/交互变化（检查页面视觉设计是否需要跟进）；品牌/视觉规范调整；设计评审反馈；视觉还原后设计稿不可实现（前端反馈）。不触发：接口字段/数据库/前端实现方案变化；业务规则文字变化但页面视觉不变（归 L1）。

**下游联动**：L5（页面视觉规格变化）、L7（重要视觉状态新增/修改）。发现不一致 → 人工裁决。

**与代码的关系**：**描述型**。前端实现的颜色、字体、间距须与 L2 一致（在 L2 管辖范围内）；代码实现手段（用什么 CSS/库）自由；发现不一致 → 人工裁决。

---

### 5.3 L3 契约层（接口层）

**层定位**：系统对外暴露契约的规格层。调用方读 L3 知道"能发什么请求/调用、期望收到什么响应"；实现方读 L3 知道"必须遵守什么契约"。L3 以**字段级契约**（字段名/类型/必填性/语义）表达，不限定传输协议形态。**L3 与 L4 同级独立**，互不强制驱动对方变更。

**核心问题**：前后端之间约定什么字段、什么契约。

**职责边界**：

L3 管：HTTP 方法 + 请求 URL；请求参数（含 query 参数和 body 字段）；响应体结构（含列表分页结构）；接口专属错误码；前置条件；状态流（接口触发或依赖的状态变更）；版本归属。

L3 不管：数据库表结构/字段/索引（归 L4）；后端实现细节（算法/缓存/中间件，归 L6）；前端调用实现（状态管理/错误重试，归 L5）；业务功能背景/用户价值（归 L1）；UI 视觉（归 L2）；测试脚本（归 L7）；进度状态词。

**应包含**：HTTP 方法 + URL；请求参数表（字段/类型/必填/说明，含列表接口的游标分页字段）；响应体结构（外壳 + data 字段）；接口专属错误码表（code/含义/触发条件）；前置条件；状态流（如适用）；版本归属。

**字段边界判定**（口诀：调用方看到这个字段，能知道"发什么、收什么"吗？）：
- ✅ `cursor: string，选填，上次响应返回的 cursor 值`
- ❌ `cursor 存储在 Redis Hash，key 格式为 user:{uid}:cursor`（实现细节，归 L6）
- ✅ `错误码 10001：资源已过期`；❌ `当 resource_token 在 DB 中不存在时返回 10001`（触发实现细节，归 L6）

**L3 与 L6 状态/错误责任划分**：

| 类别 | L3（外部可观察，由 L3 负责） | L6（内部实现，引用 L3 不重述） |
|---|---|---|
| 状态枚举值 | 定义并列出 | 引用 L3，不重述 |
| 接口调用导致的外部可观察状态转换 | 是 | 引用 L3 |
| 内部状态机（重试/补偿/定时回收等不经接口暴露） | 否 | 是 |
| 错误码（code + 含义 + 业务语言触发条件） | 是 | 引用 L3 |
| 失败处理策略（重试/降级/回滚/补偿） | 否 | 是 |

**L3 不单独维护状态流图**：L3 只声明对外可观察状态枚举与转移规则（哪些外部接口调用触发哪个状态转换），不维护完整的状态机图。完整领域状态机（含内部子态、超时、补偿）由 L6 持有，L6 同时维护「对外可观察状态投影表」映射到 L3 枚举值。

**L3 文档组织**：**全局规则文件**（一份：HTTP 方法约束、鉴权方案、响应外壳格式、分页规则、全局错误码、模块索引）+ **域级接口文件**（每业务域一份：字段级契约）。

**文档路径模板**：
```
全局规则：{docs_root}/{L3_root}/00-全局接口规则.md
域级接口：{docs_root}/{L3_root}/{NN}-{domain_name}接口.md
示例（MyApp）：docs/03-技术设计/接口/00-全局规则.md（全局）
              docs/03-技术设计/接口/{NN}-{domain}接口.md（域级）
```

项目级补丁挂载点（项目特例，不进通用规则）：项目可在此声明 HTTP 方法约束（如仅 GET/POST）、参数规范（POST 参数放 body）、翻页规则（游标/页码）、响应包装格式（如统一包装体）、鉴权方案（如 JWT）等。

**审核强度**：🔴 diff 逐字审。接口字段是前后端技术合同，每个细节都可能导致联调失败。

**裁决位置**：第三层，与 L4 同级。向 L1/L2 负责；下游 L5/L6/L7 依赖 L3。L4 不在 L3 联动范围内（同级独立）。冲突时人工裁决。

**变更触发**：L1 新增/删除接口相关功能；L2 变更导致新增/修改字段；联调发现字段不匹配；鉴权方案变更；错误码新增/修改。不触发：数据库新增索引（归 L4）；后端实现优化（接口行为不变，归 L6）；前端调用方式调整（接口契约不变，归 L5）。

**下游联动**：L5（请求参数/响应/错误码变化）；L6（接口新增/字段变化/状态流变化）；L7 接口验证测试（任何接口变更）。L4：仅当触发「L3/L4 耦合面」（§1.1）时需主动扫描；其他情形不在联动范围内。发现不一致 → 冲突分级处理（§2）。

**与代码的关系**：**契约型**。L3 是对外承诺，代码实际行为必须与 L3 一致；代码内部的算法/数据结构/调用链路变化（接口行为不变）不要求 L3 更新；发现不一致 → 人工裁决。

---

### 5.4 L4 数据库层

**层定位**：存储结构的真值层。后端开发者/DBA 读 L4 知道"有哪些表、哪些字段、类型和约束是什么、表间如何关联"，无需读代码或逆向数据库。**L4 与 L3 同级独立**，互不强制驱动对方变更。

**核心问题**：数据如何存储。

**职责边界**：

L4 管：表名与用途说明（业务语言）；字段列表（字段名/数据类型/是否可空/默认值/说明）；索引（索引名/字段组合/类型/用途说明）；约束（唯一/非空/外键）；表关系（业务语言描述引用关系）；版本归属。

L4 不管：接口字段格式/请求响应体（归 L3）；ORM 实体代码（归 L6）；业务状态机/状态流转逻辑（归 L6）；SQL 查询语句（归 L6）；数据迁移脚本 Migration（归代码库）；进度状态词。

**应包含**：表名与用途说明；字段列表（覆盖全部字段）；索引表（含用途说明）；约束；表关系（业务语言）；版本归属。

**字段边界判定**（口诀：开发者看到这个字段描述，能知道"存什么、类型是什么、有什么约束"吗？）：
- ✅ `status tinyint NOT NULL DEFAULT 0，枚举：0=进行中 1=已完成`
- ❌ `当 status=1 时触发积分结算，调用 PointService.settle()`（业务逻辑，归 L6）

**与执行资产的关系**：DDL 建表语句和 Migration 脚本是 L4 的**执行绑定资产**，L4 文档是其规格。每条 L4 表结构条目必须与至少一个 migration 文件建立稳定引用（仓库相对路径 + 版本/序号），使 L4 可追溯验证。Migration 必须实现 L4；实时数据库必须由同一迁移链收敛到 L4。三者不一致时按 §2.1 L2 契约破坏冲突处理，禁止把任一执行现状反升为规格。

**不包含**：ORM 实体类代码；接口 DTO/VO；SQL 查询语句。

**L4 文档组织**：**全局规则文件**（一份：全局约束、Owner 矩阵、域列表与文件导航）+ **域级数据库文件**（每业务域一份）。

**文档路径模板**：
```
全局规则：{docs_root}/{L4_root}/00-README.md
域级文件：{docs_root}/{L4_root}/{NN}-{domain_name}.md
示例（MyApp）：docs/03-技术设计/数据库/00-README.md（全局）
              docs/03-技术设计/数据库/{NN}-{domain}.md（域级）
```

项目级补丁挂载点（项目特例，不进通用规则）：项目可在此声明 ID 生成策略（如 Snowflake/UUID）、必填公共字段（如 `create_time`/`update_time`）、ORM 映射规范、跨域引用约束等。

**审核强度**：🔴 diff 逐字审。字段名/类型/约束直接影响 ORM 映射和数据完整性。

**裁决位置**：第三层，与 L3 同级。向 L1/L2 负责；下游 L6/L7 依赖 L4。L3 与 L4 之间按「显式耦合面」规则（§1.1）决定是否互扫：耦合面被触发才扫，其他情形不触发。冲突时按 §2 冲突分级处理。

**变更触发**：L1 新增/变更业务实体；DDL Migration 执行后（需同步 L4 保持规格与现实一致）；索引新增/删除；约束变更；表新增/废弃。不触发：接口字段格式变化（归 L3）；后端业务逻辑变化（不影响表结构，归 L6）；ORM 代码重构（不改字段名/类型）。

**下游联动**：L6（字段名/类型/约束/表变化）；L7 实现验证测试（字段/约束变化）。发现不一致 → 人工裁决。

**与代码的关系**：**契约型**。L4 是存储规格说明，DDL 和 ORM 代码必须实现规格；Migration 脚本是实现手段，属代码库，不归 L4 跟踪；发现不一致 → 人工裁决。

---

### 5.5 L5 客户端实现规约层（前端技术层）

**层定位**：可选层，与 L6 同级，适用于有独立客户端的项目（Web/移动端前端、桌面端、CLI 客户端等）。**同时承担两个等重职责，缺一不可**：

1. **防腐约束**：记录前端架构宪法——脚手架结构、目录规范、框架分层、编码哲学、禁止模式。跨会话长期有效，防止开发者（人或 AI）跨时间做出漂移的架构决策（跨会话失忆导致的一致性缺失）。
2. **技术实现方案的唯一用户审核层**：记录主要业务链路的前端实现方案、状态管理策略、服务层调用模式、关键技术选型。用户无需读代码，在 L5 层面与开发方形成共识并作为验收基准。

**L5 是设计型层，不是代码镜像层**。在 L5 管辖范围内，文档 > 代码；代码细节（函数内部逻辑、样式写法）自由实现；**L5 不腐烂**，因为不追代码细节。

**L5 是重大决策的锁定层**：所有需人拍板的前端业务/技术裁决在此审核、锁定；AI 后续施工只能在框架内执行，**不得自行重裁、不得违反已锁定的链路思维**。人据此验收，AI 据此施工——人和 AI 都看得懂是硬要求。

**核心问题**：前端用什么技术、走什么主要业务链路、遵守什么架构规范。

**职责边界**：

L5 管：脚手架与目录结构（精确到模块级）；框架分层设计（层级名称/各层职责/禁止越层方向）；模块划分；文件命名约定；编码规范与禁止模式（含明令禁止的反模式及理由）；主要业务链路（步骤级端到端流程，不精确到代码行）；状态管理策略；服务层调用模式；关键技术选型。

L5 不管：函数/方法内部实现；CSS/样式代码（可说"使用 SCSS"，不写具体规则）；第三方库内部 API 说明；与 L3 重复的接口字段定义；后端业务链路（归 L6）；UI 视觉规格（归 L2）；进度状态词。

**应包含**（拆为两类，可合并为单文件）：
- 架构治理类（防腐约束）：脚手架结构图（到模块级，每目录标注职责）；框架分层设计（分层名称/各层职责/层间通信/禁止越层方向需明确标注）；模块划分；文件命名约定；编码规范清单（命名约定/代码风格/明令禁止的反模式）
- 核心业务链路清单（用户审核层）：**本层级/域/模块的全部核心业务链路**——按决策风险轴判定（见下方「核心业务链路定义」），**不设数量上限**，有多少需人拍板的决策点/复杂编排就逐条写多少；状态管理策略（机制选型/主要 store 划分/跨组件数据流向）；服务层调用模式（API 封装方式/统一错误处理）；关键技术选型决策记录。纯实现细节（函数内部逻辑、CSS 写法、第三方库具体用法）不进入 L5；实现手段自由，但必须满足冻结规格与验证条件。
- 表达形式（强制）：核心链路用**精炼语言 / 表格 / 图**说明，每条至多附**一个轻量代码锚点**（组件/模块名）供定位。**禁止**：代码、伪代码、逐方法实录（"A 组件调 B 服务"式的代码复述）、逐句证据尾注、状态/置信度标注、漂移登记。详见 `references/L5L6写作指南.md`。

**核心业务链路定义（决策风险轴）**：**判定试金石**——「不写下来的话，一个有能力的 AI 在施工时，会不会做出一个看起来合理、但和团队已拍板结果不同的选择？」会 → 进 L5；只有一种合理写法（纯 CRUD/透传/字段映射/标准操作）→ 不进，代码自由。两种形态：① **决策点**（前端如：状态管理粒度、缓存一致性策略、并发更新处理、错误重试/降级策略、乐观更新与否）；② **复杂业务编排**（多步交互流程：步骤顺序 + 每步为什么 + 关键取舍）。

**L5 管辖范围（文档 > 代码）vs 代码自由范围**：
- 管辖：架构骨架与分层方向（脚手架/目录/分层/禁止模式）；跨模块红线/禁忌清单；**全部核心业务链路**（决策点 + 复杂编排，无数量上限）；技术选型
- 代码自由：纯实现细节——函数/方法内部逻辑；CSS/样式细节；第三方库具体用法；性能微调；只有一种合理写法的标准操作

**文档路径模板**：
```
通用模板：{docs_root}/{NN}-前端技术/
多端项目：{docs_root}/{NN}-前端技术/{platform}/
示例（MyApp）：docs/03-技术设计/前端/{platform}/
```

L5a/L6a 全局一份文件（改动少）；L5b/L6b 按域/功能域分文件（随功能演进）。

**建议文件拆分方式**（规模较大时）：
```
{platform}/
  L5-架构规范.md   ← 脚手架 + 框架分层 + 编码规范（全局，改动少）
  L5-业务链路.md   ← 各功能域主要业务链路（按功能域分节）
  L5-技术选型.md   ← 技术选型决策记录（变化少）
```

**审核强度**：
- **L5a 架构治理类**（脚手架/目录/分层/命名/禁止模式）：🔴 diff 逐字审。变更频率低但影响全局，每次改动必须仔细审。
- **L5b 实现方案类**（主要业务链路/状态管理/外部依赖/技术选型）：🟠 关键面抽查。随功能演进，审关键路径和选型决策是否记录完整。

**裁决位置**：第五层，与 L6 同级独立（通过 L3 接口层对话）。向 L1/L2/L3 负责。任何冲突 → 人工裁决。

**变更触发**：L1 业务链路变化；L2 交互变化影响前端状态管理；L3 接口变化影响前端调用链路；技术选型决策变更；架构规范调整。不触发：代码内部实现细节调整（主要链路走向未变）；CSS 细节调整；L3 接口字段新增但 L5 描述链路步骤未变。

**下游联动**：前端代码（架构规范或主要链路变更）；L7（主要业务链路新增/修改）。发现不一致 → 人工裁决。

**与代码的关系**：**设计型**。在架构规范、主要业务链路、技术选型范围内文档 > 代码；其余代码自由实现；发现不一致 → 人工裁决。

---

### 5.6 L6 服务端实现规约层（后端技术层）

**层定位**：与 L5 客户端实现规约层完全对称，面向服务端/后端代码库。**同时承担两个等重职责，缺一不可**：

1. **防腐约束**：记录后端架构宪法——包结构规范、框架分层（Controller → Service → Repository）、类命名规范、禁止模式。跨会话长期有效，防止越层调用、业务逻辑下沉等架构漂移。
2. **技术实现方案的唯一用户审核层**：记录主要业务链路的后端实现方案、关键状态机、定时任务、外部依赖、关键技术选型。用户无需读代码，在 L6 层面与开发方形成共识并作为验收基准。

**L6 是设计型层，不是代码镜像层**。在 L6 管辖范围内，文档 > 代码；私有方法、DTO 转换、SQL 细节自由实现；**L6 不腐烂**，因为不追代码细节。

**L6 是重大决策的锁定层**：所有需人拍板的后端业务/技术裁决在此审核、锁定；AI 后续施工只能在框架内执行，**不得自行重裁、不得违反已锁定的链路思维**。人据此验收，AI 据此施工——人和 AI 都看得懂是硬要求。

**核心问题**：后端用什么技术、走什么主要业务链路、遵守什么架构规范。

**职责边界**：

L6 管：包结构与目录规范（到模块/域级）；框架分层设计（Controller→Service→Repository，各层职责/层间单向依赖约束/禁止反向调用禁止越层）；模块/域划分；类命名规范（Controller/Service/Repository/DTO/VO/Entity 等）；编码规范与禁止模式；主要业务链路（Controller→Service→Repository 关键路径，步骤级）；关键状态机（状态枚举/合法转换路径/触发条件）；定时任务（名称/调度频率/业务意图）；外部依赖（依赖服务/交互模式/集成点/失败处理策略）；事务边界；关键技术选型。

L6 不管：私有 helper 方法实现；DTO/VO/Entity 字段转换细节；标准 CRUD Repository 操作；配置类/常量类的具体代码；与 L3 重复的接口字段定义；与 L4 重复的表结构详情；前端链路细节（归 L5）；进度状态词。

**应包含**（拆为两类，可合并为单文件）：
- 架构治理类（防腐约束）：包结构说明（精确到模块/域级，每包标注职责与允许包含的类型）；框架分层设计（分层名称/各层职责/禁止越层方向需明确标注）；模块/域划分；类命名规范；编码规范清单（命名约定/代码风格/明令禁止的反模式）
- 核心业务链路清单（用户审核层）：**本层级/域/模块的全部核心业务链路**——按决策风险轴判定（见下方「核心业务链路定义」），**不设数量上限**，有多少需人拍板的决策点/复杂编排就逐条写多少（步骤级，非代码级）；**完整领域状态机**（含内部子态/超时态/补偿态 + 对外投影映射表）；定时任务清单；外部依赖说明；事务边界说明；关键技术选型决策记录。纯实现细节（私有方法、SQL、DTO/VO 转换、标准 CRUD）不进入 L6；实现手段自由，但必须满足冻结规格与验证条件。
- 表达形式（强制）：核心链路/决策点用**精炼语言 / 表格 / 图**说明，每条至多附**一个轻量代码锚点**（类名/模块名）供定位。**禁止**：代码、伪代码、逐方法实录（"A 类调 B 类"式的代码复述）、逐句证据尾注、状态/置信度标注、漂移登记。反推中发现的漂移/缺口/技术债**不进 L6 正文**，去独立技术债登记文档。详见 `references/L5L6写作指南.md`。

**核心业务链路定义（决策风险轴）**：**判定试金石**——「不写下来的话，一个有能力的 AI 在施工时，会不会做出一个看起来合理、但和团队已拍板结果不同的选择？」会 → 进 L6；只有一种合理写法（纯 CRUD/透传/字段转换/标准操作）→ 不进，代码自由。两种形态：① **决策点**（后端如：批量查 vs 循环查库、要不要做缓存及缓存边界、事务边界放哪、同步 vs 异步执行、幂等如何保证、并发如何处理）；② **复杂业务编排**（多步业务流程：步骤顺序 + 每步为什么 + 关键取舍）。

**L6 状态机与 L3 的关系**：L6 持有**完整领域状态机定义**，包括内部子态、超时态、补偿态、重试机制。其中「对外可观察的状态投影」必须与 L3 声明的对外状态枚举存在明确映射表（格式：`领域内部状态 → L3 对外枚举值`），且不得与 L3 枚举值相矛盾。L6 不负责定义 L3 枚举，只负责说明内部状态如何映射到 L3 枚举。（见 §5.3 L3 不单独维护状态流图）

**L6 管辖范围（文档 > 代码）vs 代码自由范围**：
- 管辖：架构骨架与分层方向（包结构/分层设计/模块划分/类命名/禁止模式）；跨模块红线/禁忌清单；**全部核心业务链路**（决策点 + 复杂编排，无数量上限）；完整领域状态机；定时任务；外部依赖；技术选型
- 代码自由：纯实现细节——方法内部逻辑；DTO/VO 转换细节；SQL 实现；配置代码；性能微调；只有一种合理写法的标准 CRUD 操作

**文档路径模板**：
```
业务域文档：{docs_root}/{NN}-后端技术/{domain_name}/L6-{domain_name}.md
架构规范：  {docs_root}/{NN}-后端技术/L6-架构规范.md
示例（MyApp）：docs/03-技术设计/后端/{domain}/（业务域）
              docs/03-技术设计/L6-架构规范.md（全局架构规范）
```

L5a/L6a 全局一份文件（改动少）；L5b/L6b 按域/功能域分文件（随功能演进）。

**审核强度**：
- **L6a 架构治理类**（包结构/分层/命名/禁止模式）：🔴 diff 逐字审。变更频率低但影响全局，每次改动必须仔细审。
- **L6b 实现方案类**（主要业务链路/关键状态机/定时任务/外部依赖/技术选型）：🟠 关键面抽查。随功能演进，审关键路径和选型决策是否记录完整。

**裁决位置**：第六层，与 L5 同级独立。向 L1/L3/L4 负责。任何冲突 → 人工裁决。

**变更触发**：L1 业务链路变化；L3 接口变化影响后端处理链路；L4 数据库变化影响 Service/Dao 操作模式；技术选型变更；架构规范调整；新增定时任务或外部依赖。不触发：私有方法重构（业务逻辑不变）；DTO/VO 转换方式调整；SQL 优化（主要链路走向未变）；新增标准 CRUD 操作。

**下游联动**：后端代码（架构规范或主要链路变更）；L7（主要业务链路新增/修改、关键状态机变更）。发现不一致 → 人工裁决。

**与代码的关系**：**设计型**。在架构规范、主要业务链路、关键状态机、定时任务、外部依赖、技术选型范围内文档 > 代码；其余代码自由实现；发现不一致 → 人工裁决。

---

### 5.7 L7 测试用例层

**层定位**：最底层，被 L1~L6 共同驱动。**L7 是规格层，不是执行层**：描述"测什么、用什么场景、期望什么结果"；测试脚本是执行产物，不属于 L7 文档范畴。L7 通过了 = 代码正确实现了上游各层设计；L7 未通过 = 触发向上溯源诊断链。

**核心问题**：怎样验证 L1~L6 各层的设计意图是否被正确实现。

**测试专项路由**：

- 判断本次改动要测哪些类型、测到什么深度：使用 `test-standards`。
- 编写 L7 用例规格、白盒链路用例、黑盒业务用例和冻结留痕：使用 `test-case-design`。
- 把冻结用例路由到执行资产、收集证据、处理失败分类：使用 `test-execution-router` + 项目执行 skill。
- L7 文档只承载用例规格与追溯关系；执行命令、凭据、截图判读和环境细节不得写回 L7 规格层。

**四类测试用例资产**：

| 类型 | 验证对象 | 典型形态 | 可否删除 |
|---|---|---|---|
| 契约测试用例 | L3 契约层（接口签名/字段/错误码/状态流） | API 集成测试、mock 测试 | 契约废弃后可删 |
| 持久化不变量测试用例 | L4 持久化规格层（表/字段/索引语义/唯一约束） | DAO/Repository 测试 | 表/字段废弃后可删 |
| 端到端业务测试用例（含金标准） | L1 业务不变量与跨层流程 | E2E 测试、Service 集成测试 | 金标准**不可删除**；其余随功能废弃可删 |
| 手工验证场景用例 | L1/L3 中无法全自动化的场景（真机/三方回调/人工环境） | 手工执行 runbook | 场景废弃时可删 |

**用例通用格式**（每条用例须包含）：前置条件、操作步骤、期望结果、来源层引用（来源于哪一层的哪条规格）。

**执行绑定要求**（强制）：

- **一条 `AC-x` 只允许一个可独立证伪的结果**；一个 `CASE-x` 可组合多个 AC，禁止一个 AC 捆绑多个平台、入口、分支、边界或异常结果
- 每条断言必须填写 `assertion_kind / given / when / then / boundary / required_test_shape`，使执行层不能只靠出现 `AC-x` 字面引用宣称覆盖
- 每条 L7 用例必须填写 `execution_ref` 字段，指向至少一个可执行测试资产（文件路径 + 测试名 / Case ID）
- 手工验证场景类例外，但仍需 `manual_runbook_ref` 字段指向对应手工验证手册
- 每个执行资产（测试文件）须在文件头部声明 `covers: [L7-case-id, ...]` 列出覆盖的 L7 用例
- **金标准用例若无 `execution_ref`，视为「未生效」**，必须在 PR 描述中明确标注并在合并前补全
- 项目可选实现 lint 脚本，校验 L7 规格 ↔ 执行资产双向引用完整性

**强制测试形状**：

| 语义 | `required_test_shape` 最低要求 |
|---|---|
| 并发、幂等、单次决策 | 真并发竞争，不得用串行重放代替；断言业务结果和决策/派发次数 |
| 超时、失效、时间窗口 | 固定时钟或虚拟时钟，覆盖边界前、边界点、边界后 |
| 快路径 + 回退路径 | 两条路径分别取证，并断言最终决策/派发只发生一次 |
| 批量与故障隔离 | 至少两个项目且其中一个失败；断言其余项不被污染，并证明不存在逐项跨域/数据库调用 |

**`execution_ref` 最小协议**：

合法类型仅三类（不在此三类内的引用不视为有效绑定）：
1. **测试文件路径**：仓库相对路径 + 用例锚点，格式如 `src/test/java/example/OrderTest.java#testCreateOrder`
2. **测试用例 ID**：CI/测试管理系统中可解析的唯一标识，格式由项目补丁声明
3. **runbook 路径**：仅限手工验证用例，格式如 `docs/04-测试/手工验证/{NN}-{domain}/runbook.md`

校验规则：
- `post-change-check` 脚本须能解析上述三类引用并验证目标存在
- 引用目标不存在或已移动超过 24 小时未修复，标记 `[STALE-REF]`
- `[STALE-REF]` 用例不阻断 CI，但进入 PR review 必须先解除

命名规范由项目补丁声明。

**金标准不可删除规则**：

| 情形 | 判定 |
|---|---|
| 代码重构，业务逻辑未变 | ❌ 不可无等价替代地删除 |
| 测试跑起来麻烦 | ❌ 不可删除（执行问题改工具，不改用例） |
| 存在等价替代测试集（覆盖相同不变量，且更高质量/粒度重组/平台迁移） | ✅ 可删除（须满足等价替代三条件，见下方） |
| L1 明确废弃对应功能 | ✅ 可删除（须有 L1 变更记录 + 死亡线审查人签字） |
| L1 业务规则被明确修订 | ✅ 可修改（须有 L1 变更记录，修改后更新 L1 引用） |

**等价替代三条件**（全部满足才允许替换删除金标准用例）：
1. 显式声明被保护的业务不变量（需与原金标准的「来源层引用」字段一致）
2. 新测试集合在不变量维度上提供等价或更强的覆盖证明（用例数 × 场景深度，不得缩水）
3. 替换操作在 PR 描述中由金标准副审（测试/业务 owner）签字确认

金标准测试用例须在"来源层引用"字段中标注守护的 L1 业务不变量。执行层的注释格式由项目自定义（示例（MyApp）：`.as("L1不变量：[描述]")`）。

项目级补丁挂载点：具体金标准领域清单（核心算法/积分/等级等）由各项目自定义，不进通用规则。

**不应包含**：可执行测试脚本（归执行层）；测试环境配置/测试账号（归项目级配置）；执行结果/Bug 记录（归测试报告）；业务规则决策（归 L1）；接口字段定义（归 L3）；项目具体金标准领域清单（归项目补丁）；任务批次临时文件（归任务总控）。

**文档路径模板**：
```
实现验证：{docs_root}/{NN}-测试/{NN}-实现验证测试/{NN}-{domain_name}/
金标准：  {docs_root}/{NN}-测试/{NN}-金标准测试/{domain_name}/
接口验证：{docs_root}/{NN}-测试/{NN}-接口验证测试/{domain_name}/
手工验证：{docs_root}/{NN}-测试/{NN}-手工验证场景/{NN}-{domain_name}/
示例（MyApp）：
  docs/04-测试/实现验证/{NN}-{domain_name}/
  docs/04-测试/手工验证/{NN}-{domain_name}/
```

**审核强度**：金标准用例 🟠 关键面抽查；其余三类 🟡 方向性确认。

**裁决位置**：最底层，没有下游文档层。L7 失败时触发**向上溯源诊断链**：
```
L7 用例失败
  Step 1：L7 用例本身是否已过期（上游层已变更但 L7 未同步）？
          → 过期 → 人工裁决：更新 L7，还是回滚上游层变更？
  Step 2：L7 用例有效 → L3/L4 设计是否与 L1 一致？→ 不一致 → 人工裁决
  Step 3：L3/L4 有效 → L5/L6 方案是否与 L3/L4 对齐？→ 不对齐 → 人工裁决
  Step 4：以上均一致 → 代码实现有缺陷 → 修复代码，重跑 L7
```

**变更触发**：L1 业务不变量废弃/调整（金标准）；L1 新增功能或业务规则（金标准）；L2 页面规格变更（手工验证）；L3 接口新增/修改/废弃（接口验证/实现验证）；L4 数据库变更（实现验证）；L5/L6 主要链路变更（对应类型）。不触发：后端私有方法重构（输出结果不变）；SQL 优化（查询结果不变）；前端样式微调；测试脚本重写（执行层变化，用例规格未变）。

**与代码的关系**：**验收型**（特殊类型）。金标准用例 > 代码；接口验证用例来源于 L3（L3 > L7 > 代码）；实现验证/手工验证用例失败需人工判定是代码缺陷还是 L7 过期。

**禁止行为**：❌ 因测试用例跑起来麻烦就修改/删除用例；❌ 代码重构后金标准用例要调整就直接改；❌ 把测试脚本写入 L7 文档；❌ 用"测试通过"掩盖 L7 覆盖不足。

---

### 5.8 运行与发布资产（跨层附属，非独立编号层）

**定位**：发布策略、回滚策略、灰度规则、观测指标、告警阈值、运行手册等内容不归属于任何单一层，统一作为**跨层附属的运行资产**管理。不增加 L8 编号，不破坏「七层」命名稳定性。

**归属路径**：由项目补丁声明（示例（MyApp）：`docs/06-运行资产/` 或 `docs/04-测试/04-04-运行手册/`）。

**应包含**：发布策略（触发条件/部署顺序/预检清单）；回滚策略（条件/步骤/影响范围说明）；灰度规则（分流比例/Feature Flag/上线流程）；关键观测指标（SLI/SLO/核心业务指标及告警阈值）；运行手册（runbook：告警处理流程/故障定位步骤/应急操作）。

**变更触发扫描**：发布/回滚/灰度/告警阈值变更 → 检查 §5.8 运行资产 + L7 实现验证测试。

---

### 文档粒度总则

以下原则适用于 L1~L7 所有层：

1. **按业务域拆分**：同层中同一业务域的内容集中在同一文件（或目录）内；跨域内容须有索引文档承担入口职责。域的定义由项目补丁声明。

2. **单文档软上限**：单份文档的行数软上限由项目补丁声明（建议默认 ≤ 800 行）；超出时触发 `long-doc-governance` 分拆流程。

3. **索引文档要求**：同层若有多份文档，必须有一份索引文档（通常命名 `00-README.md`）列出所有子文件及其职责。

4. **可定位性要求**：跨域聚合文档允许存在，但必须能在 30 秒内定位到具体域条目（通过目录标题/锚点实现）。

5. **与治理 skill 联动**：`post-change-check` 报 `[CRITICAL]` 长文档警告时，强制触发 `long-doc-governance` skill 治理；不得忽略。

---

## 6. 死亡线审查机制

### 6.0 通用最小兜底清单（无论项目补丁是否存在，本条即时生效）

以下区域 AI 触碰时无需项目补丁即触发死亡线流程：

- 支付 / 计费 / 退款 / 优惠权益相关代码
- 鉴权 / Token / 密码 / 密钥相关代码
- 用户数据删除 / 批量更新 / 数据迁移脚本
- 第三方平台回调（支付/认证/OAuth 等）
- 涉及金额、用户身份、隐私字段的 SQL / 批处理脚本

项目补丁可叠加本项目的核心算法（如核心算法/积分/等级等），但不能删减上述兜底清单。

### 6.1 定义

死亡线 = 项目指定的真人审查角色必须审查的代码区域。AI 不能独自决定这些区域的逻辑；该角色可以是任务发起人，也可以是独立业务/技术负责人，由项目补丁声明。

> **项目级补丁挂载点**：项目特有的死亡线区域（如核心算法区域名称、代码位置、审查要点）由各项目在项目级 skill 补丁中维护，叠加到 §6.0 通用清单之上。

### 6.2 AI 在死亡线区域的行为

当 AI 触碰死亡线区域的代码时：

1. 在提交说明中明确标记：「⚠️ 死亡线区域变更：[区域名]」
2. 要求**项目补丁声明的死亡线审查人**亲自审查：不能自行判断逻辑是否正确
3. 确认/补充 L7 对应的金标准测试用例
4. 禁止静默修改，即使是"看起来无害"的重构

> [!WARNING]
> 死亡线区域的任何变更都不能自行决定。即使 AI 有 99% 的信心逻辑是对的，仍然必须要求项目补丁声明的死亡线审查人审查。

### 6.3 死亡线最小准入清单（通过 = 全部满足）

死亡线变更**通过**的定义：以下四项全部满足，AI 才可继续后续步骤；否则保持停机状态。

1. **命名审查人**：项目补丁中声明的真实审查人已被@或通知（不允许「AI 自审」或「留待以后再审」）。
2. **列出审查对象**：具体文件 + 行号范围 + 改动 diff 已提供给审查人（不允许只说「改了死亡线区域」）。
3. **关联验证证据**：至少关联以下一项：① 相关金标准测试 ID（execution_ref）；② 本次变更新增的回归测试；③ 手工验证 runbook 执行记录。
4. **留下可追溯记录**：审查确认留存在 PR 评论、独立 review-record 文件、或项目约定的其他可追溯位置（不允许口头确认无记录）。

---

## 7. 文档同步检查清单

**每次开发任务完成时，AI 必须对照此清单自检：**

### 7.1 代码变更后

- [ ] 是否涉及版本归属调整？→ 更新项目总览和对应文档顶部版本字段
- [ ] 是否涉及接口变更？→ 更新 L3 对应域级接口文件
- [ ] 是否涉及数据库变更？→ 更新 L4 对应域级数据库文件
- [ ] 是否涉及后端主要业务链路或架构规范变化？→ 检查 L6 是否需要更新；发现不一致 → 人工裁决
- [ ] 是否涉及前端主要业务链路或架构规范变化？→ 检查 L5 是否需要更新；发现不一致 → 人工裁决
- [ ] 是否涉及页面功能/交互设计变更（设计意图变化）？→ 检查 L2 是否需要更新
- [ ] 是否涉及新业务能力？→ 确认 L1 是否已覆盖
- [ ] 是否涉及接口/鉴权/错误码/状态流（可被测试脚本覆盖的面）？→ 检查 L7 接口验证测试用例是否需要同步；没有同步则说明原因
- [ ] 是否涉及死亡线区域？→ 标记并要求项目指定的真人角色审查
- [ ] L7 测试用例是否已更新？如涉及 L1 不变量，金标准用例是否补充/确认？
- [ ] 若需要手工验证，是否有可执行的手工验证场景用例？

### 7.2 文档变更后的级联检查

- [ ] 是否补了正确的版本归属字段？有没有误写成状态词？
- [ ] L1 变更 → L2/L3/L4 是否需要更新？→ L7 金标准是否需要更新？
- [ ] L2 变更 → L5/L7 是否需要更新？
- [ ] L3 变更 → 代码是否需要修改？→ L5/L6 是否需要更新？→ L7 是否需要更新？
- [ ] L4 变更 → 代码是否需要修改？→ L6 是否需要更新？→ L7 是否需要更新？
- [ ] 新增/改变业务结果、死亡线、契约/数据语义时，是否存在上游正式来源或可审计 `DEC-x`？有没有把评审建议或任务发起行为误写成“授权角色已批准”？
- [ ] 轻量设计全部 `SD-x` 与测试全部 `AC-x` 是否逐条物化到职责正确的 L1~L7，而不是摘要式回写？
- [ ] 五项冻结闸门是否全真？评审闭环是否有 PASS 的封闭验收记录？每个 `TOPIC-x` 是否只有一个业务答案？L6/L7 要求的状态、快照和跨时点口径是否有合法 L3/L4/域内承载？
- [ ] 评审前后业务语义差异是否全部可追到上游正式真值或 `DEC-x`？

---

## 8. 速判决策树

**发现文档和代码（或两层之间）矛盾了，怎么办？**

```
唯一答案：立刻停止，向人报告具体不一致内容，等人决定。
（裁决链告诉人"理论上谁优先"，但人才是最终决策者，AI 不自动执行裁决。）
```

**刚完成一次代码修改，接下来做什么？**

```
Q: 修改涉及接口或数据库吗？
├─ 是 → 检查 L3/L4 是否已更新；发现不一致 → 人工裁决
└─ 否 → 继续

Q: 修改涉及后端主要业务链路或架构规范吗？
├─ 是 → 检查 L6 主要链路/架构规范描述是否与代码一致；发现不一致 → 人工裁决
└─ 否 → 继续

Q: 修改涉及前端主要业务链路或架构规范吗？
├─ 是 → 检查 L5 主要链路/架构规范描述是否与代码一致；发现不一致 → 人工裁决
└─ 否 → 继续

Q: 修改涉及死亡线区域吗？
├─ 是 → 标记死亡线变更，要求项目指定的真人角色审查
└─ 否 → 继续

Q: 有相关测试用例需要更新吗？
├─ 是 → 更新 L7 对应资产；如涉及 L1 不变量，检查金标准用例
└─ 否 → 继续

└─ 完成。执行评审动作（项目可自定义触发器与命名，如 /review）
```

**该把这个东西放哪一层？**

```
这是「做什么、为什么、交互形态/线框」吗？→ L1 需求层
这是「UI 颜色/字体/视觉排版/高保真设计」吗？→ L2 交互层（页面层）
这是「系统对外暴露的接口字段契约」吗？→ L3 契约层（接口层）
这是「数据如何存储（表/字段/索引/约束）」吗？→ L4 数据库层
这是「客户端/前端架构规范/主要业务链路/技术选型」吗？→ L5 客户端实现规约层（前端技术层）
这是「服务端/后端架构规范/主要业务链路/技术选型」吗？→ L6 服务端实现规约层（后端技术层）
这是「如何验证以上各层的正确性」吗？→ L7 测试用例层
```

---

## 9. 与其他 skill 的协作关系

| 场景 | 本 skill 的职责 | 协作 skill 类型 |
|------|----------------|----------------|
| 需要判断文档属于哪一层、确认放置位置 | 分层裁决与规则参考 | 项目级文档编写指南 skill |
| 新增接口 | 提供 L3 编写规范；按流程先更新 L3 | 项目级接口/后端基础构件 skill |
| 新增数据库表或字段 | 提供 L4 编写规范；按流程先更新 L4 | 项目级数据库基础构件 skill |
| 探查现有数据库结构 | 提供 L4 真值验证依据 | 项目级数据库探查 skill |
| 大型跨会话任务 | 在任务总控中标注各子任务涉及哪些层 | 任务总控 skill |
| 代码审查 | 补充七层一致性检查 | `/review` 工作流 |
| 中等任务管理 | 任务级设计文档标注本轮变更涉及哪些层 | `lightweight-design`；仍按人逐工序把关的流程可继续用 `construction-blueprint` 出施工图纸 |
| 编写测试用例 | 提供 L7 用例规格、白盒/黑盒设计与冻结规则 | `test-standards` + `test-case-design`；执行见 `test-execution-router` + 项目执行 skill |
| 设计/用例/章程的开放式评审 | 提供真值基线、`DEC-x` 裁决留痕规则与「已决策·不得重开」依据 | `adversarial-review`（单轮开放，主线程裁决） |
| 评审整改的封闭验收 | 冻结前的评审闭环证据（报告终态 = PASS）以其产出为准 | `closed-remediation-review` |
| **自主执行期的文档处置** | 规格冻结后交 goal 自主施工；§2.3 的纯实现自由 / 有界重新冻结 / 回炉分类、文档动作清单与飞行日志 | `goal-charter` |

> 以上协作 skill 中，`test-standards` / `test-case-design` / `test-execution-router` 是用户级通用测试入口；项目执行 skill 名称由项目级补丁维护。

