简明目的
新建会话页要真正保存和恢复草稿:切换环境或首次发送失败时不丢内容,也不能假装已经创建成功。
Outcome(专业定义)
Alpha Draft leaf surface 在正式路由下以 draft-scoped client 和持久化状态驱动完整生命周期:加载、retarget、首次提交、幂等重试、promotion 与重启恢复均以同一权威 draft record 为准。叶页面接管已基本完成,剩余工作是修复 client 作用域、promotion 真相和持久化/失败行为。
Complexity
M — 涉及 Draft 状态机、server/directory 作用域、持久化和路由行为,需跨组件与 runtime adapter 验证。
Context
New Session 叶页面已经接入,但当前仍可能使用 global client,promotion 在失败时提前发生,草稿状态也不能完整跨 reload/restart 恢复。原需求中的 legacy 页面回退与 Alpha/legacy 共享兼容状态已无用户价值。
Scope
由 draft-scoped server client 执行创建与首条消息提交。
持久化未发送 prompt、模型/agent/permission 选择和必要 retarget 状态。
只有服务端确认 admission 成功后才 promotion 为 Session。
明确无效/已删除 draft、断网、server/directory retarget、重试和应用重启状态。
使用 [REQ-089] Alpha route manifest 成为唯一的路由组合真相 #204 canonical route contract 完成 promotion 后导航。
Non-goals
Acceptance criteria
AC1. 有效 draft 只挂载一个 Alpha Draft surface,并使用该 draft 当前 server/directory 作用域的 client。
AC2. 缺失、未知、已删除或损坏的 draft 显示确定错误/恢复动作,不出现空白页、无限 loading 或静默新建。
AC3. 未发送输入及模型、agent、variant、permission 等选择在 reload 和应用重启后仍与同一 draft 关联。 —— 2026-09-17 删除(owner 裁决):移出本需求,由独立小 bug alpha-code#266(P3)承载;其余条目已交付。
AC4. 切换工作目录时草稿内容不丢失,且旧目录的状态不会出现在新目录下。 (2026-09-17 按 owner 裁决改写,原文见编辑历史)
AC5. 首次提交失败不会 false-promote;重试符合幂等边界且不会生成重复 Session/prompt。
AC6. promotion 成功后由 canonical route helper 导航,back/forward、reload、deep link 与 IME/autocomplete 行为稳定。
AC7. Draft surface 不依赖 global client、隐藏 upstream 页面、Portal 或旧页面兼容状态。
Evidence map
AC
Evidence surface
AC1
#925 / PR #930 alpha-new-session.tsx:62 + test-component/new-session-workspace.cases.ts:378
AC2
#903 / PR #1065 packages/app/src/pages/draft-route-gate.tsx:55/:82 + test-component/draft-route-gate.cases.ts
AC3
已删除 —— 移至 alpha-code#266
AC4
#657 / PR #667 test-component/new-session-workspace.cases.ts:486-546
AC5
#259 / PR #1063 test-component/alpha-composer-model.cases.ts:981(新对话页 alpha-new-session.tsx:131 复用同一 composer)
AC6
上游 packages/app/src/app.tsx:276 promoteDraft + alpha-composer.tsx:697、#477 (无路由器驱动的前进/后退/重载测试,owner 2026-09-17 裁决按现有证据接受)
AC7
PR #638 + packages/ui-mac/src/shared/route-authority-ratchet.test.ts:136
Acceptance owner
@jinjunnn — 按 AC 逐条验收并手工关闭;PR 不得关闭父需求。
设计要点
promotion 是服务端已接受事实的投影,不能由 UI 点击先行决定。
draft 状态必须有稳定持久化 owner,不能只放在进程级全局 client。
retarget 明确区分 server client 切换与 directory scope remount。
重启恢复和幂等重试是正确性要求,不是旧用户兼容。
潜在问题与风险
global client 会将请求发往错误 server。
optimistic promotion 会把失败提交显示成已创建 Session。
仅内存 draft 会在 reload/crash 后丢失未发送工作。
双 route composition 可能重复消费 prompt query。
过时性与兼容性结论
需求有效,叶页面已部分完成;legacy Draft、旧 route state、双页面 fallback 与数据回滚脚本均不需要。保留当前 draft 的持久化、崩溃恢复和重复提交幂等。
关联与职责边界
Delivery plan / 建议子票
Dependencies
简明目的
新建会话页要真正保存和恢复草稿:切换环境或首次发送失败时不丢内容,也不能假装已经创建成功。
Outcome(专业定义)
Alpha Draft leaf surface 在正式路由下以 draft-scoped client 和持久化状态驱动完整生命周期:加载、retarget、首次提交、幂等重试、promotion 与重启恢复均以同一权威 draft record 为准。叶页面接管已基本完成,剩余工作是修复 client 作用域、promotion 真相和持久化/失败行为。
Complexity
M — 涉及 Draft 状态机、server/directory 作用域、持久化和路由行为,需跨组件与 runtime adapter 验证。
Context
New Session 叶页面已经接入,但当前仍可能使用 global client,promotion 在失败时提前发生,草稿状态也不能完整跨 reload/restart 恢复。原需求中的 legacy 页面回退与 Alpha/legacy 共享兼容状态已无用户价值。
Scope
Non-goals
Acceptance criteria
AC1. 有效 draft 只挂载一个 Alpha Draft surface,并使用该 draft 当前 server/directory 作用域的 client。
AC2. 缺失、未知、已删除或损坏的 draft 显示确定错误/恢复动作,不出现空白页、无限 loading 或静默新建。
AC3.
未发送输入及模型、agent、variant、permission 等选择在 reload 和应用重启后仍与同一 draft 关联。—— 2026-09-17 删除(owner 裁决):移出本需求,由独立小 bug alpha-code#266(P3)承载;其余条目已交付。AC4. 切换工作目录时草稿内容不丢失,且旧目录的状态不会出现在新目录下。 (2026-09-17 按 owner 裁决改写,原文见编辑历史)
AC5. 首次提交失败不会 false-promote;重试符合幂等边界且不会生成重复 Session/prompt。
AC6. promotion 成功后由 canonical route helper 导航,back/forward、reload、deep link 与 IME/autocomplete 行为稳定。
AC7. Draft surface 不依赖 global client、隐藏 upstream 页面、Portal 或旧页面兼容状态。
Evidence map
alpha-new-session.tsx:62+test-component/new-session-workspace.cases.ts:378packages/app/src/pages/draft-route-gate.tsx:55/:82+test-component/draft-route-gate.cases.tstest-component/new-session-workspace.cases.ts:486-546test-component/alpha-composer-model.cases.ts:981(新对话页alpha-new-session.tsx:131复用同一 composer)packages/app/src/app.tsx:276promoteDraft +alpha-composer.tsx:697、#477(无路由器驱动的前进/后退/重载测试,owner 2026-09-17 裁决按现有证据接受)packages/ui-mac/src/shared/route-authority-ratchet.test.ts:136Acceptance owner
@jinjunnn — 按 AC 逐条验收并手工关闭;PR 不得关闭父需求。
设计要点
潜在问题与风险
过时性与兼容性结论
需求有效,叶页面已部分完成;legacy Draft、旧 route state、双页面 fallback 与数据回滚脚本均不需要。保留当前 draft 的持久化、崩溃恢复和重复提交幂等。
关联与职责边界
Delivery plan / 建议子票
Dependencies