forge-rollbacklisted
Install: claude install-skill gldu/dev-forge
# forge-rollback — 线上故障回滚与 RCA 复盘
## Goal
在发布失败或发生线上故障时,安全撤销异常变更、执行数据库 Migration 回滚、快速上线 Hotfix 并产出 Root Cause Analysis (RCA) 故障复盘报告。
## 触发条件
- **何时触发**:发布失败 / 线上服务异常 / DB 迁移失败 / 出现需要紧急止血的故障(安全漏洞、数据损坏、大规模功能异常)时直接触发本 skill,线上止血优先于现场修复。
- **何时不该触发**:本地 / 开发环境 bug、测试失败、未上线的代码缺陷 → 不属于线上故障,转 `forge-fix` 走 RED → GREEN → REFACTOR 常规修复流程,本 skill 不介入。
## 故障处置决策表
面对线上故障先按下表**三选一**定处置路��,再进入对应 Workflow:
| 场景 | 处置 | 负责 skill |
|---|---|---|
| 数据损坏 / 安全漏洞 / 大规模功能异常 | **回滚**至上一已知稳定版本(本 skill 主路径) | `forge-rollback` |
| 小范围 bug 且已有快速补丁方案 | **热修**:从稳定 tag 切 hotfix 分支,修复后直接部署 | `forge-rollback` 统筹,补丁走 `forge-fix` |
| 配置漂移 / 环境问题(代码本身无缺陷) | **重部署**:核对配置与环境后重新部署同版本,不回滚代码 | `forge-rollback` 确认,重部署由运维 / 平台侧执行 |
> 判定规则:先确认**根因是否在代码**——代码缺陷且影响面大 → 回滚;代码缺陷且影响面小 → 热修;代码无缺陷(配置 / 环境 / 依赖漂移)→ 重部署。
## Workflow
### 1. 紧急安全回滚 (Emergency Rollback)
**前置确认(执行回滚前必做)**:
1. 确认**当前线上版本号**(`git describe` / 发布记录 / 容器镜像 tag)。
2. 确认**目标稳定版本**:选择受影响范围最小的上一已知稳定版本。
3. 确认**DB 迁移文件 up/down 状态**:核对迁移文件存在可逆 `down` 脚本(R4.5),明确目标版本对应的 schema 状态后再执行。
随后执行回滚:
1. 确认线上异常范围与影响面。
2. 回滚 Commit 或发布版本至上一已知稳定版本。
3. **数据库 Migration 回滚**:若变更涉及 DB Schema,执行对应迁移文件的 `down` 脚本,恢复数据一致性。
### 2. 紧急修补路径 (Hotfix Fast-track)
若无法直接回滚,走最小化修补:
1. 从稳定 tag 切出 hotfix 分支。
2. 走 `forge-fix` 编写重现测试并应用最小补丁。
3. 跑通快速测试集后直接部署。
### 3. RCA 故障复盘报告 (Root Cause Analysis)
故障平息后,生成 RCA 复盘报告:
1. **故障时间线**:触发时间、发现时间、止血时间。
2. **根本原因 (Root Cause)**:触发故障的技术与流程诱因。
3. **改进措施 (Action Items)**:防止同类故障再次发生的措施。
4. **沉淀到 LESSONS**:将 RCA 核心教训写入 `.specs/LESSONS.md`。