Skip to content

feat(core): retain combined width/height resize across stages (#27) - #308

Merged
JavaZeroo merged 8 commits into
mainfrom
agent/resume-issue-27-500634dea299
Nov 3, 2026
Merged

JavaZeroo merged 8 commits into
mainfrom
agent/resume-issue-27-500634dea299

Conversation

@JavaZeroo-Bot

Copy link
Copy Markdown
Collaborator

背景

本 PR 恢复 #27 暂停后的推进,闭合"正文保持 + resize 联合路径"中已定位的组合尺寸缺陷。暂停时成果在旧工作区 javazero/r27-r29-resize-retention(HEAD 88ace8d,另有未提交的 resize_preserving)。本 PR 以远程最新 main 8eec75d 为基线,在独立工作区迁移所需探针、原版报告与失败回放,并提交此前未提交的 Screen::resize_preserving;旧工作区未改动、未清理。

未纳入:88ace8d 的隐藏主屏高度探针及其未完成离线审计 — 该切片原始严格审计仍未通过,另行处理。

变更

  • 3ca03eb / 57cb70b / a73ee75 / 13186bf:五阶段组合尺寸原版探针、固定 ConPTY resize/输出语义记录、原版观察报告,以及旧路径的字面回放(先失败)。
  • eb09421:新增同 owner Screen::resize_preserving(rows, columns)。高度变化时前缀行进入主屏历史,存活行保留源 Cell/身份/软续接,两帧准备完成后一起发布;分配失败不发布。附分配失败注入与历史预算工程检查。
  • 4d24c79:回放切换到新事务,并注册 resize_combined_core 与 resize_preserving_transaction_core 两个 CTest 门禁。
  • 1eb4efc:结果报告、validation.json 与 FEATURES/EVIDENCE 更新。

实测验证

同一字面预期、同一 75 B 源:

验证 结果
旧路径(13186bf,宽度保留 + 旧高度裁剪) 8/20 阶段、80/560 断言失败,映射/选择 8/20、60/648 失败,退出 1
新事务(4d24c79) 20/20 阶段、0/560;映射/选择 20/20、0/744,退出 0
分配失败 sweep 活动主屏缩/增各 151/42 次注入失败后重试成功;活动备用屏(隐藏主屏)同
核心 CTest 34/34 通过,4.52 秒(含两个新门禁)
组合探针离线 CTest 3/3 通过,44.63 秒;不启动原版

环境:Windows 11 x64、VS 2022 17.12.6、MSVC 19.42.34433.0、SDK 10.0.26100.0、Release、Qt OFF、候选适配器 OFF。

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release --target resize_combined_test resize_preserving_transaction_test --parallel 4
ctest --test-dir build -C Release -R "_core$" --output-on-failure
ctest --test-dir build -C Release -R "windterm_resize_combined" --output-on-failure

完整身份、断言数与限制见 结果报告。

边界

  • 新事务目前只是显式入口:默认 Screen::resize 与 Qt 仍走物理裁剪,正式路径 B/CD 缩放失败未被修复或豁免。
  • 仅覆盖固定 75 B ASCII 主屏五阶段、后续仅 DSR;未覆盖 resize 后继续输出、双轴同时变化、活动备用屏、隐藏主屏原版对照、Unicode、历史淘汰、保存光标交叉。
  • 隐藏帧"仅保留协议足迹"沿用现有工程策略,不是本次新证实的原版行为。
  • 分配/历史检查是工程不变量,不是分配器、时延、内存或性能验收;没有 Qt/固定 ConPTY 用户路径或性能数字。
  • [R2-04][终端] 实现备用屏、滚动区域及关联模式 #27/[R2-06][终端] 定义并验证 resize、逻辑行与历史语义 #29 保持 OPEN,不声明完整 reflow 或 WindTerm 等价。

流程

不自动合并、不提前关闭 issue、不触发 Codex 自动 review;合并由用户决定。提交作者为 JavaZeroo-Bot,并按配置保留共同作者 trailer。

JavaZeroo-Bot and others added 8 commits November 3, 2026 00:53
Screen::resize_preserving prepares both frames before publishing: the
height prefix moves into the primary history, surviving live rows keep
their source cells and identities, and hidden live rows fit the protocol
footprint. Any allocation failure publishes nothing.

The transaction sweep and history-budget checks are engineering
invariants, not original, Qt or performance acceptance.

Co-authored-by: JavaZeroo <[email protected]>
The literal five-stage WindTerm 2.7.0 width/height observation previously
passed 8/20 phases on the existing width-preserving plus legacy height
route. Selecting the retained owner now passes 20/20 with 744 mapping and
selection assertions, so both this replay and the transaction sweep are
registered as CTest gates.

Co-authored-by: JavaZeroo <[email protected]>
Record the reproduced 8/20 legacy failure, the 20/20 retained-owner
replay and the allocation-failure sweeps. The report states that the
default resize and Qt remain on the physical path and makes no
performance or full #27/#29 acceptance claim.

Co-authored-by: JavaZeroo <[email protected]>
@JavaZeroo
JavaZeroo merged commit 0420137 into main Nov 3, 2026
10 checks passed
JavaZeroo-Bot added a commit that referenced this pull request Nov 4, 2026
Limit the recorded fact to the post-resize CUP+write endpoint: no original
pre-write body observation exists, so clipping/materialization cannot be
attributed to resize, CUP or the write, and the sequential #308 sample is not
a comparable control. Pre-write full-row retention remains only the core
engineering invariant.

Split the frozen original-run source identity from the later offline exporter
and core-replay source identities in validation, and record the offline export
correction without rerunning the original.

Co-authored-by: JavaZeroo <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants