Error Code Range Collision¶
概念概覽
碰號事件¶
核心知識¶
碰號事件¶
Dungeon 錯誤碼從 1-20 重新編號至 3000-3099 後,發現與 common errors proto 的 3001-3504 區段碰號。這是 P0 問題,因為相同數字 string 在不同模組會造成語意混淆。
根本原因¶
快速選擇編號範圍時沒有先查 range table,事後才發現衝突。doc 33 §1.1 的 range table 是 SoT,但在修改時未被參照。
修復方向¶
建議區段:7000-7099(Dungeon)
步驟:
1. 修改 proto enum 值
2. 更新 twirp.go 中的 error mapping
3. 更新相關文檔
4. 從 Windows toolchain 執行 make proto 重新生成 dungeon_errors.pb.go
5. Unity 端同步 regenerate DungeonErrors.cs
預防機制¶
分配任何新模組錯誤碼區段前,必須先 grep 現有 proto 確認範圍無衝突,再查 doc 33 §1.1 range table。
經驗教訓¶
-
選擇錯誤碼範圍是高風險操作,必須先查 SoT range table 再動手
-
快速修復(hotfix mindset)容易跳過範圍確認步驟,埋下 P0 問題
-
碰號不會在編譯時報錯,只在運行時造成語意混淆,難以發現
常見陷阱¶
-
3000-3099 看起來是空白區段但實際上 3001-3504 已被 common errors 佔用
-
重新編號後需要同步更新 proto、twirp.go、文檔、pb.go、Unity CS 五個地方,漏掉任何一個都會造成不一致
最佳實踐¶
-
建立錯誤碼分配 checklist:先 grep → 查 range table → 分配 → 更新所有下游產物
-
doc 33 §1.1 range table 是 SoT,所有新模組分配前必查
相關概念¶
- PD Spec Rebase vs Patch Strategy
- proto-dead-code-pattern----dangling-------dangling---
- Twirp Error Code Single Channel Architecture
來源 Sessions¶
| 日期 | Session | 貢獻摘要 |
|---|---|---|
| 2026-04-07 | 13536126-c4f1-4c71-ae73-a6544e9167bf | 發現 Dungeon 3000-3099 與通用錯誤碼 3001-3504 碰號的 P0 問題,建立錯誤碼區段管理規範 |