diff --git a/docs/EVIDENCE.md b/docs/EVIDENCE.md index 41563c45..43322715 100644 --- a/docs/EVIDENCE.md +++ b/docs/EVIDENCE.md @@ -22,7 +22,7 @@ | 自主 C++ + Qt Widgets + 固定微软 ConPTY 正式目标 | [ADR-0007](adr/0007-bundled-microsoft-conpty.md) / [ADR-0008](adr/0008-cpp-core-qt-widgets.md) 记录用户确认;新组合的实现与验证另行留证,不引用旧默认或 Alacritty 通过结果代替 | | 既有默认/Alpha:自主 C++ + 系统 ConPTY + Win32 | R1 限定总验收和有限 VT/Unicode 子集;与当前 Qt/固定后端目标组合分列 | | Alacritty 历史参考:`termforge.4` + 系统 ConPTY | [固定来源/补丁台账](../experiments/candidates/alacritty/PROVENANCE.md)、[适配边界](../experiments/core/CANDIDATE.md)、[#39 字素合同](research/streaming-graphemes.md);结果仅证明其固定配置,不转为自主 C++ 能力 | -| PR #50 历史联合基线:`termforge.4` + 固定官方 ConPTY | [Draft PR](https://github.com/JavaZeroo/termforge/pull/50) / [#47](https://github.com/JavaZeroo/termforge/issues/47);[联合基线](research/joint-conpty-baseline.md)已固定,产品回归未全绿;该基线当时的 resize/工作区失败由 #51/#63 后续在原实验分支限定闭合,#52 GUI Vim 及新组合完整验收仍未完成。[#53 的未完成粘贴、负例及原八会话证据](https://github.com/JavaZeroo/termforge/blob/848cb0e621a291f732cc0e046d0b2fab6a77d962/docs/research/resize-replay-cost.md)已按限定合同整合到实验父分支;不包含同次真实 CF/IME 或完整官方矩阵验收 | +| PR #50 历史联合基线:`termforge.4` + 固定官方 ConPTY | [PR #50(已关闭)](https://github.com/JavaZeroo/termforge/pull/50) / [#47](https://github.com/JavaZeroo/termforge/issues/47);[联合基线](research/joint-conpty-baseline.md)已固定,产品回归未全绿;该基线当时的 resize/工作区失败由 #51/#63 后续在原实验分支限定闭合,#52 GUI Vim 及新组合完整验收仍未完成。[#53 的未完成粘贴、负例及原八会话证据](https://github.com/JavaZeroo/termforge/blob/848cb0e621a291f732cc0e046d0b2fab6a77d962/docs/research/resize-replay-cost.md)已按限定合同整合到实验父分支;不包含同次真实 CF/IME 或完整官方矩阵验收 | R1 固定总出口的源码为 `ce9b24d`,早期 `2dc8d6d` / `9b16acc` 仍分别只代表原记录。源 VT、原生控制台 CHAR_INFO、transport、末端状态、自有 DIB、绘制提交和真实呈现是不同检查点;未知端点保持未知。 @@ -73,7 +73,7 @@ R1 固定总出口的源码为 `ce9b24d`,早期 `2dc8d6d` / `9b16acc` 仍分 | Node 纯夹具在 CI 的耗时分布(#144 未闭) | [固定结果](research/ui/results/2026-10-29-node-contract-timing/README.md)、[验证身份](research/ui/results/2026-10-29-node-contract-timing/validation.json) | hosted windows-2025、Node v22.23.4:顺序 60 次 + 20×4 并发共 140 次、0 超时;warm ~63–78ms、冷启动 1.469s、并发最大 0.125s。10s 预算余量充足,两次 10s 失败不能用夹具成本解释;宿主停顿假设未复现,#144/#38 不关闭。 | | 原版 1049 阶段颜色(屏幕捕获,#126/#123 补充) | [固定结果](research/ui/results/2026-10-29-session-1049-palette/README.md)、[验证身份](research/ui/results/2026-10-29-session-1049-palette/validation.json) | 合成会话 + 原生 SGR 色块 + 屏幕捕获:默认背景 #1C1C1C、反显前景 #E3E3DD、红 #C4265E、蓝 #3465A4、绿 #86B42B;主屏/alt/重进 alt/回主屏四阶段颜色完全一致(裁切 SHA 分列,阶段确有推进);另有两组属性语义:进入前设 31;44 并保持时 M/A/R 三阶段同为 #3465A4/#C4265E;备用屏内改 32;45 再退出时 M2 回到默认(#1C1C1C/#E3E3DD),即 1049h 保存、1049l 恢复进入时刻属性。是屏幕捕获而非 #126 要求的应用内 QImage 采集;不关闭 #126/#123。 | | 原版合成会话的 UIA 可见性(#155 辅助) | [固定记录](research/windterm-synthetic-session-uia.md) | 隔离 VM 上确认:profile 被读取、组名进入主窗口与新建会话对话框,但**会话叶不在 UIA 树**(raw_children=0、无展开/选择模式);参数与累积状态均已排除;未发现命令行开会话入口。菜单与新建会话对话框可枚举/可写,但没有命令行字段。结论:UIA 不能作为驱动原版合成会话的前提。 | -| 每屏 margin 的原生 gap:路径结论(#56) | [决策记录](research/conpty-margin-path-decision.md)、[合同与四阶段 oracle](research/conpty-native-margin-path.md)、[fork 构建/运行](https://github.com/JavaZeroo/termforge/pull/98) | 固定上游源码根因(共享 _scrollMargins)、hash 与 20 次同源运行(baseline red→patched 四阶段绿、412/412 adapter、17/17 回归)已固定;结论是“推荐 MIT fork,采纳需用户在 #34 确认”。不改变 ADR-0007 现状、#41 开放状态与产品后端。 | +| 每屏 margin 的原生 gap:路径结论(#56) | [决策记录](research/conpty-margin-path-decision.md)、[合同与四阶段 oracle](research/conpty-native-margin-path.md)、[fork 构建/运行(原 PR #98,已关闭)](https://github.com/JavaZeroo/termforge/pull/98) | 固定上游源码根因(共享 _scrollMargins)、hash 与 20 次同源运行(baseline red→patched 四阶段绿、412/412 adapter、17/17 回归)已固定;结论是“推荐 MIT fork,采纳需用户在 #34 确认”。不改变 ADR-0007 现状、#41 开放状态与产品后端。 | | 保留历史的内存与单次 Search 成本(#164 剩余项) | [固定结果](../experiments/core/results/2026-10-29-history-memory/README.md)、[验证身份](../experiments/core/results/2026-10-29-history-memory/validation.json) | 生产 `Screen`/`TextSearch` 在 H=100/1000/10000、各 3 个新进程样本:每行私有增量收敛 ~5.8–6.9 KB,H=10000 私有提交 ~59 MB;整文档 Search ~54 ms/199 步。不是 r164 fork 对照,也不是性能预算;不关闭 #164。 | | 结构重排下的增量 Search(#169 延期项 / #27 前置) | [固定结果](../experiments/core/results/2026-10-29-search-reorder/README.md)、[验证身份](../experiments/core/results/2026-10-29-search-reorder/validation.json) | `TextSearch` 以文档 rank 维护扫描前缀:order revision 检测、局部 `repair_order`、rank 化 `rewind`/`match`/`prune`。新 `search_reorder_core` 覆盖扫描中重排、重排后导航、淘汰与有序回归;核心 10/10。无 UI/Find 集成、无重排成本测量,不声明 #27/R2 通过。 | | 默认核心缩小与重绘交错(#156) | [固定四-case机制诊断](../experiments/shell/results/2026-10-29-resize-repaint-witness/README.md)、[脱敏验证](../experiments/shell/results/2026-10-29-resize-repaint-witness/validation.json) | A/C保留2499B,B/D在第五段重绘首次失效且行分配路径不同;只见证机制,原CI切点/根因未知,未修生产。witness结束后Job仍active1,发起一次终止后归零;成员身份/逐句柄退出未知,不称全树自然退出。 | diff --git a/docs/research/conpty-margin-path-decision.md b/docs/research/conpty-margin-path-decision.md index 522c69fb..41032153 100644 --- a/docs/research/conpty-margin-path-decision.md +++ b/docs/research/conpty-margin-path-decision.md @@ -23,7 +23,7 @@ | 路径 | 现有证据 | 结论 | |---|---|---| | 上游修复后固定正式包 | 已固定根因;官方包 native 仍红 | 长期首选;需把 oracle/最小补丁送上游,接纳与发布未知 | -| 小型 MIT fork(固定 1.25 + 单 margin 补丁) | [构建入口](https://github.com/JavaZeroo/termforge/pull/96):baseline focused 1 fail、patched focused 1/1、full adapter 412/412 零 skip;[同源原生/末端对照](https://github.com/JavaZeroo/termforge/pull/98):8 次 VT-on/off × 两尺寸,patched 四阶段原生全绿、transport 末端正确、自然 37/EOF109/Job0;[控制场景补充](https://github.com/JavaZeroo/termforge/pull/100):12 次(main-only / default-alt / repeat-alt × 两尺寸 × 两版),baseline 的错误精确落在预期阶段,patched 全部阶段文字/完整格属性/光标/viewport 正确 | **唯一已有“同输入 red→green”的路径**;仍是候选,未接入产品 | +| 小型 MIT fork(固定 1.25 + 单 margin 补丁) | [构建入口(原 PR #96,已关闭)](https://github.com/JavaZeroo/termforge/pull/96):baseline focused 1 fail、patched focused 1/1、full adapter 412/412 零 skip;[同源原生/末端对照(原 PR #98,已关闭)](https://github.com/JavaZeroo/termforge/pull/98):8 次 VT-on/off × 两尺寸,patched 四阶段原生全绿、transport 末端正确、自然 37/EOF109/Job0;[控制场景补充(原 PR #100,已关闭)](https://github.com/JavaZeroo/termforge/pull/100):12 次(main-only / default-alt / repeat-alt × 两尺寸 × 两版),baseline 的错误精确落在预期阶段,patched 全部阶段文字/完整格属性/光标/viewport 正确 | **唯一已有“同输入 red→green”的路径**;仍是候选,未接入产品 | | 关闭 ENABLE_VIRTUAL_TERMINAL_PROCESSING 当 raw 后端 | 80×24 末端表面正确,但原生格已把 ESC 当字面内容,12×7 丢 BOTTOM_FIXED | 拒绝 | | 旧 passthrough flag | 第一方已删除;当前头文件 0x08 是字素宽度策略 | 拒绝 | | 换另一 console server / 桥接层 | 无同输入原生+末端证据,维护面远大于局部状态修正 | 不采纳;如要调查需另立证据项 | diff --git a/docs/research/sender-fence.md b/docs/research/sender-fence.md index f48f492b..29fdf29b 100644 --- a/docs/research/sender-fence.md +++ b/docs/research/sender-fence.md @@ -1,6 +1,6 @@ # 实际输入 worker 的持块合同与 sender fence -本合同对应 [#62](https://github.com/JavaZeroo/termforge/issues/62),为 [#53](https://github.com/JavaZeroo/termforge/issues/53)提供可复用的协调机制。**实现属于 `fix/conpty-backend-r47` / [Draft #50](https://github.com/JavaZeroo/termforge/pull/50) 的实验整合,尚未进入 main。** 固定运行源码为 `519a3f37d52983062cd99b7efd805f183961fa4d`;完整 source/tree/blob、实际 EXE、官方后端文件对、原始日志 SHA 和逐字段结果见[验证记录](../../experiments/shell/results/2026-10-26-sender-fence/validation.json)。这是实际 `InputQueue` / `PasteTransfer` / ConPTY worker 的限定验证,不是 UI、VT 或操作系统背压验收。 +本合同对应 [#62](https://github.com/JavaZeroo/termforge/issues/62),为 [#53](https://github.com/JavaZeroo/termforge/issues/53)提供可复用的协调机制。**实现属于 `fix/conpty-backend-r47` / [原 Draft PR #50(已关闭)](https://github.com/JavaZeroo/termforge/pull/50) 的实验整合,尚未进入 main。** 固定运行源码为 `519a3f37d52983062cd99b7efd805f183961fa4d`;完整 source/tree/blob、实际 EXE、官方后端文件对、原始日志 SHA 和逐字段结果见[验证记录](../../experiments/shell/results/2026-10-26-sender-fence/validation.json)。这是实际 `InputQueue` / `PasteTransfer` / ConPTY worker 的限定验证,不是 UI、VT 或操作系统背压验收。 ## 修正的夹具假设