From 7b6f3ac60c0cf14113ee2bfc79de136ac05ef0aa Mon Sep 17 00:00:00 2001 From: k2safe Date: Sun, 27 Sep 2026 14:49:48 +0800 Subject: [PATCH] chore: finalize resource retirement release verification --- docs/08-development-plan.md | 2 +- docs/reports/resource-retirement.md | 19 ++++++++++++++----- scripts/orbit-local.py | 1 + 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docs/08-development-plan.md b/docs/08-development-plan.md index 737402d..2a3c04b 100644 --- a/docs/08-development-plan.md +++ b/docs/08-development-plan.md @@ -319,4 +319,4 @@ A04派发已提交而消息尚未到达Worker的精确进程故障已通过[专 保护:未完成/未知任务、执行许可、活动计划和流程、未退役订阅阻止队列退役;积压、未确认和耗尽交付阻止订阅退役。退役不删历史或审计,不修改凭据。 -进度:实现已完成,真实 MySQL、HTTP/SDK、控制台、历史升级与完整回归验收中;最终结果见后续报告。 +进度:实现完成;标准七模块竞态回归、vet/build、SDK/协议/文档门禁、真实 MySQL 完整 integration、控制台 HTTP 端到端均通过。浏览器与本地部署、远端版本交付记录见[本批报告](reports/resource-retirement.md)。 diff --git a/docs/reports/resource-retirement.md b/docs/reports/resource-retirement.md index 993a80a..3392cca 100644 --- a/docs/reports/resource-retirement.md +++ b/docs/reports/resource-retirement.md @@ -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。随后从页面退役对应空队列,配置选择中标记已退役并禁选。没有对接入方既有队列或凭据执行退役、轮换或提前结束过渡。 ## 明确边界 diff --git a/scripts/orbit-local.py b/scripts/orbit-local.py index 8799807..9b2dd93 100755 --- a/scripts/orbit-local.py +++ b/scripts/orbit-local.py @@ -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')