研发协作
测试失败或发现 bug 后执行 bug→spec…
当测试失败、用户报 bug、生产事故复盘、`/check` 报 VIOLATE 且已定位根因,或用户明确要求时,用 backprop 把 bug 追踪、spec 更新、测试和修复一起闭环,避免同类问题复发。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
测试失败或发现 bug 后执行 bug→通用
解决思路
- TRACE:读取失败输出 / bug 报告。
- TRACE:找到错误行为的确切 file:line。
- TRACE:用一句极简的话命名根因。
- ANALYZE:问:新的 §V invariant 是否能捕获这一类 bug?(最常见答案:能)
- ANALYZE:问:§I 是否错误——spec 声称的 shape 是否是代码无法交付的?
- ANALYZE:问:§T 是否错误——是否构建了错误的东西?(少见但真实)
- PROPOSE:起草 spec 变更。
- PROPOSE:永远不要跳过 §B;§V/§I/§T 按情况决定。
- PROPOSE:使用模板:§B row: B<next>|<date>|<root cause>|V<N>;§V line: V<next>: <testable rule that would have caught it>。
- PROPOSE:示例:§B row: B3|2026-04-20|refund job ran twice on retry|V7;§V line: V7: ∀ refund → idempotency key check before charge reversal。
- GENERATE TEST:没有测试的新 invariant = 谎言。
- GENERATE TEST:先添加会失败的测试。
- GENERATE TEST:测试名要引用 invariant,例如 `TestV7_RefundIdempotent`。
- VERIFY:修复代码。
- VERIFY:运行测试,必须通过。
- VERIFY:运行完整测试套件,必须不回归。
- LOG:将 spec 编辑 + 测试 + 代码修复一起提交。
- LOG:提交信息:`backprop §B.<n> + §V.<N>: <one-line cause>`。
- 好 invariant:可在代码中测试(grep-able 或 assert-able)。
- 好 invariant:作用域是行为,不是文件。
- 好 invariant:尽可能正面陈述(`! hold` 优于 `⊥ forbid`)。
- 好 invariant:在适用处引用 §I surface。
- invariant 反例/正例:Bad: V8: code should be correct.;Good: V8: ∀ pg_query ! params interpolated via driver, ⊥ string concat。
- 不新增 §V 时仍要追加 §B entry:记录该 failure mode 已被考虑;未来同样气味的 bug → 搜索 §B 可看到先例。
- OUTPUT SHAPE:每次 backprop run 产出 §B entry(总是)。
- OUTPUT SHAPE:每次 backprop run 产出 §V entry(通常)。
- OUTPUT SHAPE:每次 backprop run 产出测试文件(当添加 §V 时)。
- OUTPUT SHAPE:每次 backprop run 产出代码修复。
- OUTPUT SHAPE:每次 backprop run 产出一个 commit。
- OUTPUT SHAPE:No dashboards。No log files。SPEC.md + git 就是完整历史。
适用边界 · 注意事项
- 纯机械拼写错误且没有类别(如 throwaway 中的 `i++` vs `i--`)时,不要新增 §V。
- 修复是一次性 migration 时,不要新增 §V。
- 根因是外部依赖时,不要新增 §V(应升级依赖,并在 §C 中记录)。