Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/milestones/R2-local-terminal.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ flowchart LR
| 终端模式:#27、#41 | 自主 C++ 核心主/备用屏、各自滚动区域、origin/wrap、光标/样式、历史隔离及 resize 交叉符合原版合同;实际固定 ConPTY 路径保留必要信息 | 历史候选 feed 正确不等于 C++ 已实现;末端不能猜测补回宿主已丢失的信息,重要原版差异仍待确认 |
| resize 与真实 TUI:#29、#28 | 逻辑/物理行、宽字符、历史与淘汰有明确策略;窗口、核心和真实子进程尺寸一致;固定应用逐一完成进入、操作、resize、退出、主屏恢复;回复、输入模式和 bracketed paste 字节经独立预期验证 | 离线回放、单独 Vim 成功或默认核心通过,不能代表整个候选产品矩阵;未声明应用不计完成 |
| 复杂文字与输入:#30(参考 #39) | 在自主 C++ 和 Qt 声明配置核对原始标量、字素边界、宽度/光标、实际 glyph、复制与子进程接收,完成固定 IME 与同次八会话交叉 | #39 的 Alacritty/DWrite 限定结果不代表新核心或 Qt 已具备对应能力;未知 WindTerm 行为继续调查 |
| 真实显示:#31 | 按[字体/显示合同](R2-font-display.md)记录实际不同 DPI、真实跨屏、焦点、IME/Find/rename、命中、隐藏会话及子进程尺寸;环境身份和重复结果可核对 | 相同 96 DPI 的两台显示器、受控消息、DIB 或实际提交时刻不能代替不同 DPI 或实际上屏证据;不得修改个人显示设置制造验收 |
| 真实显示:#31 | **R2 范围限定单显示器**(96/144 DPI 的渲染正确性);真实跨屏迁移**移出 R2**,推迟到 R4(决策 4C,见 [ADR-0009](../adr/0009-r2-scope-decisions.md))。单屏部分仍需按[字体/显示合同](R2-font-display.md)记录实际 DPI、焦点、IME/Find/rename、命中、隐藏会话及子进程尺寸;环境身份和重复结果可核对 | 相同 96 DPI 的两台显示器、受控消息、DIB 或实际提交时刻不能代替不同 DPI 或实际上屏证据;不得修改个人显示设置制造验收。跨屏证据缺失不构成 R2 阻塞,但也不能被表述为已验证 |
| 产品架构:#34 | 按 ADR-0007/0008 已定路线,以实际工作流、原版对标及成本证据收敛核心/历史/GUI/传输接口、资源与维护边界;记录实际支持配置 | 路线已确认不等于功能、平台、长期资源或性能验收通过;重大替换、重要差异和数值门槛仍需用户确认 |
| 开发版交付:#35 | 最终下载产物通过干净构建、依赖/字体许可和清单审计、解压运行、shell/TUI/文字/配置升级/真实显示工作流;按预先冻结的负载和资源合同完成重复会话与持续运行,逐项核对本表 | Alpha 1、源码构建成功、短驻留或某一 CI 通过,不代表 R2 日常开发包、长期稳定或 WindTerm 性能等价 |
| 开发版交付:#35 | 按**决策 5C**:R2 交付范围为"本地终端基础 + 已知差异清单"(见 [ADR-0009](../adr/0009-r2-scope-decisions.md)),产物需通过干净构建、依赖/字体许可与清单审计、解压运行、shell/TUI/文字/配置升级工作流,并随附逐条列出的未实现/未验证项 | Alpha 1、源码构建成功、短驻留或某一 CI 通过,不代表 R2 日常开发包、长期稳定或 WindTerm 性能等价;已知差异清单不完整则该交付不成立 |

#32 本地 shell/分屏标签、#33 会话与配置恢复已有各自限定合同;最终集成仍须复验这些合同。R2 不扩大为 SSH/SFTP、任意嵌套分屏、完整 WindTerm UI 或跨平台客户端;这些任务继续按 PLAN 的对应路标推进。

Expand Down
37 changes: 37 additions & 0 deletions docs/research/r2-performance-budget.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# R2 性能预算:回归型规则

状态:由用户确认(2026-10-30,决策 3C)。本文只定义**如何判定变差**,不宣称任何绝对性能指标,也不与 WindTerm 做性能等同声明。

## 为什么不是绝对值

- 目前只有诊断样本(启动 p50/p95、字素吞吐、repaint 批量、`resource_settle_ms`),没有在受控环境下复现的基线;
- WindTerm 的内部耗时不可测量,因此任何"与 WindTerm 相等"的数字都无依据;
- 绝对值一旦写死,会诱导"为了达标而调参",而真正要防的是回归。

## 规则

1. **基线**:每个受监控的测量项有一个"已记录基线",来源必须是一次可复现的 CI 运行(带 run id 与 commit);
2. **判定**:新测量相对基线**变差超过 20%** 记为预算失败;未超过则通过;
3. **噪声处理**:同一作业重复 5 次取中位数再比对,单次异常不判失败;
4. **诊断守卫独立**:既有的诊断阈值(如 10 秒夹具期限)不受本文约束,仍按各自 issue 的合同执行;
5. **基线更新**:只有确认"变更是预期的"(例如功能修复带来的额外工作)才能更新基线,并在 PR 里写明理由。

## 受监控项(初始集合)

| 测量项 | 来源 | 备注 |
|---|---|---|
| 启动耗时(p50/p95) | `windows-2025-startup-latency` | 已有结果目录 `research/ui/results/2026-10-30-hosted-startup-latency/` |
| 字素吞吐 | 核心测量目标 | 单位与工作负载必须随结果一起记录 |
| repaint 批量与消费耗时 | `TERMFORGE_OUTPUT_TRACE` 分析 | 只看相对变化 |
| `resource_settle_ms` | conpty 探针 | 用于捕捉资源回收变慢 |

## 不属于本文的范围

- 不设定"日常使用流畅"之类的体验结论;
- 不设定与 WindTerm 对比的指标;
- 不覆盖内存占用的绝对上限(另需专项证据)。

## 边界

- 20% 只是本次确认的**回归容忍带**,不是性能目标值;
- 若某测量项在基线上本身波动很大(>20%),应先在 CI 上稳定测量方式,再纳入本规则。
Loading