| 1 | # 完整轮次导航验证记录 |
| 2 | |
| 3 | ## 后续缺陷检查 |
| 4 | |
| 5 | 追加检查修复了以下问题: |
| 6 | |
| 7 | - 分页失败曾被其他成功页覆盖,重试也未重新读取失败页。现在按页保留错误并重试失败范围。 |
| 8 | - 重叠刷新曾令慢请求不断失效。现在同一会话共享正在进行的刷新,并在完成后合并处理更新信号。 |
| 9 | - 返回最新曾未参与统一窗口请求归属校验,也未将读者取消信号传到加载入口。现在本地、远程 |
| 10 | 返回最新均接受当前交互校验;后发目标或已挂载轮次点击可使旧请求失效,取消不显示网络错误。 |
| 11 | - 缺少目录能力时,活动标记曾用绝对轮次号定位已加载列表。现在使用该列表内的相对位置。 |
| 12 | |
| 13 | 补充确定性测试覆盖分页错误保留、同切面重试、慢刷新去重、新切面与旧分页回包竞争、 |
| 14 | 返回最新与后发目标窗口竞争。Chromium 和 Electron 增加“返回最新等待期间点击已挂载轮次” |
| 15 | 的实际事件回归,验证旧回包不能替换正文或恢复尾部跟随。 |
| 16 | |
| 17 | 本轮前端完整回归、类型检查、Hooks lint、仓库 lint 和生产构建均通过。 |
| 18 | 变基到最新 `main-v2` 后,启动原始体积实测 2049.5 KiB,门槛按既有 Linux |
| 19 | 生产者差值校准为 2049.7 KiB;压缩体积和其他预算保持不变。 |
| 20 | |
| 21 | 验证基线:`8ad1f01bdfb6c7a47e115335909654b51eceb82f` 加本工作区未提交改动。 |
| 22 | 本记录描述本地实现与验证,不代表 GitHub CI、安装包发布或人工原生平台验收。 |
| 23 | |
| 24 | ## 实现与边界 |
| 25 | |
| 26 | - 新目录从持久化 locator 的可见轮次和版本区间读取摘要,独立于正文驻留窗口。 |
| 27 | - 本地 Desktop、远程 Desktop 与 Serve 使用 `history-outline-v1`;旧对端保留已加载轮次导航。 |
| 28 | - 固定切面分页,128 轮一页,每会话最多六页,全 renderer 摘要预算 8 MiB。 |
| 29 | - 正文直接以消息身份请求 32 条窗口,维持默认三页驻留;删除连续寻找目标的翻页循环。 |
| 30 | - 新点击、读者接管、会话替换与普通翻页共享取消/请求归属检查;挂载等待最多五秒。 |
| 31 | - 返回最新先安装最新窗口,再恢复尾部跟随。 |
| 32 | - 未修改模型输入、提示词、工具定义或权威会话日志格式。 |
| 33 | |
| 34 | 索引兼容性与计划有一处调整:两个可选查询索引采用幂等事务安装,不增加派生 schema |
| 35 | 版本。现有旧读取器拒绝更高 schema 版本,因此增加 migration 版本反而会破坏旧读取器 |
| 36 | 兼容性。测试验证版本仍为 10、缺失索引可以恢复、查询计划使用索引。 |
| 37 | |
| 38 | 启动包共享请求协调代码在当前基线增加约 2.8 KiB(0.134%);目录 UI 和跳转协调 |
| 39 | 模块仍按需加载。当前基线实测为 2049.5 KiB,门槛为 2049.7 KiB。 |
| 40 | 压缩体积、单 chunk、CSS、语言包和正文驻留预算未扩大。 |
| 41 | |
| 42 | ## 自动验证 |
| 43 | |
| 44 | 以下命令在对应模块目录运行;测试使用临时会话与模拟服务,不访问用户生产会话。 |
| 45 | |
| 46 | | 范围 | 验证 | |
| 47 | | --- | --- | |
| 48 | | Go 根模块 | `go test ./internal/session ./internal/transcript ./internal/control ./internal/serve` | |
| 49 | | 目录并发检查 | `go test -race ./internal/session ./internal/serve -run TestHistoryOutline` | |
| 50 | | Desktop 独立模块 | `go test ./... -run 'HistoryOutline\|HistoryWindow\|HostCommand\|Contract'` | |
| 51 | | 前端 | `pnpm test:typecheck`、`pnpm lint:hooks`、`pnpm test:transcript` | |
| 52 | | 构建 | `pnpm build`,包含单滚动写入、应用分层、主题变量和生产预算检查 | |
| 53 | | 仓库 | `go run ./tools/repolint`、`git diff --check` | |
| 54 | | 既有浏览器回归 | `CHAT_BROWSER=chromium node bench/chat-transcript.mjs` | |
| 55 | | 新目录浏览器回归 | `node bench/turn-outline.mjs` | |
| 56 | | 新目录 Electron 回归 | `node bench/turn-outline.mjs --electron` | |
| 57 | |
| 58 | 浏览器命令需将 `PLAYWRIGHT_BROWSERS_PATH` 指向本机已安装的 Playwright 浏览器缓存。 |
| 59 | 可设置 `REASONIX_OUTLINE_EVIDENCE` 指定 JSON 与截图输出目录,默认位于系统临时目录下 |
| 60 | 的 `reasonix-turn-outline-evidence`。 |
| 61 | |
| 62 | 持久化测试覆盖首末页、追加后的固定切面、摘要编辑、撤回后的重新编号与空目录、 |
| 63 | 索引查询计划及旧 schema 兼容。远程测试覆盖独立能力协商、规范会话身份、切面参数 |
| 64 | 和网络错误;网络失败不会伪装成缺少能力。 |
| 65 | |
| 66 | 生产 Follow v2 接线回归分别覆盖本地与远程:六轮会话只加载一轮正文,仍展示六个标记; |
| 67 | 首轮、中间轮、末轮各请求一次窗口。测试不手动注册目录 Store。额外强制两种竞争顺序: |
| 68 | 旧翻页晚于目标安装返回,以及目标晚于后发翻页返回,确认旧结果不能覆盖新窗口。 |
| 69 | 事务测试还覆盖读者接管、连续点击、切面重试、保持原消息身份和确定性挂载超时。 |
| 70 | |
| 71 | ## Chromium 与 Electron 证据 |
| 72 | |
| 73 | 两种宿主均完成 25,000 轮会话的第 1、10,001、25,000 轮跳转,初始正文仅一轮。 |
| 74 | 前三次跳转各一次正文定位读取,没有中间正文页读取。断言导航标记不超过 52 个, |
| 75 | 摘要条目不超过 768 个,正文条目不超过 96 个。 |
| 76 | |
| 77 | 两种宿主还覆盖悬停预览、Home/End/Enter、明暗主题、700 像素窄窗口、延迟请求期间 |
| 78 | 鼠标滚轮接管、切换会话后旧回包,以及从旧窗口返回最新。页面错误记录为空。 |
| 79 | 导航条活动标记采用直接定位;不会因平滑移动经过中间范围而发出线性数量的摘要请求。 |
| 80 | |
| 81 | Electron 使用隔离、隐藏的真实 Electron 窗口,输入由 Playwright 注入。它验证了 |
| 82 | Electron renderer 的实际事件和布局,但不是发布安装包验收,也未取得人工操作 |
| 83 | macOS/Windows 原生滚动条拖动的证据。该项原生平台证据仍未完成,不以浏览器结果替代。 |
| 84 |