Files
ycode/docs/验收问题收集-2026-10-17-发送与设置.md

243 lines
24 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 08~13 验收问题收集(2026-10-17)
本文只验收 `复刻待办清单-2026-10-17.md` 的 08~13:
1. 新建任务发送后的立即切页与占位
2. 账户菜单与页面
3. 通用设置
4. 外观与浅色/深色主题
5. 快捷键页面与真实功能
6. 个性化页面与真实功能
本轮不修改业务代码、测试或 TODO,不启动 Electron/build。WorkBuddy 原版结论只沿用项目内既有 REA Evidence;本文没有新采集、驱动或修改 WorkBuddy。
## 本轮专项结果
主上下文最新构建后的专项脚本结果如下:
| 条目 | 脚本 | 结果 | checks |
| --- | --- | --- | ---: |
| 08 | `verify-new-task-switch` | PASS | 30/30 |
| 09 | `verify-account-menu` | PASS | 64/64 |
| 10 | `verify-general-settings` | PASS | 43/43 |
| 11 | `verify-appearance-settings` | PASS | 21/21 |
| 11 | `verify-desktop-appearance` | PASS | 19/19 |
| 12 | `verify-shortcuts-settings` | PASS | 32/32 |
| 13 | `verify-personalization-settings` | PASS | 29/29 |
| 13 | `npm run test:personalization` 离线纯测试 | PASS | 全部断言 |
主上下文报告最新构建通过,并已单独通过 `npm run test:conversation-ipc`。这些结果只覆盖对应构建与断言,不替代本文列出的原版证据和全状态验收。
报告:
- `.tmp/new-task-switch-CskK4m/report.json`
- `.tmp/account-menu-1pttNZ/report.json`
- `.tmp/general-settings-it8Zlb/report.json`
- `.tmp/appearance-settings-3Jyy3m/report.json`
- `.tmp/desktop-appearance-hM7qdy/report.json`
- `.tmp/shortcuts-settings-Q8JoQ3/report.json`
- `.tmp/personalization-settings-0eAA5x/report.json`
- `.tmp/audit19-20261017-165014/conversation-ipc.log`
19 个串行脚本中 17 个通过、2 个失败。`verify-settings-nav` 仍把已接入的“记忆”断言为禁用;`verify-composer-context-info` 仍使用旧 `.segmented` 主题控件,外观页改为主题卡后等待超时。两处均为陈旧测试预期,不推断为业务失败,本报告不把它们计作 08~13 的缺陷。
## 优先复核的实际问题
### P2:会话已创建、回合未启动时失败,会留下“空会话 + 新任务界面”的双重状态
- 复现:新任务发送后,让 `session:create` 成功,随后让 `chat:send` 在运行环境启动、附件提交、资源校验或 `startTurn` 任一阶段失败。例如发送过程中删除暂存附件,或让 OMP 启动失败。
- 实际:`newSession()` 已把 `currentSessionId` 设为新会话;后续 `chat:send` 失败时,渲染层只删除乐观消息,没有删除会话或恢复 `currentSessionId=null`。`ChatPane` 因 `messages.length===0` 显示新任务首页,但空间选择仍因 `currentId!==null` 被禁用。
- 期望:首回合启动失败后,要么删除刚创建但从未启动的会话并回到真正的新任务状态,要么保留失败会话和完整错误上下文,不能出现“看起来是新任务、实际已绑定旧会话”的状态。
- 影响:侧栏产生无消息任务;重试会继续使用这个会话;用户无法再切换该“新任务”的工作空间,后续上下文归属容易出错。
- 代码:`src/renderer/src/stores/chat.ts:250-259` 设置新 `currentSessionId`;`src/renderer/src/stores/chat.ts:313-360` 失败路径只清消息;`src/renderer/src/components/ChatPane.tsx:171` 把空消息当首页;`src/renderer/src/components/ChatPane.tsx:371` 用非空 `currentId` 禁用空间切换。
- 当前证据:本轮 30 项脚本没有覆盖它。`scripts/verify-new-task-switch.cjs:175-203` 的失败场景先清空模型注册表,使 `session:create` 在 `src/main/ipc.ts:535-538` 的模型解析阶段就失败,所以此时根本没有创建会话。测试名“发送失败后回到首页”通过,但对应的是“创建会话前失败”。
- 下一步:新增“`session:create` 成功、`chat:send` 拒绝”的回归;断言会话列表、`currentSessionId`、空间选择可用性和草稿恢复同时一致。原版准备失败是否保留空会话仍缺 REA 运行时证据。
### P2:通用设置的磁盘统计被超时截断时,仍按完整值展示
- 复现:让 `app.getPath('userData')` 包含超过 200,000 个文件,或目录扫描超过 1.5 秒。
- 实际:扫描返回 `partial:true`,但进程只把这个值放到 `dataUsagePartial`;设置页完全不读取它,仍把已扫描字节当成完整“已用”值,并据此绘制进度条。
- 期望:显示“统计未完成/继续扫描”,或异步完成后刷新;不能把下界当作精确总量。
- 影响:存储占用和磁盘进度会偏低;用户会误以为目录已清理或容量不足。
- 代码:`src/main/general-settings.ts:80-101` 在 200,000 条目或 1500ms 时截断;`src/main/ipc.ts:418-419` 返回 `dataUsagePartial`;`src/renderer/src/components/GeneralSettingsPanel.tsx:173-178`、`:235-257` 只消费 `dataBytes`,没有读取 partial。
- 当前证据:`verify-general-settings` 使用很小的隔离数据目录,43 项全部通过;没有构造条目上限或耗时预算耗尽。
- 下一步:增加大目录/低预算纯函数测试,并在界面提供部分统计状态或继续扫描。
### P2:右侧工作台全屏且任务生成中,按 `Esc` 会同时取消生成和退出全屏
- 复现:打开右侧工作台并全屏,启动一个生成中的回复,把焦点留在工作台内后按 `Esc`。
- 实际:App 的全局监听取消当前运行;`SourceWorkbench` 的独立监听也退出全屏。两个监听都挂在 `window` 上,工作台监听没有检查 `event.defaultPrevented`,也没有阻止同一事件继续传递。
- 期望:明确一个优先级。快捷键表只声明“生成中 Esc 停止生成”,因此至少不应同时触发未声明的第二个动作;若原版在全屏时另有优先级,应以 REA 运行时证据为准。
- 影响:一次按键产生两个业务状态变化,容易打断用户查看工作台。
- 代码:`src/renderer/src/App.tsx:295-316` 的生成中 Esc;`src/renderer/src/workbuddy/workbench/SourceWorkbench.tsx:59-65` 的全屏 Esc。
- 当前证据:`verify-shortcuts-settings` 只测试录制态 Esc,不测试生成中 Esc,也不测试全屏组合状态。
- 下一步:增加“生成中 + 全屏 + 工作台焦点”的冲突回归,再按原版优先级收敛。
### P2:默认人设的页面说明与实际默认注入状态不一致
- 复现:保持“人设设定”为页面初始值,不编辑,直接发送消息。
- 实际:页面展示完整工作人设并说明“对所有回复生效”,但 `buildPersonalizationPrompt()` 发现它等于默认人设后主动跳过,所以该字段本身不会从个性化模块进入本回合上下文。这是既定实现选择,不等于行为必然错误;YCode 内置提示词是否承担了等价语义尚未证明。
- 期望:页面应准确说明默认人设由哪一层生效;如果内置提示词与展示的人设不等价,则应注入展示内容或调整说明。行为是否与原版等价需要 REA 证据判断。
- 影响:用户看到的人设说明与模型实际收到的个性化字段不一致,容易误判当前人设是否已经生效。
- 代码:`src/shared/personalization.ts:108-116`,尤其 `:113` 明确排除等于 `DEFAULT_PERSONA` 的值;该值在 `PersonalizationSettingsPanel.tsx:278-285` 作为默认人设展示。
- 当前证据:`scripts/personalization-prompt-regression.ts` 反而断言默认人设不得进入提示词,证明这是既定实现选择;尚无证据证明 YCode 内置提示词与展示内容行为等价。
- 下一步:用 REA 补原版默认人设的生效层级和内容证据,再决定注入展示内容、证明内置替代,或修正 UI 文案。
### P2:欢迎语跨原生设置窗口更新时,主窗口的现有流式状态栏没有可靠刷新信号
- 复现:在主窗口保持一个尚未产生正文的慢请求;打开原生设置窗口切换“欢迎语”;观察主窗口当前加载提示。
- 实际:设置窗口写共享 `localStorage` 后只派发当前 renderer 的自定义 `ycode:personalization-change` 事件。主窗口是另一个 BrowserWindow,只会收到浏览器 `storage` 事件;`personalization-prefs.ts` 没监听它。当前组件除非因其他状态再次渲染,否则不会收到变更。
- 期望:配置修改后,所有窗口中的当前流式状态栏即时同步。
- 影响:开关似乎已保存,但当前会话仍显示或隐藏欢迎语;新请求通常会在挂载时读到新值,导致“有时生效、有时要等下一次”的不稳定现象。
- 代码:`src/renderer/src/personalization-prefs.ts:8` 定义自定义事件;`:25` 只在设置窗口派发;`:32` 只订阅自定义事件;`src/renderer/src/workbuddy/conversation/StreamingFooter.tsx:110` 用这个订阅驱动 `useSyncExternalStore`。
- 当前证据:`scripts/verify-personalization-settings.cjs:210-217` 只在设置窗口读取 `localStorage`,没有检查主窗口正在挂载的 `StreamingFooter`。
- 下一步:监听 `window.storage` 或通过主进程广播配置变更;增加双窗口、活跃流式请求的同步用例。
### P2:账户菜单头部实际高度仍比原版多约 4.19px,现有测试只比较了 `min-height`
- 复现:打开账户菜单,测量 `.user-menu-header` 的 `getBoundingClientRect().height`。
- 实际:头部由两行(名称和新增的 mock 说明)撑高,已知结果约 60.19px;原版头部为 56px。测试只断言 CSS `min-height:56px`,不会发现内容把容器撑高。
- 期望:保留用户要求的头像与名称内容,同时由明确布局把头部控制到原版 56px;若副标题必须保留,应把它移到不改变原版几何的位置。
- 影响:计费卡和后续条目整体下移,不能宣称账户菜单逐像素完成。
- 代码:`src/renderer/src/workbuddy/user-menu/AccountMenu.tsx:90-98` 增加副标题;`account-menu-source.css:119-126` 使用 `min-height:56px`;副标题样式在 `:178-185`。
- 当前证据:`scripts/verify-account-menu.cjs:178` 只检查 `minHeight='56px'`。
- 下一步:补实际高度与各 section 的 y 坐标断言,再对照固定 REA 几何修正。
### P2:账户菜单 5 个条目图标仍是 Lucide 占位,不是原版路径
- 复现:对照原版菜单和当前菜单的设置、外观、记忆、更新、退出图标。
- 实际:源码明确写明原始 SVG 尚未回收,当前用 Lucide 同族图标占位。
- 期望:使用 REA 回收的原版 SVG path、viewBox 和线宽。
- 影响:容器尺寸一致,但字形不一致,不能完成像素级验收。
- 代码:`src/renderer/src/workbuddy/user-menu/account-menu-icons.tsx:4-7` 和后续图标定义。
- 当前证据:本轮只验证 16×16 盒子,不验证 path。
- 下一步:用 REA 针对 5 个条目补 `svg_nodes`,再替换和做像素比对。
### P2:深色主题下 native 窗口底色仍固定为白色,重载/空白首帧白闪仅为未观察风险
- 复现:深色主题下重载主窗口、打开独立任务窗口或原生设置窗口,并捕获页面绘制前帧。
- 实际:三个 BrowserWindow 都写死 `backgroundColor:'#ffffff'`;主题在 renderer React effect 中才写到 `documentElement`,窗口底色不会随主题更新。本轮没有捕获到白闪,也没有在重载帧中观察到白闪,因此不能写成已发生。
- 期望:窗口 native background 与持久化主题一致,首帧和重载帧不出现白色闪屏。
- 影响:稳定态截图可全通过,但启动、刷新、窗口树重建时仍会出现浅深混色。
- 代码:`src/main/index.ts:33`、`:103`、`:178`;`src/renderer/src/useSharedTheme.ts:9-13` 在 effect 中设置主题。
- 当前证据:`verify-appearance-settings` 和 `verify-desktop-appearance` 都等待稳定态后才采样,没有首帧/重载帧证据。
- 下一步:补充首帧捕获;主进程根据持久化主题设置窗口 `backgroundColor`,或使用首屏内联主题引导。
### P2:本地将个性化上下文作为 `userText` 拼接;原版注入层级尚未取证
- 复现:设置回复风格、用户指令或长期记忆后发送一轮,并检查实际内核输入。
- 实际:个性化段落被拼接到用户 `text`,最终作为 `userText` 交给内核;它没有作为独立消息角色发送。这证明了本地实现路径,但尚不能据此断言原版一定使用或一定不使用某个特定角色。
- 期望:先用原版 REA 证据确定个性化字段的角色层级、优先级和合并顺序,再证明本地 `userText` 拼接是否等价。
- 影响:用户级拼接可能影响偏好的优先级;在取得原版证据前,这一行为与原版是否等价仍属未知。
- 代码:`src/main/ipc.ts:774-781` 把 `personalizationPrompt` 拼进 `promptText`,随后作为 `userText` 交给内核;`src/shared/personalization.ts:108-116` 排除默认人设。
- 当前证据:纯函数测试只验证字符串拼装,没有通过真实 `chat:send`/上游捕获 system 与 user 两个 roles。
- 下一步:用 REA 取原版请求构造层级,再补真实 IPC/受控上游的角色断言。
## 08. 新建任务发送后的立即切页与占位
结论:**立即切页、乐观消息、单一启动占位和取消主链已实现,30/30 本轮断言通过;完整准备阶段、创建后失败回滚和准备阶段取消仍未闭环。**
- 已验证:约 500ms 内切页/显示用户消息/启动占位;真实占位替换无重复;运行中切换任务;停止后 `cancelled` 落库。
- 实际缺陷:见 P1“空会话 + 新任务界面”双状态。
- 功能未接:只输出 `acquiring_runtime`。`src/renderer/src/workbuddy/conversation/prepare-phases.ts:6-24` 明确说明主进程是单阻塞阶段;其余 9 个已经恢复的文案没有真实阶段发送方。
- 功能未接/待原版确认:发送窗口内没有停止入口。当前 Composer 在 `sending || running` 期间显示发送禁用态,只有真实 run 建立后才出现停止按钮。
- 证据缺口:WorkBuddy 发送后的逐帧时序未获得;原版准备失败是否保留空会话、是否允许准备阶段取消均未获得 REA 运行时证据。
- 测试盲区:未覆盖创建成功后 `chat:send` 失败、进程在启动窗口退出、准备阶段长时间停留、所有准备阶段依次推进。
## 09. 账户菜单与页面
结论:**当前用户指定内容、打开/关闭、设置导航、浅深色和错误/未接提示已实现,64/64 本轮断言通过;仍不能称为逐像素完成。**
- 已验证:头像、名称、套餐、余额、升级套餐、购买积分、设置、外观、记忆与进化、检查更新、退出登录;原生设置窗口复用;浅深色 token。
- 实际视觉差异:头部高度约 60.19px 对原版 56px。
- 实际视觉差异:5 个图标为 Lucide 占位。
- 用户范围边界:账户、套餐、余额、计费、更新和退出登录服务未接,云端服务本轮不列为缺陷;用户指定的内容范围差异也不列为缺陷。
- 证据缺口:原版深色运行时像素未采集;滚动、窗口失焦等关闭路径未采集。
- 测试盲区:只测 `min-height`,没有测真实 header height;“退出登录”只验证存在/禁用语义,没有点击并断言提示;没有 SVG path 对照。
## 10. 通用
结论:**布局、5 个真实设置和 11 个明确占位已实现,43/43 本轮断言通过;存储统计的 partial 状态和打开目录错误处理存在实际缺陷。**
- 已验证:防止休眠偏好、开机启动偏好持久化、真实数据目录、磁盘容量、工作区根目录持久化、通知设置入口、浅深色、未接控件保持禁用。
- 实际缺陷:部分目录统计仍按完整值展示。
- 实际缺陷:`src/main/ipc.ts:444-447` 忽略 `shell.openPath()` 返回的错误字符串。工作区目录被删除、权限异常或系统文件管理器启动失败时,设置页不会显示错误。现有测试只检查 API 函数存在,没有实际点击“打开目录”。
- 功能未接:语言、链接打开方式、字体大小、锁屏运行、网络代理、自动安装可信技能、技能自动更新、套件自动更新、通知提示音、定时任务产物通知、体验优化计划。代码在 `GeneralSettingsPanel.tsx:185-215` 和 `:280-305` 显式禁用,未伪装成功。
- 证据缺口:“系统缓存目录”实际统计整个 `userData`,包含配置、会话和缓存;原版目录语义及是否同样包含这些数据尚需 REA/运行环境证据。
- 测试盲区:`verify-general-settings.cjs:29` 设置 `YCODE_DISABLE_SYSTEM_INTEGRATION=1`,没有验证真实登录项、Windows 通知设置页和系统文件管理器;`:267-277` 直接调用 `changeWorkspaceRoot(path)`,没有点击“更改”并操作系统目录选择器;没有让真实任务运行时验证 `powerSaveBlocker` 是否实际启停,也没有覆盖并发任务计数。
## 11. 外观与浅色/深色主题
结论:**用户限定的浅色/深色、跨窗口同步和重启持久化已实现;两套本轮外观脚本均通过。稳定态通过不等于全状态和首帧通过。**
- 已验证:外观面板几何、两张主题卡、即时切换、主窗口/设置窗口同步、稳定态浅深色可读性、重启持久化、首页机器人 ROI 零差异。
- 源码风险:三个 BrowserWindow native 底色固定白色,重载或首帧“可能”出现白闪;本轮未观察到该现象。
- 用户范围边界:原版另外 7 张主题卡不接入,不列为当前缺陷。
- 证据缺口:原版主题切换过渡动画因 `target_changed` 未连续采集;YCode 只验证了稳定深浅两态。
- 测试盲区:稳定态采样只有设置壳和主窗口 5 个表面;未覆盖独立任务窗口、账户/模型/加号弹层、代码块、表格、工具结果、对话框、滚动条、首帧、重载帧和动画中间帧。`verify-desktop-appearance` 的像素比较范围只有首页机器人 120×78 ROI,不能外推到整个界面。
- 变量缺口:原版 tokens 中不存在、但旧 YCode 样式仍引用的变量保留 fallback,尚未做原版运行时逐项核对。
## 12. 快捷键页面与真实功能
结论:**24 行展示、搜索、录制/取消、4 个全局快捷键和浅深色已通过;14 个“已绑定”声明中存在明显测试假阳性,并发现 Esc 双动作冲突。**
- 已验证:Ctrl+B、Ctrl+K、Ctrl+Shift+B、Ctrl+N;24 行文案/键位;搜索和空态;录制态 Esc 取消;深色布局。
- 实际缺陷:生成中 + 工作台全屏时,Esc 同时停止生成和退出全屏。
- 测试假阳性:`scripts/verify-shortcuts-settings.cjs:204-207` 所谓“supported rows match the shortcuts YCode really binds”只是拿界面 `data-shortcut-supported` 与静态目录比较,没有执行动作。真正执行主窗口键位的断言在 `:151-172`,只覆盖 Ctrl+B、Ctrl+K、Ctrl+Shift+B、Ctrl+N。
- 未执行的真实绑定:Ctrl+,、Enter 发送、Shift+Enter 换行、生成中 Esc 停止、Ctrl+=/Ctrl+Shift+= 放大字号、Ctrl+- 缩小、Ctrl+0 重置、Ctrl+T 新标签、Ctrl+W 关标签。
- 静态源码显示这些处理器存在:`App.tsx:271-319`、Composer 输入键盘处理和 `SourceWorkbench.tsx:59-65`,但没有专项运行断言;尤其全屏 Esc 已暴露冲突。
- 功能未接:自定义键位保存、单条删除、整表恢复默认;语音录制、对话内搜索、上/下一个任务、定位任务、F11 全屏、唤起/隐藏主窗口、@ 选择器、/ 命令、Ctrl 强制外部打开只展示未执行。
- 证据缺口:空搜索文案为本地文案;深色 toolbar 控件为本地适配;原版自定义键位持久化格式和命令注册表实现仍未完整对齐。
- 下一步:逐个发送真实键位并断言 DOM/持久化/内核状态;先把 Esc 冲突定为单动作,再补 Ctrl+T/W、字号和发送键盘回归。
## 13. 个性化页面与真实功能
结论:**页面主体、回复风格、身份编辑、长文本保存、欢迎语持久化和浅深色已通过;默认人设、提示词层级、富文本编辑器、文件修改过程和跨窗口即时同步尚未闭环。**
- 已验证:五张卡、8 种回复风格、身份 inline 编辑、失焦丢弃、长文本弹窗、配置持久化、重开恢复、深色布局。
- P2 一致性问题:默认人设展示但既定个性化逻辑不会把该默认值注入请求;内置提示词是否提供等价行为仍待证明。
- 实际风险:欢迎语通过 localStorage 的进程内自定义事件同步,主窗口没有可靠接收另一 BrowserWindow 的变更。
- 功能未接:“显示文件修改过程”在 `PersonalizationSettingsPanel.tsx:287` 始终禁用。
- 功能未接:编辑器实际是 `<textarea>`,见 `PersonalizationSettingsPanel.tsx:306`;原版 `.sc-editor-content` 的富文本格式、粘贴、快捷键和内容模型未复刻。
- 架构差异:个性化段落被拼入用户消息而不是 system/developer 指令,见 `src/main/ipc.ts:774-781`。
- 证据缺口:原版默认人设与宿主提示的关系、个性化字段真正的角色层级仍未知。
- 测试盲区:`verify-personalization-settings.cjs:210-217` 只在设置窗口验证 localStorage 和配置,不验证主窗口当前加载提示;纯测试只验证字符串函数,不验证真实 `chat:send` 后的角色和内核输入;没有测试富文本粘贴、超长内容的 UI 反馈或真实上游收到的个性化内容。
- 外部副作用:既有 REA 操作曾把 WorkBuddy“对你的称呼”保存为 `CodexTmp`,原版空值确认无法直接恢复。该问题属于 WorkBuddy 共享运行态清理,不在 YCode 业务代码中;本轮未操作。
## 跨条目测试覆盖矩阵
| 场景 | 已有覆盖 | 结论 |
| --- | --- | --- |
| 创建前失败,如模型不存在 | `verify-new-task-switch` 覆盖 | 通过 |
| 创建成功后、回合启动前失败 | 未覆盖 | 会留下空会话,需补回归 |
| 原版完整准备阶段推进 | 未覆盖 | 当前只接一条占位 |
| 账户菜单 header 实际高度 | 仅 `min-height` | 仍多约 4.19px |
| 账户菜单 SVG path | 未覆盖 | Lucide 占位 |
| 通用目录超大/扫描超时 | 未覆盖 | partial 被当成完整值 |
| 打开目录失败 | 未覆盖 | 错误被吞掉 |
| 真实系统登录项/通知 | 隔离掉 | 仅验证偏好与 IPC 可调用 |
| 深色首帧/重载 | 未覆盖 | native 背景为白色;白闪风险未观察确认 |
| 深色全表面 | 仅局部稳定态 | 独立窗口、弹层、内容块未覆盖 |
| 快捷键 supported 声明 | 静态目录对照 | 14 行中仅 4 个唯一动作真实执行 |
| Esc + 生成 + 全屏 | 未覆盖 | 源码存在双动作 |
| 欢迎语跨两个 BrowserWindow | 未覆盖 | 当前流式状态栏可能不即时更新 |
| 默认人设真实注入 | 未覆盖,且离线测试明确禁止个性化模块注入默认值 | 页面说明与实际字段不一致,行为等价待证 |
| 个性化真实请求 roles | 未覆盖 | 只测字符串拼装 |
## 建议处理顺序
1. 修复 08 创建后失败状态机,并增加成功建会话后拒绝 `chat:send` 的回归。
2. 修复 10 的 partial 展示和 `openFolder` 错误返回。
3. 明确 12 的 Esc 优先级,并把 14 个 supported 声明逐个做成行为断言。
4. 先用原版证据确认 13 默认人设与个性化提示词层级,再处理 UI 一致性和真实请求回归;同时修跨窗口欢迎语同步。
5. 补 09 账户 header 实高与图标 REA 证据。
6. 最后补 11 首帧、重载、独立窗口及弹层/内容块主题矩阵。
## 跨模块依赖(不计入本文问题数)
- 独立任务窗口的 `chat:event` 路由问题已由主上下文确认。它会扩大 08 中“切换任务后运行状态仍正确”的适用面,但本文不重复计项。
- 备用网关 history 遗漏 `quotes` 已由主上下文确认,属于对话投影/网关链路,本文不重复计项。
- memory 默认偏好误写已由主上下文确认,属于 14 记忆模块,本文只提示其可能影响跨设置持久化验收,不重复计项。
完成这些后仍需用 WorkBuddy 对应版本的 REA Evidence 做同视口、同状态、同输入对比;本轮专项 PASS 只能证明列出的断言范围,不等于 08~13 已全部 1:1。