---
name: engineering-discipline
when: '工程纪律, 工作原则, 开发原则, 证据优先, 变更追溯, 缺陷预防, 设计落地, 推论与事实'
scope:
  - backend
  - frontend
products:
  - '*'
id: ka-pattern-engineering-discipline
asset_kind: pattern
lifecycle_status: active
authority: supporting
routes:
  - '*'
primary_triggers:
  - 工程纪律
  - 工作原则
  - 开发原则
  - 证据优先
  - 变更追溯
  - 缺陷预防
  - 设计落地
  - 推论与事实
priority: P2
specificity: 3
version: 1.0.0
last_reviewed: '2026-05-22'
consumes: []
emits: []
secondary_triggers: []
negative_triggers: []
type: pattern
status: active
---

## 决策规则
- 每行代码变更必须可追溯到任务卡片、设计决策或缺陷根因，禁止无来源的孤立变更
- 解释不替代证据，"理论上修好了"不可接受，必须有执行证据
- 推论不得冒充事实，必须显式区分已确认事实、推论和未知项
- 未知项必须显式记录并跟进，禁止静默跳过
- 规则只从真实缺陷中提取，禁止凭空捏造预防性规则
- 复发缺陷必须产出至少一条规则或检查项（防复发闭环）
- 设计必须提供可实施锚点（数据结构、接口定义、状态机），禁止只给抽象原则
- 先验证后判断，禁止先下结论再找理由
- 一级证据（运行时、真实部署、真实浏览器）优先于二级文档，禁止用 dry-run/静态分析/AI 摘要冒充运行时证据
- 根因定位先于代码修改，禁止试错式补丁叠补丁
- 自动修复循环上限 3 轮，同一错误 >=2 次触发回填，>=4 次记录为复发缺陷
- 超出范围边界时立即上报，禁止自行决定扩范围
- 编译告警必须全部处理，禁止忽略（设置 -Werror 或 CI 编译告警数阈值）
- 代码提交前必须本地通过编译和单元测试，禁止把明显错误提交到远端
- 依赖升级必须逐个进行并验证，禁止批量升级多个依赖
- 线上配置变更必须通过配置中心（Nacos/Apollo），禁止直接修改配置文件重启
- 每次发布必须有回滚方案和验证清单，不能"改了就上线"

## 验收项
- [AC-01] 代码变更可追溯到任务或缺陷
- [AC-02] 推论与事实有显式区分标记
- [AC-03] 缺陷修复有执行证据
- [AC-04] 复发缺陷有防复发规则
- [AC-05] 运行时证据替代 dry-run/AI 摘要
- [AC-06] 自动修复循环未超过 3 轮
- [AC-07] 超范围变更有上报记录
- [AC-08] 编译告警全部处理
- [AC-09] 提交前本地验证
- [AC-10] 依赖逐个升级
- [AC-11] 发布有回滚方案
