# 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)。

#### R1.4.1 [completed]

完成 [UniDesk #1919](https://github.com/pikasTech/unidesk/issues/1919) 的 JD01 Web 哨兵临时退役：确认约 10 分钟 Session 来自遗留 quick-verify CronJob，停止并移除 live Argo Application、PaC Repository 及带 JD01 sentinel 标签的运行资源；不要求 YAML-first 永久退役，源码配置保留以便恢复；NC01 小时级巡检保持不变，D518 不在本任务范围，完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R1.4.1_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) 已冻结规格推进实施：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 [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-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 [completed]

按 [#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 [completed]

通过 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 [in_progress]

空 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]

解决 [UniDesk #1887](https://github.com/pikasTech/unidesk/issues/1887)：完整重写 `monitor.pikapython.com` 前端工作台，不在旧页面骨架继续叠功能；页面只消费 central Monitor API，以 run/timeline 为主、详情面板承载 finding/artifact/诊断，支持筛选、深链和刷新恢复，Release B 一次性替换并删除旧页面/query/fallback，完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.6_Task_Report.md)。

#### R2.6.1 [completed]

在 [#1887](https://github.com/pikasTech/unidesk/issues/1887) 冻结新 Monitor 工作台的信息架构、central API view model、URL/deep-link 状态、1920x1080 与 960x600 布局和一次性替换边界，明确不复用旧页面级状态堆叠/补丁式 CSS，完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.6.1_Task_Report.md)。

#### R2.6.2 [completed]

由 Artificer 按 [#1887](https://github.com/pikasTech/unidesk/issues/1887) 在独立 PR 实现全新 Monitor 页面组件、状态模型和样式，只消费 central Monitor API，覆盖筛选、timeline、详情、loading/empty/error/freshness 与刷新恢复，并运行最小前端定向测试，完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.6.2_Task_Report.md)。

#### R2.6.3 [in_progress]

与 R2.5.3 的 Release B 协同合并 [#1887](https://github.com/pikasTech/unidesk/issues/1887)：删除旧页面组件、旧 query/dashboard/fallback 和废弃 CSS，只观察自动 CI/CD，先 internal 后 public 原入口做 1920x1080/960x600 web-probe、深链刷新和截图验收，完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2.6.3_Task_Report.md)。
