Skip to content

test(qt): verify retained hidden-frame body through Qt/ConPTY - #315

Merged
JavaZeroo merged 3 commits into
mainfrom
agent/hidden-frame-qt/record-hidden-retention-2e7373117ea0
Nov 4, 2026
Merged

JavaZeroo merged 3 commits into
mainfrom
agent/hidden-frame-qt/record-hidden-retention-2e7373117ea0

Conversation

@JavaZeroo-Bot

@JavaZeroo-Bot JavaZeroo-Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

背景

2026-11-04 用户已确认:隐藏帧返回时 TermForge 保留完整正文,接受 WindTerm 2.7.0 返回主屏后裁剪隐藏行的可观察差异(决定评论)。ADR-0010 已归档,但当时“正式路径验收”仍是未完成项。本 PR 补上该固定场景的正式 Qt / 固定 ConPTY 路径实现与验证。

改动

  • 新增 qt_hidden_retention(src/qt/hidden_retention_test.cpp、src/qt/hidden_retention_fixture.hpp):真实 child 写入固定 75 B、91×20 主屏正文;公开 Qt 控件缩窄到 61 列;child 1049h 进入备用屏;仅高度 20→14→20;1049l 返回主屏;恢复宽度 91。
    • 每个阶段由 child 通过独立命名管道确认自己的控制台几何与选中原生行;resize 请求本身不算 child ACK。
    • 逐阶段核对保留源正文、owner/行 id、历史前缀、显示页、显示光标与 ViewMapping::hit 命中。
    • child 原生网格/选中行仅作为独立 transport 观察记录,不作为已确认保留文本的 oracle。
  • CMakeLists.txt 注册 qt_hidden_retention;.github/workflows/qt-cpp.yml 构建、运行并记录 runtime manifest。
  • 新增 结果与身份、validation.json、公开样例;更新 FEATURES、EVIDENCE、ADR-0010 与 src/qt/README.md,把“正式路径验收”从待补改为固定七阶段离屏通过,并保留其余限制。
  • 无生产代码改动:现有正式路径的 resize_preserving + 显示投影已满足该固定场景;新测试初次失败来自测试自身的显示行预期与夹具原生行读取坐标,不是产品 RED,也未发现需要修复的正文丢失。

验证(本地实测,Windows 11 x64 / MSVC 19.42 / Qt 6.10.3 offscreen / 固定 ConPTY 1.25.260930003)

  • 新测试 58 项检查、0 失败;连续两次运行除 child_pid 外输出一致。
  • 阶段 1/2/6/7 的逻辑正文 SHA-256 均为 0e683ff0…:缩窄、隐藏高度变化与 1049l 返回均未丢失已确认的完整正文;保留行 id 12、91-Cell 源行与 5 行历史前缀保持;显示页/光标/命中映射同一源身份。
  • Qt 正式路径 CTest 7/7 通过(8.99 s,含新测试);核心回归 41/41 通过(23.05 s)。
  • 环境、依赖身份、源码/产物哈希与逐阶段数据见 validation.json。

边界

JavaZeroo-Bot and others added 3 commits November 4, 2026 23:58
Add a formal Qt / fixed-ConPTY seven-phase fixture: a real child writes the
fixed 91x20 primary body, the public widget narrows to 61 columns, the child
enters the alternate screen, only the height changes, and 1049l returns with
the width restored. The test checks the retained source body, row identity,
display page, display caret and hit mapping against literal expectations; the
child's native rows are recorded separately and are not the retained-body
oracle.

Wire the new qt_hidden_retention target into the Qt workflow. This closes the
fixed formal-path scenario for the 2026-11-04 confirmed full-body decision; it
does not claim physical presentation, WindTerm equivalence, complete resize
or #27/#29 closure.

Co-authored-by: JavaZeroo <[email protected]>
Publish the fixed seven-phase Qt / fixed-ConPTY result for the confirmed
hidden-frame full-body decision: stage table, source/artifact/dependency
hashes, display and hit observations, and the offscreen-only limits. Update
FEATURES, EVIDENCE, ADR-0010 and the Qt entry so the formal-path identity stays
separate from the original WindTerm observation and the core engineering
regression.

#27/#29/#30/#7 stay open; physical presentation, DPI, other sizes, Unicode and
complete reflow remain uncovered.

Co-authored-by: JavaZeroo <[email protected]>
Record that the fixed formal-path scenario was already retained by the
existing resize/display transaction; the initial test failures were the new
test's own display-row expectations and native-row fixture coordinate, not a
product RED. #27/#29 stay open.

Co-authored-by: JavaZeroo <[email protected]>
@JavaZeroo
JavaZeroo merged commit 2d37f4c into main Nov 4, 2026
10 checks passed
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