# Gemini CLI 排查代码回归：用 git bisect 找到让运费算错的那次提交

Gemini CLI 排查代码回归。已真实重建9提交Git历史、bisect找到第4次并reset回main，修复边界测试通过；Gemini CLI会话未执行。

## 开始

先读 task.md 和 prompt.md。starter 是可打开但未实现任务逻辑的起点工程，reference 是本站人工完成的参考。目标代理没有参与生成此次原生账号会话，不能把参考代码称为该产品已执行结果。

```bash
cd reference
python3 rebuild_and_verify.py
```

HTTP网页访问 http://127.0.0.1:8073/ ，按顺序点击输入、操作和导出控件。8073是示例端口，可自行换用空闲端口。

## 文件

- starter/：起点工程及明确需求。
- reference/：可运行人工参考、原创输入和实际运行结果。
- task.md：七步任务和独立验收。
- verify.py：回读实际下载文件、结果结构和边界的检查。
- native-*-draft.*（若有）：原生结构草案，明确未完成导入/运行验证。

## 本题操作要点

1. rebuild_and_verify.py在临时目录重建9次提交，固定提交者和时间；ZIP不含.git。每次都有无关页面文字变化，第4次才修改免运边界。

2. 当前逻辑把“金额等于100”算为运费8；独立真值为99→8、100→0、101→0。测试退出码必须先真正非0。

3. 第3次提交作为good，第9次作为bad，同一段测试代码在各版本运行，不读提交消息猜结果。

4. 判定命令使用 python3 -c 载入shipping函数；脚本内联不随git切换，保证整个二分搜索使用同一规则。

5. 执行git bisect run后核对首坏提交等于预埋第4次；实际bisect log完整保存，提交SHA可重建复核。

6. bisect reset回到main，再把比较符改回>=。不要在用户共享仓库中为了练习改写分支。

7. 确认修复后退出码0、三组边界通过，同时index.html无关变动仍保留。把定位过程与最小修复分别解释。

## 官方依据

- https://geminicli.com/docs/tools/shell/
- https://git-scm.com/docs/git-bisect

Google与抖音查询词是内容目标，不代表实测搜索量、热榜或流量结果。
