From 79fc1c92beea66d1a64e706ba44db256507c9a48 Mon Sep 17 00:00:00 2001 From: JavaZeroo <71128095+JavaZeroo@users.noreply.github.com> Date: Fri, 30 Oct 2026 18:05:46 +0800 Subject: [PATCH 1/2] docs(research): define regression-style performance budgets refs #54 Baselines come from reproducible runs, a 20 percent band marks regressions, diagnostic deadlines stay separate, and no absolute or WindTerm parity claim is made. --- docs/research/r2-performance-budget.md | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 docs/research/r2-performance-budget.md diff --git a/docs/research/r2-performance-budget.md b/docs/research/r2-performance-budget.md new file mode 100644 index 00000000..8cd18708 --- /dev/null +++ b/docs/research/r2-performance-budget.md @@ -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 上稳定测量方式,再纳入本规则。 From 6bafbd4506402640f9fc7783e2a5407d2a8fcd97 Mon Sep 17 00:00:00 2001 From: JavaZeroo <71128095+JavaZeroo@users.noreply.github.com> Date: Fri, 30 Oct 2026 18:06:14 +0800 Subject: [PATCH 2/2] docs(milestone): apply the single-display scope and delivery decisions refs #31 #35 R2 accepts single-display 96/144 DPI only and delivers the local terminal foundation with a named known-gap list, both per ADR-0009. --- docs/milestones/R2-local-terminal.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/milestones/R2-local-terminal.md b/docs/milestones/R2-local-terminal.md index 5d090db0..c5890cb0 100644 --- a/docs/milestones/R2-local-terminal.md +++ b/docs/milestones/R2-local-terminal.md @@ -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 的对应路标推进。