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
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@
*.py text eol=lf
*.ps1 text eol=crlf
experiments/core/fixtures/*.bin binary
# Preserve upstream license bytes and unified-diff context prefixes.
research/msys-runtime-window-prefix/CYGWIN_LICENSE whitespace=-blank-at-eol,-blank-at-eof
research/msys-runtime-window-prefix/window-prefix.patch whitespace=-blank-at-eol,-space-before-tab
3 changes: 2 additions & 1 deletion docs/EVIDENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
|---|---|
| main 默认:自研核心 + 系统 ConPTY | R1 限定总验收和有限 VT/Unicode 子集;默认构建不需要 Rust |
| main 显式候选:`termforge.4` + 系统 ConPTY | [固定来源/补丁台账](../experiments/candidates/alacritty/PROVENANCE.md)、[适配边界](../experiments/core/CANDIDATE.md)、[#39 字素合同](research/streaming-graphemes.md);仅按已有合同验收 |
| PR #50 实验:`termforge.5` + 固定官方 ConPTY | [Draft PR](https://github.com/JavaZeroo/termforge/pull/50) / [#47](https://github.com/JavaZeroo/termforge/issues/47);旧`.4`的[联合基线](research/joint-conpty-baseline.md)保留。#51/#53/#87/#88各自限定交付见下表;最新完整官方56/57,#52仍失败,MSYS输入边界仅为诊断;#63已复现工作区路径的因果核验及完整shell通过见下表;更早缺运输样本保留未知。当前能力以[FEATURES](FEATURES.md)为准 |
| PR #50 实验:`termforge.5` + 固定官方 ConPTY | [Draft PR](https://github.com/JavaZeroo/termforge/pull/50) / [#47](https://github.com/JavaZeroo/termforge/issues/47);旧`.4`的[联合基线](research/joint-conpty-baseline.md)保留。#51/#53/#87/#88各自限定交付见下表;最新完整官方56/57,#52原固定运行库仍失败,MSYS输入边界与隔离运行库修补结果分列;#63已复现工作区路径的因果核验及完整shell通过见下表;更早缺运输样本保留未知。当前能力以[FEATURES](FEATURES.md)为准 |

R1 固定总出口的源码为 `ce9b24d`,早期 `2dc8d6d` / `9b16acc` 仍分别只代表原记录。源 VT、原生控制台 CHAR_INFO、transport、末端状态、自有 DIB、绘制提交和真实呈现是不同检查点;未知端点保持未知。

Expand Down Expand Up @@ -57,6 +57,7 @@ R1 固定总出口的源码为 `ce9b24d`,早期 `2dc8d6d` / `9b16acc` 仍分
| Native Vim 捕获目录隔离 | [原因与复验](research/vim-fixture-isolation.md)、[固定原件审计](../experiments/conpty/results/2026-10-26-vim-fixture-isolation/validation.json) | 实验分支同旧 EXE 的兄弟运行一绿一红;修正新目录隔离后完整模块9/9。仅闭合 #52 native 夹具原因;GUI stage59 仍开放,未知与受扰动探针分列。 |
| 工作区尺寸标记残尾(#63) | [原因与复验](research/workspace-native-viewport.md)、[单变量/原生/回放及无插桩验收](../experiments/shell/results/2026-10-27-workspace-native-viewport/validation.json) | 旧原三轮UI/main第三轮各红;同EXE仅切策略分别原红/绿,原生尺寸和标记正确、底部核心残尾。现有#51修复覆盖;无插桩原三轮各重复两批、完整shell37通过/3原skip、93.62秒,#52和完整R2仍未验收。 |
| GUI Vim/MSYS 输入边界(#52) | [运行时边界与限制](research/vim-msys-input-boundary.md)、[白名单事件与身份](../experiments/shell/results/2026-10-27-vim-msys-input/validation.json) | 两轮API级原失败、一轮诊断绿及一轮函数边界原失败:完整93 B到达原生输入,红例MSYS仅交付92 B;resize旧快照清理取走Ctrl-O的调用顺序已捕获。无截断、Job0/desktopgone;未修产品、未替换固定应用,#52继续开放。 |
| GUI Vim/MSYS 隔离运行库补丁(#52) | [实验与限制](research/vim-msys-runtime-prototype.md)、[许可与补丁](../research/msys-runtime-window-prefix/README.md)、[七轮白名单记录](../experiments/shell/results/2026-10-27-vim-msys-runtime-prototype/validation.json) | 原 DLL 两轮一绿一 stage59,未修重建 DLL 首轮 stage59;只调整 resize 前缀消费的重建 DLL 两批共四轮原方法通过,七轮均完整回收。无新 API/加载模块轨迹,未验证鼠标/实际 longjmp 或完整 CTest;正式固定运行库验收、兼容策略及 #52 保持开放。 |
| 原生 viewport resize 与默认策略隔离(#51) | [原因与复现](research/native-viewport-resize.md)、[固定验证及六组合成原件](../experiments/conpty/results/2026-10-27-native-viewport-resize/validation.json) | 原 `.4` GUI stage43 与独立 native/replay 红;`.5` 原 resize/Unicode、历史/空格复制、六组 native 对照通过。默认策略填充误判经实际红绿修复;最终完整回归 54/56、12 项内部 skip,#52/#88 及此前 #87 的失败独立保留,不计完整后端或 WindTerm 等价。 |
| 窄列命令回显与恢复完成(#88) | [独立判据合同](research/workspace-restore-transport-oracle.md)、[原件哈希/红绿/正式两轮验证](../experiments/shell/results/2026-10-27-workspace-echo-cr/validation.json) | 原 262 B cmd 运输中的回显裸 CR 使完成判据提前拒绝;修正仅使该记录保持不可信至真实 LF。原两轮保存/普通恢复/钳制及完整 shell 通过;官方完整回归 55/56、8 项内部 skip,#52 当时仍红,#63/#87 旧因未闭合(#87 后续见下一行)。构建重叠结果明确排除。 |
| 替换会话完整记录检查点(#87) | [机制、因果与边界](research/workflow-record-checkpoint.md)、[固定源码及原两轮验证](../experiments/shell/results/2026-10-27-workflow-record-checkpoint/validation.json) | 旧判据在真实消费半行时采样而红,同 session 后续字节补齐;被动等待方案因输出结束而红。默认关闭的有界 LF 检查点受控通过,最终 c662011 两轮原八会话及关闭 guard 通过;完整官方 56/57、8 项内部 skip,Vim59 仍红。历史两份 native 后续缺口、诊断 trace 截断及未复现分别保留。 |
Expand Down
4 changes: 2 additions & 2 deletions docs/FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
|---|---|---|
| 默认 main:自研核心 + 系统 ConPTY | 默认构建与已发布 Alpha 的基础路线,不需要 Rust | 已有 R1 限定验收;VT/Unicode 能力仍为有限子集,不能引用候选核心的字素或 TUI 结果 |
| 显式候选 main:`termforge.4` + 系统 ConPTY | `TERMFORGE_BUILD_CANDIDATE_ADAPTER=ON`;按 [ADR-0003](adr/0003-core-reference-and-reuse.md)保留为可评估实验,正式核心选型待用户确认 | [固定来源](../experiments/candidates/alacritty/PROVENANCE.md)、[适配边界](../experiments/core/CANDIDATE.md)与 [#39 字素合同](research/streaming-graphemes.md);候选正确性通过不关闭系统 ConPTY 或 R2 父项 |
| 实验分支:`termforge.5` + 固定官方 ConPTY | [PR #50(Draft)](https://github.com/JavaZeroo/termforge/pull/50),`.4` 联合源码 `3e5b96d` 的[真实基线](research/joint-conpty-baseline.md)保留,尚未合并 main 或通过产品整体验收 | [#51 原生 viewport 修复](research/native-viewport-resize.md)的原 resize/Unicode 及原生样本、[#88 回显完成判据](research/workspace-restore-transport-oracle.md)的原保存/恢复/钳制分别通过;[#87 完整记录检查点](research/workflow-record-checkpoint.md)有受控旧红/新绿及最终同源码两轮原八会话 data-only。最新官方完整回归 56/57、8 项内部 skip,[Vim #52](https://github.com/JavaZeroo/termforge/issues/52)仍红,[MSYS输入边界](research/vim-msys-input-boundary.md)已定位捕获样本的Ctrl-O丢失位置但未修复,[#63 工作区残尾](research/workspace-native-viewport.md)已由同EXE单变量与运输回放确认现有viewport修复覆盖,原UI/主区三轮重复两批及完整shell通过;更早缺运输样本保留未知。[#53 UI fence](research/ui-paste-fence.md)与[行键复用/关闭回复](research/resize-replay-cost.md)、[#62 worker 夹具](research/sender-fence.md)各自限定通过。终端 margin 与原生状态分列,#47 及完整后端仍开放;旧失败和历史运输缺口保留 |
| 实验分支:`termforge.5` + 固定官方 ConPTY | [PR #50(Draft)](https://github.com/JavaZeroo/termforge/pull/50),`.4` 联合源码 `3e5b96d` 的[真实基线](research/joint-conpty-baseline.md)保留,尚未合并 main 或通过产品整体验收 | [#51 原生 viewport 修复](research/native-viewport-resize.md)的原 resize/Unicode 及原生样本、[#88 回显完成判据](research/workspace-restore-transport-oracle.md)的原保存/恢复/钳制分别通过;[#87 完整记录检查点](research/workflow-record-checkpoint.md)有受控旧红/新绿及最终同源码两轮原八会话 data-only。最新官方完整回归 56/57、8 项内部 skip,[Vim #52](https://github.com/JavaZeroo/termforge/issues/52)仍红,[MSYS输入边界](research/vim-msys-input-boundary.md)已定位捕获样本的Ctrl-O丢失位置,后续[隔离运行库补丁](research/vim-msys-runtime-prototype.md)在重建基点red后原方法四轮通过;正式固定运行库验收未完成,[#63 工作区残尾](research/workspace-native-viewport.md)已由同EXE单变量与运输回放确认现有viewport修复覆盖,原UI/主区三轮重复两批及完整shell通过;更早缺运输样本保留未知。[#53 UI fence](research/ui-paste-fence.md)与[行键复用/关闭回复](research/resize-replay-cost.md)、[#62 worker 夹具](research/sender-fence.md)各自限定通过。终端 margin 与原生状态分列,#47 及完整后端仍开放;旧失败和历史运输缺口保留 |

以下能力默认指已合并实现;某个配置的通过结果不能转用于另一个配置。R1 的真实系统 CF/拼音验收属于固定自研核心配置,不外推到候选 `.4` 或实验后端联合配置。

Expand All @@ -35,7 +35,7 @@
| Unicode 与文字显示 | **实现中,未验收**:默认自研保留 Unicode 15。显式候选 `.4` 的 [#39 Unicode 17 流式字素合同](research/streaming-graphemes.md)已限定验收:固定 ZWJ/keycap 的单 lead/两列、光标、SGR/查询、原子选择复制、单列 resize 与有界无损分片;实际 ConPTY/DWrite 核对固定样本的单 glyph、字体和网格 | [#30](https://github.com/JavaZeroo/termforge/issues/30) 仍需完整输入/IME 交叉;所有脚本/整形、通用 fallback、所有原生重放、真彩色/更多属性、Powerline 和真实跨屏未验收。分段 helper 的规范数据通过不代表完整终端 Unicode 正确性;[#54](https://github.com/JavaZeroo/termforge/issues/54) 保留已观察的性能成本 | R2 / R4 |
| resize 与 reflow | **限定验收**:默认按 ADR-0005 物理行裁剪;候选在[固定 ConPTY 重放](../experiments/core/results/2026-10-26-resize-replay/validation.json)与连续同步中保持行身份、Find/选区和有界历史,淘汰/清空不复活;候选 `.4` 另覆盖主/备用屏缩到单列 | [#29](https://github.com/JavaZeroo/termforge/issues/29) 的完整 resize 交叉未完成;固定事务不等于完整 reflow 或 WindTerm 等价。系统/实验 ConPTY、备用屏/滚动区、真实 DPI、呈现、性能及 #36/#38 分别验收;默认缩窄不可恢复 | R2 |
| 本地 shell 选择 | **实现中,未验收**:`ShellLaunch` 分离可执行文件、参数、工作目录及 shell 命令差异;cmd、Windows PowerShell 5.1、PowerShell 7、显式 Ubuntu WSL 各有[两轮真实启动/目录/尺寸/正常退出证据](../experiments/shell/results/2026-10-24-r2-shell-lifecycle/validation.json),无效程序启动错误可见且可关闭后恢复 cmd | 仅声明上述固定入口和隔离目录;任意 profile/参数、通用分屏/排序、全部运行时错误提示及管理员 shell 未完成 | R2;权限场景 R4 |
| 常用 TUI | **实现中,未验收**:显式候选 + 系统 ConPTY 有固定 Vim 进入、编辑、60×12 resize、退出写盘、主屏恢复及光标回复的[产品证据](../experiments/core/CANDIDATE.md);More 尾部 ECH 与捕获端点有[限定修复](research/more-capture-ech.md) | [#28](https://github.com/JavaZeroo/termforge/issues/28) 的更多应用及完整输入/输出模式未完成;PR #50 实验后端的 GUI Vim [#52](https://github.com/JavaZeroo/termforge/issues/52) 仍有失败,[MSYS输入观测](research/vim-msys-input-boundary.md)不构成修复;[native 捕获目录复用](research/vim-fixture-isolation.md)已独立定位并修正,不能代替 GUI 或完整 TUI 验收。headless 比较与自有 DIB 不等于真实呈现,`presented_done=null` | R2 |
| 常用 TUI | **实现中,未验收**:显式候选 + 系统 ConPTY 有固定 Vim 进入、编辑、60×12 resize、退出写盘、主屏恢复及光标回复的[产品证据](../experiments/core/CANDIDATE.md);More 尾部 ECH 与捕获端点有[限定修复](research/more-capture-ech.md) | [#28](https://github.com/JavaZeroo/termforge/issues/28) 的更多应用及完整输入/输出模式未完成;PR #50 实验后端的 GUI Vim [#52](https://github.com/JavaZeroo/termforge/issues/52) 仍有失败,[MSYS输入观测](research/vim-msys-input-boundary.md)及[隔离运行库修补实验](research/vim-msys-runtime-prototype.md)不替代原固定运行库验收;[native 捕获目录复用](research/vim-fixture-isolation.md)已独立定位并修正,不能代替 GUI 或完整 TUI 验收。headless 比较与自有 DIB 不等于真实呈现,`presented_done=null` | R2 |

## 工作区与会话

Expand Down
2 changes: 2 additions & 0 deletions docs/PROVENANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

## 已使用的第三方数据

- `research/msys-runtime-window-prefix/`:外部运行库的隔离研究补丁,来源为 `git-for-windows/msys2-runtime` 固定提交 `2e2ef940151485490aff0c7b00c00965ef7a71a4` 的 `winsup/cygwin/fhandler/console.cc`;修改 resize 输入前缀的消费顺序,适用上游 LGPLv3-or-later 及 `CYGWIN_LICENSE` 中的 Linking Exception。完整上游许可、补丁与来源见[目录说明](../research/msys-runtime-window-prefix/README.md)。这不是 WindTerm 源码,不是产品依赖,也不进入默认构建或发布包;不由项目 MIT 覆盖。编译/隔离 Vim 结果及未验边界见[实验记录](research/vim-msys-runtime-prototype.md)。

- `assets/fonts/RobotoMono-Regular.ttf`:从 Google Fonts 的 RobotoMono 官方仓库固定提交独立取得,未修改;适用 SIL Open Font License 1.1,完整版权与许可证随字体分发。字体源码、固定版本、原始链接、字节数和 SHA-256 见[字体来源](../assets/fonts/README.md)。只在 TermForge 进程内作为工作区 UI 字体加载;不是从 WindTerm 提取的资源,不受项目 MIT 许可证覆盖。

- 差分测试依赖 `pyte 0.8.2`(LGPLv3)和 `wcwidth 0.2.13`(MIT),固定 wheel 哈希并保留原包许可;没有复制其源码或将其作为产品组件。版本、官方来源与适配边界见[差分说明](../experiments/differential/README.md)。原创项目许可证不替代这些依赖的许可证。
Expand Down
2 changes: 1 addition & 1 deletion docs/milestones/R2-local-terminal.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ flowchart LR

## 下一批的任务边界

1. **在已冻结基线上逐项闭合后端回归。** #55 已交付含红的真实基线;接续 #52 的 GUI Vim 失败。#62 的[真实 writer 持块、取消与停止夹具](../research/sender-fence.md)不降低原 4MiB/16KiB/期限,#53 已接入默认关闭的 fence,[单窗口 UI/3MB/768B 与控制故障切片](../research/ui-paste-fence.md)及[同源码两轮原八会话data-only](../research/resize-replay-cost.md)已通过;[#51 原生 viewport 修复](../research/native-viewport-resize.md)的原 resize 与 Unicode、[#88 回显完成判据](../research/workspace-restore-transport-oracle.md)的原保存/恢复/钳制限定回归通过;[#87 完整记录检查点](../research/workflow-record-checkpoint.md)已具有受控因果红绿及同源码两轮原八会话 data-only。[#63 工作区尺寸标记残尾](../research/workspace-native-viewport.md)已核验现有viewport修复覆盖,并通过原三轮重复与180秒完整shell合同。完整官方回归中的 Vim、更早缺运输的工作区失败及历史聚合期限证据分别保留,#87 的历史运输缺口不追溯补造,真实 CF/IME 组合独立验收。各回归可用原冻结输入独立定位,最终修复验收须在联合配置重建;一次未复现不自动构成因果修复。
1. **在已冻结基线上逐项闭合后端回归。** #55 已交付含红的真实基线;接续 #52 的 GUI Vim 失败;[隔离运行库修补实验](../research/vim-msys-runtime-prototype.md)已提供基点red与补丁green,原固定运行库兼容方案及正式验收仍需闭合。#62 的[真实 writer 持块、取消与停止夹具](../research/sender-fence.md)不降低原 4MiB/16KiB/期限,#53 已接入默认关闭的 fence,[单窗口 UI/3MB/768B 与控制故障切片](../research/ui-paste-fence.md)及[同源码两轮原八会话data-only](../research/resize-replay-cost.md)已通过;[#51 原生 viewport 修复](../research/native-viewport-resize.md)的原 resize 与 Unicode、[#88 回显完成判据](../research/workspace-restore-transport-oracle.md)的原保存/恢复/钳制限定回归通过;[#87 完整记录检查点](../research/workflow-record-checkpoint.md)已具有受控因果红绿及同源码两轮原八会话 data-only。[#63 工作区尺寸标记残尾](../research/workspace-native-viewport.md)已核验现有viewport修复覆盖,并通过原三轮重复与180秒完整shell合同。完整官方回归中的 Vim、更早缺运输的工作区失败及历史聚合期限证据分别保留,#87 的历史运输缺口不追溯补造,真实 CF/IME 组合独立验收。各回归可用原冻结输入独立定位,最终修复验收须在联合配置重建;一次未复现不自动构成因果修复。
2. **并行处理原版对照、平台语义与性能。** [原生语义处理路径 #56](https://github.com/JavaZeroo/termforge/issues/56)先明确 #41 原合同需要什么、哪些路径可支持;保留必要的上游或独立实现工作,不用“平台不同”豁免缺口。#3/#4 优先建立原版 Windows 本地终端基线;#54 现在冻结重复方法与完成端点并定位吞吐成本,数值预算作为提案交用户确认,不等到 #34 才补性能。
3. **在主线推进独立行为合同。** #29 核对极窄/极短、软硬行、历史/淘汰、选择/Find、连续 resize 和 child ack;#30 核对 IME 组合/提交/取消与输出/resize/切换、应用键盘/粘贴接收、实际复制及同次八会话。已验收的 #39 只提供首批字素基础,最终配置的交叉验收仍需执行。
4. **补终端模式和应用矩阵。** #27 明确 DECOM/DECAWM、pending-wrap、保存恢复、异常序列与 margin×resize;#28 先固定应用版本/入口/动作及协议字节预期,再逐应用完成进入、操作、resize、退出、主屏恢复。Vim 的一个修复不替代完整 TUI 验收。
Expand Down
Loading