Launch Atlas logoLaunch.Atlas
#53Operate架構師產品負責人

Deprecation Plan · 廢棄計畫

把『下架』從口頭承諾變成可追蹤遷移

Deprecation Plan · 廢棄計畫 · 卡片插圖
CHOOSE YOUR MODE

先決定你現在是要學,還是要在專案裡做

網站負責解釋與分發工作包;真正的 Repository 掃描、缺口判斷與文件產出交給 Coding Agent。

SDLC 實作課 · 交付物練習

先理解這份文件替你消除什麼不確定

把『下架』從口頭承諾變成可追蹤遷移

廢棄沒人管會變成永遠的技術債。Deprecation Plan 規範公告時間、替代方案、強制下線日,並用監控確認沒人在用才動手。

OWNER & HANDOFF

誰負責、交給誰

主責: Architect + PO

協作: Dev(替代實作)、Customer Success(外部通知)、DevOps(流量監控)

下游收件: Release Plan、ADR、Cost Monitor

WHEN TO USE

何時值得做

REQUIRED

必要時機: 舊 API 已有替代、schema 演進、第三方依賴退場

SKIP

不需要時: 內部可直接重構、無外部消費者

CAUTION

常見誤用: 只發 email 不監控流量;公告期過短;無替代方案

看懂6 段骨架知道每段要留下哪一種判斷
看會雙版本範本先用輕量版練習,再讀完整版
做出自己的草稿手動貼到 Claude Code、Codex 或其他 Agent
  1. 01讀大綱
  2. 02比範本
  3. 03填素材
  4. 04貼提示詞
  5. 05對照驗收

Anatomy · 文件解剖

輕量版先回答 6 個核心章節

章節名稱可以因團隊調整,但每一段要求的判斷不能被省略。先讀問題,再看格式。

  1. 01

    Executive Summary

    範本必要章節

    3-5 行,主管 30 秒讀完。內容:要下架什麼、為何下架、何時 disable、有多少 affected caller

  2. 02

    Deprecated Surface & Replacement

    範本必要章節

    replacement_path 必須具體;feature_parity 為 partial / breaking_changes 必須列差異

  3. 03

    Sunset Timeline

    範本必要章節

    總天數 ≥ 90;每個 phase 必須有日期;無合約資料時公告期需保守取上限

  4. 05

    Affected Consumers(top callers)

    範本必要章節

    列出 top callers(≥ 80% 流量);unknown_caller bucket 必填即使 0

  5. 07

    Success Criteria & Rollback

    範本必要章節

    三條 metric 必填;rollback window ≥ 14d

  6. 09

    Decision Log(key 2-3 條)

    範本必要章節

    每條必含 chosen + 至少 1 個 rejected + 拒絕原因

Study · 對照學習

同一份交付物,先練核心,再看完整深度

輕量範本適合第一次練習與 MVP;完整範本保留跨職能交棒需要的細節。兩者都要求未知事項保持可見。

SmartTrip 實例待補

這張卡目前提供已審定的輕量與完整範本;不以 AI 臨時生成的內容冒充實際案例。

LIGHT TEMPLATE

30 分鐘內先完成核心章節。

---
doc_type: "deprecation-plan"
variant: "light"
status: "draft"
owner: "<your-name>"
last_updated: "YYYY-MM-DD"
upstream:
  required: ["access-log", "endpoint-inventory"]
  optional: ["consumer-contact-list"]
---

# Deprecation Plan: <surface-name>

**Status:** Draft v0.X · **Owner:** <Architect / PO> · **Last updated:** YYYY-MM-DD

> [!IMPORTANT]
> **AI 填寫規則:** 本範本 6 段(編號 1, 2, 3, 5, 7, 9),全部必填——刻意沿用完整版章節編號讓兩版可對照。每結論行內加 `(依據:log §XXX)`;每量化欄位帶 `[H]/[M]/[L]` confidence badge;缺資料寫 `_TODO: 需要 XXX_` 不編造;最短公告期 90 天;caller 無法識別寫 `unknown_caller` 並列追查方式不假設;必須有 rollback 段(不准設「強制下線無例外」)。

---

## 1. Executive Summary

<!-- ai-fill: 3-5 行,主管 30 秒讀完。內容:要下架什麼、為何下架、何時 disable、有多少 affected caller -->

<3-5 行說明>

> **TL;DR:** <一句話:N 月內下架 X surface,影響 Y 個 caller,替代為 Z>

---

## 2. Deprecated Surface & Replacement

<!-- ai-rule: replacement_path 必須具體;feature_parity 為 partial / breaking_changes 必須列差異 -->

| Field | Value | Confidence |
|---|---|---|
| **Deprecated surface** | <e.g. GET /api/v1/users> | — |
| **Reason** | <為何下架> | **[H]** |
| **Replacement** | <e.g. GET /api/v2/users> | — |
| **Feature parity** | full / partial / breaking_changes | **[H]** |
| **Migration guide** | <link or `_TODO_`> | — |

### Breaking changes(若有)

- <change 1>
- <change 2>

---

## 3. Sunset Timeline

<!-- ai-rule: 總天數 ≥ 90;每個 phase 必須有日期;無合約資料時公告期需保守取上限 -->

| Phase | Date (ISO) | Trigger / Behaviour |
|---|---|---|
| **Announce** | YYYY-MM-DD | 公告 + status page |
| **Warning phase** | YYYY-MM-DD | 開始回傳 `Deprecation` header |
| **Read-only** | YYYY-MM-DD | 拒絕新 client |
| **Disable (soft)** | YYYY-MM-DD | 軟下線(保留快速回滾) |
| **Remove (hard)** | YYYY-MM-DD | 程式碼移除 |
| **Total days** | ≥ 90 | — |

---

## 5. Affected Consumers(top callers)

<!-- ai-rule: 列出 top callers(≥ 80% 流量);unknown_caller bucket 必填即使 0 -->

| Caller | Tier | Req/30d | Contact | Migration ETA | Confidence |
|---|---|---|---|---|---|
| <org-a> | enterprise | 12k | a@x.com | YYYY-MM-DD | **[H]** |
| <unknown_caller bucket> | unknown | 800 | _TODO: 反查 IP/UA_ | _TODO_ | **[L]** |

---

## 7. Success Criteria & Rollback

<!-- ai-rule: 三條 metric 必填;rollback window ≥ 14d -->

| Metric | Target |
|---|---|
| **Caller count at disable** | 0 unknown + ≤ 5 known approved |
| **Traffic share at disable** | ≤ 0.1% of baseline |
| **Rollback window** | ≥ 14d, ≤ 1h to re-enable |

---

## 9. Decision Log(key 2-3 條)

<!-- ai-rule: 每條必含 chosen + 至少 1 個 rejected + 拒絕原因 -->

| Date | Decision | Options | Chosen | Rejected why | Confidence |
|---|---|---|---|---|---|
| YYYY-MM-DD | 公告期 90d vs 180d | 60d / 90d / 180d | 90d | 60d (違反合約 30d + 採購週期)、180d (延誤新版 ROI) | **[H]** |

---

> [!CAUTION]
> **輸出前 AI 自檢:**
> - [ ] 6 段 H2 章節齊全(編號 1, 2, 3, 5, 7, 9)
> - [ ] Sunset timeline 含 5 個 phase + 總天數 ≥ 90
> - [ ] unknown_caller bucket 必填(即使 0)+ 附追查方法
> - [ ] Affected consumer 表覆蓋 ≥ 80% 流量
> - [ ] Success criteria 含 caller count + traffic share + rollback window
> - [ ] Rollback window ≥ 14d
> - [ ] Decision Log ≥ 1 條,每條有 rejected reason
> - [ ] 無 YAML / JSON schema 輸出

Practice · 換你試做

先用自己的話交代素材,不需要先學會工程術語

確定的就寫,不確定的留白。下一步要做的是請 Agent 找缺口,不是讓它替你猜一套合理答案。

可以先留白;複製提示詞後再到 Coding Agent 裡補充。

AI Practice · 手動三步

先問、再寫、最後審,不把整條流程鎖死

每一步都是獨立工作包。你可以停下補資料、修改限制或重做某一步,不需要服從固定的 Agent 接力流程。

STEP 01

只找阻擋文件成立的未知

先補會改變範圍、判斷或驗收結果的資訊,不急著寫文件。

我要製作「Deprecation Plan · 廢棄計畫」。先不要產出文件。

請根據我的素材,找出會影響這份文件正確性或可執行性的未知事項,一次最多問 5 題。

每題請包含:
1. 問題
2. 為什麼現在必須知道
3. 它會影響哪個章節或決定

已經回答的事不要重問;可以延後的事標成「待決策」;不要替我猜答案。

本文件的核心章節:Executive Summary、Deprecated Surface & Replacement、Sunset Timeline、Affected Consumers(top callers)、Success Criteria & Rollback、Decision Log(key 2-3 條)

複製後,請在標示位置貼上自己的素材。

Review · 自己驗收

文件存在,不代表下一個角色真的能使用

逐條檢查 Agent 的輸出。人類負責需求、限制與驗收,也必須能說明重要結論從哪裡來。

CHECKED0 / 6
NEXT HANDOFF

帶著這份文件,繼續到「Retrospective · 回顧會議」

下一張卡會接住新的決策問題;不用一次把整條 SDLC 全做完。

前往下一張卡