Files
brainwave/docs/failure-memory.md

4.7 KiB
Raw Permalink Blame History

失败记忆与防回归台账

状态:初始风险基线;实现和运营过程中持续追加 用途:把容易重复的错误转化为持久约束和机械反馈

1. 已知高风险模式

ID 失败模式 常见症状 持久护栏 验证
FM-001 六爻顺序被反转 已知输入显示成另一卦;初爻画在顶部 领域统一 bottom-up,仅展示适配层反转 已知夹具 + 4,096 组合测试 + UI 语义测试
FM-002 6/7/8/9 映射错误 6/9 未变或 7/8 被标成动爻 LineValue 封闭枚举,禁止散落 % 2/magic number 8 种币面与映射参数化测试
FM-003 用二进制序号冒充文王卦序 阴阳形正确但卦号/卦名错误 经审核的完整模式映射表 64 模式唯一性与已知卦测试
FM-004 UI top-down 数据回流领域层 保存后再打开结果颠倒 DTO 字段名强制 BottomUp,序列化往返测试 Room/DTO round-trip
FM-005 AI 参与或改写起卦 AI 前后卦号变化;网络失败无结果 CastEngine 纯 Kotlin;解释状态与结果分离;依赖检查 请求前后不可变测试、离线 E2E
FM-006 用户未点击就发起 AI 请求 进入结果页即出现网络流量 显式调用门与同意状态机 fake server 调用次数为 0
FM-007 生产密钥进入 APK BuildConfig/strings/NDK 中出现 key 后端代理、secret scan、APK 检查 CI secret scan + release artifact scan
FM-008 敏感问题进入日志 crash/HTTP 日志出现原文 结构化脱敏错误码;发布关闭 body logger 日志捕获测试与人工抓取
FM-009 内容缺失时数组错位 第 N 卦显示第 N+1 卦文本 以显式卦号查表;启动/构建期 schema 校验 缺失/重复条目负向测试
FM-010 使用未授权现代译文 上架投诉或无法说明来源 每段 sourceRefs + 许可证清单 + 发布签核 内容校验 + 人工版权审核
FM-011 “国风”装饰损害可用性 低对比水墨、毛笔正文、小铜币按钮 语义令牌、48dp、对比度和反模式清单 accessibility test + 真机评审
FM-012 动爻只用朱砂色表示 色觉用户/读屏无法识别 颜色 + 形状/符号 + 文本 TalkBack 和去色检查
FM-013 旋转或进程重建重复提交 丢轮次、重复 AI 扣费 SavedState、idempotency key、显式请求状态 重建/并发/取消测试
FM-014 AI 输出被当 HTML/命令执行 恶意链接、样式或脚本进入 UI 结构化纯文本 schema、长度和字符校验 对抗性响应测试
FM-015 高风险问题得到命令式答案 模型要求买卖、停药、立即分手 服务端安全提示、测试集、本地降级 高风险金丝雀用例
FM-016 为通过测试关闭门禁 ignored test、宽泛 catch、destructive migration DoD 与评审规则,失败必须归因 CI 检查 skipped tests/配置差异
FM-017 文档与实现漂移 代理按旧命令/旧结构工作 文档状态、链接检查、行为变更同提交 CI docs check + 里程碑熵清理
FM-018 将实时 AI 当唯一测试 oracle 测试不稳定、成本和输出漂移 fake server + 固定 schema fixtures JVM/integration tests 无外网依赖

2. 故障登记模板

可复现且有再次发生价值的故障追加如下记录:

## INCIDENT-YYYYMMDD-NN:短标题

- 发现日期:
- 影响需求:
- 环境/版本:
- 用户症状:
- 最小复现:
- 根因:
- 为什么旧护栏没捕获:
- 修复:
- 新增测试/静态规则:
- 相关提交或 issue:
- 后续观察:

不要记录密钥、真实用户问题或完整 AI 回复;使用脱敏夹具。

3. 提升规则

  • 同类问题第一次出现:修复并加回归测试。
  • 第二次出现:在本文件登记,并优先增加 lint、架构测试、schema 或聚合验证。
  • 影响领域确定性、隐私、密钥、内容授权或高风险 AI 的问题:第一次即登记并加入发布门禁。
  • 只写“以后注意”不算护栏;必须指出由什么测试、脚本、类型或评审入口阻止复发。

4. 定期审计问题

每个里程碑检查:

  1. 是否出现新的裸数字 2/3/6/7/8/9 业务逻辑?
  2. 是否有非 CastEngine 代码重新推导卦象?
  3. 是否有新增网络路径在用户同意前发送内容?
  4. 是否有日志或测试夹具包含类似真实问题的文本?
  5. 是否有卦辞、字体、图片缺少来源?
  6. 是否有页面绕过主题令牌或无障碍语义?
  7. 是否有依赖方向、测试命令或文档链接已经过期?
  8. 是否有多次出现但仍只靠人工评审发现的问题?

审计输出应形成小型、可评审的修复任务,而不是一次大规模无边界重写。