chore: finalize resource retirement release verification

This commit is contained in:
2026-09-27 14:49:48 +08:00
parent c9e877c3f7
commit 6582b4c111
3 changed files with 16 additions and 6 deletions

View File

@@ -319,4 +319,4 @@ A04派发已提交而消息尚未到达Worker的精确进程故障已通过[专
保护:未完成/未知任务、执行许可、活动计划和流程、未退役订阅阻止队列退役;积压、未确认和耗尽交付阻止订阅退役。退役不删历史或审计,不修改凭据。
进度:实现已完成,真实 MySQL、HTTP/SDK、控制台、历史升级与完整回归验收中;最终结果见后续报告。
进度:实现完成;标准七模块竞态回归、vet/build、SDK/协议/文档门禁、真实 MySQL 完整 integration、控制台 HTTP 端到端均通过。浏览器与本地部署、远端版本交付记录见[本批报告](reports/resource-retirement.md)。

View File

@@ -8,12 +8,21 @@
控制台增加明确队列选择/记忆、暂停/退役状态和名额统计,提供带原因和版本的退役入口。凭据未补存时统一提示补存,不能静默换队列复制。没有修改任何现有应用的 Token、权限或过渡期。
## 检查进度
## 回归结果
- 单元/race、vet、build、Markdown 链接已通过首轮;最终完整结果待回归结束后记录。
- 新增真实 MySQL 8 项场景通过:未物化/租约/耗尽交付保护、64 名额释放且历史保留、任务/订阅依赖、计划恢复阻止、等待流程保护、完成流程原回执和历史、真实锁竞争、审计失败回滚。
- 控制台真实 HTTP 验收通过:跨应用管理员范围、CSRF、退役幂等、名额变化、历史读取。
- 初轮完整 MySQL 回归发现两处旧升级夹具未计入新约束/索引,已修正:旧结构还原时移除 000034 新字段与约束;原索引对比排除新加活动索引。没有放宽原索引、数据和零外键断言。完整回归重跑中。
- `make test`、`make vet build`、`make sdk-check protocol-check docs-check`、JavaScript 语法检查全部退出 0;七个模块的基础竞态回归与 SDK 独立构建通过。
- `make integration` 最终完整重跑退出 0:真实 MySQL 存储/迁移、HTTP、SDK、Worker/事件/流程进程故障、Outbox 与 HTTP 宿主链路通过。SDK 生命周期示例实际输出 `retired=true history_preserved=true subscription_replay=true`。
- 新增真实 MySQL 8 项场景通过:未物化/租约/耗尽交付保护、64 名额释放且历史保留、任务/订阅依赖、计划恢复阻止、等待流程保护、完成流程原回执和历史、真实锁竞争、审计失败回滚。保留零外键断言。
- `make console-e2e` 退出 0:跨应用管理员范围、CSRF、退役幂等、名额变化、历史读取,以及原登录/任务/计划/归档链路通过。
- 初轮完整 MySQL 回归发现两处旧升级夹具未计入新约束/索引,修正后完整重跑通过:旧结构还原时移除 000034 新字段与约束;原索引对比排除新加活动索引。没有放宽原索引、数据和零外键断言。
- 当前协议契约检查通过,未重跑历史版本服务端与历史 SDK 的双向兼容矩阵;不能把本次结果等同于重新验收所有历史组合。
## 本地部署与页面核对
持久 Compose 环境已在备份数据库和凭据保管密钥后升级到 000034,迁移及零外键核验成功,readiness 通过。原应用、凭据和过渡截止保持。部署脚本同时修正了重复构建时的版本时间戳,`/version` 不再沿用首次初始化时间。
浏览器已验证:多队列时不默认第一条,手动选择后刷新保留;暂停队列有标签;历史 Token 未补存时说明一致;队列还有订阅时显示中文阻止原因。使用独占空订阅验证了实际退役提交、退役状态、详情和历史仍可读,且不再出现恢复入口;活动名额从 7/64 回到 6/64。随后从页面退役对应空队列,配置选择中标记已退役并禁选。没有对接入方既有队列或凭据执行退役、轮换或提前结束过渡。
## 明确边界

View File

@@ -97,6 +97,7 @@ def setup():
values['ORBIT_CREDENTIAL_VAULT_INITIALIZED'] = '1'
values['ORBIT_BUILD_REVISION'] = subprocess.check_output(
['git', 'rev-parse', 'HEAD'], cwd=ROOT, text=True).strip()
values['ORBIT_BUILD_TIME'] = datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ')
save_settings(values)
compose('config', '--quiet')
compose('build', 'orbit')