diff --git a/docs/MDTODO/details/web-sentinel-runtime-reliability/R2.4.1_Task_Report.md b/docs/MDTODO/details/web-sentinel-runtime-reliability/R2.4.1_Task_Report.md new file mode 100644 index 00000000..2262fa42 --- /dev/null +++ b/docs/MDTODO/details/web-sentinel-runtime-reliability/R2.4.1_Task_Report.md @@ -0,0 +1,24 @@ +# R2.4.1 任务报告 + +## 结论 + +[UniDesk #1888](https://github.com/pikasTech/unidesk/issues/1888) 的 migration Job failure envelope 可见性已修复并通过真实运行验收。实现由 [PR #1897](https://github.com/pikasTech/unidesk/pull/1897) 合并,merge commit `2f4522db`;后续自动发布 source `2fdadce835b8` 已包含该修复。 + +## 根因与修复 + +- `sentinelPayloadFromLogs` 在返回 nested `data` 时丢失外层 `command`。 +- JSON 扫描器把 pretty envelope 内嵌 `data` 误当作最后完整对象。 +- 修复后保留顶层 envelope,并继承外层 command;默认 failure 投影返回失败 container、phase、exitCode、语义化 code/message 与日志下钻,保持脱敏。 +- 37 个定向测试通过。 + +## 真实 Job 验收 + +Job `hwlab-web-probe-monitor-migration-2fdadce835b8-mrirnjg7` 的 import 失败被直接投影为: + +- `container=import`; +- `phase=Failed`; +- `exitCode=1`; +- `code=payload_hash_conflict`; +- `message=ingest identity already has a different terminal envelope`。 + +不再返回 result-missing,也没有依赖临时 dump。用户随后明确放弃 SQLite 历史迁移,因此该冲突不再继续修复或作为 Release B 门禁。 diff --git a/docs/MDTODO/web-sentinel-runtime-reliability.md b/docs/MDTODO/web-sentinel-runtime-reliability.md index 9e7f23c8..7a6e8f1b 100644 --- a/docs/MDTODO/web-sentinel-runtime-reliability.md +++ b/docs/MDTODO/web-sentinel-runtime-reliability.md @@ -42,26 +42,26 @@ PR 合并后只等待自动发布链,使用受控 Web sentinel 原入口产生 ### R2.4 [in_progress] -按 [#1868](https://github.com/pikasTech/unidesk/issues/1868) 已冻结规格推进实施:先并行完成 [#1875](https://github.com/pikasTech/unidesk/issues/1875) Host PG 前置和 [#1874](https://github.com/pikasTech/unidesk/issues/1874) 中心 service(实际实现由其子任务 [#1876](https://github.com/pikasTech/unidesk/issues/1876) 跟踪);前置合并后完成 [#1872](https://github.com/pikasTech/unidesk/issues/1872) runner ingest/迁移工具;最后完成 [#1873](https://github.com/pikasTech/unidesk/issues/1873) 数据迁移、中心 API/UI/CLI 原子切换、自动 CI/CD 与原入口验收,并退役旧 SQLite/runner dashboard,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.4_Task_Report.md)。 +按 [#1868](https://github.com/pikasTech/unidesk/issues/1868) 已冻结规格推进实施:Host PG、中心 service、runner ingest 与新 Monitor 工作台基础均已完成;按 [#1873 最新决策](https://github.com/pikasTech/unidesk/issues/1873#issuecomment-4954659225) 不迁移 SQLite 历史数据,最后只完成 Monitor 专属 PG 空库验证、Release B 中心 API/UI/CLI 原子切换、自动 CI/CD 与原入口验收,并退役旧 SQLite/runner dashboard,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.4_Task_Report.md)。 -#### R2.4.1 [in_progress] +#### R2.4.1 [completed] 修复 [#1873](https://github.com/pikasTech/unidesk/issues/1873) 与 [#1888](https://github.com/pikasTech/unidesk/issues/1888) 的 one-shot migration Job 失败可见性:正确解包外层 command 与 nested data.error,默认有界返回失败 container、phase、exit、语义化 code/message 和日志下钻,不输出 Secret、不依赖临时 dump,也不改变迁移执行语义,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.4.1_Task_Report.md)。 ### R2.5 [in_progress] -按 [#1873 运行面证据](https://github.com/pikasTech/unidesk/issues/1873#issuecomment-4953413607) 处理迁移前已不可恢复的 2 runs/5 artifacts:以 owning YAML 精确列出 runId、stateDir、artifactCount 与 report SHA,导入结构化事实并写入 `legacy-artifact-bytes-missing-before-migration` timeline/finding,不制造 locator或声称已验证 bytes;任何未列明缺口继续 fail closed,完成 PG verify、Release B 原子切换和旧 SQLite/dashboard 退役后关闭,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.5_Task_Report.md)。 +按 [#1873 用户最新决策](https://github.com/pikasTech/unidesk/issues/1873#issuecomment-4954659225) 放弃全部 SQLite 历史数据迁移,以空 Monitor Host PG 从新数据开始;先清空并验证 Monitor 专属数据库/schema,再完成 Release B 原子切换,SQLite、legacy gap 与 migration 不进入运行路径,不双写、不回读、不补洞,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.5_Task_Report.md)。 #### R2.5.1 [in_progress] -按 [#1873 证据](https://github.com/pikasTech/unidesk/issues/1873#issuecomment-4953413607) 在 owning YAML 精确声明仅有的 2 runs/5 artifacts 历史缺口;export/import/verify 导入结构化事实和 missing-before-migration finding,不制造 locator,任何未声明缺口继续 fail closed,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.5.1_Task_Report.md)。 +按 [#1873 最新决策](https://github.com/pikasTech/unidesk/issues/1873#issuecomment-4954659225) 冻结空库切换边界:取消 legacy gap、SQLite export/import/verify 和 payload conflict 作为门禁,确认只清空 Monitor 自有 Host PG database/schema,不影响共享 Host PG 其他服务,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.5.1_Task_Report.md)。 #### R2.5.2 -Release A 自动上线后通过受控 one-shot Job 完成 freeze/snapshot/import/PG verify,核对完整 run/finding/metadata/payload/latest identity 与精确历史缺口,并把真实运行证据写回 [#1873](https://github.com/pikasTech/unidesk/issues/1873),完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.5.2_Task_Report.md)。 +通过 YAML-first 受控入口按 [#1873 最新决策](https://github.com/pikasTech/unidesk/issues/1873#issuecomment-4954659225) 清空或重建 Monitor 专属 Host PG database/schema,验收 schema ready、业务数据 0 行且不读取 SQLite,再允许 Release B,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.5.2_Task_Report.md)。 #### R2.5.3 -迁移验证通过后实施 [#1873](https://github.com/pikasTech/unidesk/issues/1873) Release B 原子切换,并与 R2.6 / [#1887](https://github.com/pikasTech/unidesk/issues/1887) 的 Monitor 前端重写同步收口:中心 service 成为唯一 writer/query authority,Web/CLI/scheduler 只读中心 API,删除旧 SQLite/query/dashboard/fallback 与旧页面;只观察自动 CI/CD并完成 CLI、Monitor Web 与原入口验收,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.5.3_Task_Report.md)。 +空 Host PG 验证通过后实施 [#1873](https://github.com/pikasTech/unidesk/issues/1873) Release B,并与 R2.6 / [#1887](https://github.com/pikasTech/unidesk/issues/1887) 的 Monitor 前端重写同步收口:中心 service 成为唯一 writer/query authority,新数据从切换后开始;删除或屏蔽旧 SQLite/query/dashboard/fallback 与旧页面,只观察自动 CI/CD 并完成 CLI、Monitor Web 原入口验收,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.5.3_Task_Report.md)。 ### R2.6 [in_progress]