RULE
单一事实来源
[RULE] 单一事实来源
- 类型: 原则
- 强度: 9/10
- 验证: ✓0 / ✗0
定义
IF: 需要定义系统行为规范 THEN: 该规范有且仅有一个权威定义位置
核心理念
每个行为规范有且仅有一个权威定义——消除歧义、避免不一致。
原理
- 避免分歧:多个来源 = 多个版本 = 矛盾
- 降低维护成本:改一处 vs 改多处
- AI 可依赖:AI 知道去哪找权威答案
- 可审计:变更历史清晰可追溯
实践要求
| 信息类型 | 权威来源 | 禁止位置 |
|---|---|---|
| 系统行为 | specs/ | 散落在代码注释、聊天记录 |
| 架构决策 | decisions/ (ADR) | 会议纪要、口头约定 |
| 术语定义 | glossary.md | 各人脑中的理解 |
| 当前变更 | changes/ | 未归档的 PR 描述 |
反模式
| 反模式 | 问题 |
|---|---|
| 需求在聊天里 | 对话消散,无法追溯 |
| 规范在代码注释里 | 代码改了注释忘改 |
| 决策在会议纪要里 | 找不到、不完整 |
| 术语各自理解 | 沟通 Gap 永远存在 |
与变更流程的关系
changes/<id>/specs/ (Delta,临时)
↓ 归档后合并
specs/<capability>/spec.md (唯一权威)
- 变更进行中:Delta 是"提案中的事实"
- 变更归档后:合并入 specs/,Delta 移入 archive/
- 任何时刻,specs/ 都是当前事实来源
证据
- 支持: INFO-082(软件项目持续演进宪章 v2.0 / OpenSpec 框架核心原则)
- 支持: INFO-078(复盘:路径不清晰 = 没有单一来源)
- 反例: 暂无
关联
- RULE: RULE-先Spec后代码(Spec 是事实来源的载体)
- NODE: NODE-AI-Agent(Agent 需要明确的行为定义来源)