Repository navigation
Description
当前处置与数值边界(2026-11-01)
本项已按决策3C以“回归型性能治理方向”收口。现有AGENTS.md/ADR-0006明确性能数值仍须单独确认;旧预算文档把20%及5次中位数表述为已确认,但没有列出数值确认依据。本次文档刷新将它们恢复为待确认提案,不启用数值门禁、不声称WindTerm性能等价。
受控基线、噪声/观察开销和实际产品测量仍需如实记录;#35随包说明适用范围,#3/#4继续原版基线。保留既有样本、失败和限制,本次不重开本项或改写测量。
正式自主核心的计量准备(2026-10-29)
#152独立准备 recovery C++ 核心的同源码包装/无包装双构建。已只读确认旧core_measure关闭计数仍有global new/delete包装,且默认strict;正式Qt为recovery、初始24×80/history100。新切片先明确协议、构建/对象/EXE身份与短正确性sanity,保留旧v2样本/校准,不据此判断Qt/ConPTY整体或WindTerm等价。当前尚无新正式性能样本或数值预算;#54/#34/R2继续开放。
当前正式路线(2026-10-28)
用户已确认自主 C++ 终端核心+当前 Qt Widgets GUI+随包固定微软 ConPTY,依据见 ADR-0008。第一批整合由 #115 / PR #116承接。
保留本项既有 Alacritty 成本与宿主/观察残差记录,不再继续扩展候选性能路线。后续产品优化对象为自主 C++ / Qt / 固定 ConPTY;复用可用的负载、端点和校准方法,先确保共同正确性再测量。旧成本百分比不转用于新核心,数值容差仍须可靠原版基线后由用户明确。
以下原合同与固定检查点保留各自来源;路线确认不替代实现、完整R2或性能验收。
当前方向与确认边界(2026-10-26)
用户已明确:具体性能波动范围后续必须与其讨论确认。当前不存在已批准的数值容差。本项可自主推进受控成本测量、归因和优化;预算只以提案提交,确认前不判性能通过,旧诊断的 16%/9% 不自动获准。
依据:已确认方向与决策权限。
用户结果与范围
对 PR #49 的流式 grapheme 正确性路径建立可重复的成本定位和明确预算,在不丢标量、聚类、宽度、光标、选择/复制或 glyph 正确性的条件下判断必要优化。本项属于 #34 已有架构/受控测量门槛,不扩大 R2,不预设语言或后端结论。
已观察事实与局限
同宿主交错、每路线3对、每样本至少1秒CPU、4096字节chunk、observe=false 的诊断保留12份原始样本与二进制身份:
- project 中位数 25.8644 → 21.6559 MiB/s,吞吐下降16.2712%。
- interactive 中位数 13.8412 → 12.5401 MiB/s,吞吐下降9.4006%。
原宿主有其他agent并发;observe=0 只是计数关闭,allocator仍被包装;没有呈现、传输或输入时延端点。这些数值是限定成本观察,不能证明各层原因、性能验收通过或 WindTerm 等价。正确性通过也不能豁免成本。
当前并行阶段
本项可独立推进,结果是 #34 的输入。固定构建、原v1批次执行器、首次hosted不完整批次及两种宿主的CPU边界诊断已有各自来源证据;最新hosted六位置全部正确,但扣除完整子进程/runner后仍有3.333%–5.263%未归属余额,正式成本与性能验收未完成。接续需预先明确可支持的环境和计量方案,再完成受控完整A/B、allocator/projection及组件归因;原v1和全部失败不倒改,不反复重跑取绿。数值预算仍由用户确认,原12样本不升格为正式结论。
剩余交付与验收
- 先冻结负载/字节哈希、固定源码与两个构建身份、路由定义、chunk、计时起止/CPU口径、warmup/交错次序、重复数和统计方法,再开始优化;原12样本、原始identity与正确性结果只追加、不改写。
- 在受控空闲环境重复同口径A/B,明确计量/allocator包装开销,保留全部样本及失败;区分诊断、instrumented 和可支持的低开销端点。
- 用可检验的对照定位 segmentation、宽度、Cell保留、快照/投影或分配的成本;不能只凭总吞吐把开销归于某模块。
- 在受控观察基础上提交 project/interactive 回归预算提案、理由、环境、噪声和正确性 guard,由用户明确并记录确认后用于验收;与 WindTerm 等价的容差还须可靠原版基线支持。无法稳定复现时保留不确定性,不能倒改负载或门槛使现结果自动通过。
- 如需优化,给出同输入修前/修后、全部分块/控制边界与Unicode17/实际glyph/选择复制回归;无丢标量、错误宽度、旧状态或取消边界倒退。
- 将结果及保留/调整方案写入 [R2-11][架构] 提交核心、GUI/平台方案并取得用户确认 #34 的产品接口/线程/历史/呈现隔离决定,完整GUI/长期资源和未测端点继续分列。
不删除正确性工作、降低原语料要求、选择性丢弃慢样本,也不使用这组CPU吞吐值宣称整体产品或 WindTerm 性能等价。
数据来源
父项:#34。此子项阻塞 #34 对该流式文字路径的既有成本裁决;可独立开始受控诊断,不能视为完整产品已就绪。
已交付的准备与下一步
PR #59已合入,两条最终CI通过;交付预冻结合同和Rust编译期移除allocator包装的测量模式;默认计数路径保留。两模式Release实际构建,13项准备测试(含8次短sanity)及原measurement9项通过,双轴审查通过。首次CI工作流上下文错误及后续matrix修订分列留证。
这仍不是正式样本或数值预算:下一步是 .3/.4共同harness的两构建身份、受控空闲批次、扰动/归因和预先裁决的预算。本项保持开放。
独立组合成本诊断(不替代本项成本合同)
PR #77沿#53原八会话失败,在8ff源码上用两次UI插桩定位到resize后reconcile_replay反复序列化/查找行键;第二次parser feed63.987s、Rust feed0.560s、reconcile60.905s(嵌套wall,不相加)。204,800B headless同输入仅增加一次同尺寸resize即可复现高成本,六次最终状态哈希一致。原始全部样本、计时边界、源/EXE身份、共享宿主与扰动限制见机制、全部样本及复验。
一次同步内复用键后,加上独立关闭回复修正,最终eae4原八会话data-only两轮通过,后台完成26.268/27.312s;没有由这些不同配置/短样本计算产品提速、设容差或归因grapheme实现。固定同源码记录。本项原预冻结.3/.4低开销A/B、空闲环境、用户预算确认仍未完成,保持开放。
v1 固定核心与共同 harness 的实际构建准备
已在独立工作树、固定 harness源码 8a13782aaac03780617e177b56ec55d3cb9c79be 生成新计划,protocol SHA fb86f093a1c526979816574ef65896501eaeb9e9c34e7d9a6f2fdd5b61a8e7f6。仍使用原 v1 的 .3 65988f5f20f62294ff52fcac5b5b81e563f93f3b 和 .4 3d6d44d3b3e9a9a3e41da98e8711e9f19a211fd8;只覆盖共同 Cargo.toml/src/measure.rs,分别核对80/84个候选目录跟踪文件的前后SHA,原锁文件、src/main.rs、vendor均保持。
两份使用Rust1.92.0、Release、locked/offline、no-default-features、x86_64-pc-windows-msvc、独立target目录,各一次编译成功。保留完整命令、编译环境、构建日志、实际MSVC14.42.34433 linker路径及SHA、源码覆盖diff和二进制身份;实际 --identity 均报告allocator_wrapper_compiled=false。
- .3 EXE:523264B,SHA
33cb90beebffc57f07aa993b8ea635eaf461b49d86c143939a41f6242c087b6d。 - .4 EXE:579584B,SHA
d4d068be44a0a9ec733ad17f0323765ee38ffbf775e6efacb4632c1dce6b3f01。
每份project/interactive、4096B块、observe=0、0.1秒CPU下限的短正确性检查各一次,共4/4;状态摘要分别匹配原.3/.4合同。这是构建及sanity,不是正式样本,也没有据此计算性能结论。完整私有记录保存在该任务的local/r54-batch。以上构建准备阶段的正式样本数为0;后续执行器与实际环境预检见下节。原12样本、v1负载/样本顺序和预算确认条件保持不变。
冻结批次执行器与实际宿主预检
PR #104(Draft) 已提交执行器、构建/环境绑定和逐组配对统计;发布树与双轴审查树一致。它核对两份源目录、原计划/覆盖差异/构建日志及 EXE,实际检查 --identity,再按原种子各112位置运行;原始 stdout/stderr 字节保留,首错停止,不重试、不补样、不覆盖。
相关 measurement CTest 当前26/26;包括112次真实合成子进程顺序、配对中位数反例、超时/无效编码保留和失败入口。首次候选Windows/Linux CI暴露纯统计模块顶层导入psutil的错误,已保留原日志,并用Python -S反例将依赖限制到实际采样入口;无第三方包的相关入口4/4通过。审查发现的失败前身份、非UTF-8 JSON与中断临时文件问题均已用反例修正,Standards/Spec 最终均无剩余发现。合成时长不属于成本样本。
首次实际共享宿主预检保留十个约1秒区间,busy CPU为11.15%–32.88%,超过预声明的5%环境诊断护栏,因此成本负载未启动,正式样本仍为0。未重复预检取绿,也未改写原件。5%仅为环境活动筛选,不是用户批准的回归容差;该观测也不能证明虚拟机物理宿主独占。旧预检的执行器身份缺口与后续修订分别记录,不将旧运行算作修订版验证。详情见固定脱敏记录和执行合同。
独立Windows环境的后续实际执行及未完成事项见下节;同一核心的allocator/projection扰动与分层归因仍待完成。数值预算仍须用户明确确认,performance_gate=not_evaluated。PR保持Draft。修订 a7b9685 的默认PR回归(Windows46/46、Linux29/29)、默认push及两条候选CI全部成功,四条均为attempt 1;实际PR检出树与审核树一致。首次候选依赖失败仍保留,没有重跑覆盖。本项、#34和R2均未完成。
独立 hosted 批次:首错停止,未形成完整成本结果
Draft PR #105 已交付真实 hosted 构建/执行及完整可复查记录。首次 run 40490861301 来自 f734d29bc4f8a120eac59da3acac3169d49231b2、attempt1、真实 windows-2025,与原共享工作站的0样本预检分列。
- 固定 .3/.4 的两次独立构建、来源审计与4次短正确性全部通过;Rust1.92.0、MSVC x64、Release、locked/offline、no-default-features及原harness覆盖保持。两份EXE哈希、实际linker、80/84文件前后记录均在归档。
- 十个空闲区间busy为1.154%–3.125%,通过预检。第一批执行24位置:24次输出正确、退出0,23条记录有效;sequence23(candidate/interactive/chunk1)因未归属CPU活动估计5.410447761%超过原5%护栏而停止。第二批未启动,完整批次为0,没有配对成本摘要。
- 停止位置为全机busy2.484375s减内层测量CPU2.03125s,余额0.453125s占全机总CPU区间8.375s的5.410%。余额包含自身准备/oracle/启动及runner工作,不能归因到特定后台进程;临时VM逐进程身份未导出,不能追溯补造原因。
- 原提供者ZIP(165170B、SHA
6a2713dd96d86ce66e2462a142d46b72e915ccc4cfd45bd3b42c5e7486c3cef5)保持local。产物复审发现两份构建日志各10处8.3短profile前缀;公开副本(164608B、SHA9ade502f03419f55295b4e9f4df9dc136c5c4d50ace02d41417fea1de6952917)仅补做前缀替换及清单更新,记录转换前后哈希。130份清单证据和56份成本/sanity原字节流已核对,测量数据未改。 - 导出器短路径、大小写及转义覆盖已修正;相关本地measurement32/32(15.152s)、实际Windows别名查询和归档复核通过,最终Standards/Spec均0项剩余发现。原测量提交四条普通CI全部success、attempt1(默认Windows46/46、Linux29/29;候选measurement Windows40/40,Linux39通过/1个Windows专属跳过)。
- 最终修订
ed0c12597d3b80a8806b2c6c24032cffaacf0945的四条普通 CI 全部 success、attempt 1:默认 PR、默认 push均为 Windows 46/46、Linux 29/29;候选 PR、候选 push的 measurement 均为 Windows 41/41、Linux 40 通过/1 个 Windows 专属跳过。PR 实际检出5ec37648a5655923e3a3ad3cc58ab7770c5ba044,树与最终审查树168114e4943dc62a17b4618abaa97d4af6655c15一致;这些普通回归与失败成本作业分列。成本作业的分支创建限制已实际生效:后续修订对应run 40493726419为skipped,没有自动替代样本。这个跳过不是成本通过,首次失败仍保留。
下一项在新身份下预声明有界诊断,观测整个测量子进程及runner的CPU,区分自身区间外工作和外部guest活动;不重试旧批次、不放宽原5%护栏,也不把此前缀用于吞吐回归结论。完整受控批次、allocator/projection及组件归因、预算提案和用户确认仍未完成,performance_gate=not_evaluated。#54、#34与R2保持未完成;产品选型和数值容差均不改变。
CPU 计量边界诊断:预声明及固定结果
以 PR #105 的 ed0c12597d3b80a8806b2c6c24032cffaacf0945 为基点,独立实现直接子进程全生命期CPU及runner同区间CPU记录。先在明确声明的共享Windows宿主使用已审计原构建,固定一次六位置 .3,.4,.4,.3,.3,.4,只运行 interactive/chunk1/observe0/原2秒内部区间;来源和原正确性校验不变。它不运行原空闲资格预检,不计算成本比,不是原112位置批次的补样或重试。
分别观察自身区间外CPU、runner CPU与剩余全机余额;余额保留正负,仍可能含guest活动、计数粒度和非原子端点,不声称已知旧hosted失败原因。单次90秒/清理5秒,来源、输出或计数失败立即停止;全部原件保留,不重跑取绿。原v1/5%诊断护栏、首次失败及用户预算确认条件保持。
Draft PR #106 已交付此边界记录及实际固定结果。共享Windows11 build26200/UBR9711、i7-9700/8逻辑CPU、Python3.12.10/psutil7.2.2;原两份本机构建和6个执行源码文件哈希已前后核对,实测本地源码 ff0d7caca138b91683f16ce8d748eea6fbb289b7。一次六位置全部退出0、输出正确,没有重建、重跑或补样。
自身区间外CPU为0.078125–0.109375s,runner为0–0.015625s;完整扣除后仍有34.578%–50.974%的全机CPU余额。此结果证明该共享宿主上的计量分量可分开记录,不能据此解释旧hosted事件、声称空闲,或计算成本回归。本诊断未增加正式成本验收样本。
归档100053B、SHA 9bec0731e08d7f2ef99d140a9e56acbc01468814cc68fb01fbdcfe30eaa8e10c;46份清单证据与16份原始流已逐项审核,路径别名/子PID移除分列原始与公开哈希。相关本地measurement最终36/36(17.069s),原字节/完整oracle/所有CPU分量独立复核通过;Standards/Spec最终均0项剩余发现,测试适用条件修正不改变实测代码。初次发布 c76bab0281843fca298af8b0d9ba521247ac745a 的默认PR/push均通过(Windows46/46、Linux29/29),两条候选Windows CI因未安装psutil而失败;候选Linux为41通过/4跳过,原日志全部保留。已补装仓库现有固定依赖,干净Python环境同错误可复现,安装后新测试4/4、完整measurement36/36(19.266s)通过;代码/文档修订经Standards/Spec再次复核均0项发现。修订 beeb64496b2e2898e8619fa5e9c39f490a3891c4 的四条普通CI全部 success、attempt 1:默认PR、默认push均为 Windows46/46、Linux29/29;候选PR、候选push的measurement均为 Windows45/45、Linux41通过/4个明确平台跳过。PR实际检出 371eb22de6a8327242687a1a71acbd09416b5ed5,树与最终审查树相同。发布树 0c177e8d6094c31ad3151a5055ef91e08bd841fb 与审查树相同;未重跑六位置诊断或原#54成本批次。
下一项在独立hosted环境另行预声明相同边界诊断,不能重跑此共享宿主取绿或把余额改为产品容差。完整受控A/B、allocator/projection和组件归因、预算提案及用户确认仍未完成。
预声明:独立 hosted CPU 分量诊断
以 PR #106 的 beeb64496b2e2898e8619fa5e9c39f490a3891c4 为基点,在新分支 perf/grapheme-cpu-hosted-r54 创建push时仅执行一次、attempt1。新windows-2025 VM先完成固定Python3.12/psutil7.2.2/Rust1.92.0、合同测试、原.3/.4两次来源构建及4次sanity,再执行原六位置 .3,.4,.4,.3,.3,.4 interactive/chunk1/observe0/2秒诊断。构建身份重新记录,不借用上次EXE;源/输出/退出/计数任一失败即停止,不补样,90秒/清理5秒保持。
只回答此新guest的内层/完整子进程/runner/全机分量,不做空闲资格筛选、吞吐比或成本验收。原v1两批各112位置、5%护栏、首次失败和预算确认要求不变。代码或证据修订不自动重跑;raw schema/run/attempt/source先核对,再导出固定白名单、字节不变的流及路径/PID脱敏元数据。下载实际产物后独立核对全部身份、oracle和CPU等式再记录结论,旧hosted原因仍不能事后补造。
首次新hosted作业 40509157581,源码eed0ab7bae5fcc5d05a25cea5161dabc4f935878、attempt1,在发布测试夹具的路径边界比较处停止;31项准备测试中1项错误,构建/诊断/导出均跳过,实际测量0。夹具根路径未规范化,被测发布器则将输入路径resolve后比较;旧job未记录临时目录的实际路径形式。已保留原job122206160085日志;本地真实8.3别名反例复现该缺陷,原比较false、规范化后true,但不据此断言旧hosted使用了哪种路径形式。修正未放宽生产发布边界。
下一次执行预先限定为perf/grapheme-cpu-hosted-r54-setup2的新创建push、attempt1;修正后的同一审查source通过独立执行分支启动,原run不重跑。固定构建及六位置、全部oracle/计量/停止规则不变,后续修订push不重测;这不替换任何原样本。执行前审查和相关回归,执行后核对新run/source与全部产物。
修订 source c14adb9a7fa446476ad5c95c1f8c1b139ceb5ac4,tree d6564d1a7de5044e43b480b8afffcebac13dc5df 与本地审查树相同;40/40 measurement(19.436s),Standards/Spec均0项剩余发现。首次四条普通CI的Windows均因同一夹具边界测试失败,Linux均通过,原失败保留。下一执行分支将在此同一source创建;实际结果未产生。Draft PR #107。
setup2 分支已于2026-10-27 13:22:55 UTC在上述 c14adb9a 创建。提供者运行列表只出现无路径过滤的默认回归 40511533857,未出现该分支CPU或候选工作流;实际诊断观察仍为0。原实验分支同源码更新的CPU 40511437233 为skipped。GitHub路径过滤规则依赖push差异、空差异不触发工作流;该解释与已发布commit上创建新分支及两个过滤workflow均缺席相符,事件实际文件列表未留存。
为使预声明入口不依赖push路径差异,本CPU工作流移除paths过滤,仍仅允许明确白名单分支的创建push、attempt1。预声明下一执行入口为perf/grapheme-cpu-hosted-r54-entry3,在审查后的新source创建;不删除重建旧分支、不重跑旧run,原构建/六位置/oracle/计量/停止规则及成本v1均保持。入口修订本地相关4/4(0.297s);Standards/Spec复核后发布。前三次入口状态分别保留,不以默认CI代替诊断结果。
entry3审查最终Standards/Spec均0项发现;发布 source 4772f4f937c4f0f220be1630592f84bed3a591c8、tree 86e2342d16acd101fe182793d20aef3f1f017633 与审查树相同。将此新source首次挂到预声明entry3分支,然后更新Draft #107分支;实际诊断结果仍待提供者作业与产物核验。
新 hosted CPU 六位置:实际结果与归档复核
Draft PR #107 已发布完整证据。实测source 4772f4f937c4f0f220be1630592f84bed3a591c8,run 40512310499、job122217071656、attempt1;实际映像 windows-2025-vs2026/20261021.278.1,Windows Server2025 build26100/UBR33650、AMD EPYC7763、guest4逻辑CPU、Python3.12.10/psutil7.2.2、Rust1.92.0/MSVC14.51.36231。新.3/.4构建、80/84来源与4次sanity通过,原六位置全部输出正确/退出0,无重跑或补样。
自身区间外CPU0.0625–0.09375s、runner0–0.015625s;完整扣除后的全机余额0.28125–0.5s,占总CPU区间3.333%–5.263%。第0位置扣除后仍超过原5%护栏的数值;本诊断不应用它判通过,也不将余额归为某个外部进程、解释旧hosted第24位置或生成吞吐比。此次正式成本验收样本0,performance_gate=not_evaluated。
提供者产物12738430576与公开ZIP逐字节相同:123388B、SHA 263a3bf8e229b89f1e443b12e522daf69d30de403affa0dc49fe674c0dd8f241。75文件/74清单/24原始流、4sanity+6完整oracle、全部CPU等式和168份来源SHA独立核验通过;换行转换按准确LF→CRLF全量SHA核对,不修改原件。Standards/Spec最终均0项发现,FEATURES/EVIDENCE已同步。
实测source的六条普通CI(PR默认/候选、原分支push默认/候选、entry3push默认/候选)均success、attempt1:默认Windows46/46、Linux29/29;候选measurement Windows49/49、Linux45通过/4个平台跳过。首次准备失败、setup2无诊断作业及各原失败均保留。归档修订 f871fd99ec5bc1027d1e7ccfcdd5860d57b0f12f 的发布树 03b986f952ed7c0182e19b4ba05153a7d4517de8 与审查树一致;四条普通CI全部success、attempt1:默认PR、默认push、候选PR、候选push。默认Windows46/46、Linux29/29;候选measurement Windows49/49、Linux45通过/4个平台跳过。PR实际检出685c4a41890cd1719f68ad2307822d4b379c5904,树与审查树一致。更新push的CPU 40514720994 为skipped,未自动新增观察。#54、#34及R2保持开放。
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsDone
Activity
[-][R2][性能] 定位流式 grapheme 吞吐成本并冻结受控预算[/-][+][R2][性能] 定位字素吞吐成本并提交预算供用户确认[/+]fix: isolate host sampler dependency from pure cost statistics (#54)
fix: preserve reviewed hosted evidence and redact short Windows paths (…
ci: install pinned CPU observer for candidate contracts (#54)
fix: canonicalize hosted fixtures and declare isolated setup-correcte…
docs: retain audited hosted CPU observations and all entry outcomes (#54
JavaZeroo commentedon Oct 28, 2026
独立子项 #152 已发布 Draft PR154:自主C++ recovery/24×80/history100 的同源包装/无本工具包装双构建准备,保留旧strict/v2/calibration与历史Alacritty样本身份。实际Release构建/对象符号/归一命令及一次38进程短正确性、相关14项回归通过;执行源7721985、发布58fee28。正式性能样本0,不作Qt/ConPTY整体、WindTerm等价或数值预算结论;raw留local,旧.3/.4批次未重启。等待两轴与CI,PR未合入,#152/#54/#34均保持开放。
JavaZeroo commentedon Oct 28, 2026
#152/PR154已以7e896cb75283fd0d984c936500ba8d1de4ceaf46合入main并仅按recovery同源包装/无包装计量准备关闭。38个准备进程、独立对象/命令/身份/正确性通过,正式性能样本仍0;旧strict/v2/校准及旧候选所有数据不变。PR全回归和Qt/参考通过,push/default三旧/独立回归#144/#156/#73仍保留未解决、未重跑。后续低开销正式采样/原版对标/分层端点与数值预算另行冻结,#54/#34/R2保持开放。
Merge pull request #273 from JavaZeroo/docs/perf-budget
JavaZeroo commentedon Oct 31, 2026
处置:采用回归型预算(决策 3C)
新增
docs/research/r2-performance-budget.md:受监控项初始集合:启动 p50/p95、字素吞吐、repaint 批量与消费耗时、
resource_settle_ms。为什么不是绝对值
边界
JavaZeroo commentedon Oct 31, 2026
按决策 3C 关闭:回归型预算规则已写入 docs/research/r2-performance-budget.md(PR #273 已合入)。不设绝对性能目标,不与 WindTerm 做性能等同声明。