docs: 修改纪律(防覆盖)写入 AGENTS + 项目记忆

- AGENTS.md 新增「修改纪律」章:改动前 git status、替换三步断言、禁止 git checkout 整文件回滚、
  小步快跑先绿再进、高危文件白名单 diff 核对、迭代收尾 status/log 留痕
- PROJECT_MEMORY 补第 6 记:修改覆盖事故教训(爸爸点名:自己改代码把改过的覆盖了)
- 明确:上一轮 c52ecff 全量提交无丢失;本纪律立即生效
This commit is contained in:
2026-08-23 13:08:10 +08:00
parent c52ecffcd9
commit 2528226a9f
2 changed files with 12 additions and 1 deletions
+11 -1
View File
@@ -66,7 +66,17 @@ SMOKE_TEST=1 SMOKE_SHOTS_DIR=/tmp/opencode/shots npx electron ... # 附
- 周期事件优先级:命运(百年/飞升)> 大比 > 传薪 > 拍卖 > 岁祷 > 回声;大比有 `once`,一年一届。
- `family.flag` 年份键(auction-/prayerDone-/echoDone-/recruitDone-)每 tick 剪 3 年前旧键。
## 工作流约定
## 修改纪律(防覆盖——血泪教训,务必遵守)
**背景**:曾多次出现「大改后我之前的修复被覆盖」:① 批量 python 替换命中旧文本、② `git checkout` 回滚临时参数时误恢复了已修复文件、③ 编辑器链式 replace 生成重复属性/孤行。均靠 tsc/vitest 事后兜住,但应防于未然。
**硬性规则**
1. **改动前**`git status` 确认工作区干净(或先提交当前成果,原子提交,一功一提交)。
2. **改动中**:批量替换一律用「先 assert 旧文本存在 → 替换 → 再全局 grep 断言新文本唯一」三步;禁止无检查的 sed/python 盲替。
3. **禁止 `git checkout -- <file>` / 整文件回滚**(这是历史事故元凶)。确需回滚时:`git show HEAD:<file> > /tmp/bak` 手动 diff 恢复,恢复后跑全量测试确认无伤。
4. **优先小步快跑**:每个功能块改完立即 `npm test`(引擎)或 `tsc`(UI 类型),绿了再动下一处——绝不在错误状态上加新修改。
5. **高危文件白名单**world.ts / events.ts / store.ts / styles.css / cultivation.ts)改动后必须 `git diff --stat` 核对改动面与预期一致(±文件行数应与你改的块吻合)。
6. 每次迭代收尾:`git status` 应干净 + `git log --oneline` 确认每步都有提交记录;凡 "git stash/checkout/rm" 类命令,执行前后都 `git status` 留痕。
- 提交前:`npm test` + `npm run typecheck` 必须绿(改存储/SQL 后再跑一次冒烟)。
- 平衡数值集中在 `game/data/`realms/pacing/buildings/events...),调平衡不改引擎流程。