emma-hermes/docs/gateway-resilience/gateway-team-usage-policy.md

276 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Gateway Resilience 團隊使用守則
> 目的:把這整包 `gateway-resilience` 文件,從「有文件可參考」升級成「誰動 gateway 都必須照同一套做」。重點不是增加文書工作,而是 **減少反覆排查、減少 token 浪費、減少修一個壞一串**。
---
## 1. 適用範圍
以下任一情境,都適用這份守則:
- Hermes Agent update
- merge upstream / cherry-pick / refactor
- gateway restart / watchdog 調整
- Telegram / LINE / OpenWebUI / email 綁定邏輯修改
- LINE 長任務 / pending / replay / heartbeat 修改
- LINE 額度不足 fallback 到 email 修改
- email 附件 / 副檔名 / 下載連結 / managed downloads 修改
- principal / verification / quota / role / admin 後台修改
- dashboard 前端若牽涉 governance / messaging / onboarding / delivery flow
### 一句話版
> **只要改動可能影響「綁定、長任務、fallback、檔案交付、治理後台」任何一條主線就不能跳過這套流程。**
---
## 2. 團隊規則:誰在什麼時候做什麼
## 2.1 開改前
改 code 前,操作者必做:
1. 先看 `gateway-functional-contract.md`
2. 再勾 `gateway-change-impact-checklist.md`
3. 先說清楚這次影響哪些主線:
- 綁定
- principal profile routing
- LINE 長任務
- LINE quota fallback
- email 附件 / 下載連結
- governance / admin
### 禁止行為
- 沒先判斷 impact 就直接改
- 改完才回頭想要跑哪些測試
- 明明跨多模組,卻只跑自己最熟的一組 pytest
---
## 2.2 改動中
操作者必須遵守:
1. 改到哪個模組,就補對應驗收責任
2. 若修改流程順序、fallback 條件、文案或管理台能力,文件要一起改
3. 若 live code 與文件衝突,以 live code + 測試結果為準,當次就回寫文件
### 原則
- **文件不是事後補作文,是變更的一部分。**
- **沒有驗收責任的修復,不算完整修復。**
---
## 2.3 改完後
改完後,操作者必做:
1.`gateway-update-restart-sop.md`
2. 視 impact 跑對應 Tier 1 / Tier 2 / Tier 3
3. 做核心 smoke
4. 若碰 governance再做 governance 特別檢查
### 最低要求
- 有改 code不能只看服務有起來
- 有 side effect不能只看單元測試綠燈
- 有管理台變更:不能只看 API 200
---
## 2.4 回報時
回報分兩層:
### 內部完整紀錄
使用:
- `gateway-validation-template-full.md`
### 對外或群組同步
使用:
- `gateway-validation-template-compact.md`
### 若不確定怎麼填
先看:
- `examples-principal-profile-routing-validation-full.md`
- `examples-principal-profile-routing-validation-compact.md`
---
## 3. 角色分工
## 3.1 操作者
負責:
- 判斷 impact
- 修改 code / config / docs
- 跑測試
- 跑 smoke
- 填完整驗收紀錄
### 操作者不能說的話
- 「我有改好,應該可以」
- 「我只改一點點,應該不用驗」
- 「pytest 有過,應該沒問題」
這三句都屬於未完成修復語。
---
## 3.2 驗收者
若是雙人流程,驗收者負責:
- 檢查 checklist 有沒有真的勾 impact
- 檢查有沒有漏跑該跑的 Tier
- 檢查回報是 PASS / FAIL / PARTIAL不是模糊話術
- 檢查 governance 與 delivery 是否被混為一談
### 驗收者最重要的工作
不是再手修一遍,而是擋掉這些錯誤:
- Pairing / Channels / System 被誤當成完整 governance console
- routing 修好了,但 delivery 沒驗
- email 有寄出,但檔名 / 副檔名 / 下載連結沒驗
- LINE 有 pending但 replay / fallback 沒驗
---
## 4. 標準作業流程(團隊版)
### Step 1先判斷是不是 gateway-resilience 範圍
如果是,就啟動這套,不准跳過。
### Step 2先勾 impact
使用:
- `gateway-change-impact-checklist.md`
### Step 3改 code / config / docs
- code 與 docs 同步
- 不留「晚點補文件」債
### Step 4跑 SOP
使用:
- `gateway-update-restart-sop.md`
### Step 5留完整驗收紀錄
使用:
- `gateway-validation-template-full.md`
### Step 6對外同步
使用:
- `gateway-validation-template-compact.md`
### Step 7出錯就回 playbook
使用:
- `gateway-recovery-playbook.md`
---
## 5. PASS / FAIL / PARTIAL 的團隊定義
## PASS
代表:
- 該跑的測試有跑
- 該做的 smoke 有做
- 無 blocker
- 可以交付 / 上線
## FAIL
代表:
- 有明確 blocker
- 重要主線失敗
- 不可交付 / 不可上線
## PARTIAL
代表:
- 某一問題修好了
- 但不是完整 update/restart 驗收
- 有些 smoke / live checks 尚未補完
- 只能「有條件交付」
### 規則
> **不要把 PARTIAL 寫成 PASS。**
這條很重要,因為很多復發就是從「其實只驗一半,但回報寫成沒問題」開始。
---
## 6. 哪些情況一定要寫 PARTIAL
以下情況,原則上不能寫 PASS
- 只跑對應單元測試,沒做核心 smoke
- 只驗 routing沒驗 delivery
- 只驗 API沒驗管理台實際對應
- 只驗 email 有寄,沒驗附件 / 副檔名 / 下載連結
- 只驗 LINE 有 pending沒驗 replay / fallback
- 只看 process 活著,沒驗主線功能
---
## 7. 文件使用對照
### 想知道「這功能本來應該怎樣」
看:
- `gateway-functional-contract.md`
### 想知道「流程到底怎麼跑」
看:
- `gateway-state-and-sequence.md`
### 想知道「改到哪裡該跑什麼」
看:
- `gateway-change-impact-checklist.md`
### 想知道「完整 update / restart 後怎麼驗」
看:
- `gateway-update-restart-sop.md`
### 想知道「壞了先查哪裡」
看:
- `gateway-recovery-playbook.md`
### 想知道「治理後台到底是後端-only 還是有 UI」
看:
- `gateway-admin-ui-api-matrix.md`
### 想留正式驗收紀錄
看:
- `gateway-validation-template-full.md`
### 想快速貼回報
看:
- `gateway-validation-template-compact.md`
---
## 8. 團隊常見錯誤清單
### 錯誤 1只修 symptom不補契約
後果:下次換個入口又壞一次。
### 錯誤 2只跑 pytest不做 smoke
後果:測試綠燈但 live delivery 還是翻車。
### 錯誤 3把 governance API 存在,誤當成已有完整 UI
後果:管理台能力被高估,排查方向錯掉。
### 錯誤 4把 PARTIAL 當 PASS 回報
後果:風險被隱藏,下一次又說「怎麼更新後又壞」。
### 錯誤 5文件晚點再補
後果:通常就是永遠不補,然後下次再花 token 考古。
---
## 9. 團隊最低執行標準
若時間很趕,至少也不能低於這條線:
1.`gateway-change-impact-checklist.md`
2. 跑對應 pytest
3.`gateway-update-restart-sop.md` 的快速健康檢查
4. 至少驗與這次變更直接相關的主線 smoke
5.`gateway-validation-template-compact.md`
### 注意
這是**最低標準**,不是最佳標準。
若是正式 update / merge / restart仍應跑完整版流程。
---
## 10. 一句話版團隊政策
> **動 gateway不只要修 code還要交付 impact 判斷、驗收結果、對外回報;沒有這三件事,就不算完成。**