# Product BU Release Control Plane
## Before
发布状态靠对话记忆和手工 Markdown 更新维持。用户问“现在啥进度/有进展了吗”时,agent 需要重新翻会话、查本地包、查 GitHub PR、查 release asset,再手动改 `00-company/bu-dashboard.md`。
## After
`release-control-plane.yml` 是唯一事实源,agent 每次发布动作只做状态迁移;`release_status.py` 负责外部校验和看板再生成。
| 状态 | 进入条件 | 自动检查 | 下一步 |
| --- | --- | --- | --- |
| intake | 新产品或发布包进入 product-bu | artifact_path 是否存在 | package |
| packaged | 已整理成可发布包 | manifest、权限、zip 结构 | local_verified |
| local_verified | 本地加载或 smoke test 通过 | Edge/Obsidian 加载证据 | submitted |
| submitted | 已提交社区 PR 或 release | PR URL、bot validation | bot_validated 或 blocked |
| bot_validated | 自动校验通过 | release asset、版本号 | released |
| blocked | 校验失败或缺授权 | blocker、owner、next_action | 修复后回到 submitted |
## Tool Upgrade Example
```bash
python tools/release-control/release_status.py sync --product obsidian-groq-copilot
python tools/release-control/release_status.py render-dashboard --write
```
产物效果:用户问进度时,agent 直接读取状态机,回答“obsidian-groq-copilot 当前在 submitted,GitHub PR 已创建,bot validation 因 sentence-case lint 阻塞,下一步是修标题并重新触发校验”,同时 `00-company/bu-dashboard.md` 已由脚本同步。