# 04.runtime_workspace 验收复核(第 08 轮) **评审轮次:** 08 **日期:** 2026-08-06 **主定义:** [04.runtime_workspace.md](04.runtime_workspace.md) **实施规范:** [05.technical_implementation_spec.md](05.technical_implementation_spec.md) **评审方式:** 当前工作树实现核对 + 全量 gate + 新鲜浏览器验收 + 独立只读复核 **独立复核:** `Rawls`(fresh read-only acceptance audit) **总体结论:** 当前实现与自动化回归已覆盖主实现路径,`RW-A10` 已关闭;仍有 `1` 个未关闭 `P2`,本轮不能宣布最终验收通过。 ## 问题清单(Outline) 状态图例:`🔴` 未解决|`🟡` 进行中 / 证据不足|`✅` 已关闭|`⚪` 延续观察 | 状态 | 优先级 | ID | 问题 | 当前结论 / 下一步 | |---|---|---|---|---| | ✅ | P2 | RW-A10 | “未到点重启恢复”缺少直接、场景级自动化证明。 | 已关闭。`runtime-workspace-host` 恢复顺序测试、Pomodoro remount 倒计时测试、Runtime overdue restart 测试和组合恢复测试已共同覆盖“未到点 / 已到点”恢复矩阵。 | | 🔴 | P2 | RW-A11 | Tauri Desktop Host 尚缺一条可审计的代表性业务流验收证据。 | 仍未关闭。当前只有 fresh browser 代表路径证据,以及 prior-round / exploratory desktop window visible evidence;还缺少 Tauri Host 上 `start → interrupt` 或 `start → deadline` 的业务闭环证据。 | ## Gate 结果 - `npm test -- --run`:通过,`35` 个文件 / `195` 个测试全部通过。 - `npm run build`:通过。 - `git diff --check`:通过。 - 独立复核聚焦套件:`pomodoro-miniapp.test.ts`、`runtime-workspace-host.test.ts`、`lineup-runtime.test.ts` 通过;独立 reviewer 报告其本轮复核为 `3` 个文件 / `56` 个测试通过。 ## 本轮确认 ### RW-A10 已关闭 本轮重新核对后,`RW-A10` 不再成立。当前代码和测试已直接覆盖规范要求的“刷新或重启,未到点 / 已到点”恢复矩阵: - 恢复装配顺序已抽到 [tauri/src/runtime/coordination/runtime-workspace-host.ts](/home/gao/Development/lineup/lineup-app/tauri/src/runtime/coordination/runtime-workspace-host.ts:15),先 `applySnapshot`,再挂载已恢复 surface,再 `reconcileBundledMiniApps`,最后恢复执行摘要。 - [tauri/src/runtime/coordination/runtime-workspace-host.test.ts](/home/gao/Development/lineup/lineup-app/tauri/src/runtime/coordination/runtime-workspace-host.test.ts:32) 固定恢复顺序。 - [tauri/src/runtime/coordination/runtime-workspace-host.test.ts](/home/gao/Development/lineup/lineup-app/tauri/src/runtime/coordination/runtime-workspace-host.test.ts:55) 直接覆盖“登录恢复路径 -> Pomodoro remount -> 按持久化 `ends_at` 继续倒计时”。 - [tauri/src/core-apps/pomodoro/pomodoro-miniapp.test.ts](/home/gao/Development/lineup/lineup-app/tauri/src/core-apps/pomodoro/pomodoro-miniapp.test.ts:135) 固定 MiniApp remount 后继续按原 `ends_at` 派生剩余时间。 - [tauri/src/runtime/coordination/lineup-runtime.test.ts](/home/gao/Development/lineup/lineup-app/tauri/src/runtime/coordination/lineup-runtime.test.ts:733) 固定“已到点后重启只结算一次 completed,不重复追加 outbox”。 独立 reviewer `Rawls` 的本轮结论也明确将 `RW-A10` 关闭。 ### RW-A11 仍未关闭 规范的验收矩阵仍要求: - [05.technical_implementation_spec.md](/home/gao/Development/lineup/lineup-app/迭代/04.runtime_workspace/05.technical_implementation_spec.md:679) 的 Host 验收项:`Web 完整 IM 流程;Tauri 至少跑 start → interrupt 或 start → deadline 的代表路径。` - [04.runtime_workspace.md](/home/gao/Development/lineup/lineup-app/迭代/04.runtime_workspace/04.runtime_workspace.md:326) 将 Web Reference Host 与 Tauri Desktop Host 都写入本轮验收边界。 当前证据状态: - Web 代表路径:`有 fresh evidence`。 - Tauri Desktop Host:`只有窗口可见 / 进程存活类证据,不足以证明业务代表路径`。 因此 `RW-A11` 不是实现缺陷,而是当前仍未满足文档要求的验收证据缺口。 ## 新鲜浏览器验收证据 本轮重新获取了 fresh browser evidence: ```text /snap/bin/chromium --headless=new --disable-gpu --virtual-time-budget=7000 \ --dump-dom 'http://127.0.0.1:1421/?runtime-workspace-e2e=1&runtime-workspace-sequence=start-interrupt' ``` 结果要点: - `body[data-runtime-workspace-e2e="sequence_interrupted"]` - 页面消息区出现: - `正在打开 Pomodoro` - `正在停止 Pomodoro` - `#runtime-workspace-e2e-report` 中的 `surface_trace` 为: - `miniapp.start` - `surface-request open` - `surface-open-result accepted` - `surface-request patch` - `surface-patch-result accepted` - `surface-request close` - `surface-close-result accepted` - `app_sessions` 中: - `chat` 为 `foreground` - `pomodoro` 为 `stopped` 这条证据证明当前 Web Host 的 `start → interrupt → close` 代表路径仍可复现,且 Runtime、Host 和本地 Pomodoro Surface 的受控对账链条是闭合的。 ## 桌面证据现状 本轮未取得满足规范的 fresh Tauri 业务流证据。 已有可保留的辅助事实: - prior round 的真实桌面启动中,用户明确确认“看到了”窗口; - 本轮探索中,Tauri Host 也能在 Xvfb 上渲染出 `LineUp` 窗口。 但这些都只能证明“桌面窗口出现”,不能替代规范要求的: ```text Tauri Desktop Host 至少一条 start → interrupt 或 start → deadline 代表路径验收 ``` 因此本轮不能把 `RW-A11` 关闭。 ## 本轮结论 ```text Round: 08 Primary definition: 迭代/04.runtime_workspace/04.runtime_workspace.md Independent reviewer: Rawls P0: 0 P1: 0 P2: 1 P3: 0 Resolved this round: RW-A10 Carryover: RW-A11(Tauri Desktop Host 代表路径证据不足) Gates: npm test -- --run ✅ | npm run build ✅ | git diff --check ✅ | browser host evidence ✅ | desktop representative flow ❌ Current conclusion: continue loop ``` 下一步只剩两种合规收口方式: 1. 在不改验收口径的前提下,补一条 Tauri Desktop Host 的代表性业务流证据并关闭 `RW-A11`。 2. 若产品 / 评审决定本轮只以 Web Host 作为最终验收口径,则必须先更新主定义与评审基线,再重新做独立复核。