# 验证与发布 Bundle 插件

验证协议、操作恢复、资源归属、引用撤销和实际安装效果。

插件后端发布、目录注册、Bundle 版本创建与目标安装是不同结果。全部完成并验证实际业务效果后，才能确认可用。

## 协议验证

1. 使用公开 SDK 反序列化并校验生命周期 `6.0.0` 与引用 `4.0.0` 请求、响应及 Bundle 授权。
2. 验证安装、操作、阶段、执行顺序与响应关联；未知字段、错误版本和越权资源被拒绝。
3. 验证 CModel 只有 `contractVersion`、`errorCode`、`data`，并测试真实 HTTP Endpoint 的成功与错误分支。
4. 验证逻辑引用包括 Map/List 都不带地址密钥，业务调用材料仅来自当前 access。
5. 验证业务输出只写授权属性；不确定结果不产生输出且不会被当成安装成功。

## 恢复与业务归属

| 场景                | 需要验证的真实结果                                 |
| ----------------- | ----------------------------------------- |
| 同一操作、阶段重试         | 不重复创建实例、不重复产生业务副作用                        |
| 外部成功但响应丢失         | 以相同操作身份和阶段重试 APPLY，恢复结果，验证无重复资源及未使用凭据得到回收 |
| 已完成 A，再执行 B，再重放 A | 不能覆盖 B 的当前业务配置                            |
| 两个安装或两个环境         | 完整安装身份隔离，不能用相同实例编号接管                      |
| 管理员停用后同步          | 按业务配置所有权保留管理员决定                           |
| Map 移除成员再添加       | 明确验证配置保留或删除重建的业务语义                        |
| DETACH            | 新引用访问失败；业务入口停止、关联清理分别验证                   |
| 新安装复用业务键          | 不误占旧归属或其他安装的业务配置                          |
| 业务配置正在被使用         | 遵守业务所有者的绑定和删除约束                           |

停用后取不到回发凭据，只能证明回发授权失效；不能据此认定业务入站入口也停止。
卸载的关联清理不能用未授权的空引用响应替代。不得为重试直接伪造 Applied 或空 Map。

## 引用与日志

分别测试重绑、Token 轮换、撤销、过期、环境不匹配、缺失目标、Map 多键、List 重复目标以及 HTTP 重定向。
每次重试重新解析，保留业务幂等键。错误、日志、持久业务行中均不得残留本次引用的地址密钥。

## 发布验收

按[注册与管理](/development/lifecycle-plugin-development/registration-management/)回读 `bundleExecution`，
核对协议、执行地址和支持阶段。通过[Bundle 绑定](/development/bundle-development/advanced/lifecycle-plugins/)
创建不可变 Bundle 版本，实际安装、升级、配置和解除。
安装前分别验证两个调用方向的认证、错误凭据拒绝、轮换及撤销；目录记录存在不能代替认证接入验收。
历史业务配置先由所有者依据权威安装记录完成迁移，独立配置不得被接管。
保存源码提交、制品证明、目录版本、安装操作结果及业务验证证据；制品已发布不等于环境已经激活。
