# PROGRESS · 会话列表单一数据源(2026-09-17) 工作树:`.worktrees/session-list-single-source-20260917` 分支:`codex/session-list-single-source-20260917` 基线:`origin/staging` @ `e60a3a4d`(T1 已合入)后继续 T2–T4。任务书更新为常驻外壳 layout(`f6db3c77`)。 ## 任务状态 | 任务 | 状态 | 说明 | | --- | --- | --- | | T1 多键排序 BUG-926 | 完成 | 已合入 `e60a3a4d` | | T2 常驻外壳 layout BUG-927 | 完成 | `(app)` 路由组 + SessionListProvider;首页 `useHomeShellRegistration` 注册全部 controls(让步:元数据操作未上移到 provider,次级页只读) | | T3 空会话不入列 BUG-928 | 完成(让步) | 服务端列表排除空 `messages`;启动/新建复用已有空咨询。延迟落库见 `BLOCKED.md` | | T4 标题副标题 BUG-929 | 完成 | `生时校正 · M月D日`;删除 uniquify;共用 `toSidebarSessionRow` | | T5 记录 | 完成 | | ## T2 让步 任务书允许第一步只做「路由组 + layout 常驻 + provider 拥有列表 + 首页注册全部控制」,元数据操作上移作第二步。本轮按此交付:改名/置顶/删除仍由首页注册,未挂载首页时侧栏只读(与改前次级页一致)。列表所有者已是 provider,切页不重拉。 ## T3 让步 延迟到第一问才 `POST /api/sessions` 未做(深链 `?c=`、刷新恢复牵动过大)。改为服务端过滤 + 复用已有空咨询。 `page.tsx` 行数:T2 开工约 1831,抽出 `useHomeShellRegistration` 后 **1825**。`Home()` useState 34(帽 36),useRef 37(帽 37)。 ## 测试 | 项 | 结果 | | --- | --- | | `tsc --noEmit` | 0 错 | | `npm run lint` | 0 error(既有 warning 未动) | | 定向 | session-list / sidebar / agent-reply / chat-session-authority / local-postgres-or / home-shell-growth 等 **26 + 先前 114/115(已修列表 messages 断言)** | | Python | `test_session_management_entrypoints`、`test_supabase_user_data_contract` 过。`test_daily_and_rectification_entrypoints` 两条找 `daily-starlanguage-card` / `birth-rectification-card` 在 **T1 基线 `e60a3a4d` 已红**(前端测试明确断言这两类名已删除),不是本轮引入 | | `test:db` | 无 Docker,见 `BLOCKED.md` | | `next build` | 本 worktree `node_modules` 是 junction,未核 `/` Static,见既有 BLOCKED |