用途
Documentation Creation Criteria 是一份「路由决策」文件:它决定一项变更需要哪些文档、这些文档存放在哪里。至于每份文档内部写什么,由其对应模板定义,模板从存储位置一节链接过去。
每份文档固化什么
每份文档固化一类仓库本身无法提供的决策。某个章节若留空,就会变成下方所列消费者日后的猜测,且不留下当时假设的记录。
- PRD:固化业务结果与后续工作可追溯的验收标准。其 AC ID 是 Design Doc、UI Spec 与测试选择复用的追溯键;没有它们,各消费者会从散文中重新推导需求,测试与其所保护价值之间的联系就会丢失。实现细节属于 Design Doc,选择理由属于 ADR,阶段与任务拆分属于 Work Plan。
- ADR:记录一项持久的技术选择及其胜出的备选项,使后续工作能区分审慎决策与偶然结果。没有它,未来的变更要么重跑同一比较,要么悄悄将其推翻。Accepted 记录当前所选的手段,而非保留它的义务:当后续证据支持一个更小的充分选择时,应在已确认的结果、期望未来的需求与非目标仍然成立的前提下,更新或取代该决策。端到端实现设计属于 Design Doc,排期与仓库任务属于 Work Plan。
- UI Spec:在组件存在之前记录屏幕结构、转场、组件/状态契约与视觉验收,使拆分在实现前决定,而非实现过程中逐组件决定。当这些决策仍开放时创建;若某个明显的、仓库支持的既有模式已能决定它们,则复用已批准的 UI Spec,或直接进入 Design Doc。技术实现与 API 契约属于 Design Doc。
- Design Doc:记录已确认范围的完整实现设计:流程、契约、变更影响与验证策略。任务执行将其视为首要技术基线,因此实现不会悄悄臆造缺失的 How。当仓库证据使技术 How 失效,而已确认结果、期望未来需求与非目标仍然成立时,应通过各自负责的工作流修正实现与受影响的技术产物,而无需重开产品需求。技术选择理由属于 ADR,排期与分工属于 Work Plan。
- Work Plan:固化任务顺序、依赖、可执行验证与最早的纵向验证点。没有它,任务顺序会按文件布局而非依赖排列,集成风险被推迟到工作末尾。设计细节从 Design Doc 引用,而非重述。
创建决策矩阵
结构规模与基准文档、创建顺序:
| 结构规模 | 基准文档 | 创建顺序 |
|---|---|---|
| Small | 无 | 直接实现 |
| Medium | Design Doc → Work Plan | 从 Design Doc 开始 |
| Large | PRD → Design Doc → Work Plan | PRD 批准后继续 |
按此顺序构建一条路径:
- 依据结构规模选择基准路径。
- 在 Design Doc 之前紧邻插入适用的 UI Spec。
- 一个或多个符合条件的 ADR 决策点,在 Design Doc 之前紧邻插入一批 ADR。符合条件的决策点会把规模下限设为 Medium。
结构规模
对决策负担分类,而非仓库布局。文件数量只是佐证。
| 规模 | 结构条件 |
|---|---|
| Small | 一个连贯结果在一个职责边界内有一个明显的、仓库支持的实现,且没有未决的持久选择 |
| Medium | 一个连贯结果跨边界协调,或需要调查一个可能持久的选择 |
| Large | 多个各自独立有价值的结果需要各自的设计决策 |
符合条件的 ADR 决策点会把下限设为 Medium,因为它产生一项持久决策。当一个连贯结果跨多个层时仍为 Medium;Large 要求多个独立有价值的结果且各有独立设计决策。
ADR 决策过滤器
对已确认实现范围内的每个技术话题,先应用 Choice 过滤器,再应用 Durability 过滤器。二者独立于结构规模应用,并先检查已有 ADR。
- Choice 需要判断:当前需求、已接受决策与有代表性的仓库证据支持至少两个可信、实质不同的选项,其选择需要比较。
- 决策是持久的:在这些选项中做出选择会实质改变职责、依赖方向、共享契约、持久化、技术依赖、可逆性或未来工作必须保留或理解的生命周期成本。
对每个通过两个过滤器的话题各创建一份 ADR,并将整批一起评审。当若干选择必须一起选定或重新考虑时,将其视为一个决策点;可独立重新审视的选择则分开。
符合条件的持久选择包括:
- 引入或替换技术、库、平台、存储模型或外部依赖;
- 在存在可信替代方案时,改变所有权、依赖方向、信任边界或共享公共契约;
- 用另一个通过两个过滤器的持久选择,替换已接受的架构决策;
- 选择不可逆或反转成本很高的数据或兼容性策略。
局部的契约、数据流、状态或组件变更,若遵循已接受的设计、有一个明显的仓库支持实现、或保持低成本可逆,则归入 Design Doc。文件、消费者、嵌套层级、状态、步骤与异步操作的数量只是佐证,而非 ADR 标准。只有上述符合条件的选择才产生 ADR;一般性技术关切、运维可能性与被否决的活动只能作为该判定的佐证。
存储位置
| 文档 | 路径 | 命名约定 | 模板 |
|---|---|---|---|
| PRD | docs/prd/ | [feature-name]-prd.md | prd-template.md |
| ADR | docs/adr/ | ADR-[4-digits]-[title].md | adr-template.md |
| UI Spec | docs/ui-spec/ | [feature-name]-ui-spec.md | ui-spec-template.md |
| UI Spec Assets | docs/ui-spec/assets/{feature-name}/ | 原型代码文件 | - |
| Design Doc | docs/design/ | [feature-name]-design.md | design-template.md |
| Work Plan | docs/plans/ | YYYYMMDD-{type}-{description}.md | plan-template.md |
| Task File | docs/plans/tasks/ | {plan-name}-task-{number}.md | task-template.md |
注:Work Plan 被 .gitignore 排除。
参考
各模板定义其文档的内容、结构要素与图表标准:prd-template.md、adr-template.md、ui-spec-template.md、design-template.md、plan-template.md、task-template.md。
适用场景与限制
适用场景:决定文档范围、判断某项变更应创建哪些文档、确定是否新建 ADR、规划文档创建顺序与存放位置。限制:本文档只负责文档的选择与路由,各文档的具体写法需参照对应模板;具体功能、收费、价格、平台与效果等信息暂未提供。