agentleFS
peterwangzepeterwangze/software-project-governance/skills/stage-release/SKILL.md

stage-release

Skill2 starsChanged 5 months agoMITView on GitHub

版本发布——发布计划、changelog、回滚方案。阶段子工作流,可独立使用。

  • Commits and pushes

The file

Files
SKILL.md

版本发布 — 子工作流

本文件定义"版本发布"阶段的独立子工作流。用户可单独加载本文件执行版本发布阶段。

阶段目标

将已验证的软件版本安全发布到目标环境。版本发布阶段的核心产出是"发布的版本"——用户可以使用的新版本,且有明确的变更记录和回滚能力。

AI 编程场景特有风险

在 AI 辅助编程项目中,版本发布阶段存在以下特有风险:

风险说明缓解方向
AI 跳过发布检查AI 倾向于"改完就发布",跳过发布 checklist 逐项验证和回滚演练,把发布等同于 git push强制发布 checklist 全项通过后才允许打 tag/合并到 release 分支;每项检查结果必须有记录
版本号管理混乱AI 可能在不同文件中使用不一致的版本号、跳过语义化版本规则、或在不该升版本号的时候升了版本号必须由单一脚本/命令统一更新;CI 检查所有声明文件中的版本号一致性
变更日志遗漏或膨胀AI 生成的 changelog 可能遗漏关键变更(尤其是 breaking change)或包含不该发布的内容(未完成的功能)changelog 必须与 git log 对照;breaking change 必须显式高亮;未完成功能必须排除
回滚方案形式化AI 可能生成"看起来对"的回滚方案(步骤完整但未经实际验证),真正需要时无法执行回滚方案必须在测试环境实际执行一次;回滚时间必须在可接受窗口内
发布后验证被忽略AI 声称"发布完成"后不验证生产环境是否正常,等到用户反馈才发现问题发布后必须有核心功能冒烟测试;监控指标必须在发布后观察期内确认正常

独立使用时的目标锚定

当本子工作流被独立加载时,MUST 完成以下自包含检查。本段不依赖任何其他文件。

  1. 目标确认:读取 .governance/plan-tracker.md → 提取 ## 项目配置 中的量化成功标准
  2. 偏离检查:本次发布内容是否与项目目标一致?偏离 → 记录到 .governance/decision-log.md
  3. 质量底线:发布 MUST 通过 checklist 全项 + 有可验证的回滚方案 + 版本号符合 semver

降级:.governance/plan-tracker.md 不存在 → 内联告知用户锚定不可用(单向通知,非提问——不触发 M5.1 禁令),独立模式直接开始发布流程。后续初始化 governance 后自动恢复。

进入条件

  • 防护网已就绪(G8 通过)
  • CI 稳定运行
  • 有测试报告支撑发布决策

活动清单

1. 发布准备

活动描述交互边界企业实践
确认发布范围本次发布包含哪些功能、修复、破坏性变更需用户确认[Amazon] 显式记录"本次不发布什么"——避免 scope creep
定义版本号按语义化版本规则(MAJOR.MINOR.PATCH)确定版本号自动:基于变更类型推荐 → 需用户确认[Google] 语义化版本严格遵循;breaking change 必须 MAJOR 升级
编写变更日志覆盖所有变更,破坏性变更显式高亮自动:从 git log 生成 → 需用户确认[Google] CHANGELOG 按 Added/Changed/Fixed/Removed 分类
确认未完成功能排除检查是否有未完成的功能被错误包含自动:diff 分析标记未完成文件 → 需用户确认[Amazon] 只发布已完成且验证过的功能

2. 发布前检查

活动描述交互边界企业实践
执行发布 checklist逐项检查:测试通过、门禁 green、版本声明一致、适配层状态真实、归档闭环、交叉引用无漂移自动:候选包使用 check-release --version X.Y.Z --require-changelog --lineage-mode candidate;该模式明确允许 release commit/tag 尚未创建。创建并推送 tag 后,必须再运行 check-release --version X.Y.Z --require-changelog --lineage-mode released --release-commit <commit>,验证本地 tag、tag 指向和 remote tag。默认执行 verify、check-governance --fail-on-issues、e2e-check 和 unittest;需要检查本机 agent runtime 时追加 --runtime-adapters。[华为 IPD] 发布门控逐项检查,不可跳过任何一项
验证 declarative release ledgercandidate commit 中 manifest 必须为 candidate;release commit 仅追加唯一 transition 并改为 released,其单一 parent 必须是 candidate commit自动:候选执行 release-ledger --version X.Y.Z --no-remote;tag/push 后执行 release-ledger --version X.Y.Z --remote origin。UNKNOWN/BLOCKED 不得包装为 PASS。ADR-010
同步 artifact projections先修改 SKILL frontmatter 权威版本,再由 registry 生成全部 byte/structured/transformed projections自动:release-projection 默认 check-only;需同步时显式 release-projection --write,随后再次 checkADR-010
探测可选质量工具Ruff/mypy 只作为渐进检查,不是运行时依赖自动:运行 quality-tools;未安装必须记录 NOT_RUN,执行失败为 FAIL,不得把未安装包装为 PASSADR-010
验证回滚方案在测试环境实际执行一次回滚,记录回滚耗时需测试环境执行[Amazon] 自动回滚能力——回滚必须在 N 分钟内完成
确认监控就绪关键指标(错误率、延迟、可用性)的监控和告警已配置需监控环境执行[Google SRE] 发布前必须确认监控覆盖 4 大黄金信号
发布决策基于 checklist 全部通过 + 回滚验证通过,做出 go/no-go 决策需用户确认:Go/No-Go[Amazon] 发布决策有 Single-Threaded Owner

3. 发布执行

3.1 发布策略选择

策略适用场景风险级别用户影响回滚难度
Big-Bang内部工具、个人项目低全量简单
金丝雀 (Canary)用户基数大、风险敏感中1%→10%→50%→100% 逐步放量中等
蓝绿 (Blue-Green)需要瞬时切换、零 downtime中全量切换(流量路由)简单(切回旧环境)
滚动 (Rolling)多实例、持续部署中逐实例替换中等
功能标记 (Feature Flag)新功能不确定效果低按 flag 控制可见性最简单(关 flag)

策略选择规则:

  • 有数据迁移或 Schema 变更 → 金丝雀或蓝绿,禁止 Big-Bang
  • 新功能不确定用户接受度 → 功能标记优先
  • 基础设施变更 → 金丝雀(先 1 实例,观察 30 分钟)
  • 安全修复 → 滚动或 Big-Bang(安全优先于渐进)

3.2 Feature Flag 管理

活动描述交互边界企业实践
列出本次发布的 flags哪些功能通过 flag 控制、哪些直接生效自动[Meta] 发布与启用解耦——deploy ≠ release
定义 flag 启用/关闭流程谁可以在什么条件下启用/关闭 flag需用户确认[Meta] flag 变更也需要审批
定义 flag 清理计划flag 在功能稳定后多久移除(避免 flag 债务)自动:建议 ≥30 天后清理[Google] flag 过期自动告警

3.3 Kill Switch 验证

活动描述交互边界企业实践
定义 kill switch 触发条件什么指标变化会触发紧急关闭?(如错误率 >2x 基线)需用户确认[Google SRE] 明确的回滚触发条件,不依赖人的判断
验证 kill switch 可执行在测试环境执行一次 kill switch,记录从触发到生效的耗时需测试环境执行[Amazon] kill switch 必须在 N 秒内生效
确认 kill switch 负责人谁有权限触发 kill switch?(至少 2 人,避免单点)需用户确认[Google SRE] 值班 rotation + 备份

3.4 发布执行

活动描述交互边界企业实践
按选定策略执行发布按选择的发布策略(金丝雀/蓝绿/滚动/Big-Bang)执行需用户确认:最终发布决策[ByteDance] 灰度发布——先小范围验证再全量;发布过程可观测
发布后验证核心功能冒烟测试:关键路径在生产环境可正常走通需外部环境执行[Google SRE] 发布后立即执行冒烟测试,不等到用户反馈
监控观察发布后观察期(≥30 分钟)内监控指标是否正常需监控环境执行[Google SRE] 错误预算消耗、延迟 P99、可用性 vs 基线

4. 发布收尾

活动描述交互边界企业实践
更新版本记录版本号、发布日期、变更范围写入版本记录文件自动[Google] 版本记录可追溯到 commit
执行持续归档触发检查版本 bump / 已发布状态写入后运行 archive.py migrate --auto --dry-run;如报告需要归档,执行 archive.py migrate --auto 并运行 verify_workflow.py check-archive-integrity自动;失败阻断发布完成ADR-006 版本归档边界 + ADR-007 升级迁移
通知相关人员发布完成通知,含变更摘要和已知问题自动通用实践
归档发布资产git tag、changelog、发布包自动[Google] 每次发布有可回溯的 immutable tag
固化 release transition在 release commit 中把 native manifest 从 candidate 改为 released 并追加 integrity event;tag 必须 peel 到该 commit自动;merge/repeat/wrong-parent/rename-delete-add 均阻断ADR-010
记录发布事件如发生事故或异常,准备 blameless postmortem 材料自动:如有事故则创建[Google SRE] Blameless Postmortem——聚焦流程改进而非追责

5. 影响评估(发布后数据验证)

活动描述交互边界企业实践
收集发布后指标错误率、延迟 P50/P95/P99、可用性、用户活跃度——与发布前基线对比需监控环境执行[ByteDance A/B Test] 不接受"感觉变好了"——必须有数据对比
核心指标对比预设的成功标准 vs 实际数据——达标/未达标/不劣化自动:数据 vs 基线对比[ByteDance 数据驱动] 每个指标变化有方向(改善/恶化/持平)+ 幅度(%)
A/B 测试分析(如适用)实验组 vs 对照组:指标差异是否达到统计显著性自动:显著性计算 → 需用户确认结论[ByteDance A/B Test] 结果必须达到统计显著性才能结论
无数据时的替代判定无法 A/B 测试的功能(基础设施/安全修复/内部工具)用替代标准判定成功自动:按替代标准逐项检查[Google SRE] 没有 A/B 测试就用 SLO 基线对比
影响评估报告发布对用户和系统的实际影响——改善了哪些指标、恶化了哪些、是否有意外副作用自动:基于收集的数据生成[Amazon Working Backwards] 回头验证 PR/FAQ 中承诺的用户价值是否通过这次发布兑现了

无数据时的替代判定标准:

变更类型替代 A/B 测试的判定方法来源
基础设施变更部署后 CI 稳定运行 N 次,错误率无劣化Google SRE
安全修复漏洞扫描清零,安全回归测试通过Google Security
内部工具/文档目标用户在 X 分钟内完成目标操作Amazon UX
小项目/早期产品核心功能冒烟测试通过 + 48 小时内无新 bug 报告通用实践
底线至少要有一个可验证的成功定义——"没数据"不是跳过验证的理由ByteDance

产出物标准

产出物格式要求质量标准企业实践来源
发布计划版本号、范围、时间窗口完整且已确认;"不发布什么"有明确记录[Amazon]
变更日志覆盖所有变更,破坏性变更已高亮与 commit 列表对照一致;按 Added/Changed/Fixed/Removed 分类[Google]
回滚方案具体步骤,已在测试环境验证实际执行过;回滚时间在可接受窗口内[Amazon]
发布后验证报告核心功能冒烟测试结果 + 监控观察期数据全部通过;监控指标在基线范围内[Google SRE]
影响评估报告核心指标基线 vs 发布后对比 + A/B 测试结论(如适用)+ 替代判定(如无数据)每个指标有变化方向和幅度;达到预设成功标准或确认不劣化[ByteDance A/B Test] + [Amazon Working Backwards]

退出条件

  • 发布范围明确(有版本号和变更清单)
  • 变更日志覆盖所有变更,破坏性变更已高亮
  • 回滚方案已在测试环境验证(实际执行过)
  • 发布后验证通过(冒烟测试 + 监控观察期无异常)
  • 影响评估已完成(核心指标 vs 基线对比;无数据时有替代判定且通过)
  • 发布脚本检查已通过:候选态 check-release --version X.Y.Z --require-changelog --lineage-mode candidate PASS;创建并推送 tag 后,完成态 check-release --version X.Y.Z --require-changelog --lineage-mode released --release-commit <commit> PASS;两者默认包含 verify、check-governance --fail-on-issues、e2e-check、unittest
  • 0.66.0+ declarative manifest 已闭环:candidate commit 保持 candidate;release commit 是唯一单父 transition;本地/remote tag peel 一致;release-ledger --version X.Y.Z PASS
  • release-projection check-only PASS;若执行过 --write,rollback journal/原子写入测试证据存在
  • quality-tools 结构化结果已记录;Ruff/mypy 未安装时为 NOT_RUN,没有虚构 PASS
  • 持续归档触发检查已通过:archive.py migrate --auto --dry-run 无待归档数据,或已执行归档且 check-archive-integrity PASS

Gate 映射

本阶段对应 G9 — 发布就绪。

Gate 检查项对应活动判定标准自动化判定
发布范围是否明确?发布准备有版本号(符合 semver 格式)、发布范围、时间窗口可自动:正则匹配版本号格式 + 检查范围列表非空
变更日志是否完整?变更日志覆盖所有变更,与 commit 列表对照一致,破坏性变更已高亮可自动:git log diff 对照 commit 列表 + 关键词匹配"BREAKING"
回滚方案是否已验证?发布前检查有具体步骤且已在测试环境实际执行半自动:方案文档存在可自动;验证执行记录需人工确认
发布后验证是否已定义?发布前检查验证 checklist 存在且包含核心功能冒烟测试项可自动:检查 checklist 文件存在 + 核心功能项非空
监控是否已就绪?发布前检查关键指标(错误率/延迟/可用性)监控和告警已配置半自动:监控配置存在可自动;告警有效性需人工确认
发布后冒烟测试是否通过?发布执行核心功能路径在生产环境正常走通可自动:解析冒烟测试结果
观察期指标是否正常?发布执行错误率/延迟/可用性在基线范围内可自动:监控数据 vs 基线阈值对比
治理归档是否闭环?发布收尾版本发布后无待归档历史 task;归档索引与归档文件一致可自动:archive.py migrate --auto --dry-run + verify_workflow.py check-archive-integrity
影响评估是否已完成?影响评估核心指标基线 vs 发布后对比存在;A/B 测试结论明确(如适用);无数据时有替代判定可自动:检查报告文件存在 + 指标对比字段完整

企业实践溯源

本子工作流的设计参考了以下企业实践,每条实践已映射到具体活动步骤:

企业核心实践映射到本工作流
Google语义化版本 + Changelog 分类发布准备→版本号按 semver 规则;变更日志→Added/Changed/Fixed/Removed
Google SRE4 大黄金信号监控 + Blameless Postmortem发布前检查→确认监控覆盖;发布执行→冒烟测试+观察期;发布收尾→事故记录
Amazon显式记录"不发布什么" + 自动回滚发布准备→排除未完成功能;发布前检查→回滚方案实际验证
AmazonSingle-Threaded Owner发布前检查→Go/No-Go 决策有明确负责人
AmazonWorking Backwards (PR/FAQ 验证)影响评估→回头验证 PR/FAQ 承诺的用户价值是否通过发布兑现
华为IPD 发布门控逐项检查发布前检查→checklist 不可跳过任何一项
字节跳动灰度发布 + 数据驱动验证发布执行→逐步放量;发布后验证→数据 vs 基线对比
字节跳动A/B Test 一切 + 无数字不接受影响评估→核心指标对比 + A/B 测试分析 + 无数据替代判定——不接受"感觉变好了"

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.