# 浏览器扩展上架状态机
候选 id:`browser-extension-store-state-machine`
## 浏览器扩展上架状态机样例
### Before
上架过程按页面推进:fork 完插件后直接去 Chrome/Edge 上传,遇到 Google passkey 或 Microsoft Partner Center 登录就反复轮询;包校验通过后才发现 listing、隐私、截图、图标、Distribution 等字段不全;最后接近发布按钮时才临时确认是否可以提交。
### After
| 状态 | 进入条件 | 检查项 | 退出信号 |
|---|---|---|---|
| `source_forked` | 已从原扩展 fork 到新扩展目录 | 名称、manifest、权限范围与目标产品一致 | 代码目录和扩展名确认 |
| `permissions_sanitized` | manifest 已调整 | 去掉 Anki/localhost 等无关权限;标记 host_permissions 审核风险 | preflight 无 BLOCKED |
| `zip_built` | release zip 已生成 | zip 内无开发残留;版本号正确 | 可上传包路径存在 |
| `listing_assets_ready` | 商店资料准备阶段 | 隐私政策、listing 文案、300x300 图标、1280x800 或 640x400 截图 | Chrome/Edge 必填素材齐全 |
| `auth_handoff_waiting` | 上传页要求登录验证 | 保留 Chrome/Edge handoff 标签页;记录卡在哪个账号验证 | 用户完成 passkey/Partner Center 登录 |
| `store_fields_complete` | 商店后台可操作 | Privacy、Distribution、属性、可用性、Store listing 全部补齐 | 页面无必填错误 |
| `user_publish_confirmed` | 页面出现提交/发布按钮 | 明确询问并等待用户确认 | 用户明确同意发布 |
| `submitted_pending_review` | 已提交 | 记录提交平台、时间、版本、审核提示 | 状态显示 Pending review |
### 操作约束
- Chrome Web Store 后台脚本或受限页面不能可靠读取时,切换到 Computer Use 视觉操作。
- Edge 即使包校验通过,也不能跳过可用性、属性、Store listing、图标和截图检查。
- 任何平台点击最终提交/发布前,都必须暂停并等待用户明确确认。
- 提交后把 `host_permissions` 相关审核风险写入状态记录,避免误判为已经完全完成。