Repository navigation
test(qt): verify DSR 6n reply chain through Qt write-back to real child (#28) - #331
Merged
Merged
Conversation
…ld (#28) Add a bounded, test-only layered fixture for the implemented cursor-position query reply on the formal C++/Qt/fixed-ConPTY path. The fixed scenario writes two printable ASCII cells from home and asks ESC[6n on one primary 80x24 screen; the independent expectation ESC[1;3R comes from the confirmed core reply contract. - raw fixed-ConPTY silent control: conhost does not answer the child itself; the child observes its bounded timeout only - raw fixed-ConPTY distinct-reply control: host-written bytes reach the real child unchanged - product SessionModel path: parsed query at transport offset 23, core reply written back through the shared input queue, real child receives exactly ESC[1;3R with matching PID and verified cleanup No product behavior, default entry or query support is changed. DA1 stays strict-only/recovery-silent; DA2/OSC remain unimplemented. Co-authored-by: JavaZeroo <71128095+JavaZeroo@users.noreply.github.com>
Record the bounded formal Qt / fixed-ConPTY query-reply evidence: core contract, raw ConPTY silent/distinct controls, SessionModel write-back and real-child receipt, plus exact bytes, child identity, cleanup and limitations. Also point the earlier Vim trajectory parenthetical about conhost answering DSR to the corrected observation without rewriting the original record. Co-authored-by: JavaZeroo <71128095+JavaZeroo@users.noreply.github.com>
Build qt_query_reply_test, record its runtime manifest, and include qt_query_reply in the existing offscreen CTest selection so the new evidence is reproducible in CI. Co-authored-by: JavaZeroo <71128095+JavaZeroo@users.noreply.github.com>
4 tasks
Open
query_offset=23 is the start of the fixed 6-byte source AB+ESC[6n; the ESC[6n sequence itself starts at zero-based byte 25 (AB occupies 23/24). Clarify the README, EVIDENCE row and validation prose only. Raw transport hex, historical results, schema/field names and product/test logic are unchanged. Co-authored-by: JavaZeroo <71128095+JavaZeroo@users.noreply.github.com>
JavaZeroo-Bot
added a commit
that referenced
this pull request
Nov 12, 2026
…ecord-hidden-retention-2e7373117ea0 Union both sides: keep the bounded autoscroll Qt target/CTest entry and the #324 system paste, #333 BCD fixtures, #330/#331 packaging and #328 eight-session capabilities with their assertions. Co-authored-by: JavaZeroo <71128095+JavaZeroo@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
范围(#28 回复合同调查切片)
在正式 C++ / Qt Widgets / 随包固定 Microsoft ConPTY 路径上,用一个有界、确定的单会话场景核实「核心回复 → Qt 回写 → 真实 child 收到字节」的分层证据,并区分核心孤立合同、ConPTY 原始传输、Qt 产品回写与 child 实际接收。只调查已实现的
DSR CSI 6n;不修改产品行为/默认入口、不新增查询支持、不进入 #28 整体 TUI 验收、不关闭 #28/#7。固定场景:80×24 主屏、单会话、无 resize/备用屏/滚动区;child 从 home 写
AB后发ESC[6n(源41421b5b366e)。独立预期来自既有核心 reply 合同(experiments/core/reply_test.cpp:1 基ESC[row;colR,同一测试断言ab+ESC[6n→ESC[1;3R),即1b5b313b3352。交付
src/qt/query_reply_test.cpp+ CTestqt_query_reply:同一可执行文件以--query-child重入作为独立 child,启用 UTF-8/VT 输入输出模式,只写固定源并记录实际收到的原始字节 + metadata;不调用可能触发 conhost 光标同步的 API。ESC[9;9R→ child 原样收到,证明 host→ConPTY→child 写入路径;SessionModel解析 transport 的固定源串起点 23(AB+ESC[6n;ESC[6n从零基字节 25 开始)的查询并经同一有界输入队列回写 → child 恰收ESC[1;3R。experiments/shell/results/2026-11-09-qt-query-reply/README.md、validation.json;docs/EVIDENCE.md索引行;对 Vim 轨迹中「conhost 代答」旧括注加后续修正指向(保留原记录)。实测(实现提交后的干净工作树,两次运行)
1b5b313b33521b5b393b3952/0{active:0,total:8,terminated:0}1b5b313b33521b5b393b3952/0{active:0,total:8,terminated:0}产品层:transport = 启动包
ESC[1t ESC[c ESC[?1004h ESC[?9001h(23 B)+AB+ESC[6n+ 关闭序列(零基偏移:固定源串从 23 开始,AB在 23/24,ESC[6n从 25 开始);core 行 0 =AB、协议光标 (0,2);natural_exit/cleanup_verified/output_eof=true、active_after=0、PID 与resize_state().child_pid一致;child raw 与 metadata 交叉一致。启动包 DA1 请求未产生回写(child 精确等于 DSR 回复,未收到ESC[?6c)。验证
ctest -R '^qt_query_reply$':Passed 4.34 sreply_core:Passed 0.01 s;private_mode_core:Passed 0.02 s(已有核心合同/DA1 strict-recovery 差异复跑)presented_done=null限制
仅单一固定主屏/位置/会话,不含 resize、备用屏、滚动区、Unicode、历史/选择/Find;只覆盖 DSR 6n,DA1 仍 strict-only/recovery-silent,DA2/OSC/括号粘贴未改变;child 启用
ENABLE_VIRTUAL_TERMINAL_INPUT(pinned ConPTY 透传未处理 CSI 的条件),未测非 VT 输入 child;未与 WindTerm 原版对照,未验证真实 TUI 消费回复;#28 TUI 矩阵与 #27/#29/#30 联合验收仍开放。不启用自动合并,不请求 Codex review,不关闭 #28/#7。