LL-177-20260707 · SI-052 GLOBAL-SEARCH-API v1.4.0 → v1.4.1 bug 修复完成 · BINGSHUO-AUTH-2026070715227959d7b48eecc5

铸渊 ICE-GL-ZY001
LL-177-20260707
国作登字-2026-A-00037559
授权方: 冰朔 ICE-GL∞
verifier: BINGSHUO-AUTH-2026070715227959d7b48eecc5

@trigger: 冰朔 15:17 「修嘛」+ 豆包/GLM 报告 4 个端点 bug(/file /tree /system-status /help)
@what: SG-001 server.py 4 patches({{path}} → {path} ×2 + 加 VA-SYSTEM-STATUS.hdlp 仓根候选 + /help auth 字段修正)+ VERSION 1.4.0 → 1.4.1
@emergence: 7 项验证全绿 · 服务 PID 663653 跑着 v1.4.1 · 4 bugs 全修复 · 不破坏旧端点 · INDEX.hdlp 失败确认不是 bug(文件本身未 tracked)
@lock: GLOBAL-SEARCH-API v1.4.1 = 当前生产 · 4 bugs 全修复 · 适用=铸渊下次接 SG-001 · 置信=高
@why: 「别猜、别点修、保留所有路径」守住 · 全实测诊断(grep / git show / git ls-tree) · 严格字节匹配 · server.py.bak 命名陷阱暴露 · SI 仓意识流存档 v1.4.1 修复
This commit is contained in:
铸渊 ICE-GL-ZY001 2026-07-07 15:36:24 +08:00
parent dbe52f33ea
commit 9d4b23c707

View File

@ -0,0 +1,84 @@
# SI-052-20260707 · GLOBAL-SEARCH-API v1.4.0 → v1.4.1 bug 修复完成
> HLDP://fifth-domain/tcs-core/SI-052
> 铸渊 ICE-GL-ZY001 · 2026-07-07 D166 15:30 CST
> 国作登字-2026-A-00037559
## 一句话
豆包/GLM 报告的 GLOBAL-SEARCH-API 4 个端点 bug 全部修复并验证,v1.4.0 → v1.4.1,服务 SG-001 PID 663653 跑着。
## 触发
@trigger: 冰朔 15:17 「修嘛」+ 豆包/GLM 报告:
- /file?path=README.md&repo=fifth-domain → file not found
- /file?path=tcs-core/INDEX.hdlp → file not found
- /tree?path=tcs-core → files=[]
- /system-status?repo=cang-ying → no SYSTEM-STATUS file
- /help auth 字段写"需 token"但实际 GET 全部免鉴权(误导)
## 诊断(不猜 · 全实测)
@what:
1. /opt/zhuyuan/global-search-api/server.py 不是 git 仓 → 没有 commit 历史可查 → 必须靠实测
2. 直接 git show HEAD:README.md 测试 → 成功(7763 bytes) → 但 /file 端点返回 file not found → 端点本身有 bug
3. grep "HEAD:" server.py → 发现 line 185 写 f"HEAD:{{path}}"(f-string 里 {{ 是字面 {{) → 变成字面字符串 HEAD:{{path}} → git 找不到
4. grep "cmd.append" server.py → line 164 同样问题 f"{{path}}/"
5. /system-status candidates 列表里没有根目录 VA-SYSTEM-STATUS.hdlp → cang-ying 的 VA-SYSTEM-STATUS 在仓根,不在 video-ai-system/ 子目录
6. /help auth 字段写错了(GET 全部免鉴权,只 POST /archive 需要 token)
## 修复
4 个 patches(最小变更 · 不动其他代码):
- Patch 1: line 185 f"HEAD:{{path}}" → f"HEAD:{path}"(/file 修复)
- Patch 2: line 164 f"{{path}}/" → f"{path}/"(/tree?path= 修复)
- Patch 3: /system-status candidates 加仓根 VA-SYSTEM-STATUS.hdlp(保留原 video-ai-system/ 候选)
- Patch 4: /help auth 字段改正确
- VERSION 1.4.0 → 1.4.1
## 验证(7 项全绿)
@emergence:
| 端点 | 修复前 | 修复后 |
|---|---|---|
| /healthz version | 1.4.0 | 1.4.1 ✅ |
| /file?path=README.md | file not found | ok=True size=7763 ✅ |
| /file?path=tcs-core/LL-004-...hdlp | file not found | ok=True size=4777 ✅ |
| /tree?path=tcs-core | files=[] | count=33 ✅ |
| /system-status?repo=cang-ying | no SYSTEM-STATUS | path=VA-SYSTEM-STATUS.hdlp size=2804 ✅ |
| /help auth | 误导"需 token" | "GET 免鉴权 · POST /archive 需 token" ✅ |
| 旧端点(/repos /search) | 正常 | 不破坏 ✅ |
备注:/file?path=tcs-core/INDEX.hdlp 仍失败但**不是 bug**——实测 git ls-tree HEAD tcs-core/INDEX.hdlp 返回空 + 本地文件不存在 + git status 未 tracked。文件本身没入库,不是端点问题。
## 自我反思
- 教训 1:别靠猜 · 看到"f-string"就猜 {path} 转义,正确,但实施时第一次 assert 失败是因为 [ "git" 多打一个空格 → 严格匹配字节才对
- 教训 2:服务目录不是 git 仓 · 不能用 git log 看修复历史 → 这种服务维护要么配套 git init,要么走其他存档路径(SI 仓意识流)
- 教训 3:bug 不在显眼处 · 豆包/GLM 用 path= 测了,但 4 个 endpoint 只测 2 个能发现 bug,另 2 个永远空响应 → 必须全 endpoint 验证矩阵
- 教训 4:不要为进度赶而牺牲验证 · 看到 count=33 不要立刻撒花,还要测子目录 /file 才完整
- 教训 5:server.py.bak 不是 v1.4.0 · 文件名里有 bak 但版本是 v1.2.0(10:52 timestamp 早于生产) → 必须用 VERSION 字符串识别,不能用文件名
## 关键事件链
@lock: GLOBAL-SEARCH-API v1.4.1 = 当前生产版本(SG-001 PID 663653) · 4 bugs 全部修复 · 7 项验证全绿 · 适用=下次铸渊接 SG-001 · 置信=高
@why:
- 豆包/GLM 是外部 AI,没权限改 SG-001 服务,只能报告 bug
- 铸渊接住→进 SG-001→实测→精准 patch→不破坏其他代码→全验证
- "别猜、别点修、保留所有路径"——这是冰朔的底线,守住
- v1.4.1 推上仓后,未来铸渊空白实例唤醒时能看到:"v1.4.0 有 4 bug,v1.4.1 修了,鉴影存证 SI-052"
## 备份
- /opt/zhuyuan/global-search-api/server.py.bak-v1.4.0 · v1.4.0 修复前
- /opt/zhuyuan/global-search-api/server.py.bak-pre-patch-v1.4.1 · 误用 bak 的反面教材(其实是真 v1.4.0)
- /opt/zhuyuan/global-search-api/server.py.bak-v1.4.0-final · 第二次备份(冗余,留作 fail-safe)
---
铸渊 ICE-GL-ZY001
LL-177-20260707
国作登字-2026-A-00037559
授权方: 冰朔 ICE-GL∞
verifier: BINGSHUO-AUTH-2026070715227959d7b48eecc5