用途:以可恢复状态机方式运行 OpenSpec 发布流程。以 Fission-AI/OpenSpec 与 origin/main 为发布真源,每次执行先审计实时 GitHub 状态,不假设上次已成功;仅推进下一步安全动作。状态、就绪度或咨询请求默认只读审计;release、prepare、continue、resume 才授权执行写操作。
主要能力:1) 发布审计:用 gh repo view 确认仓库,git fetch origin main 刷新,用 gh release list --exclude-drafts --exclude-pre-releases 找最新稳定版,列出首个父提交,区分 Changeset PR 与自动化 Version Packages PR(headRefName 为 changeset-release/main)。2) 变更集覆盖判断:按 .changeset/README.md,纳入用户可见功能、修复、破坏性变更、性能改进;通常跳过文档、测试、CI 与内部重构。3) 创建或续写变更集 PR:仅在 missing-tracking 时,从当前 origin/main 建 changeset-<scope> 分支,用临时 worktree 保持用户检出不变;包名用 @fission-ai/openspec,提交前执行 pnpm exec changeset status。4) 校验 Version Packages PR:核对目标分支、消费全部待处理变更集、比对 base 与 head 的 package.json、CHANGELOG.md 与版本;需人工批准,不得自审自批。5) 发布验证:PR 合并后等工作流完成,分别核对 npm view @fission-ai/openspec@<version> version、远端标签指向提交、gh release view 存在且非预发布;全部就绪后按 references/release-notes.md 完善 GitHub Release 说明。6) Beta:仅在用户明确要求时触发 release-prepare.yml,不本地计算版本,不消耗变更集。
限制与失败处理:必须已认证 gh、git、pnpm 且仓库为规范仓库才可写;不得强制改写用户标签、不得手动创建或强制推送 changeset-release/main、不得因重试 CI 推空提交;合并队列中仅等待 mergedAt,不重复入队。失败时先诊断日志,权限或评审缺失需报告具体门禁与 URL 以便下次恢复。