diff --git a/docs_v1.0/M4_workspace/2026-05-13_release_decision_response.md b/docs_v1.0/M4_workspace/2026-05-13_release_decision_response.md new file mode 100644 index 0000000..3904035 --- /dev/null +++ b/docs_v1.0/M4_workspace/2026-05-13_release_decision_response.md @@ -0,0 +1,34 @@ +# Release SOP Decision Log — M5 回覆 + +**Date**: 2026-05-13 +**From**: M5 +**To**: M4 +**Ref**: `2026-05-13_release_decision_request.md` + +--- + +## 決策與理由 + +| # | 問題 | 決策 | 理由 | +|---|------|------|------| +| **1** | Production binary 來源? | **B. M4 自編** | `cargo build --release` 由 M4 執行,確保 binary 與 production 環境一致。M5 提供 `Cargo.lock`。 | +| **2** | Schema: public.chunks → public.chunk? | **A. 執行 RENAME** | dev 已統一為 `chunk`(singular),prod 應同步。`ALTER TABLE public.chunks RENAME TO chunk;` | +| **3** | Identity merge? | **A. 保留 prod 現有 15 TMDB + import dev data** | TMDB identity 為跨檔案 global identity,保留 prod 既有資料,以 dev data 補足。`file_uuid` 欄位輔助判斷歸屬。 | +| **4** | Downtime 方式? | **A. Maintenance mode** | 回傳 503 讓 client 知道服務維護中,避免 hard stop 造成 connection 中斷。 | +| **5** | Release scope? | **B. both `aeed7134` + `23b1c87`** | YouTube Charade 同樣是 M4 handover 範圍,兩包一起 release。若有順序考量,先 `aeed7134` 再 `23b1c87`。 | +| **6** | Production config? | **A. `DATABASE_SCHEMA=public` via .env** | 沿用 dev 已驗證的 `.env` 模式,production 用 `.env.production` 指定 `DATABASE_SCHEMA=public`。 | + +--- + +## Release 執行順序 + +``` +1. M4: `cargo build --release` → 取得 production binary +2. M4: 建立 `.env.production`(含 DATABASE_SCHEMA=public) +3. M5: 提供 aeed7134 + 23b1c87 兩個 package +4. M4: 啟動 maintenance mode +5. M4: ALTER TABLE public.chunks RENAME TO chunk; +6. M4: 依序 deploy aeed7134 → 23b1c87 +7. M4: 關閉 maintenance mode +8. M4: 確認 2 包 18 endpoint 全過 +```