Skip to content

[R2][Backend] 定位连续 GUI resize stage43 的残尾与 Unicode 重放差异 #51

Closed

Description

@JavaZeroo

范围与已确认原因

处理固定候选 .4 × 官方 ConPTY 1.25.260930003 / flags24 的连续 GUI resize stage43。原生 ReadConsoleOutputW 同次采样的行是完整 TF_SIZE_100x28,候选末屏却是 TF_SIZE_100x28OW;原运输与 resize 时序可逐步重放。通用 reflow 在增长时拉回终端历史、跨历史边界合并或移除底行,与原生可见区随后使用的绝对坐标布局不一致。

原诊断由 #55 / PR #64 冻结联合基线,PR #67 提供有界捕获/重放;PR #77 的 eae4b6a 再次复现。旧输入、flags、精确断言、期限和原失败保留;没有删除 OW、改子串、取消 Unicode、清屏或延长期限。

已完成的限定实现

PR #89,产品源 92eac12d5cd2868b469e8b9a10e68f5e20ee2cb0,审计证据 ab360c7aebeb8e9afb5e61d386081abd8e3e8278,基 e0b4d67:

  • 原 .4 实际重建后 stage43 真红;原9065字节运输/resize完整重放;误用旧mtime造成的错误源码/二进制配对已明确排除。
  • 原生快照、真实 child 尺寸 ack、transport、候选和 GUI 分别留证。六组 ASCII 合成用例的原生行/光标是独立预期,同二进制默认策略全部有差异。
  • 新增显式 native_viewport,只用于候选/官方窗口;保留历史、逻辑续行、光标、真实空格及底行。默认 reflow_history 不变;版本身份 .5。审查发现的默认空格复制回归已有同输入真红/修后绿。
  • 最终原 resize 两轮、resize-close、Unicode 两轮、原捕获重放通过,精确行/位置/历史/Unicode/child ack及Job0/desktop回收保持;Rust 157+2+2+2 单测和1 doc test通过。
  • Standards/Spec 实现与最终公开证据均通过;30个公开合成capture与Git字节哈希一致,原GUI原件保留本地。
  • PR fix: preserve native viewport coordinates during candidate resize #89 已按验收 head 259e036 合入实验父分支,merge 2d69663e314b735897ddfb413667fbd26848fe57。最终 Build 40402620914 与 Candidate 40402620642 均成功;Windows default/system 51/51、271.66s,实际 checkout ccce9e2c572d64abb91983e03301572132a1b2ed。候选 CI 旧 .4 预期的真实失败已通过精确 .5 同步修正,本地6/6;不同配置不混算。本项限定关闭,父 PR 实验:候选 .5 与固定官方 ConPTY 联合整合(保留真实回归) #50 仍 Draft。

完整回归与限制

最终同源码候选/官方 CTest 54/56、411.59秒、12项内部skip。#52 Vim stage59与#88第二轮工作区恢复stage1失败;同轮workflow_sessions通过,但之前两次编号半行失败仍由#87处理。#63旧失败原因也不因这次未复现而回填。不能将默认/system CI、独立候选CI及本地官方局部绿拼成完整通过。

原因与无人值守复现 · 固定验证/六组公开原件

父项 #47。完整 resize/历史/Find/模式交叉归#29,选型归#34,完整R1/R2、真实CF/IME组合、实际呈现及WindTerm等价未验收,presented_done保持null。

Metadata

Metadata

Assignees

Labels

compatibility平台、协议或行为兼容问题

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions