# Monitor / Web 哨兵运行时与持久化 - 范围:Monitor / Web Sentinel 的需求与架构、调度、runner 执行、observe/analyze 终态、报告产物、统一持久化、查询 API、monitor-web 与运行时可靠性。 - 权威路径:遵循 YAML-first;每个阶段只保留一个调度权威和一个持久化/查询权威,不建立旁路 scheduler、永久双写、fallback store 或补洞入口。 ## R1 [in_progress] 解决 [UniDesk #1861](https://github.com/pikasTech/unidesk/issues/1861):修复 NC01/v03 Web 哨兵控制面与 cadence 正常但 latest 报告长期不更新的问题,只修既有调度→observe/analyze→产物→SQLite/index→latest 路径,不扩展次生问题,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R1_Task_Report.md)。 ### R1.1 [in_progress] 单步定位 [#1861](https://github.com/pikasTech/unidesk/issues/1861) 中新 run 未进入 latest 的唯一断点,区分调度、终态、产物、索引和查询层,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R1.1_Task_Report.md)。 ### R1.2 在 [#1861](https://github.com/pikasTech/unidesk/issues/1861) 边界内实现最小修复和定向测试,由 Artificer 创建独立 PR,不新增旁路或补洞,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R1.2_Task_Report.md)。 ### R1.3 PR 合并后只等待自动发布链,使用受控 Web sentinel 原入口产生新 run,并验收 latest 返回新鲜非空 run.id/status/updatedAt,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R1.3_Task_Report.md)。 ### R1.4 [in_progress] 核对 [#1861](https://github.com/pikasTech/unidesk/issues/1861) 的小时级实际探测 cadence 与 10 分钟 scheduler heartbeat/扫描间隔;若只读报告语义误导则纠正字段和文档,若 owning YAML 未生效则修正渲染,验收 CronJob 与报告明确区分二者,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R1.4_Task_Report.md)。 ## R2 [in_progress] 推进 [UniDesk #1868](https://github.com/pikasTech/unidesk/issues/1868):按当前多 runner、全局查询与 Dashboard 复杂度重构 Monitor 平台,评估并实施分散 SQLite 到 NC01 YAML-first Host PostgreSQL 的统一迁移;P0 先冻结架构、数据模型和切换边界,再实现、自动发布和原入口验收,不以迁移掩盖 [#1861](https://github.com/pikasTech/unidesk/issues/1861),不保留永久双写或第二权威,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2_Task_Report.md)。 ### R2.1 [completed] 完成 [#1869](https://github.com/pikasTech/unidesk/issues/1869) 的需求演进、组件职责与复杂度失效边界审计,形成目标架构 must/should/out-of-scope 和候选方案,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.1_Task_Report.md)。 ### R2.2 [completed] 完成 [#1871](https://github.com/pikasTech/unidesk/issues/1871) 的 SQLite 实例、schema、数据规模与生命周期盘点,设计 NC01 Host PG schema、YAML role/database/export、一次性迁移、校验、切换和回滚,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.2_Task_Report.md)。 ### R2.3 [completed] 完成 [#1870](https://github.com/pikasTech/unidesk/issues/1870) 的 service/scheduler/runner API/monitor-web 调用链审计,冻结中心 Monitor 服务拆分、唯一写入/查询权威和故障隔离边界,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.3_Task_Report.md)。 ### 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)。 #### R2.4.1 [in_progress] 修复 [#1873](https://github.com/pikasTech/unidesk/issues/1873) one-shot migration Job 失败时 CLI 只返回 phase=failed/result={} 的可见性缺口:默认有界返回失败 container、phase、exit、语义化 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)。 #### 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)。 #### 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)。 #### R2.5.3 迁移验证通过后实施 [#1873](https://github.com/pikasTech/unidesk/issues/1873) Release B 原子切换:中心 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)。