From 46672cc81329c79f5b6427119bded5479d6d27db Mon Sep 17 00:00:00 2001 From: JavaZeroo <71128095+JavaZeroo@users.noreply.github.com> Date: Sat, 31 Oct 2026 10:42:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?docs(research):=20=E4=BB=8E=20Draft=20PR=20?= =?UTF-8?q?#96=E2=80=93#103=20/=20#101=20=E6=91=98=E5=8F=96=E6=9C=AA?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E7=9A=84=E8=AF=81=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这些分支挂在已被 main 取代的 ConPTY 后端上,整体重基不可行(merge-tree 实测 16 处冲突),但它们的结论文档与固定验证身份在 main 上缺失。 本次只新增、不修改 main 已有文件(diff 全部为 A,0 处修改): - docs/research/ 14 份:ConPTY 源 margin 的 runtime/controls/styles、experimental backend、 native viewport resize、resize replay cost、Vim msys input/runtime、WindTerm styled margin reference、 workflow record checkpoint、workspace native viewport、clipboard stage observation - experiments/conpty/results/ 40 个固定结果与 validation 身份 - experiments/shell/results/ 25 个 - research/ui/results/ 2 个 代码侧(backend_probe.cpp、margin_controls.py 等基于旧后端的实现)不摘取,旧后端已由 main 的 cmake/ConptyBackend.cmake 取代。 摘取后即可关闭 #96/#98/#100/#102/#103/#101,并在各自评论中指向这些新位置。 --- docs/research/clipboard-stage-observation.md | 45 + .../research/conpty-source-margin-controls.md | 44 + docs/research/conpty-source-margin-runtime.md | 68 + docs/research/conpty-source-margin-styles.md | 61 + docs/research/experimental-conpty-backend.md | 43 + docs/research/native-viewport-resize.md | 50 + docs/research/resize-replay-cost.md | 36 + docs/research/ui-paste-fence.md | 50 + docs/research/vim-msys-input-boundary.md | 41 + docs/research/vim-msys-runtime-prototype.md | 50 + docs/research/vim-windterm-reference.md | 52 + .../windterm-styled-margin-reference.md | 53 + docs/research/workflow-record-checkpoint.md | 45 + docs/research/workspace-native-viewport.md | 35 + .../validation.json | 899 +++++++++ .../.gitattributes | 3 + .../case-0/native-after.json | 1 + .../case-0/native-before.json | 1 + .../case-0/plan.txt | 4 + .../case-0/source.bin | 5 + .../case-0/transport.bin | 5 + .../case-1/native-after.json | 1 + .../case-1/native-before.json | 1 + .../case-1/plan.txt | 4 + .../case-1/source.bin | 4 + .../case-1/transport.bin | 4 + .../case-2/native-after.json | 1 + .../case-2/native-before.json | 1 + .../case-2/plan.txt | 4 + .../case-2/source.bin | 4 + .../case-2/transport.bin | 4 + .../case-3/native-after.json | 1 + .../case-3/native-before.json | 1 + .../case-3/plan.txt | 4 + .../case-3/source.bin | 2 + .../case-3/transport.bin | 2 + .../case-4/native-after.json | 1 + .../case-4/native-before.json | 1 + .../case-4/plan.txt | 4 + .../case-4/source.bin | 4 + .../case-4/transport.bin | 4 + .../case-5/native-after.json | 1 + .../case-5/native-before.json | 1 + .../case-5/plan.txt | 4 + .../case-5/source.bin | 2 + .../case-5/transport.bin | 2 + .../native-cases.json | 330 ++++ .../validation.json | 1667 +++++++++++++++++ .../validation.json | 1667 +++++++++++++++++ .../build-summary.json | 294 +++ .../validation.json | 1035 ++++++++++ .../validation.json | 1571 ++++++++++++++++ .../build-summary.json | 266 +++ .../validation.json | 73 + .../closing-reply.json | 65 + .../headless-ordinary.json | 376 ++++ .../headless-resize.json | 398 ++++ .../intermediate-workflows.json | 716 +++++++ .../probe/README.md | 12 + .../probe/headless-instrumentation.patch | 41 + .../probe/ordinary_probe.cpp | 53 + .../probe/probe_timing.hpp | 16 + .../probe/resize_probe.cpp | 54 + .../probe/ui-core-instrumentation.patch | 49 + .../probe/ui-instrumentation.patch | 103 + .../probe/ui_timing.hpp | 31 + .../ui-profiles.json | 699 +++++++ .../validation.json | 1513 +++++++++++++++ .../2026-10-26-resize-order/validation.json | 276 +++ .../validation.json | 209 +++ .../2026-10-26-ui-paste-fence/validation.json | 689 +++++++ .../2026-10-27-clipboard-stages/trace-0.jsonl | 72 + .../2026-10-27-clipboard-stages/trace-1.jsonl | 72 + .../validation.json | 282 +++ .../2026-10-27-vim-msys-input/validation.json | 1659 ++++++++++++++++ .../validation.json | 655 +++++++ .../validation.json | 1032 ++++++++++ .../validation.json | 1009 ++++++++++ .../validation.json | 1100 +++++++++++ .../validation.json | 1339 +++++++++++++ .../validation.json | 808 ++++++++ 81 files changed, 21884 insertions(+) create mode 100644 docs/research/clipboard-stage-observation.md create mode 100644 docs/research/conpty-source-margin-controls.md create mode 100644 docs/research/conpty-source-margin-runtime.md create mode 100644 docs/research/conpty-source-margin-styles.md create mode 100644 docs/research/experimental-conpty-backend.md create mode 100644 docs/research/native-viewport-resize.md create mode 100644 docs/research/resize-replay-cost.md create mode 100644 docs/research/ui-paste-fence.md create mode 100644 docs/research/vim-msys-input-boundary.md create mode 100644 docs/research/vim-msys-runtime-prototype.md create mode 100644 docs/research/vim-windterm-reference.md create mode 100644 docs/research/windterm-styled-margin-reference.md create mode 100644 docs/research/workflow-record-checkpoint.md create mode 100644 docs/research/workspace-native-viewport.md create mode 100644 experiments/conpty/results/2026-10-26-reviewed-backend/validation.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/.gitattributes create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/native-after.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/native-before.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/plan.txt create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/source.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/transport.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/native-after.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/native-before.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/plan.txt create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/source.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/transport.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/native-after.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/native-before.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/plan.txt create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/source.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/transport.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/native-after.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/native-before.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/plan.txt create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/source.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/transport.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/native-after.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/native-before.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/plan.txt create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/source.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/transport.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/native-after.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/native-before.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/plan.txt create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/source.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/transport.bin create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/native-cases.json create mode 100644 experiments/conpty/results/2026-10-27-native-viewport-resize/validation.json create mode 100644 experiments/conpty/results/2026-10-27-source-margin-controls/validation.json create mode 100644 experiments/conpty/results/2026-10-27-source-margin-runtime/build-summary.json create mode 100644 experiments/conpty/results/2026-10-27-source-margin-runtime/validation.json create mode 100644 experiments/conpty/results/2026-10-27-source-margin-styles/validation.json create mode 100644 experiments/conpty/results/2026-10-27-upstream-margin-build/build-summary.json create mode 100644 experiments/conpty/results/2026-10-27-upstream-margin-build/validation.json create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/closing-reply.json create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/headless-ordinary.json create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/headless-resize.json create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/intermediate-workflows.json create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/probe/README.md create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/probe/headless-instrumentation.patch create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ordinary_probe.cpp create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/probe/probe_timing.hpp create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/probe/resize_probe.cpp create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ui-core-instrumentation.patch create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ui-instrumentation.patch create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ui_timing.hpp create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/ui-profiles.json create mode 100644 experiments/shell/results/2026-10-26-replay-cost-and-close/validation.json create mode 100644 experiments/shell/results/2026-10-26-resize-order/validation.json create mode 100644 experiments/shell/results/2026-10-26-resize-replay-guards/validation.json create mode 100644 experiments/shell/results/2026-10-26-ui-paste-fence/validation.json create mode 100644 experiments/shell/results/2026-10-27-clipboard-stages/trace-0.jsonl create mode 100644 experiments/shell/results/2026-10-27-clipboard-stages/trace-1.jsonl create mode 100644 experiments/shell/results/2026-10-27-clipboard-stages/validation.json create mode 100644 experiments/shell/results/2026-10-27-vim-msys-input/validation.json create mode 100644 experiments/shell/results/2026-10-27-vim-msys-runtime-prototype/validation.json create mode 100644 experiments/shell/results/2026-10-27-workflow-record-checkpoint/validation.json create mode 100644 experiments/shell/results/2026-10-27-workspace-echo-cr/validation.json create mode 100644 experiments/shell/results/2026-10-27-workspace-native-viewport/validation.json create mode 100644 research/ui/results/2026-10-27-styled-native-reference/validation.json create mode 100644 research/ui/results/2026-10-27-vim-native-reference/validation.json diff --git a/docs/research/clipboard-stage-observation.md b/docs/research/clipboard-stage-observation.md new file mode 100644 index 00000000..f57ab8b7 --- /dev/null +++ b/docs/research/clipboard-stage-observation.md @@ -0,0 +1,45 @@ +# Hosted 剪贴板超时的有界阶段观测 + +[#99](https://github.com/JavaZeroo/termforge/issues/99) 的原 `ui-clipboard-system` 在 occupied 错误反馈后触发 launcher 45 秒期限。原件无法区分后续等待边界。本调查加入临时阶段记录,完成预先固定的一个批次:**两轮均通过,原超时未复现,原因仍未知**。完整 CI 的其他失败分别保留,可靠性缺口没有关闭。 + +## 方法与身份 + +观测源码 [`b9789543a792b0a0b96139377ea43f4dfab46626`](https://github.com/JavaZeroo/termforge/commit/b9789543a792b0a0b96139377ea43f4dfab46626),tree `bb8d6ce8464ec8b50ff86000dfb1f0b39b3b9888`,基于 #98 的 `678804ff5201fab4296b133af9457b7120739b68`。只在诊断分支首轮 push/default Windows hosted VM 启用;PR 与 external candidate 检查关闭记录。 + +原 `ShellTests.test_system_clipboard_product_read_errors_cancel_and_close` 的两轮、四 case、256 B 基线、精确重试字节、45/60 秒期限及完整回归上下文未改。本机仅构建和验证非 hosted 拒绝守卫,没有调用真实系统剪贴板。 + +记录白名单为 case/stage、callback 计数、单调时长、固定动作前后事件、paste busy、helper 零等待状态及 owner 固定步骤/错误数字。稳定阶段最多每秒一条,总量最多 256 条;不含剪贴板或终端文字、PID/HWND、路径或凭据。owner 多个原子字段不是一致快照;事件只表示调用边界,文件 I/O 可能影响时序。 + +观测结束后,临时 C++ 记录与 CI 启用步骤全部撤回,三个文件恢复到上述父提交;固定观测提交保留原代码供审查。当前代码不会自动继续这个诊断批次,没有因本调查改变产品行为。 + +## 实际结果 + +[push/default run 40459936505,Windows job 122041868650](https://github.com/JavaZeroo/termforge/actions/runs/40459936505/job/122041868650) 使用默认核心与系统 ConPTY。[白名单摘要](../../experiments/shell/results/2026-10-27-clipboard-stages/validation.json)记录来源、构建清单和原件哈希;[trace 0](../../experiments/shell/results/2026-10-27-clipboard-stages/trace-0.jsonl)及[trace 1](../../experiments/shell/results/2026-10-27-clipboard-stages/trace-1.jsonl)经字段检查后保留原字节。 + +| 检查 | 第一轮 | 第二轮 | +|---|---|---| +| occupied / oversize / cancel / close 接收字节 | 270 / 270 / 268 / 256 | 270 / 270 / 268 / 256 | +| 记录条数 / callback 次数 | 72 / 45 | 72 / 45 | +| complete-before-close 记录 | 1614 ms | 1527 ms | +| launcher 退出 / outer 超时 / stderr | 0 / false / 空 | 0 / false / 空 | +| Job active / total / terminated | 0 / 27 / 0 | 0 / 27 / 0 | +| desktop 回收 / 记录截断 | true / false | true / false | + +原 `validate_clipboard_workflow` 与结果 validator 离线重算通过,包含四 case 的独立字节预期、owner 释放/退出、helper 回收及错误反馈。cancel/close 的晚发布按既有合同观察到 1418、requester 已退出,没有改记为成功发布。另核对 trace 字段集合/类型、记录序号、时间和 callback 单调性、各 case 阶段/动作顺序及条数上限。1614/1527 ms 是带诊断的关闭前记录,不是自然退出、性能或呈现端点。 + +[artifact 12714865514](https://github.com/JavaZeroo/termforge/actions/runs/40459936505/artifacts/12714865514) 为 4269771 B,ZIP SHA-256 `4b597e169d36624c87a6a9859e0fc3b2a37846569bca3eaca4c51322ec7d2791`,与 GitHub digest 一致。完整 ZIP、原文件和离线审计保留在 ignored `local/r99`;首次下载的 1572864 B 不完整文件保留并排除。CI 清单记录该次 clean build 的 shell、launcher、clipboard reader、input client 四个 EXE 哈希及 checkout;EXE 本体未归档,没有声称在本地重新哈希。含进程身份的原 workflow/sample 不直接公开。 + +## 完整 CI 与独立失败 + +| 检查 | Windows | Linux | 状态 | +|---|---|---|---| +| push/default,40459936505 | 50/52,280.05 s | 32/33,12.67 s | 整体失败,Windows 启用诊断 | +| PR/default,40459942201 | 51/52,276.72 s | 32/33,12.95 s | 整体失败,诊断关闭 | +| push/external candidate,40459936582 | success | success | 独立候选配置 | +| PR/external candidate,40459942259 | success | success | 独立候选配置 | + +PR 实际 checkout 为 `b58c029fc0f861c2e7d251d125b18ec70e80dda9`。四个 default job 均因本次新增清单路径触发既有 workflow 路径计数断言 `2 != 1`。本地单独复现该断言;撤回临时工作流后,原 ActionOracleTest 7/7 通过(0.487 s)。这是诊断配置回归的修正,不是 #99 超时修复;后续 CI 不回填这一批为通过。 + +push Windows 另有 `test_mouse_selection_to_real_system_clipboard` 的 `ui-copy-system` 第二轮 `OpenClipboard: 5`。第一轮原 validator 离线通过;第二轮已有 12 条基础记录、22 条交互记录,最后为实际 Copy popup 成功读回。之后、构造自有占用 owner 之前有三个夹具剪贴板调用,具体哪个失败及原因未知。此入口补入 [#85](https://github.com/JavaZeroo/termforge/issues/85),与旧入口及 #99 分列,不由同一 API 错误推断同因。 + +本批已按预定停止条件结束,没有追加重试或改变超时、字节门槛。#99 继续开放;本报告不声称原因修复、完整产品验收或 WindTerm 等价。后续执行状态由 issue 维护。 diff --git a/docs/research/conpty-source-margin-controls.md b/docs/research/conpty-source-margin-controls.md new file mode 100644 index 00000000..e75a114d --- /dev/null +++ b/docs/research/conpty-source-margin-controls.md @@ -0,0 +1,44 @@ +# 源码 ConPTY:主屏与重复切屏的原生对照 + +同源 margin 补丁在三个补充场景中符合预先固定的结果:主屏单独滚动保持正确;新建或再次进入备用屏使用默认全屏滚动区域;返回主屏和重复离开备用屏后恢复原来的 `2;3r`。未修补版在后两个场景出现具体预期错误,修补版通过全部原生阶段。实际运输的最终主屏在两版中均正确,不能用末端正确掩盖原生错误。 + +这是 [#56](https://github.com/JavaZeroo/termforge/issues/56) 的独立补充实验。预期依据是既有 R2 每缓冲区 margin 合同和固定上游状态路径,运行前已记录在 issue;WindTerm 2.7.0 对这些场景的实际行为仍未知。本结果不验收 WindTerm 等价、不选择产品后端,也不关闭 #56/#41。 + +## 固定输入与观测边界 + +沿用[原 175B 对照](conpty-source-margin-runtime.md)的同源 baseline/patched:Terminal `dc8ae365847d41f62d1ebca93815bb00959bc12f`、构建 run `40449292015` 和已审核的双文件 SHA、variant/summary/patch receipt。本次未修改上游补丁或重新构建上游。 + +三个场景各在 `80×24`、`12×7` 下运行 baseline/patched 一次,共 12 次,只开 VT;无自动重试。输入由独立 controls 探针发送,原 175B、四阶段 probe/oracle 和既有期限不变。新场景使用 `CTRL_DONE`,字节数与原负载分列。 + +| 场景 | 80×24 / 12×7 字节数 | 运行前固定的原生预期 | 未修补版实际结果 | 修补版实际结果 | +|---|---:|---|---|---| +| `main-only` | 99 / 99 | 无备用屏;主屏 `2;3r` 滚动,区域外不变 | before/final 均正确 | before/final 均正确 | +| `default-alt` | 150 / 149 | 主屏区域不传给新备用屏;物理底部换行应全屏滚动;返回后仍为主屏区域 | alt 未全屏滚动:保留 `ALT_TOP`,`ALT_LAST` 被覆盖;其余阶段正确 | before/alt/restored/final 全部正确 | +| `repeat-alt` | 221 / 220 | alt1 的 `4;5r` 不传给再次创建的 alt2;两次离开后主屏仍为 `2;3r` | alt2 同样未全屏滚动;final 出现 `REGION_CIXED`;其余阶段正确 | before/alt1/alt2/restored/final 全部正确 | + +每个阶段分别检查 `ReadConsoleOutputCharacterW` 文本、完整 `CHAR_INFO` 字符/属性、光标及 viewport top。预期为字面值,不使用候选 parser 生成;baseline 必须符合上述具体旧状态,异常、生命周期失败或其他文字错误均不计为有效反例。没有设置 SGR,属性检查只证明初始属性保持。 + +12 次都自然退出 37、读端 EOF 109,creation flags=0,内层子进程清零,外层 Job 为 active0/total4/terminated0,无强制取消。每次仍为 5 秒 child wait、15 秒外期限、共享 5 秒 cleanup;离线候选回放另由既有 trace 入口管理。两版实际运输的最终文字和 alternate=false 均符合预期;没有观测末端逐阶段光标、属性或实际呈现。 + +## 源码、构建与验证身份 + +- 本地实际运行源码 `edec26bb3c4d04858a667a96debf69c139476172`,工作树干净;参与文件 SHA、探针、trace、输入、运输、每阶段捕获及监督记录 SHA 见[脱敏清单](../../experiments/conpty/results/2026-10-27-source-margin-controls/validation.json)。 +- Windows 11 x64 build 26200;VS17 / MSVC 19.42.34433 / SDK 26100,Release x64。controls 探针 SHA `a71c94795806a40062ace7788ee69cfbac0cd8a274765dce6b28aa6d7f33c7ee`;`.5` trace SHA `5941d4569d0ae146eb005f12ecfb15014bc06c18ee48d1c9460824ab65df93d3`。 +- 新旧 margin 判据与 GO/回收回归 17/17,通过耗时 0.375 秒;原 loader/API/清理回归 14/14、零跳过,1.020 秒。后者复用前一批相同源码的原探针 EXE,运行本次修改后的 Python supervisor;不冒充重新编译原探针。两个实际 stdout 日志均保存在本地并记录 SHA,时长仅为测试诊断。 +- `TERMFORGE_BUILD_SOURCE_CONPTY_EXPERIMENT` 仍默认 OFF;新增 `conpty_source_margin_controls` 独立目标。仅 supervisor 增加可选参数和期限,既有 API 调用默认仍为 20 秒。纯 controls 判据纳入 Windows/Linux CTest,不依赖 native DLL;原生矩阵需显式运行。 + +私有原件位于 `local/r56-margin-controls/matrix-1`;公开清单仅含合成场景结果、必要身份和文件哈希,不包含绝对路径、原生二进制、原始运输或用户状态。 + +## 复验与剩余范围 + +先按[源码构建说明](../../experiments/conpty/upstream/README.md)取得并审核固定 run 的 baseline/patched。使用全新的输出目录: + +```powershell +cmake -S . -B local/source-controls-build -A x64 -DTERMFORGE_BUILD_SOURCE_CONPTY_EXPERIMENT=ON -DTERMFORGE_BUILD_CANDIDATE_ADAPTER=OFF -DTERMFORGE_CONPTY_BACKEND_DIR= -DBUILD_TESTING=OFF +cmake --build local/source-controls-build --config Release --target conpty_source_margin_controls --parallel 2 +cargo +1.92.0 build --manifest-path experiments/candidates/alacritty/Cargo.toml --locked --release --bin termforge-alacritty-trace +python -m experiments.conpty.source_margin_controls --baseline local/source-baseline --patched local/source-patched --probe local/source-controls-build/bin/Release/conpty_source_margin_controls.exe --candidate-trace experiments/candidates/alacritty/target/release/termforge-alacritty-trace.exe --output local/source-controls-new +python -m unittest experiments.conpty.test_margin_controls -v +``` + +本次只补无备用屏、默认备用屏区域、重复 h/l 的真实交叉。显式样式与非零光标的后续[独立对照](conpty-source-margin-styles.md)记录原生通过及末端空白前景色差异,不回写本批结果。历史隔离/压力、resize、查询/API 写入、完整产品工作流、性能及维护升级仍未验证;原 175B 的 VT-off 证据属于前一批,不能合并成同批更大矩阵。原系统/官方失败、#52、#97 和 #99 的独立失败继续保留。正式方案仍由 #34 提交证据及取舍,经用户确认后生效。 diff --git a/docs/research/conpty-source-margin-runtime.md b/docs/research/conpty-source-margin-runtime.md new file mode 100644 index 00000000..fcd05c64 --- /dev/null +++ b/docs/research/conpty-source-margin-runtime.md @@ -0,0 +1,68 @@ +# 同源 ConPTY 原生 margin 运行对照 + +固定 Microsoft Terminal `dc8ae365847d41f62d1ebca93815bb00959bc12f` 的两组重建产物,在原始 175 字节、两种网格和原期限下完成一次预定对照:未修补版复现原生 final 错误,应用 margin 状态补丁后四阶段原生文字、逐格字符/属性和光标全部符合原独立预期。实际运输经候选核心回放,两版末端画面均正确;VT-off 反例在两版之间保持一致。 + +这提供了原用例的同源因果证据。它没有覆盖样式变化、历史、resize 交叉及完整产品合同,不能关闭 [#56](https://github.com/JavaZeroo/termforge/issues/56) 或 [#41](https://github.com/JavaZeroo/termforge/issues/41),也不决定 #34 的产品后端。原系统/官方包失败与新源码构建结果分开保存。 + +## 来源与构建身份 + +[PR #96](https://github.com/JavaZeroo/termforge/pull/96) 的 [v2 构建 40449292015](https://github.com/JavaZeroo/termforge/actions/runs/40449292015) 使用同一固定源码、依赖和工具链: + +- Terminal 提交如上,vcpkg baseline 为 `927f62e4b8838bd7e441e9c45103a16ffd75007e`;原 NuGet/vcpkg 版本和 feature 不变。 +- 实际 CI checkout 为 `ad857d448dfe64c0c11d10254043a8b893e7546a`,VS18 / MSVC 14.51.36231 / SDK 26100;详细工具和文件身份见[构建摘要](../../experiments/conpty/results/2026-10-27-source-margin-runtime/build-summary.json)。 +- 补丁 SHA-256 为 `dc27377e399bd0217a0b76e16cc89f087c1b781929e4c958ad30c3a475322b81`。仅测试补丁时 focused 测试明确失败一次、退出 1;随后保存 baseline EXE/DLL,再应用两个生产文件的补丁,focused 1/1、完整 adapter 412/412、零跳过,最后保存 patched EXE/DLL。 +- 两组都有独立 `variant.json`,绑定生产补丁是否应用、测试状态、双文件 SHA 与大小;共享 summary 的完整 adapter 通过只属于 patched。baseline 没有执行完整 adapter。 + +| 文件 | baseline SHA-256 / 字节 | patched SHA-256 / 字节 | +|---|---|---| +| OpenConsole.exe | `fabdc934d9755c405fe848251905e8c0e70a2bf7702b8ed7ccd104eec6591588` / 1146880 | `1c8f071f6e4779ec297fb041af4eaea39be29b6920cef625ab91d1cbc20c79cb` / 1147392 | +| conpty.dll | `9d165745cce4b29a5818a45c23f68e962b3a3140c2e00566bd17fee970fdd9d1` / 108544 | 与 baseline 逐字相同 | + +原始 summary SHA 为 `8132695b32162ff22e61d2de166a31fad508f0b63cbb46de8d1612bd197e1ded`,两个 pair 和 summary artifact 中相同。artifact `12710186210`(summary)、`12710186222`(baseline)、`12710146241`(patched)的 ZIP SHA、来源和内部文件均已核对,记录在[验证清单](../../experiments/conpty/results/2026-10-27-source-margin-runtime/validation.json)。入库构建摘要是规范化 UTF-8/LF 的解析内容;原始摘要字节 SHA 不冒充入库文件 SHA。 + +这些是带 Microsoft MIT LICENSE/NOTICE 的短期实验产物,不是正式包。没有把二进制、私人路径、原始提取或 WindTerm 文件加入源码库。artifact 保留期为 14 天;之后可按固定构建入口重建,但新文件身份须重新审核,不宣称逐字节可复现。 + +## 隔离入口与身份拒绝 + +`TERMFORGE_BUILD_SOURCE_CONPTY_EXPERIMENT` 默认 OFF,本次使用 `conpty_source_margin_probe` 与 `conpty_source_backend_probe`;后续[补充对照](conpty-source-margin-controls.md)另增加 `conpty_source_margin_controls`。只有这三个独立目标编译 source factory,不能与产品 `TERMFORGE_CONPTY_BACKEND_DIR` 同时启用;默认及官方 factory 仍严格接受各自原身份。产品 bundle、默认后端和 PR #50 的固定官方配置均未切换。 + +source factory 只允许表中两个 SHA 对,分别报告 `source-dc8-r56-baseline-run40449292015` / `source-dc8-r56-patched-run40449292015`。Python 入口另核对原始 summary、patch、精确 variant 字段与类型、文件大小和 SHA;布尔值不能以 0/1 代替。DLL 与 EXE 在加载期间保持只读共享句柄;create/resize/close 使用同一模块,模块存活至会话和子进程回收之后。 + +独立 API/身份验证实际执行 15 个原生场景及 8 个清单拒绝检查:两版 identity、create/resize/自然退出/EOF/卸载;官方入口拒绝两版 source,source 拒绝官方、相对路径、缺失和未知文件;分别篡改 DLL/EXE;交换 variant、数字冒充布尔、修改 summary 或文件字节均拒绝。两版 DLL 本来相同,不虚构“混用相同 DLL”的可识别差异。另有系统 API 生命周期、原官方/系统 loader 14/14 和原 margin/oracle/cleanup 13/13 回归。 + +13/13 与 14/14 的计数和耗时来自当时命令输出,未单独保存 stdout 日志;验证清单明确标记这一可复核限制。8个margin样本和15个API/身份场景的原始记录另外完整保存,不借用两项会话输出代替。 + +## 原始 175B 的运行结果 + +本机 Windows 11 x64 build 26200,独立探针使用 VS17 / MSVC 19.42.34433 构建;候选 trace 为 `termforge.5`、Rust 1.92.0。运行时代码为 `fdee94fe94d48e83f5a61f191bddfc812d43a2f8`、工作树干净;探针、trace、参与源文件的 SHA 保存在验证清单。API/身份检查脚本字节绑定后续提交 `08ec4708afa347d87b584def73a3dba5021f7870`,不把它写成前一轮运行时源码。 + +源 SHA 为 `01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59`,175 字节与四阶段保持原样;原生预期来自[独立 oracle](../../experiments/conpty/margin_contract.py),没有通过候选 parser 生成。每种 variant × 网格 × VT mode 各一次,共 8 次,没有自动重试或失败后延长预算。 + +| 网格与模式 | baseline | patched | 生命周期 | +|---|---|---|---| +| 80×24、VT-on | before/alt/restored 全部正确;final 文字/格错误、光标正确,出现 `REGION_CIXED` | 四阶段文字、格/属性、光标全部正确;主屏区域恢复 | 均自然退出 37、EOF 109、Job0,无 force | +| 12×7、VT-on | 同一 final 错误;保留结束标记换行 | 四阶段全部正确,结束标记仍分两行 | 同上 | +| 80×24、VT-off | 两版完整原生格 SHA、文本、光标和末端文本一致 | 不把 VT-off 当成一般修复方案 | 同上 | +| 12×7、VT-off | 同上,原窄屏反例保留 | 同上 | 同上 | + +VT-on 两版的实际运输经同一候选 trace 回放后,主屏末端文本均正确、alternate=false;说明 baseline 原生错误不能由末端正确掩盖。这里没有测末端逐阶段光标。原生属性检查仅覆盖原 source 未设置 SGR 时的初始属性保持,不外推为显式样式恢复。 + +所有 8 次保留原 5 秒 child wait、15 秒外部期限与共享 5 秒 cleanup;creation flags 为 0,外 Job 最终 active0/total4/terminated0,未强制回收。另一个 API 生命周期探针使用原 20 秒外部期限,source flags24 的 create/resize/close 检查不能与 flags0 margin 拼成完整产品结果。 + +原件保存在 `local/r56-native-runtime/original-matrix-1` 和 `backend-check-2`;公开清单只保留合成结果与审核字段。首轮 margin 测试调用漏设 `TERMFORGE_BIN_DIR` 导致两个 setup error,修正调用后原 13 项通过;首次新增身份检查误要求 Job total=1,实际拒绝样本 total2/active0,已改为保留实际总数并严格检查回收。两项失败均保留,不修改原用例或期限。 + +## 复验与后续边界 + +先按[构建入口](../../experiments/conpty/upstream/README.md)取得并审核上述固定产物,在全新输出目录执行: + +```powershell +cmake -S . -B local/source-margin-build -A x64 -DTERMFORGE_BUILD_SOURCE_CONPTY_EXPERIMENT=ON -DTERMFORGE_BUILD_CANDIDATE_ADAPTER=OFF -DTERMFORGE_CONPTY_BACKEND_DIR= -DBUILD_TESTING=OFF +cmake --build local/source-margin-build --config Release --target conpty_backend_probe conpty_source_backend_probe conpty_source_margin_probe --parallel 2 +cargo +1.92.0 build --manifest-path experiments/candidates/alacritty/Cargo.toml --locked --release --bin termforge-alacritty-trace +python -m experiments.conpty.source_margin_run --baseline local/source-baseline --patched local/source-patched --probe local/source-margin-build/bin/Release/conpty_source_margin_probe.exe --candidate-trace experiments/candidates/alacritty/target/release/termforge-alacritty-trace.exe --output local/source-margin-new +python -m experiments.conpty.source_backend_check --baseline local/source-baseline --patched local/source-patched --official local/official-conpty-1.25 --probe-directory local/source-margin-build/bin/Release --output local/source-backend-new +``` + +无备用屏、重复 h/l、默认 margin 的后续 12 次[原生补充对照](conpty-source-margin-controls.md)已单独记录,不更改或扩充本批 175B 结果。非零光标和显式样式、历史隔离、resize、查询及 API 写入仍待真实交叉;之后还需实际产品联合源码、支持平台、资源与维护/升级验证,并由 #34 提出正式方案供用户确认。 + +独立的 [#97 candidate-scroll 退出超时](https://github.com/JavaZeroo/termforge/issues/97)发生于 parent `5c073e4` 的 candidate/system push CI:正确末帧已经产生,但原 20 秒期限未自然结束。它不是本 175B 输入,同 HEAD 的其他 CI 成功不能覆盖该失败;此处的源构建修补也不构成其因果修复。原官方 80 列 5 秒失败、Vim #52、完整 R2、WindTerm 行为等价、性能与实际呈现均没有由本实验验收。 diff --git a/docs/research/conpty-source-margin-styles.md b/docs/research/conpty-source-margin-styles.md new file mode 100644 index 00000000..40a5b642 --- /dev/null +++ b/docs/research/conpty-source-margin-styles.md @@ -0,0 +1,61 @@ +# 源码 ConPTY:样式、光标恢复与空白格差异 + +固定同源 margin 补丁在本次五阶段原生检查中全部通过:备用屏退出后,主屏光标和红字蓝底属性恢复,后续滚动仍使用主屏 `2;3r`。未修补版前四阶段正确,最后一阶段出现预先固定的旧区域错误。不过,两版实际 transport 的候选末端都有滚动空白格的前景色元数据差异,**完整末端属性比较仍失败**。文字、背景色、光标和当前绘制属性通过,不代表完整合同通过。 + +这是 [#56](https://github.com/JavaZeroo/termforge/issues/56) 在[三个原生 controls](conpty-source-margin-controls.md)之后的独立实验。本批运行时尚未观测 WindTerm 2.7.0;后续[原版单次对照](windterm-styled-margin-reference.md)发现相同输入的原生及 UI 文字含 `REGION_CIXED` 残尾,具体样式与原生坐标边界另列。原版末端颜色仍未知,修补路线有待确认的行为差异;本记录不选择产品后端,不批准候选核心策略,也不关闭 #56/#41。 + +## 运行前固定的场景 + +沿用[原 175B 实验](conpty-source-margin-runtime.md)已核验的 Terminal `dc8ae365847d41f62d1ebca93815bb00959bc12f` baseline/patched、构建 run `40449292015` 及双文件/补丁/summary receipt;上游源码与补丁未修改。独立 `--styled-cursor` 入口只执行一个 211B 场景,在 `80×24`、`12×7` 下分别运行两版,每格一次,共四次,无重试。原 175B 与默认三个 controls 保持原入口。 + +| 阶段 | 固定操作与原生判据 | +|---|---| +| before | 写入区域内外标记,主屏 `2;3r`,SGR `31;44`,光标第 3 行第 6 列 | +| alt | 进入备用屏,在 `4;5r` 内以 SGR `32;45` 滚动;光标第 5 行第 8 列 | +| restored | 离开备用屏,原主屏内容及第 3 行第 6 列光标恢复 | +| after-write | 直接写 `M`,原生第 3 行第 6 格为红字蓝底,光标前进一格 | +| final | 回到主屏区域滚动,保留区域外内容;`REGION_C`、`REGION_D` 及其尾部空白为红字蓝底;第 6 行写 `SGR_DONE` | + +全文、完整 `CHAR_INFO` 字符/属性、光标和 viewport 分别使用独立字面值检查。原生红字蓝底为 `0x14`、绿字紫底为 `0x52`;末端 trace 的 ANSI 索引另用 `fg=1/bg=4`。baseline 必须匹配具体旧状态,异常或任意失败不计为有效反例。 + +## 实际结果与判据修正 + +| 观测 | 两个尺寸的 baseline | 两个尺寸的 patched | +|---|---|---| +| 原生前四阶段 | 全字段通过 | 全字段通过 | +| 原生 final | 文本/格属性失败,符合旧区域预测:保留 `REGIOM_B` 并出现 `REGION_CIXED`;光标/viewport 通过 | 全字段通过 | +| 实际 transport 末端 final | 文字、主屏、光标及 current_style 通过;完整单元格比较失败 | 相同 | +| 生命周期 | 自然退出 37、EOF 109、flags=0、outer Job active0/total4/terminated0,无 force | 相同 | + +所有样本仍使用 5 秒 child wait、15 秒外期限、共享 5 秒 cleanup。四份源字节均为 211B / SHA `51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62`;实际运输均为 254B / SHA `b584cd146f447c1e78e51d74e6d1c38c6a93d860d738a0afacdf959c8327d9bd`。未执行 GUI 产品流程或呈现测量。 + +首次判据把未触碰的默认空格错误地写为 `text=" " / width=1`,而已有 [trace 编码](../../experiments/candidates/alacritty/src/main.rs)对默认空单元使用 `text="" / width=0`,有背景色的空白才保留空格与宽度 1。离线审计发现这一测试错误,新增反例先失败,再修正编码;原四次运行、原 summary、原退出 1 结果全部保留,没有重跑原生程序。 + +修正后重新读取同四份捕获,80 列每次排除 1731 格、12 列每次排除 31 格的错误序列化预期;**显式前景/背景的预期没有放宽**。剩余差异只在零基第 1、2 行、第 8 列至行尾: + +- 80 列每次 144 格,12 列每次 8 格。 +- 文字均为一个空格、width=1、背景色均为 4、bold=false。 +- 期望显式前景色 1,实际为默认前景色 -1。写出的彩色文字及 current_style 仍为 1/4。 + +原始与修正后的完整比较都为失败。不能将默认空单元的判据错误算为产品缺陷,也不能将剩余空白前景色差异直接认定为用户可见错误。 + +固定 Alacritty 上游 `542147067dd016fc5f49120ef0ba605a98a4e3a7` 的 [`Cell::reset`](https://github.com/alacritty/alacritty/blob/542147067dd016fc5f49120ef0ba605a98a4e3a7/alacritty_terminal/src/term/cell.rs)只保留 template 的背景色,其余字段取默认值;当前 `.5` 候选保持该逻辑,滚动清行调用这条路径。这解释了所捕获的候选元数据结果。该源码观察不证明 WindTerm 的行为,也不构成改变产品合同或修改候选核心的批准。 + +## 身份、验证与复验 + +[脱敏清单](../../experiments/conpty/results/2026-10-27-source-margin-styles/validation.json)保留原运行身份、原始 summary 哈希、四份捕获身份、离线修正来源及两种失败结论。 + +- 实际原生运行源码 `485c3e253e88a2d83f72326c0ff9185b94d87269`,当时工作树干净;离线判据修正源码 `6e52e6957de10c14c570d3b7b83992c585fcc3a9`,不冒充重新运行。 +- Windows 11 x64 build 26200;VS17 / MSVC 19.42.34433 / SDK 26100,Release x64。独立探针 SHA `ca19645b65aea8ac74b56d1e59837cb7514c3acf5932d24112411725b92206d7`;复用前批 `.5` trace SHA `5941d4569d0ae146eb005f12ecfb15014bc06c18ee48d1c9460824ab65df93d3`。上游 pair 是 hosted VS18 构建,两者身份分列。 +- 初始纯判据 7/7;空单元编码反例 1 次失败后,修正判据 7/7、0.069 秒,包含错误前景/背景、光标、current_style、文字、宽度和主屏状态的拒绝。时长仅为测试诊断。 +- 前批 12 份 controls 捕获离线复查通过,未增加原生执行。此次完整 styled 矩阵仍失败,不能用纯测试成功替代。 +- 私有原件位于 `local/r56-style-controls/matrix-1`;公开清单只有合成输入/输出、结果、来源和哈希,不含二进制、用户状态或绝对路径。 + +按[前批构建与来源说明](conpty-source-margin-controls.md#复验与剩余范围)生成 controls 探针和候选 trace,并核验固定 baseline/patched;使用新输出目录: + +```powershell +python -m experiments.conpty.source_margin_controls --styled-cursor --baseline local/source-baseline --patched local/source-patched --probe local/source-controls-build/bin/Release/conpty_source_margin_controls.exe --candidate-trace experiments/candidates/alacritty/target/release/termforge-alacritty-trace.exe --output local/source-styles-new +python -m unittest experiments.conpty.test_margin_controls -v +``` + +保留失败判据,当前同配置预计矩阵退出 1;不得通过重试取绿。其他 SGR/真彩色、终端中间阶段、历史隔离/压力、resize、查询/API、完整产品、性能、升级维护及 WindTerm 对照仍待完成。`TERMFORGE_BUILD_SOURCE_CONPTY_EXPERIMENT` 默认 OFF,正式方案仍由 #34 按证据提案及用户确认决定。 diff --git a/docs/research/experimental-conpty-backend.md b/docs/research/experimental-conpty-backend.md new file mode 100644 index 00000000..dabdf584 --- /dev/null +++ b/docs/research/experimental-conpty-backend.md @@ -0,0 +1,43 @@ +# 显式 side-by-side ConPTY 实验整合(#47) + +[每屏 margin 调查](conpty-margin-backends.md)确认固定官方新后端可以保留原 DECSTBM;系统后端已丢失的信息不能由末端猜测补回。本切片将这个可行路径接到实际 `Session` 和 GUI,**保留默认系统后端,未完成 R2 后端决定或完整回归**。 + +## 接口、身份和生命期 + +`Backend::system()`、`reviewed_side_by_side(absolute_directory, GlyphWidth)` 和显式构建的 `configured()` 使用同一个对象边界。`Session` 创建、resize 和关闭均调用该对象的同一 API 族;模块由共享所有权保持,Backend 成员在 Session 中最先声明、最后析构,使输出读线程、HPCON 和清理过程结束前 DLL 始终有效。 + +来源/部署见[固定包入口](../../third_party/conpty/README.md)。CMake 不下载;运行时也不探测已安装的 Terminal。不混用 DLL 与系统 create/resize/close,不在缺失或错误文件时静默回退。独立 native 检查实际创建 80×24、由 child API 观察 120×40、正常退出37、EOF109、自有 Job 归零,并确认临时 Backend 销毁后 DLL 仍在、Session 析构后才卸载;两个文件各自篡改都拒绝。 + +## 宽度策略的 A/B + +固定1.25包默认 flags 0 时,真实 `ReadConsoleOutputCharacterW`/`CHAR_INFO` 对本项目四个复杂文字样本产生新的 readback 投影,原严格 Unicode 合同失败,末端仍保留原文。只改官方 `GLYPH_WIDTH_CONSOLE=0x18` 后,四样本回到既有合同承认的原文/非BMP替代投影,原完整 Unicode/glyph 检查两轮通过;没有修改 `unicode_checks.py`。全部原 flags0失败和 flags24结果仍保留。 + +因此显式实验 `configured()` 固定选择 Console width;系统和通用诊断保持默认0。实际 GUI margin 记录还保存 Session 的 backend 和 creation flags,测试端必须显式选择对应合同;不会根据末屏自行挑选较宽松的解释。该固定包头文件及源码来源已经绑定到 manifest;这个策略与旧 `0x08` passthrough 无关,也不构成完整字素/宽度或 native API 等价验收。 + +## 实际窗口和已有回归 + +原175字节 margin source、四阶段 native capture、区域外文字、主历史、光标、style 和 retained/full frame 均保留。新实验合同独立要求末端恢复 `REGION_C`、`REGION_D`、`BOTTOM_FIXED`,同时要求 native 继续显示已复现的 `REGION_CIXED`。源控制台与末端分列,#41 不关闭。默认 system 合同继续检查原始差异,没有删除旧失败或补发 VT。 + +原 ESC resize 场景曾以宿主的 `CSI ?25h` 当 resize 完成信号。新宿主没有这个重绘副作用,原夹具超时。现在由真实 peer `GetConsoleScreenBufferInfo` 确认60×12并发出独立 ack,随后发送原单个 ESC;resize与输入共用原五秒预算,外层期限不变。真实 ESC 两轮通过;Vim/DSR/resize写盘曾在早期flags0阶段通过两轮,不能将它用于证明最终Console-width策略通过。 + +最终C++源码固定在 `5030058`,随后 `0954fea` 只整合 margin Python 诊断的异常/清理修复。[公开验证记录](../../experiments/conpty/results/2026-10-26-reviewed-backend/validation.json)包含15个源码文件的git blob哈希、四项二进制哈希、固定包/完整MIT身份、逐后端margin结果和白名单化的正反结果;未提交原始屏幕、transport或路径。 + +最终Console-width构建的后端生命期/拒绝检查6/6、margin诊断清理检查9/9、既有TUI检查5/6;TUI中ESC、主/备用屏、局部滚动、每屏margin和完整Unicode各两轮通过。基础cmd Unicode/编辑/Ctrl-C/正常退出三轮、四种本地shell/CWD/退出两轮、持续输出关闭三轮通过。More子阶段完整提示→单q→EOF通过,但包含Vim的整套native capture失败,不能将More成功表述成整套通过。 + +Find、选择/zoom、split后台会话以及flags0的Vim/完整native capture是较早源码阶段的限定结果。不同阶段分别保存,不把早期结果回写为最终同源码完整验收;`runtime_observation_test`此次仅构建,未执行。 + +## #50 评审后的测试监督器修订 + +独立 Standards/Spec 评审确认 `test_backend.py` 的异常清理可能覆盖原始超时,并跳过 Job 关闭和记录;目录准备失败也会泄漏提前创建的 Job。修订先准备目录,再取得 Job;assignment 失败只杀仍等待 GO 的自有根进程,不发送 GO。终止、排空、Job 观察、关闭和写盘分别保障,所有清理等待共用原五秒预算;未知观察保留 `null`,首次非零 Job 与强制清理后的观察分列,不能归零后转为通过。 + +原实现的六组纯异常负例先复现失败,修复后再加入证据/summary 写盘失败边界,`BackendCleanupFailureTests` 共8/8通过,且不受 Windows skip 限制。现有真实 `BackendTests` 6/6再跑通过(7次调用,含同包两文件各自篡改拒绝);只复用已构建二进制和固定包。此次只修改测试监督器,不改变产品后端和下列已知红项,也不重写前述固定源码的历史验证记录。 + +## 仍未闭环的真实差异 + +- **连续 GUI resize。** 原 `resize` 场景在stage43等待精确 `TF_SIZE_100x28`,末端实际出现 `TF_SIZE_100x28OW`,并有旧文字/位置及重放后的 Unicode 差异。Console width并未修复。没有删除尾部、替换source或放宽行匹配;需要裁决候选 resize/reflow 与新宿主同步VT/原生API状态的交叉。 +- **Vim兼容。** 最终Console-width构建在原stage59没有得到resize事件文件,命令出现在插入文字中;同批6项TUI检查为5通过、1失败,失败项第二轮未运行。独立native real-app capture也在 `new-buffer` 阶段失败,返回1,editor字节数1999;外层Job仍归零。没有改成睡眠、跳过Vim或降低既有事件文件断言,早期flags0的成功与本次失败分列。 +- **粘贴并发时序。** 原 3MB 请求、768字节 receiver checkpoint和持续输出均保留,但新宿主在GUI看到checkpoint前已经接收全部输入,transfer为completed。这个运行不能证明未完成期的Cancel/关闭行为。不能把completed当cancelled,也不能仅降低原16KiB阈值;需要保持原负载与独立回收断言的确定性sender进度栅栏,再验证实际产品取消。 +- **源 native margin。** 固定新包仍未修复 native readback 的每屏 margin;末端正确不替代原生API或依赖它的应用验证。 +- **出口。** 尚无该实验后端的完整R1同次工作流、实际IME/跨屏、长期资源、性能或WinTerm对照结论;默认Alpha、#34产品决定、#35和R2范围均未改变。 + +这些缺口继续由 #47 / #41 及相应父项保留,实验可选择不等于可靠日常版本。验证仅在自有Job/非输入桌面进行,原始transport、错误原文和图像继续留私有目录;`presented_done=null`。 diff --git a/docs/research/native-viewport-resize.md b/docs/research/native-viewport-resize.md new file mode 100644 index 00000000..20868a13 --- /dev/null +++ b/docs/research/native-viewport-resize.md @@ -0,0 +1,50 @@ +# 显式官方后端的原生 viewport resize + +本项处理 [#51](https://github.com/JavaZeroo/termforge/issues/51) 的连续 GUI resize 残尾。固定原基线为 `e0b4d67`、候选 `termforge.4`、官方 ConPTY `1.25.260930003`、Console glyph width flags `0x18`;修复为同一候选的 `.5`。默认 system 后端和正式核心选择不由此项决定。 + +## 观察与原因 + +原场景末屏出现 `TF_SIZE_100x28OW`,原断言要求整行恰为 `TF_SIZE_100x28`。原生 `ReadConsoleOutputW` 捕获在同一次失败中显示该行正确,候选屏幕却保留 `OW`。原运输与 resize 时序可以逐步重现失败;移除中间两次请求仍出现同样终态,所以不能仅归因于请求合并或遗漏 host resize。 + +候选的通用 reflow 会在增高或增宽合并行时把历史拉回可见区,并可能为了保持光标行而删掉底部行。原生控制台没有终端已经保留的历史;随后由 host 发送的绝对坐标更新仍针对其原生可见区。两套布局先分歧、再接受局部覆盖,造成旧文字残留。六组独立原生样本分别覆盖增高、可见软行合并、光标所在软行合并、历史/可见区续行边界和部分合并后的底行保留。 + +| 初始→目标(列×行) | 关注点 | 原生末屏(省略行尾填充) | 原生光标(0 起算) | +|---|---|---|---| +| 8×3→8×6 | 增高不拉回 H0/H1 | TOP / MID / BOT / 空 / 空 / 空 | 2,3 | +| 8×3→16×3 | 合并后不拉回 H1 | 123456789 / P> / 空 | 1,2 | +| 8×3→16×3 | 光标位于被合并行 | H2 / 123456789 / 空 | 1,9 | +| 8×3→5×3 | 历史续行不能改变原生可见区 | 90123 / 45678 / 90 | 2,2 | +| 8×4→10×4 | 部分合并不能丢 BOTTOM | H1 / ABCDEFGHIJ / KLMNO / BOTTOM | 1,9 | +| 8×3→16×3 | 增宽不跨历史边界合并 | 9012345678901234 / 567890 / 空 | 1,6 | + +这些是 ASCII 合成用例的原生快照,不是由候选算法计算的预期。原生采样会影响时序;微型探针不回答 CPR,固定 host 的有界等待亦影响时序。因此本记录不作为吞吐、交互延迟或原版性能证据。 + +## 实现边界 + +新增显式 `native_viewport` 策略,仅由官方后端的候选窗口选择。历史和可见区分别 reflow,增高/合并产生的空行置于可见区底部;保留光标、底行、历史身份和有界淘汰语义。跨边界续行保留逻辑换行元数据,以独立标记区分布局填充与文本;任何可变单元格访问都会使该标记失效。保留原跨度内的尾空格,保证完整复制及后续 resize 不增删空格。默认 `reflow_history`、系统候选和默认自研核心保持各自合同。 + +本项目独立实现这些修改,保留第三方许可与版本身份;不是恢复出的 WindTerm 源码,也不是确认 WindTerm 运行时一致。完整 resize/选择/Find、备用屏与模式交叉仍归 #29/#27,正式选型归 #34。 + +## 可复现入口 + +先按[显式官方后端说明](experimental-conpty-backend.md)构建候选配置。以下输出目录须不存在,后端目录必须是经过双 SHA 校验的固定包;探针不会下载或回退。 + +```powershell +cmake --build build/candidate --config Release --target conpty_resize_native_probe candidate_resize_replay candidate_core_test +python -m experiments.conpty.resize_native_run --exe build/candidate/bin/Release/conpty_resize_native_probe.exe --replay build/candidate/bin/Release/candidate_resize_replay.exe --backend build/candidate/bin/Release/conpty-backend --out local/resize-native-new +ctest --test-dir build/candidate -C Release -R '^candidate_(core|resize_replay)$' --output-on-failure +``` + +探针先等待监督器 GO 和自有 Job,再启动私有控制台子进程。每组保存源 VT、前后原生 UTF-16、真实 transport、resize plan、两策略末端状态、二进制/源码哈希和清理状态。child 必须确认真实新尺寸、自然退出 37;父级检查 EOF、无强制取消、无溢出和 Job 清空。内层等待最多 5 秒、外层 20 秒,失败不扩大预算。回归中的预期来自上表,默认策略对照的差异单列。 + +## 验证与限制 + +[固定验证记录](../../experiments/conpty/results/2026-10-27-native-viewport-resize/validation.json)区分原 `.4` 真失败、正式 `.5` 与早期临时探针。原 GUI 的精确 marker、Unicode、位置/历史、child ack、Job/desktop 回收断言及原期限保持;未删除 `OW`、改成子串、清屏或关闭 reflow。 + +诊断中有两组结果不进入因果证据:只保留错误字符串的缩减最终删掉全部 resize,不能作为此缺陷的最小复现;另一次用保留旧 mtime 的文件复制恢复源码,增量构建复用了旧修复二进制。后者已按实际二进制哈希排除,重新写入源码、实际编译后恢复了原 stage43 red。公开记录保留这些排除原因。 + +六组合成探针可公开复现;原 GUI 原件保留本地,只发布审核后的状态、哈希和固定断言结果。完整 R1/R2、实际呈现、真实 CF/IME 组合与 WindTerm 对照不从本项推导,`presented_done` 保持 null。其他真实失败由对应 issue 继续跟踪。 + +最终产品源 `92eac12` 的显式官方配置完整 CTest 为 54/56、411.59 秒,另有 12 项内部 skip;失败为 Vim stage59(#52)和第二轮工作区恢复 stage1(#88)。同次八会话工作流通过,但此前两次编号半行失败仍由 #87 跟踪。原 resize、resize-close 和 Unicode 检查通过只验收本项限定修复,不覆盖这些独立失败。 + +后续 [#63 工作区核验](workspace-native-viewport.md)用同EXE单变量策略、原生快照与实际运输回放,确认本策略还覆盖原UI stage52及主区场景stage7的底部残尾;该项的无插桩原三轮重复和完整shell验收另有固定身份,不改写以上历史整套结果。 diff --git a/docs/research/resize-replay-cost.md b/docs/research/resize-replay-cost.md new file mode 100644 index 00000000..9352fbab --- /dev/null +++ b/docs/research/resize-replay-cost.md @@ -0,0 +1,36 @@ +# 八会话的 resize 重放成本与关闭回复 + +接续 [UI sender fence](ui-paste-fence.md) 的 [#53](https://github.com/JavaZeroo/termforge/issues/53)。候选 `.4` × 显式官方 ConPTY `1.25.260930003`、flags24 在源码 `eae4b6a4ef3e044ebfebbbbfeccf9aec74cd7f0d` 上通过两轮原八会话 **data-only** 合同。修复保留原 3MB 汉字、768B checkpoint、16KiB sender 门槛、后台输出量、UI70秒和 fixture55秒期限。[固定身份与最终回归](../../experiments/shell/results/2026-10-26-replay-cost-and-close/validation.json)与[全部诊断样本](../../experiments/shell/results/2026-10-26-replay-cost-and-close/)分列,不把真实剪贴板/IME、其他构建或整个 R2 算作通过。 + +## 成本定位与有限优化 + +旧源 `8ff112e` 的两次真实八会话插桩仍在 stage45 失败,Job0、desktop 已回收。第一次把约64秒定位到 parser feed;第二次进一步分开内部阶段:parser feed 63.987秒、Rust feed 0.560秒、synchronize 63.420秒,其中 cell export 2.031秒、reconcile_replay 60.905秒。计数是主线程累计的嵌套 wall time,不能相加,也不是实际呈现或输入延迟。两次均关闭资源采样,仅作诊断;[完整计时、源码/二进制身份与原始记录哈希](../../experiments/shell/results/2026-10-26-replay-cost-and-close/ui-profiles.json)保留。 + +普通无 resize 的 headless F1 输入未复现高成本:[2,048,000B 的六样本](../../experiments/shell/results/2026-10-26-replay-cost-and-close/headless-ordinary.json)均满足逐行文字、光标和历史预期,未插桩三次 wall 为0.446–0.486秒。缩小到204,800B后,只在计时前加入一次同尺寸 `resize(17,74)`,未插桩两次从无 resize 的0.046/0.044秒变成0.929/0.969秒;六次最终 screen JSON 哈希全部相同。[全部样本与冻结输入](../../experiments/shell/results/2026-10-26-replay-cost-and-close/headless-resize.json)、[诊断驱动及计时边界](../../experiments/shell/results/2026-10-26-replay-cost-and-close/probe/README.md)可审查。 + +观察与源码共同支持一个有限原因:resize 保留了重放起始屏幕,后续每次同步的 `reconcile_replay` 会反复序列化同一行,查找 origin 时还会再次生成行键。`06bf6b5` 让同次同步生成的 expected/actual 键向量保留空行位置,并直接按索引复用;计数仍跳过空键。键内容、重复行处理、匹配顺序、行 ID/version 映射、重放生命期和历史策略保持原合同。缓存只在一次调用内存在。 + +这些样本来自共享 Windows 11 build26200 宿主,8逻辑核,MSVC19.42 Release x64;headless 只输入 producer 字节,没有 ConPTY 变换或 UI。短样本与插桩均有扰动,不据此计算产品提速比例,也不替代 [#54](https://github.com/JavaZeroo/termforge/issues/54) 的预冻结 `.3/.4` 正式 A/B、用户性能预算或 WindTerm 对标。 + +## 关闭期间仍发送回复的独立错误 + +只完成键复用后的原八会话在27.467秒完成后台消费,35.974秒完成粘贴关闭和后续输入,但退出时因 `terminal reply rejected by input queue` 返回2。额外诊断的两轮分别成功与失败;失败现场为 `closing=1, stopping=1, queued=0, failed=0, paste_busy=0`,回复是 `ESC[4;4R`。这些成功/失败均保留在[中间运行记录](../../experiments/shell/results/2026-10-26-replay-cost-and-close/intermediate-workflows.json),一次成功不消除退出错误。 + +原因是关闭已停止输入队列,剩余输出中的光标位置查询仍经 `route_terminal_events` 发送回复。新增真实 ConPTY 回归先将查询留在 OutputQueue,明确要求尚未消费输出,再关闭并确认输入停止,最后才泵窗口消息。旧代码0.19秒即因输入拒绝失败;`eae4b6a` 仅在 `closing_` 时不再发送回复,两次新进程均实际观察查询、消费65B、解析标记文字、零输入拒绝并完成回收。输出仍解析、排空和发布;正常会话的回复失败仍严格报错。 + +[红绿身份](../../experiments/shell/results/2026-10-26-replay-cost-and-close/closing-reply.json)明确记录夹具变化:绿色版本增加了已解析标记与消费字节断言,未放宽旧条件。测试只注册于候选+显式后端组合,不能据此声明默认/system 配置已验收。 + +## 最终结果与剩余边界 + +最终源码两轮八会话包含资源采样,后台完成时间分别为26.268、27.312秒,粘贴关闭后输入验证分别在34.675、35.808秒完成。每轮26个检查点、五轮6↔8会话、拒绝第9个会话、精确接收字节和18个会话关闭均通过,Job0、desktop已删除。两轮 cancel/close 的动作前均为 sent17391 / accepted18414 / held1023;取消接收18414B,关闭恰768B,in_flight0、retained15。close 的实际唤醒为 cancelled,最终状态为 stopped,二者分列。 + +同源码完整 CTest 为54/56,465.08秒:`candidate_shell_tui` 的六项中 Vim stage59 失败,其余五项通过;`shell` 聚合触及原180秒期限,已记录 resize/resize-close43、main第三轮7、ui第三轮52。聚合中单窗口粘贴两轮和 EOF/无GO反例均已完成并通过;负例的产品运行仍返回2、接收恰768B、Job0/desktopgone,未因清理转绿。未结束的 shell 项不能算通过。 + +内部 skip 也保留:可选 Rust 对比/real-app 工具未构建、托管实际 CF/IME 保护、原版失败注入 opt-in 及私有站点 OpenClipboard 权限失败。CTest 条目通过不表示其中被跳过的场景通过。#51/#52/#63、真实系统剪贴板/IME、实际呈现、长期资源、正式性能及产品核心/后端选型仍需各自完成。自动化使用自有非输入桌面,不要求操作用户窗口。 + +```powershell +cmake --build build/candidate --config Release +ctest --test-dir build/candidate -C Release --output-on-failure +``` + +复验前按贡献指南显式选择 `.4` 与固定官方后端,准备固定 Vim 的测试进程 PATH;结果同时记录二进制/依赖哈希。单独复验关闭查询可用 `ctest --test-dir build/candidate -C Release -R '^candidate_reply_close$' --output-on-failure`。完整回归的失败不会因局部修复通过而被忽略。 diff --git a/docs/research/ui-paste-fence.md b/docs/research/ui-paste-fence.md new file mode 100644 index 00000000..704589d5 --- /dev/null +++ b/docs/research/ui-paste-fence.md @@ -0,0 +1,50 @@ +# 未完成 UI 粘贴的确定性取消与关闭 + +对应 [#53](https://github.com/JavaZeroo/termforge/issues/53),属于 [#50](https://github.com/JavaZeroo/termforge/pull/50) 的实验后端整合。实现源 `a15eb7f67315fb53c9d66b9c5a4424e13511a311` 的单窗口两轮取消/关闭及控制故障检查通过,**该源码的完整八会话仍失败**。后续在 `eae4b6a` 上通过两轮原 data-only 合同,见[行键成本与关闭回复修复](resize-replay-cost.md);本页保留修复前证据。[固定源码、二进制、原始记录哈希与逐字段结果](../../experiments/shell/results/2026-10-26-ui-paste-fence/validation.json)分列原 red、针对性验证与整体验证,不能互相替代。 + +## 原失败与修改 + +在 `.4` 候选与官方 ConPTY `1.25.260930003`、Console width flags24 的联合构建上,原场景两次被正确拒绝:一次到动作前已 `sent=accepted=total=3000000`,另一次在 receiver gate 前就 completed。这说明原夹具不能稳定观察未完成期,不能据此认定无栅栏的产品取消失效。 + +`ShellWindow` 现在允许自有测试预配置单次 generation 与绝对期限。真实 `PasteTransfer` 创建后、`InputQueue::begin_paste` 唤醒 writer 前完成 fence 绑定;普通产品请求仍默认关闭。writer 沿原取块、实际发送、写确认和释放路径工作,达到原 16KiB 门槛后只持住一个尚未提交的真实块。 + +先只增加栅栏、保持原 UI 直接 `transfer.cancel()` 时,场景在原 35 秒期限失败;改为真实 Escape 调用 `input_.cancel_paste()` 后,同一测试两轮通过。该入口通知等待中的 writer,允许已领取块完成真实发送;取消前没有成功 GO。关闭仍走既有 cancel、stop、Session 回收路径。 + +原 100 万个汉字、3,000,000B、768B 接收检查点和 flood 不变。只有同时观察到 held、实际文件 checkpoint、实际输出 flood 和另一会话继续响应,才执行动作。单窗口的另一会话在 held 后执行独立 echo;八会话检查另一后台会话在 held 后继续消费输出。两者的响应证据不同,不称为同一种输入延迟测量。 + +## 控制协议和证据 + +测试控制端通过真实匿名 Win32 管道发送 generation/GO、读取应答;两个端点在同一进程,不是外部监督进程断连验证。UI 正例先验证错误 generation 被拒绝且仍 held,随后执行真实 Escape 或关闭。纯协议测试另覆盖未 held、匹配 GO、重复 GO、八条请求/应答积压及第九条拒绝。 + +EOF 负例实际关闭写端,并由 `ReadFile` 确认 `ERROR_BROKEN_PIPE`;无 GO 负例使用单独的 2 秒故障期限。两种真实 UI 场景均保持失败返回 2,writer 释放 payload,receiver 仍恰为 768B;Job0 与 desktop 回收不会转化为成功粘贴。正例原期限仍为 UI 35 秒、外层 40 秒、receiver gate 15 秒;八会话仍为 UI 70 秒和 fixture 55 秒。 + +`CreatePipe` 的请求大小只是建议,因此构造时通过 `GetNamedPipeInfo` 检查实际 incoming server buffer 足以容纳整个 128B 请求/192B 应答预算,不能直接把 4096 请求值当作实测容量。见 Microsoft 的 [CreatePipe](https://learn.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-createpipe) 与 [GetNamedPipeInfo](https://learn.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-getnamedpipeinfo) 合同。 + +关闭可能先由 cancel 唤醒,再由 stop 改变最终状态。现在在 CV 返回时固定实际退出原因,并分别记录 `exit` 与 `final_state`;最新两轮 close 为 `exit=cancelled / final_state=stopped`。旧 `62226af` 记录的 `exit=stopped` 只是最终状态,不作为实际唤醒原因证据。 + +| 动作 | 动作前 sent / accepted / held bytes | 动作后与独立 receiver | +|---|---|---| +| Escape,两轮 | 17391 / 18414 / 1023 | cancelled;sent=accepted=received=18414;in_flight0、retained15 | +| 关闭,两轮 | 17391 / 18414 / 1023 | receiver 恰为768;in_flight0、retained15;已提交块仍按真实计数记录 | + +## 未完成的组合出口 + +两次带采样八会话都完成了上述两项粘贴动作,但后台整体消费完成分别约为 51.158、52.546 秒;close 前分别约为 61.806、63.096 秒。前台 B fixture 已按原 55 秒期限退出,最后一个 `!` 无法收到,UI 在 stage45 期限失败。原始状态、字节和回收结果均保留。 + +同一最终代码关闭资源采样的诊断仍失败:后台完成 50.262 秒、close 前 60.948 秒。因此不能把采样器认定为这一失败的唯一原因;该单变量运行也不替代带采样组合验收。候选适配、消息循环和宿主负载成本仍需分别定位,不延长原期限或减少后台负载。 + +`62226af` 的完整 CTest 为52/55:Vim 不在当时 PATH、八会话 stage45、shell 聚合180秒期限分别保留;shell 中另有 resize43、main7、ui52 的失败,不归因于粘贴修复。最终唤醒原因与容量修正后,3/3 针对性 CTest、两次完整单窗口正例及 EOF/无 GO 负例通过。随后仅在测试进程 PATH 补齐固定 Vim9.1,原入口再次在 stage59 失败,resize 命令进入插入文本;这与环境准备失败分列,#52 继续开放。其他配置、托管系统剪贴板/IME、呈现与 WindTerm 性能等价均未由这些结果验收。 + +## 复验 + +按贡献指南准备依赖,显式选择候选及固定官方后端后: + +```powershell +cmake --build build/candidate --config Release --target termforge_shell shell_test_launcher sender_fence_test sender_fence_pipe_test +ctest --test-dir build/candidate -C Release -R '^(sender_fence|sender_fence_pipe|paste_fence_evidence)$' --output-on-failure +$env:TERMFORGE_BIN_DIR = (Resolve-Path build/candidate/bin/Release).Path +python -m unittest experiments.shell.test_shell.ShellTests.test_paste_confirmation_and_hidden_target_preserve_visible_focus experiments.shell.test_shell.ShellTests.test_paste_control_eof_remains_failure_after_cleanup experiments.shell.test_shell.ShellTests.test_paste_missing_go_remains_failure_after_cleanup -v +python -m unittest experiments.shell.test_workflow_sessions -v +``` + +最后一项保留真实失败出口。测试使用自有非输入桌面,不要求操作用户窗口;完整 R2 与产品后端选择仍由各自合同约束。 diff --git a/docs/research/vim-msys-input-boundary.md b/docs/research/vim-msys-input-boundary.md new file mode 100644 index 00000000..9df5b4ec --- /dev/null +++ b/docs/research/vim-msys-input-boundary.md @@ -0,0 +1,41 @@ +# Vim resize 后 Ctrl-O 的输入边界 + +[#52](https://github.com/JavaZeroo/termforge/issues/52) 的原固定运行库 GUI stage59 验收仍未完成。本文的有界运行时记录将捕获到的失败定位在 MSYS 控制台事件到 `read(0)` 的转换:TermForge 成功写出完整 93 B,原生输入也包含 Ctrl-O,但 Vim 收到的读结果仅剩其后 92 B。本文记录诊断,不改变固定应用、输入、期限或验收合同;后续[隔离运行库修补实验](vim-msys-runtime-prototype.md)单独记录重建基点 red 与修补四轮 green,不替代原固定目标验收。 + +## 固定身份与观测范围 + +基点 `44ea45b` 的产品代码与 `c662011` 相同;候选 `termforge.5`、官方 ConPTY `1.25.260930003`、flags24。固定 MSYS Vim 9.1 patches 1–532 的 SHA-256 为 `2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a`,MSYS DLL 文件为 `3096d2ba9be20e90be1399edd391bac65d84bc387f5a419b502c9b326081930f`,对应公开源码 `2e2ef940151485490aff0c7b00c00965ef7a71a4`。 + +临时诊断程序 SHA-256 为 `73472864e5aa291704917812ff1848f7a59be6e5f30c41f6a613e3fc18c740d4`。仅在原 VimEnter READY 和 `[New]` 就绪后,从会话自己的 Job 查询唯一固定路径 Vim,附加 REA/Frida;附加完成后继续原 `i` 输入。该握手包含在原25秒场景期限内,外层仍40秒,Vim脚本、尺寸、93 B命令和原精确断言均保持。探针记录实际 API 参数与返回,不改输入字节、应用数据缓冲区或返回值;Frida安装代码钩子,初始调度及观察开销仍会影响运行。 + +首批最多4轮,出现原 stage59 与诊断成功后停止,实际为两红一绿。随后为核对具体调用点,另设最多2轮、首次原失败或其他失败即停止的批次,实际1轮原 stage59。第二批核验加载模块路径、PE时间戳、COFF函数位置及4个入口的实际32 B前缀,然后观察两个函数的进入/返回;它不是新的修复方案。 + +每轮上限512条事件,每次原生调用最多256个记录,每次 `read` 最多512 B;四轮均未截断。全部原件、工具完整 Evidence、源代码补丁与二进制留在本地,公开[白名单时间线及哈希](../../experiments/shell/results/2026-10-27-vim-msys-input/validation.json)。所有运行均原期限内结束、外层 Job active0/terminated0、私有 desktop 已回收。 + +## 直接观察 + +三次红例中,writer 都一次成功写出93 B,包括开头 `0f`。原生 `ReadConsoleInputW` 可看到该字符;之后的 MSYS `read(0)` 只返回 `:call writefile(... )` 对应的92 B。原 InsertCharPre 文件记录冒号及命令进入插入内容,resize事件文件为空,原场景在stage59失败。 + +核对调用点的红例具有以下顺序。线程名称仅为该次运行的别名,序号对应公开JSON;没有将不同进程时钟拼成耗时测量。 + +| 序号 | 实际事件 | +|---|---| +| 15–17 | T1进入 `process_input_message`,Peek得到两个resize事件,进入 `send_winch_maybe` | +| 18 | T3从 `cons_master_thread` 调用 Read,取走两个resize事件 | +| 19 | T1的 `send_winch_maybe` 返回true | +| 20–21 | T1仍在 `process_input_message` 中,Read清理1个记录,实际取走的是新到的Ctrl-O;随后返回 `input_winch=3` | +| 22–27 | 下一次处理从冒号开始,最终 `read(0)` 交给Vim的内容为92 B,没有Ctrl-O | + +原生Read的返回地址由DLL内COFF函数边界独立映射;函数进入/返回记录同时覆盖了这段执行。上述三层丢失假设中,“写入之前或原生输入之前丢失”与“Vim已收到但忽略Ctrl-O”不符合这些红例,丢失发生在已观测的MSYS转换边界。 + +首批绿例中,T1先实际读走第一个resize事件;另一个线程才移除剩下的resize并写回93个键盘记录。随后MSYS完整返回93 B及退出命令,原写盘、resize文件、InsertLeave/Enter、主屏恢复、回复、退出与回收检查均通过。它是带探针的一次原断言成功,不是修复后的两轮验收。 + +## 源码解释与未完成项 + +固定源码的 [`send_winch_maybe`](https://github.com/git-for-windows/msys2-runtime/blob/2e2ef940151485490aff0c7b00c00965ef7a71a4/winsup/cygwin/fhandler/console.cc#L935) 在发送SIGWINCH时临时释放、再取得 `input_mutex`;[`process_input_message`](https://github.com/git-for-windows/msys2-runtime/blob/2e2ef940151485490aff0c7b00c00965ef7a71a4/winsup/cygwin/fhandler/console.cc#L1124) 先Peek并处理旧快照,再按旧数量Read清理。同期 [`cons_master_thread`](https://github.com/git-for-windows/msys2-runtime/blob/2e2ef940151485490aff0c7b00c00965ef7a71a4/winsup/cygwin/fhandler/console.cc#L363) 可以移除resize并写回键盘记录。由此推断旧快照在释放锁期间失效,与实际调用顺序吻合;本诊断批次没有修补后的因果红绿,后续独立实验见上文链接,不混用其运行身份。 + +这个释放锁的代码来自[避免less信号处理longjmp导致死锁的上游修正](https://github.com/git-for-windows/msys2-runtime/commit/76e1edeb27a573a955ebf3ae5a7a7fd1a75b290f)。后续方案必须同时保留这项约束,不能简单删除解锁,也不能补发Ctrl-O、延长等待、换应用或跳过原断言来结项。可继续准备隔离的最小运行库修补与真实输入回归;外部应用或运行库升级的诊断结果不能自动替换原固定验收目标,正式兼容方案另行提出。 + +REA provider本身没有绑定目标文件身份、平台或版本,这些字段及限制原样保留;文件哈希、脚本报告的平台、第二批加载模块与入口字节核对是另外的证据。进入附加前已在执行的调用不在覆盖范围内;原 `i`、完整标记和失败命令边界均已捕获。没有追溯归因未保存原生输入的历史失败,也没有推出默认/system、其他MSYS版本、WindTerm或性能结论。 + +临时C++改动已按基点字节恢复,原工程重建成功,工作树没有产品或测试改动。重建EXE为 `b061934e08561a7bc2e0dc2773412ef3d900e2728267ce1d5c54be5ca6ad8515`,与探针及探针前EXE各自分列,未声称哈希相同或重新完成全量回归。#52、#47和Draft #50继续开放;[native目录复用](vim-fixture-isolation.md)已修的结论保持独立。 diff --git a/docs/research/vim-msys-runtime-prototype.md b/docs/research/vim-msys-runtime-prototype.md new file mode 100644 index 00000000..cdf34780 --- /dev/null +++ b/docs/research/vim-msys-runtime-prototype.md @@ -0,0 +1,50 @@ +# Vim/MSYS resize 输入前缀修补实验 + +固定公开运行库源码的最小补丁,使隔离环境中的原 GUI Vim 方法连续两批、每批两轮通过;同条件未修补的重建 DLL 首轮复现 stage59。这支持此前捕获的“SIGWINCH 解锁期间旧 Peek 前缀失效”解释。**[#52](https://github.com/JavaZeroo/termforge/issues/52) 的原固定运行库验收仍未完成**:本次没有修改 TermForge 产品、测试或正式兼容策略,也没有把实验 DLL 放入产品包。 + +## 固定身份与实验边界 + +TermForge 基点 `ed55a8758423b3273fbd98f07e0bfd77d88e46ac`,产品代码与 `c662011` 相同;候选 `0.26.1-dev+termforge.5`、官方 ConPTY `1.25.260930003`、flags24。所有 GUI 样本使用同一个无插桩 EXE,SHA-256 `7f26395942f107297565f50402568650e1e17c5eb23924bee1bfb02c50c60d16`。本机 Windows 11 x64,批次完成后查询系统版本为 `10.0.26200`;没有发布主机名。 + +固定 Vim 9.1 patches 1–532,EXE SHA-256 `2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a`。Vim 与四个相邻 DLL 从既有安装按哈希复制到隔离目录;各变体使用同一个活动路径,只有 `msys-2.0.dll` 切换,其他四个文件保持原字节。没有复制 Vim runtime 配置目录。每次切换前检查上一方法的自有 Job 已清空、私有桌面已释放;批次后复核既有安装的五个文件未变。 + +| 运行库变体 | SHA-256 | 实际结果 | +|---|---|---| +| 隔离原 DLL | `3096d2ba9be20e90be1399edd391bac65d84bc387f5a419b502c9b326081930f` | 一次原两轮方法:先通过、后 stage59 | +| 固定源码未修补重建 | `d9e490fdbe31c233eab6578168fb4f2bda84f53252be3898d0cdd0e8610db721` | 首轮 stage59,立即停止 | +| 同条件修补重建 | `dd792766fa976b031cbff0540744b6f3d2b3fc0d695ed764a01457b65eab6258` | 两次原两轮方法:四轮通过,达到预定上限后停止 | + +本批未附加 Frida,也未采集实际加载模块路径或新的输入 API 轨迹。文件身份和隔离路径是本批证据;此前的调用边界证据仍属于独立的[输入边界诊断](vim-msys-input-boundary.md),不能混写成这批运行的调用记录。 + +## 原方法、停止条件与结果 + +直接调用现有 `CandidateTuiTests.test_real_fullscreen_editor_and_cursor_reply`,每次方法原有两轮,保留原输入、Vim 脚本、事件文件、精确断言及 25 秒内层 / 40 秒每轮外层期限。先限定原 DLL 一次方法;未修重建 DLL 最多两次方法,首次 stage59 或其他失败立即停止;只有重建基点出现原 stage59 才执行修补变体,最多两次方法,任何失败即停。实际共四次方法、七个 GUI 样本,没有额外 GUI 重试。 + +两个失败均为原 stage59,外层未超时,命令进入插入内容;`candidate-insert-log.txt` 均为相同的 221 B,resize 文件为空。两个失败的 `candidate-input.bin` 也为空、未完成刷新,**不能将其视为完整输入轨迹或“未收到输入”的证据**。原测试输入未改由源码身份保证,实际 API 字节链路只由前一诊断批次证明。 + +四轮修补结果通过原就绪、进入/离开插入模式、编辑、60×12 resize 文件、写盘、退出、主屏恢复、独立 child 尺寸及 CPR 回复检查;`presented_done` 仍为 `null`。原 DLL 的首轮也通过,但不覆盖其后失败。七轮均无外层超时,Job active/terminated 为 0,desktop gone。导出时仅离线重放原断言及验证器,复核保存的结果和文件哈希,没有重跑 GUI。 + +## 修改机制与尚未覆盖的路径 + +此前记录显示:`process_input_message` Peek 到 resize 后调用 `send_winch_maybe`,后者为信号递送临时释放 `input_mutex`;另一线程可以消耗 resize。旧调用恢复后按旧数量清理队列,取走新到的 Ctrl-O。这是已捕获失败的调用顺序,不能追溯填补没有原生输入记录的历史失败。 + +[研究补丁](../../research/msys-runtime-window-prefix/README.md)仅修改 `winsup/cygwin/fhandler/console.cc` 的 `WINDOW_BUFFER_SIZE_EVENT` 分支,12 行新增、6 行删除:在输入锁仍保护旧 Peek 前缀时,先 `ReadConsoleInputW` 消费已处理前缀并调整 `num_processed`;再保留原 `send_winch_maybe` 解锁、SIGWINCH 与再加锁,返回现有 read 循环,下一次重新 Peek。即使尺寸未实际变化也结束当前快照处理,后续输入进入新一轮。 + +没有删除为 less 信号处理器 longjmp 保留的解锁。结构保留不等于已做实际 longjmp 回归;`MOUSE_EVENT` 中的同类信号路径、读取失败注入、其他应用和正式兼容/分发策略尚未验证。补丁沿用既有 `ReadConsoleInputW` 错误处理,未声称修复这些边界。 + +## 构建条件与来源 + +- 运行库:[固定 MSYS 源码](https://github.com/git-for-windows/msys2-runtime/tree/2e2ef940151485490aff0c7b00c00965ef7a71a4),提交 `2e2ef940151485490aff0c7b00c00965ef7a71a4`。未修补基点 tracked 源码干净;修补变体仅上述文件有 diff,公开补丁已做 `git apply --check` 并比对应用后的源码哈希。 +- 独立 Git SDK:提交 `36b102843d99c4993084b29d839dc6f5ef4db2f9`,构建依赖只装入私有 SDK。完整[包版本清单](../../research/msys-runtime-window-prefix/build-packages.txt)随研究记录保存;其中 GCC/G++ 16.2.0,GNU C/C++17,binutils 2.47、make 4.4.1。 +- Win32 头文件:SDK 提交 `eb069c08fe8ef4d2f19dc6b99c4816a4c51fd2ae`(2024-07-10)的 `usr/include/w32api`,包版本 `12.0.0.r0.g819a6ec2e-1`;同时固定裸包含与 `w32api/` 前缀包含路径。不能仅设置顶层 `CPPFLAGS` 后假定子目录采用了旧头文件。 +- 配置保留 `--disable-dependency-tracking --disable-doc --disable-dumper --with-msys2-runtime-commit=2e2ef940151485490aff0c7b00c00965ef7a71a4`,生成构建文件后在目标 `winsup/cygwin` 目录构建 `all`。C 使用 `gcc -std=gnu17 -Wno-error=old-style-definition`;C++ 使用 `g++ -std=gnu++17` 和 `-O2 -g -Wno-error -Wno-narrowing -Wno-use-after-free`。最终 make 显式传入两个旧头文件的 `-isystem` 路径,`-j2`,每次构建上限 900 秒。构建准备失败和编译警告原件保留在本地,不计 GUI 结果。 + +这是新工具链重建实验,不是官方 2024 DLL 的逐字节复建。两个重建变体的 310 项构建对象清单具有相同键集合,六项哈希不同:`fhandler/console.o`、`libdll.a`、`msysdll.a`、`new-msys-2.0.dll`、`version.o`、`winver.o`,包含再生成的版本对象。只能声称一处主动源码修改,不能声称二进制只有一个函数或一个文件不同。 + +公开源码补丁遵循固定上游的 LGPLv3-or-later 与 `CYGWIN_LICENSE` 中的 Linking Exception;完整许可及修改归属见[来源说明](../../research/msys-runtime-window-prefix/README.md),不套用项目 MIT。它是 MSYS/Cygwin 研究材料,不属于 WindTerm 公开或逆向源码。 + +## 证据与结论限制 + +[白名单验证记录](../../experiments/shell/results/2026-10-27-vim-msys-runtime-prototype/validation.json)包含源码、EXE/DLL、补丁/许可、对象差异、全部七轮结果、原文件哈希与回收状态;DLL、原始终端输出、个人路径及完整工具日志仅本地保存。 + +本实验为原诊断补充了重建基点 red 与修补变体四轮 green,但没有重新执行完整 57 项 CTest;该批没有运行 WindTerm,也没有形成性能或普遍可靠性结论。后续[原版有限对照](vim-windterm-reference.md)单独记录原 Vim 编辑、原生尺寸差异及 CPR 模式变体,不能与本批拼成完整通过。原固定运行库下的完整官方 56/57 结果保持不变;#52、#47 和 Draft PR #50 的正式出口继续开放,不能用替换外部应用 DLL 自动关闭原合同。 diff --git a/docs/research/vim-windterm-reference.md b/docs/research/vim-windterm-reference.md new file mode 100644 index 00000000..6da9363f --- /dev/null +++ b/docs/research/vim-windterm-reference.md @@ -0,0 +1,52 @@ +# WindTerm 2.7.0 的 Vim、原生尺寸与 CPR 有界对照 + +固定原版在一次观察中完成了原 Vim 的插入、60×12 resize、原 93 B Ctrl-O 命令、写盘和返回主提示符。后续原生尺寸与 CPR 检查暴露了入口差异:另一份原版样本的缓冲区为 **60×3000**、可见窗口为 **60×12**;未改动的 CPR 入口没有观察到回复,而显式启用 VT 输出的独立变体得到回复并正常退出 shell。 + +四个样本各自有边界,不能合并为一次完整 TUI 通过。没有修改 TermForge 产品/测试源码,没有采用修补 MSYS DLL 或选择 WinPTY 为产品后端。#52 的原固定运行库兼容方案仍未完成。 + +## 身份、隔离与停止条件 + +- 原版:官方 WindTerm 2.7.0 Windows x64,EXE SHA256 `7b10531dccc7cd614ae559f36f1ef518e0c96335637431b4646354823b2804d0`;每次复制的 4,047 文件清单 SHA256 `e459adf2f12adb6a1b7f55e66a9da1c22794185e66e848057d21e0c60d669203`,沿用[既有准备守卫](../../research/ui/launch.py)。原版 cmd 横幅记录 Windows `10.0.26200.9457`。 +- Vim:与[隔离运行库实验](vim-msys-runtime-prototype.md)相同的固定 Vim 9.1 patches 1–532,EXE SHA256 `2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a`;使用未修补 MSYS DLL,SHA256 `3096d2ba9be20e90be1399edd391bac65d84bc387f5a419b502c9b326081930f`。配置 PATH 指向冻结的原始五文件副本;本批没有观察实际加载模块路径。 +- 公开自有夹具按源码基点 `b60cd65b9fa6af724279780faa8d78847eb5cef0` 核对。`entry` 只固定文件哈希,不补造当时未记录的 HEAD;其余三份计划明确记录该提交。原 `candidate-vim.vim` 334 B,SHA256 `386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797`;原尺寸/CPR helper EXE 分别为 `a7a45db0976dd1e157871b6a9b50b1362ceb8cb8ea604470e58791920805d408` / `691b440e9c500c76c1c09c448aafbe2316793bf341ffe69bbc2bf70e41be64cc`。 +- 每次只创建一个合成本地 Shell 配置、独立 HOME/cache、非输入 window station 和自有 Job;不操作个人剪贴板、显示设置或 WSL。REA CLI 固定 6.7.0,使用既有 `instrument-with-frida attach` 入口。 +- 每个问题在启动前各声明最多一次运行,合计四次,均已停止。CLI 采集 30 s、外层监督 45 s;第一份入口观察的脚本期限为 28 s,其余为 25 s,另有晚 0.5 s 的脚本兜底。后续样本针对新的尺寸/模式问题,不重跑前一场景取绿。 + +## 四个独立样本 + +| 样本 | 实际结果 | 未覆盖或失败 | +|---|---|---| +| `entry`:入口可行性 | 实际 `winpty_open`、`winpty_spawn`、91×23 `winpty_set_size` 调用;原 Vim 写出 READY、进入插入并逐字接收标记 | Vim 由 `cmd /k` 直接启动;不含 resize、写盘、CPR、正常退出,结束由自有回收完成 | +| `vim`:原输入与真实窗口 resize | 从 cmd 提示符键入原启动命令;READY 和 `[New]` 后插入;原 93 B 命令写出 `60x12`;原 `Ctrl-O:wq` 保存并恢复 `TF>` | 原尺寸门槛未通过,脚本在 stage56 超时;CPR 和 shell exit 尚未运行。shell-handle 观察器存在一次参数类型错误,正常退出没有证据 | +| `native`:独立尺寸/CPR | 原尺寸 helper 输出 `TF_SIZE_60x3000`;独立 `GetConsoleScreenBufferInfo` 同时记录 buffer 60×3000、window `[0,0,59,11]`、viewport 60×12 | 原 `dwSize=60×12` 预期为 false。CPR 文件为空,脚本在 stage52 超时,query 进程退出码未观察;未发送 `exit 37` | +| `mode`:独立 VT 输出变体 | 读到输出模式 3;仅开启 VT 输出后模式为 7,未改动的 CPR helper 返回 0,文件为 `ESC[7;1R`;模式恢复,shell 自然退出 37 | 新增模式包装器属于不同配置,不代表前一原入口已通过;没有运行 Vim,CPR 的实际生产方未跟踪 | + +`vim` 的窗口准备先在 shell 中校准像素尺寸:1360×860/91×23 → 895×563/52×12 → 990×563/60×12,再恢复 1360×860 后启动 Vim。插入标记之后,只请求一次 990×563,观测到实际 WinPTY 60×12 调用成功及 UI capacity 12。该几何和 Qt 事件调度不同于 TermForge,不能用它比较竞态概率、输入延迟或性能。 + +## Vim 文件的独立核对 + +`vim` 样本的输入日志 **115 B** 与以下序列逐字节相同:`i`、`TF_CANDIDATE_TUI`、原 93 B resize 命令、`Ctrl-O:wq\r`。插入事件文件 **58 B** 精确符合 `INSERT`、逐字符、`LEAVE / INSERT / LEAVE`;保存文件 **17 B** 为标记加 LF,resize 文件 **5 B** 为 `60x12`。恢复主提示符来自该样本的 UI 模型观察;实际呈现端点保持 `null`。 + +该样本的输入命名管道成功匹配,但 WriteFile 探针没有记录调用;这不能解释为没有输入。完整 Vim 日志直接证明上述应用接收序列。`winpty_spawn` 的 shell-handle 观察器向 Frida 传入了 Boolean,出现 `expected an integer`,后续独立样本改为整数参数;保留该错误,不补造该样本的进程退出证据。 + +这里只观察到一次完成的 Vim 编辑过程,不能证明原版不会遇到同类竞态,也不追溯归因此前未记录输入的失败。第一份 stage56 样本没有保存实际尺寸 helper 文本;后一份独立的 60×3000 结果支持尺寸区别,不能冒充前一份缺失记录。 + +## 原生尺寸与 VT 模式的解释 + +`shell_size_client` 查询的是 `dwSize`。Windows 将它定义为整个屏幕缓冲区尺寸,`srWindow` 则描述显示窗口,两者不是同一字段。[Microsoft 字段说明](https://learn.microsoft.com/en-us/windows/console/console-screen-buffer-info-str)。本批原版的 60×3000 与 60×12 是运行观察;现有 TermForge 原生缓冲区判据仍未改变,是否调整跨后端合同需明确提案及用户确认。 + +现有 [CPR helper](../../experiments/shell/query_client.cpp)设置输入的 `ENABLE_VIRTUAL_TERMINAL_INPUT`,没有启用输出的 `ENABLE_VIRTUAL_TERMINAL_PROCESSING`。Windows 文档将后者定义为输出 VT 控制序列的解析开关,并说明输入 VT 标志通常与它配合使用。[Microsoft 模式说明](https://learn.microsoft.com/en-us/windows/console/setconsolemode)。 + +`mode` 样本实际输出模式为 **3 → 7 → 3**;输入模式为 **503 → 512 → 503**。包装器只在自有控制台设置输出标志,运行相同 helper 后恢复两种模式。helper 原 5 s `WaitForSingleObject` 保留,父进程额外提供 7 s 监督以约束可能阻塞的 `ReadConsoleW`;本次没有触发监督超时。shell 退出 37 来自复制的真实进程句柄,不是回收产生的退出码。 + +这些事实支持继续核对夹具的模式前提;**前一失败样本未记录模式,不能将本次读到的 3 回填为它的实测值,也不能据此宣称已因果修复该失败**。CPR 可能由原生控制台处理,本批没有证明回复来自 WindTerm 的末端解析器。模式变体成功与原入口 stage52 未完成分别保留。 + +## 回收、公开材料与结论边界 + +四次配置检查均只含一个合成会话;Job 最终 active 均为 0,总进程数分别为 13、14、15、10,原始 terminated 计数均为 0。外层仍明确请求了终止与回收,该计数不等于所有成员自然退出;只有 `mode` 的 shell 单独观察到自然退出 37。 + +[白名单摘要](../../research/ui/results/2026-10-27-vim-native-reference/validation.json)记录每份样本的输入/工具/原件哈希、实际调用、错误、文件检查和限制。导出重新核对四份私有记录及合成文件,未重新启动 GUI。REA provider 的 subject/environment 仍为 `null`、捕获时 state 为 `running`;包身份由本地准备守卫单独补充,不能改写成 provider 自己完成了身份认证。采集结束后的自有回收另列。 + +原件和临时原创驱动保留在 ignored `local/r52-windterm-reference`、`local/r52-windterm-vim-contract`、`local/r52-windterm-native-size`、`local/r52-windterm-cpr-mode`,每处计划/驱动/参数/观察/回收可本地复核。公开摘要不含私有驱动全文或原始插桩输出,因此不是一套公开的一键复现包;不得据此扩大重复性结论。发行物、DLL、资源、绝对路径、PID/句柄及用户配置均不进入公开材料。 + +本批补充原版同 Vim 的有限行为证据,以及原生 buffer/viewport、控制台模式的真实差别。#52/#28/#56 可据此继续调查兼容方案;原固定运行库的官方完整 CTest **56/57、402.66 s、8 项内部 skip**没有重跑,也没有被这些样本替代。#47、Draft #50、完整 R2 和产品架构选择保持各自原出口,不据此采用 WinPTY、替换用户应用运行库或更改验收门槛。 diff --git a/docs/research/windterm-styled-margin-reference.md b/docs/research/windterm-styled-margin-reference.md new file mode 100644 index 00000000..10e04a00 --- /dev/null +++ b/docs/research/windterm-styled-margin-reference.md @@ -0,0 +1,53 @@ +# WindTerm 2.7.0:样式、光标与滚动区域的原版观察 + +原版的一个固定本地 Shell 样本,在同一 211B 输入之后,原生捕获和 UI 文字投影都出现了 `REGION_CIXED` 残尾。这与[源码 ConPTY 未修补版](conpty-source-margin-styles.md)的最终文字相同,区别于修补版恢复主屏滚动区域后的结果。按 [ADR-0006](../adr/0006-confirmed-project-direction.md),该修补路线现在有具体的原版行为差异;重要差异或原版缺陷修复须经用户确认,不能直接选入产品。 + +本记录是 [#56](https://github.com/JavaZeroo/termforge/issues/56) 的一次有界参考观察,不判定全部终端行为,也不定位 WindTerm 内部的根因。原版末端颜色属性仍未取得,不能与候选核心的空白格前景色差异合并为同一结论。 + +## 固定身份与执行边界 + +- 官方 WindTerm 2.7.0 Windows x64:EXE SHA `7b10531dccc7cd614ae559f36f1ef518e0c96335637431b4646354823b2804d0`,4,047 文件清单 SHA `e459adf2f12adb6a1b7f55e66a9da1c22794185e66e848057d21e0c60d669203`,由[既有准备守卫](../../research/ui/launch.py)核对。cmd 横幅为 Windows `10.0.26200.9711`,与此前 Vim 参考样本的 OS 修订号分列。 +- 自有夹具源码 `dc5c631ffdf83dfbdfcb8b359137e0d87212ac6d`;复用原 controls EXE,SHA `ca19645b65aea8ac74b56d1e59837cb7514c3acf5932d24112411725b92206d7`。只调用其原 `--client styled-cursor`,未使用源码 ConPTY host,也未改写五阶段输入或 capture helper。 +- 新建一个合成 cmd、独立 HOME/profile、非输入 window station 和自有 Job。REA CLI 固定 6.7.0,原版及驱动身份、实际调用和证据 ID 见[白名单记录](../../research/ui/results/2026-10-27-styled-native-reference/validation.json)。不接触个人剪贴板、显示设置、用户配置或日常 WindTerm 进程。 +- 执行前声明最多一次。UI 请求 1230×887 后,实际 WinPTY `set_size(80,24)`、UI capacity=24 和原生 viewport=80×24 相互核对;未使用预留的两次几何校准。原生等待 5 秒、失败清理 5 秒;独立 wrapper 最多保留最终内容 8 秒供 UI 读取。REA 30 秒、外监督 45 秒。实际仅运行一次,无重试。 + +## 五阶段的原生结果 + +源文件精确为原 211B,SHA `51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62`。每阶段同时捕获全文、完整 `CHAR_INFO` 字符/属性、绝对光标和 viewport top。 + +| 阶段 | viewport top | 绝对光标(零基行、列) | 相对窗口光标 | 内容与属性 | +|---|---:|---|---|---| +| before | 4 | 6,5 | 2,5 | `TOP_FIXED / REGION_A / REGION_B / BOTTOM_FIXED`,初始属性 7 | +| alt | 0 | 4,7 | 4,7 | `ALT_OUTSIDE`、第 4/5 行 `ALT_C / ALT_D`;两行完整属性 `0x52` | +| restored | 4 | 6,5 | 2,5 | 原主屏内容恢复,属性保持 | +| after-write | 4 | 6,6 | 2,6 | 第 3 行变为 `REGIOM_B`,写入的 M 为 `0x14` | +| final | 4 | 9,8 | 5,8 | 保留 `REGION_A / REGIOM_B`,出现 `REGION_CIXED / REGION_D / SGR_DONE`;后三行前 8 格为 `0x14` | + +wrapper 在运行前后读到主缓冲区均为 80×3000、可见窗口均为 80×24;开始窗口 `[0,0,79,23]`,结束为 `[0,4,79,27]`。before 阶段本身已经位于 top=4,不能拿 wrapper 启动前的 top=0 回填五阶段记录。 + +直接套用原 ConPTY 判据时,绝对光标和 top 的区别使 before/restored/after-write 也失败,final 另有文字和属性差异;**原判据整体保持失败**。仅为解释来源,将光标行减去各自 top、将 top 投影为零的离线诊断,与未修补版五阶段预测全部吻合。文字、字符和属性没有修改。这是跨缓冲区布局的解释,不是产品验收,也没有改写原判据。 + +最终六行的差别可直接比较: + +| 本次原版原生捕获及 UI 文字尾部 | 同源修补版原生 final | +|---|---| +| `TOP_FIXED` | `TOP_FIXED` | +| `REGION_A` | `REGION_C` | +| `REGIOM_B` | `REGION_D` | +| `REGION_CIXED` | `BOTTOM_FIXED` | +| `REGION_D` | 空行 | +| `SGR_DONE` | `SGR_DONE` | + +UI 结果来自收到 `SGR_DONE` 后、释放 wrapper 等待前的 `activeText.lineText`,只公开其中六行合成文字。它不是截图、像素呈现、完整 screen-state 或历史隔离证明。没有捕获该次 WinPTY 到末端的运输字节,因此残尾在哪个原版组件产生仍未定位。 + +## 颜色、回收与后续决定 + +本次只枚举了已暴露的样式/光标接口名,没有读取末端逐格颜色或终端光标值;这些字段仍为 `null`。原生 `CHAR_INFO` 的完整颜色不能代替末端样式。该路径最终没有产生修补版所预期的两整行红字蓝底空白,因此也不能据此回答候选 `.5` 的 144 格空白前景色是否符合原版。 + +原生客户端自然退出 37,shell 后续也观察到自然退出 37。输出模式实测为 3→7,初始代码页为 936;wrapper 对模式和代码页的恢复 API 均返回成功,未再查询恢复后的值。外层仍按原启动器主动回收自有进程,Job active0/total11/terminated0;该计数不证明所有成员自然退出。配置检查仍为一个合成会话。 + +REA 无消息截断、无脚本错误或清理错误;provider 的 subject/environment 为 null,捕获时 state=running。包身份由本地守卫另行核验,停止后的自有回收另列,不补造 provider 已认证身份或自然退出的结论。 + +私有计划、驱动、五阶段捕获和插桩原件位于 `local/r56-windterm-styles/reference-0` 及其上级目录。白名单导出重新核对脚本、清单、EXE、原生文件、source 和 UI 合成尾部,无新增执行;公开摘要不含发行物、原始插桩、绝对路径或用户状态。私有驱动没有发布,因此本记录不是公开的一键复现包。 + +当前可确认的是一个具体原版行为:本地 Shell 路径在该输入下保留旧区域的文字结果。后续在 #56/#34 明确记录“保持该原版行为”与“修正主屏区域恢复”的产品取舍及影响,遵守原版优先和用户确认权限;实验补丁继续保留为候选,不将新观察改写成自动采用修复的依据。其他原版场景、末端颜色、历史/resize/API、完整 R2 和性能仍未验收。 diff --git a/docs/research/workflow-record-checkpoint.md b/docs/research/workflow-record-checkpoint.md new file mode 100644 index 00000000..61ae64c5 --- /dev/null +++ b/docs/research/workflow-record-checkpoint.md @@ -0,0 +1,45 @@ +# 替换会话的完整记录检查点 + +原八会话 data-only 工作流的 `cycle-eight` 快照必须在替换会话仍持续输出时取得,并满足既有精确文字、身份及回收断言。[#87](https://github.com/JavaZeroo/termforge/issues/87) 修正的是合成测试的消费与采样协调;正常产品输出默认不启用检查点,Python oracle、生产输入和期限保持不变。 + +## 失败及因果证据 + +历史两份失败在 F5 第 127 条记录只得到 12 个点,独立 oracle 要求 35 个点;源已有 16384 B,队列还有 8217 B。原件仍可离线重现 `replacement core payload/role mismatch`。那两次没有保存后续 native 运输,不能追溯宣称已证明其完整性。 + +原 stage35 只要求 source≥4096 B 和任意编号前缀,而消费者一次最多取 8192 B。实际 READY 前缀 25 B 与两个 4096 B 源块可以合并为 8217 B;重分片回放在 8192 B 处产生相同的第 127 条半行,余下 25 B 补齐它。这证明了机制,不等于重现历史 GUI 调度。最初四次有界活体观察均未捕获半行,这些未复现结果单列保留。 + +随后用同一诊断 EXE 做受控旧判据/新判据对照:在第一轮 F5 替换输出前保持消费者,源到达 16384 B 后只放行一次真实 8192 B 消费;保存状态,再继续原工作流。没有改生产字节、4096 B 分块、20 ms 间隔、32000 条/2048000 B、五轮替换、精确 oracle 或期限。 + +- 旧判据在第 117 条中途采样,原 oracle 真红。相同 session 后续实际 39 B 补齐该条,运输前缀保持;独立候选核心回放得到完整原文字。 +- 仅被动等待空行的中间方案仍失败:持续消费跳过边界,直到生产结束才采样,原 oracle 报 `replacement output not active`。这不是可接受修复。 +- 新检查点在实际 LF 后持有快照,通过原 oracle;该检查点源为 241664 B,小于 2048000 B,`fixture_running=true`、`output_done=false`。同 session 的实际后续 41 B 补齐受控半行。两次运行各有自己的真实运输,未声称它们逐字节相同。 + +诊断记录上限为 128 KiB/1024 events。新方案的后续 collected 运输超出字节上限,但所需补齐字节在保存的前缀内;held/checkpoint 未溢出。这里只证明该前缀内的补齐,不声称完整后续运输已捕获。受控消费者调度仅用于因果实验,最终原场景回归移除诊断调度和记录。 + +## 最终机制与边界 + +`OutputRecordCheckpoint` 仅由 UI 线程显式启用。已有空行边界时立即保持;否则每次取一个真实队列字节并交给原核心,遇 LF 后保持,最多读取 256 B,并受原场景 70 秒总期限约束。两个替换会话各自就绪后才采集同一检查点,随即释放,恢复原 8192 B 消费块及 65536 B/4 ms tick 总预算。底层队列仍有界。 + +检查点不验证或修补正文:完整的 `BROKEN` 编号行也会就绪,再由原 Python oracle 拒绝。空启动、只有 READY、CR 无 LF、当前半行、只有其他角色等不会被完整记录判据接受。关闭会解除保持,关闭中或无有效 HWND 的对象拒绝重新启用,避免阻碍排空及回收。 + +`workflow_checkpoint_test` 在实际默认核心和候选 native-viewport 核心验证 8192/8217 分片、后续补齐、保持/释放及边界负例;最初红测试和最终测试保留相同触发用例,最终另增边界与状态用例,不能称整个测试源码相同。`runtime_observation` 用自有非输入 desktop 验证默认关闭、显式启用、关闭解除和关闭后拒绝重新启用。普通 cmd 回显不保证运输中有字面 LF,因此一个依赖此假设的临时关闭测试已排除;最终真实关闭测试只宣称关闭时已 armed,未宣称它必为 held。 + +## 正式验证与复现 + +固定源码、EXE/依赖哈希、旧红、新绿、完整回归、内部 skip 和回收结果见[公开白名单记录](../../experiments/shell/results/2026-10-27-workflow-record-checkpoint/validation.json)。原运输、窗口路径和 desktop 身份保留本地。最终原完整八会话测试包含两个新进程、每次五轮替换;它与受控诊断运行分别记录。 + +最终源码 `c662011`、候选 `.5`/固定官方后端 flags24 的完整 CTest 为 **56/57,402.66 秒**,两轮原八会话均通过,Job active=0、desktop 已回收。唯一失败为 Vim stage59,仍由 #52 定位;8 项内部 skip 逐项列出,不算真实 CF/IME 通过。关闭 guard 的实际新用例先红后绿;红例未独立保留 EXE 哈希,该字段明确为 null,源码、相同测试、构建日志和失败日志仍在。更早 `f89b0ac` 的 57/57 只属于关闭 guard 前版本,不能拼入最终源码,也不能解释 Vim 历史失败。候选 CI 另增加该跨平台核心回归;CI 的 system 后端与本机官方配置分列。 + +在依赖和全部 helper 已构建的候选/显式官方配置运行: + +```powershell +ctest --test-dir build/candidate -C Release -R '^(workflow_checkpoint|runtime_observation)$' --output-on-failure +$env:TERMFORGE_BIN_DIR = "$PWD/build/candidate/bin/Release" +$env:TERMFORGE_EXPECT_CONPTY_BACKEND = 'reviewed-side-by-side-1.25.260930003' +$env:TERMFORGE_TEST_ARTIFACTS = "$PWD/local/workflow-record-check-new" +$env:PYTHONUTF8 = '1' +python -m unittest experiments.shell.test_workflow_sessions.WorkflowSessionsTests.test_two_fresh_owned_eight_session_rounds -v +ctest --test-dir build/candidate -C Release --output-on-failure +``` + +完整回归还需固定 Vim 在当前进程 PATH 中。官方后端、system 后端、默认核心和候选核心分别记录身份,不能互相借用结论。data-only 通过不代表真实 CF/IME、实际呈现、性能或完整 R2;#52、#63 及 #47 的其他门槛仍独立处理。 diff --git a/docs/research/workspace-native-viewport.md b/docs/research/workspace-native-viewport.md new file mode 100644 index 00000000..4c4de557 --- /dev/null +++ b/docs/research/workspace-native-viewport.md @@ -0,0 +1,35 @@ +# 工作区尺寸标记残留与原生 viewport + +[#63](https://github.com/JavaZeroo/termforge/issues/63) 的工作区 `stage52` 与主区场景 `stage7`,在保留原布局、输入、期限和精确断言的对照中,均指向底部会话的历史重排:原生尺寸标记已经正确,候选屏幕却在标记后保留旧文字。现有 [#51 的 `native_viewport` 修复](native-viewport-resize.md)覆盖这两条已复现路径;本次补充因果核验与原回归,不增加产品改动。 + +## 固定身份与原失败 + +旧源码 `188228e`、候选 `.4`、官方 ConPTY `1.25.260930003`、Console flags24 的未插桩 EXE 为 `e81d92a8c7d380d4c33639861180b04935e021bc7c1a5179197c8a9e3c83454a`。原 UI 和主区测试各运行一次,每项三轮均为前两轮通过、第三轮窄布局失败,分别停在 `stage52/client=2048x1120` 和 `stage7`。仅保留单次原窄布局 UI 场景也复现同一失败。 + +UI 内层20秒、主区内层30秒、每轮外层40秒保持。原三轮方法和两份场景源码与新联合源一致。旧二进制在本批前后哈希一致;旧失败原件保留,不用随后成功覆盖。更早 `3e5b96d` 等缺少对应运输的历史样本不追溯认定同因。 + +## 单变量对照与直接观察 + +在 `d6b3f79` 的联合源上临时增加有界 resize/feed、核心/可见快照和尺寸 helper 原生屏幕观察。每对运行使用同一个 EXE,只切换已有 `reflow_history` / `native_viewport` 策略;不清屏、不补发标记、不改变输入或等待条件。UI 与主区分别预设最多两轮,先运行旧策略;若不是原失败就停止,否则执行新策略一次,不重试取绿。 + +| 场景与会话 | 实际子进程尺寸与原生标记 | 旧策略核心 | 新策略核心及原场景 | +|---|---|---|---| +| UI 底部会话 | `169×11`,整行 `TF_SIZE_169x11` | 同一行带旧 helper 路径残尾,stage52 | 整行精确匹配,完整场景通过 | +| 主区场景的底部会话 | `169×11`,整行 `TF_SIZE_169x11` | 同样残尾,stage7 | 整行精确匹配,完整场景通过 | +| 主区场景的活动主会话 | `112×24`,整行 `TF_SIZE_112x24` | 精确匹配 | 精确匹配 | + +失败时底部 resize 请求/完成 generation 分别为 UI `6/6`、主区场景 `4/4`,没有在途任务或输入拒绝。尺寸 helper 实际查询、完整写出标记;同次 transport 含完整标记,核心与可见快照一致。因此捕获红例不符合“子进程尺寸尚未应用”或“查询/输出未送达”;主区的等待失败由底部条件触发。 + +用保存的 feed 分块和 parser resize 顺序离线回放,旧策略逐字段重现同次失败核心,新策略得到精确标记;活动主会话在两策略下均正确。这将实际运输和调度之外的策略差异独立出来。原因与 #51 一致:通用 reflow 将历史拉回可见区,与原生控制台绝对坐标布局分歧,后续局部写入留下旧行残尾。 + +UI 与主区各一红一绿的探针 EXE、helper、源码补丁、每轮原件和全部回放保存在本地;公开[白名单记录与哈希](../../experiments/shell/results/2026-10-27-workspace-native-viewport/validation.json)。resize观察上限1024事件/128KiB运输,helper最多读取100000格,各轮未截断。观测读写会扰动调度,离线回放不证明时序或性能等价。原生快照采于 helper 写出后,不等于后续窗口提交或实际呈现。 + +## 无插桩验收与边界 + +临时 C++ 按基点字节恢复后,以 `dd533878538490c2464673218ea0000c6467a495` 重建;产品源码与 `c662011` 相同。实际 shell EXE 为 `7f26395942f107297565f50402568650e1e17c5eb23924bee1bfb02c50c60d16`,与诊断 EXE 分列。原 UI 和主区三轮方法重复两批,共12次运行全部通过,包含窄布局、像素/几何负例、会话隔离、真实尺寸、焦点/关闭和 Job/desktop 回收。 + +同一构建完整 `shell` CTest 在原180秒期限内用时93.62秒完成:40项中37通过、3项按原 hosted clipboard guard 跳过。完整套件内两项工作区方法又各执行原三轮;共18份相关工作区样本均无外层超时,Job active0/terminated0、desktop已回收。其他负例保留原断言,由完整日志单列,不把预期失败记录写成正常运行成功。 + +回归入口为原 `ShellTests.test_workspace_sessions_resize_and_cleanup`、`test_main_and_bottom_sessions_focus_geometry_and_cleanup` 及 `ctest --test-dir build/candidate -C Release -R '^shell$' -V`。现有 native viewport 核心/原生合成回归继续承担该策略的防退化检查。 + +本次只闭合 #63 已复现工作区路径及完整 shell 期限;#52 GUI Vim、完整官方配置与 R2 仍未验收。历史缺少原生/运输的记录、默认/system、候选/system、实际呈现和 WindTerm 对照保持独立,不由本次推断。 diff --git a/experiments/conpty/results/2026-10-26-reviewed-backend/validation.json b/experiments/conpty/results/2026-10-26-reviewed-backend/validation.json new file mode 100644 index 00000000..c272a20c --- /dev/null +++ b/experiments/conpty/results/2026-10-26-reviewed-backend/validation.json @@ -0,0 +1,899 @@ +{ + "schema": "termforge-reviewed-conpty-integration-v1", + "implementation_commit": "5030058115739411bcc3cadc3a9f321580e0bc31", + "cleanup_and_diagnostic_source_commit": "0954fea5c20d5083839a77613d08e949113af242", + "source_hash_basis": "git blobs at cleanup_and_diagnostic_source_commit; working copy checked equal allowing CRLF normalization only", + "source_sha256": { + "CMakeLists.txt": "8672f74ee151aa0ff96c3814b0100915405ac51e5f82512376f6f6fdbe3f7a64", + "cmake/ConptyBackend.cmake": "6a9f9fb69f90a1db7ad5eb970e61d0913ce4ff75a121f267a369468344fffcde", + "experiments/conpty/backend.hpp": "5ee3ab95dc4b9aefce23ff7900cda2ecdd9cd09d1b1044074de2f5e572c31489", + "experiments/conpty/backend_probe.cpp": "c51d53ef508aa19f81dfb89ed030993ae95f06f5a85123560e9cae2de369b042", + "experiments/conpty/margin_probe.cpp": "9fff80b3eb0ace2cc6944ea8a99603c5e5a2b0150b82933d858ed667b0357002", + "experiments/conpty/margin_run.py": "9390bc716579728d6c6d9ee7d69ce2deae11e56fd7de5cec6b3231209ed72704", + "experiments/conpty/session.hpp": "88197d8dd9bda247bb6d7a7b9a3344ad2670b9b0ce49b196ceb24e7005340a8e", + "experiments/conpty/test_backend.py": "dde8745f7512f00e20435d5985c3eb95919483034a64bce96d45e51647c3f209", + "experiments/conpty/test_margin_run.py": "9fcae221bb076c30b83179b619760f1ea597cc2971373033aae9653c24e82f84", + "experiments/shell/margin_checks.py": "cb89329d43d235a05ae0a84204716ff2bc82d963aa7924149fa4e05d9f9f76b6", + "experiments/shell/paste_scenario_state.hpp": "934414929448b30e429f95d84a3e5b7927ea31292d547b1e0ece92efa3b8c0dc", + "experiments/shell/query_client.cpp": "10d982efc87fa6a832fb674a43b515e2d993dcf8b40bcfa845aae5a2e7ae0545", + "experiments/shell/run.py": "45976b828eecb316881d698dedaef09ad304f72d991dfa360f1c552bbcbe9f1d", + "experiments/shell/shell.cpp": "9360e8c7019bd8671ba361562c524103caf5f2214ae3b961df5fa90f65ffa776", + "experiments/shell/test_candidate_tui.py": "9434bb01c99246142d08ea5f4eaeb381ed6e18aaefcea53d685effc6e992bacf" + }, + "binary_sha256": { + "termforge_shell": "b1e7657cb6f83306a0f16d8427dbe69fbf98aa1f304d11e0f3f4c4a5d24e53fb", + "conpty_backend_probe": "6d0ac4fdafa08b968fea15552ba23ec2daa1d6028aa4edf3d5495a37c3be057a", + "conpty_margin_probe": "19fcac40cf43a0ce51e4bc06ae1f8b7235e7480bbc826e4a39498fcd703d22f8", + "real_app_capture": "02e539e5e9c25101a887b2b50916e4aabb69281d3dbd9d85f5331123ff1adfe2" + }, + "environment": { + "platform": "Windows-11-10.0.26200-SP0", + "python": "3.12.10", + "system_conhost": { + "sha256": "e449bce01f275cd08f3d4e64bb73b3b43ae845a0dbdb3e6131426e66537705e5", + "fixed_file_version": "10.0.26100.9444", + "fixed_product_version": "10.0.26100.9444", + "file_version_string": "10.0.26100.8875 (WinBuild.160101.0800)", + "product_version_string": "10.0.26100.8875" + } + }, + "package_manifest": "../../../../third_party/conpty/manifest.json", + "package": { + "schema": "termforge-conpty-package-v1", + "name": "Microsoft.Windows.Console.ConPTY", + "version": "1.25.260930003", + "architecture": "win-x64", + "license": "MIT", + "source_commit": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "source_tag": "v1.25.2733.0", + "license_source_url": "https://raw.githubusercontent.com/microsoft/terminal/dc8ae365847d41f62d1ebca93815bb00959bc12f/LICENSE", + "license_source_sha256": "5d177f23ecfeb0ea8e050b6a5a16355e1ae9a0b286436ca8f83ed08b3795be6b", + "bundled_license_sha256": "ad0cf28f3381ca9bb0bf101d127402d44c17bfa0991e1a00bff7ae6679e9dada", + "license_normalization": "CRLF to LF only; complete text verified equal", + "package_url": "https://github.com/microsoft/terminal/releases/download/v1.25.2733.0/Microsoft.Windows.Console.ConPTY.1.25.260930003.nupkg", + "package_bytes": 1750533, + "package_sha256": "6d6f8b008c655d814c498d8205d4012dcd4d0b6dfc1096461d0a185d1e3caf03", + "files": { + "conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "package_members": { + "conpty.dll": "runtimes/win-x64/native/conpty.dll", + "OpenConsole.exe": "build/native/runtimes/x64/OpenConsole.exe" + }, + "experimental": true, + "configured_creation_flags": 24, + "configured_glyph_width": "PSEUDOCONSOLE_GLYPH_WIDTH_CONSOLE", + "default_backend": false, + "supported_client_platforms_verified": false + }, + "binary_policy": { + "configured_backend": "reviewed-side-by-side-1.25.260930003", + "configured_creation_flags": 24, + "generic_reviewed_creation_flags": 0, + "system_creation_flags": 0, + "meaning": "fixed official Console glyph width policy, not passthrough" + }, + "scope": { + "cpp_binary_sources": "5030058; cleanup commit changes only Python margin diagnostic and its tests", + "raw_outputs": "private local artifacts only; screen text, paths, PIDs and traces excluded", + "unrun_built_target": "runtime_observation_test was built, not run" + }, + "focused_tests": [ + { + "command": "python -m unittest experiments.conpty.test_backend -v", + "methods_passed": 6, + "methods_total": 6, + "actual_invocations": 7, + "skipped": 0, + "source_stage": "5030058" + }, + { + "command": "python -m unittest experiments.conpty.test_margin_run -v", + "methods_passed": 9, + "methods_total": 9, + "source_stage": "0954fea" + }, + { + "command": "python -m unittest experiments.shell.test_candidate_tui -v", + "methods_passed": 5, + "methods_total": 6, + "source_stage": "5030058", + "failure": "Vim stage59; one failed run, its second repeat was not reached" + }, + { + "description": "normal cmd editing/Unicode/Ctrl-C/exit, four local shells/CWD/exit, continuous-output close", + "methods_passed": 3, + "methods_total": 3, + "fresh_runs": 8, + "source_stage": "5030058" + } + ], + "backend_native_lifecycle_and_rejection_invocations": [ + { + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_cleanup": false, + "native": { + "valid": true, + "side_by_side": false, + "creation_flags": 0, + "loaded_during_session": false, + "loaded_after_close": false, + "module_unloaded_after_session": true, + "exit_code": 37, + "active_children_after": 0, + "read_error": 109, + "cleanup_complete": true, + "forced_reader_cancel": false, + "forced_process_cancel": false + }, + "error": null + }, + { + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "forced_cleanup": false, + "native": null, + "error": "identity_rejected" + }, + { + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "forced_cleanup": false, + "native": null, + "error": "identity_rejected" + }, + { + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "forced_cleanup": false, + "native": null, + "error": "identity_rejected" + }, + { + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "forced_cleanup": false, + "native": null, + "error": "identity_rejected" + }, + { + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "forced_cleanup": false, + "native": null, + "error": "identity_rejected" + }, + { + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_cleanup": false, + "native": { + "valid": true, + "side_by_side": true, + "creation_flags": 24, + "loaded_during_session": true, + "loaded_after_close": true, + "module_unloaded_after_session": true, + "exit_code": 37, + "active_children_after": 0, + "read_error": 109, + "cleanup_complete": true, + "forced_reader_cancel": false, + "forced_process_cancel": false + }, + "error": null + } + ], + "post_cleanup_margin_ab": [ + { + "backend": "system", + "creation_flags": 0, + "summary_sha256": "ca578f4b04325efab7844c2463f068c23031adb95279868e8ae4be0efd56cea1", + "require_margins_exit_code": 1, + "terminal_main_margins_restored_in_both_sizes": false, + "cases": [ + { + "mode": "vt-on", + "columns": 80, + "rows": 24, + "status": "completed", + "failure_code": null, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 641, + "transport_sha256": "5c48dc0008ea2a71c457b7b8f6b67093896d1590c924c704bd3f07123816637f", + "original_decstbm_forwarded": false, + "source_equal_transport": false, + "native_main_margins_restored": false, + "terminal_main_margins_restored": false, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": false, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0 + } + }, + { + "mode": "vt-off", + "columns": 80, + "rows": 24, + "status": "completed", + "failure_code": null, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 330, + "transport_sha256": "ab8892697fef17f6f2cf69c55859a0523b41dde46e535649ed52a8bfad1a09e6", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": false, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0 + } + }, + { + "mode": "vt-on", + "columns": 12, + "rows": 7, + "status": "completed", + "failure_code": null, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 441, + "transport_sha256": "7527d0312dd73db0f006ccaa2391777481a947b0cdb9070003118fa2d69f8746", + "original_decstbm_forwarded": false, + "source_equal_transport": false, + "native_main_margins_restored": false, + "terminal_main_margins_restored": false, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": false, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0 + } + }, + { + "mode": "vt-off", + "columns": 12, + "rows": 7, + "status": "completed", + "failure_code": null, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 505, + "transport_sha256": "cd4c2e7c123739cc05df721fd6b9cf86186ba0f0ed211a9877ab5fce5d481a06", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native_main_margins_restored": false, + "terminal_main_margins_restored": false, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": false, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0 + } + } + ] + }, + { + "backend": "official", + "creation_flags": 0, + "summary_sha256": "fec50841dc07a979fababf91d62e9ad1f33d9db25995b21995039aeb14d31f3c", + "require_margins_exit_code": 0, + "terminal_main_margins_restored_in_both_sizes": true, + "cases": [ + { + "mode": "vt-on", + "columns": 80, + "rows": 24, + "status": "completed", + "failure_code": null, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 218, + "transport_sha256": "d793c84c56624d6c647e562ef7ba35e21d8998baa43371cb36f95b2add684246", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0 + } + }, + { + "mode": "vt-off", + "columns": 80, + "rows": 24, + "status": "completed", + "failure_code": null, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 218, + "transport_sha256": "d793c84c56624d6c647e562ef7ba35e21d8998baa43371cb36f95b2add684246", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0 + } + }, + { + "mode": "vt-on", + "columns": 12, + "rows": 7, + "status": "completed", + "failure_code": null, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 218, + "transport_sha256": "d793c84c56624d6c647e562ef7ba35e21d8998baa43371cb36f95b2add684246", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0 + } + }, + { + "mode": "vt-off", + "columns": 12, + "rows": 7, + "status": "completed", + "failure_code": null, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 222, + "transport_sha256": "01064e034cc1cd3c34eae65a2f656ae940936cf381e60371b8e17428ec00617d", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0 + } + } + ] + } + ], + "configured_console_width_gui_runs": [ + { + "mode": "candidate-alt", + "fresh_runs": 2, + "passed": 2, + "failed": 0, + "native_exit_codes": [ + 0, + 0 + ], + "timed_out": [ + false, + false + ], + "outer_job_active_after": [ + 0, + 0 + ], + "outer_job_active_after_cleanup": [ + 0, + 0 + ], + "desktop_gone": [ + true, + true + ], + "failure_stage": null, + "failure_code": null + }, + { + "mode": "candidate-input-escape", + "fresh_runs": 2, + "passed": 2, + "failed": 0, + "native_exit_codes": [ + 0, + 0 + ], + "timed_out": [ + false, + false + ], + "outer_job_active_after": [ + 0, + 0 + ], + "outer_job_active_after_cleanup": [ + 0, + 0 + ], + "desktop_gone": [ + true, + true + ], + "failure_stage": null, + "failure_code": null + }, + { + "mode": "candidate-margins", + "fresh_runs": 2, + "passed": 2, + "failed": 0, + "native_exit_codes": [ + 0, + 0 + ], + "timed_out": [ + false, + false + ], + "outer_job_active_after": [ + 0, + 0 + ], + "outer_job_active_after_cleanup": [ + 0, + 0 + ], + "desktop_gone": [ + true, + true + ], + "failure_stage": null, + "failure_code": null + }, + { + "mode": "candidate-scroll", + "fresh_runs": 2, + "passed": 2, + "failed": 0, + "native_exit_codes": [ + 0, + 0 + ], + "timed_out": [ + false, + false + ], + "outer_job_active_after": [ + 0, + 0 + ], + "outer_job_active_after_cleanup": [ + 0, + 0 + ], + "desktop_gone": [ + true, + true + ], + "failure_stage": null, + "failure_code": null + }, + { + "mode": "candidate-tui", + "fresh_runs": 1, + "passed": 0, + "failed": 1, + "native_exit_codes": [ + 2 + ], + "timed_out": [ + false + ], + "outer_job_active_after": [ + 0 + ], + "outer_job_active_after_cleanup": [ + 0 + ], + "desktop_gone": [ + true + ], + "failure_stage": 59, + "failure_code": "vim_resize_command_remains_in_insert_mode" + }, + { + "mode": "candidate-unicode", + "fresh_runs": 2, + "passed": 2, + "failed": 0, + "native_exit_codes": [ + 0, + 0 + ], + "timed_out": [ + false, + false + ], + "outer_job_active_after": [ + 0, + 0 + ], + "outer_job_active_after_cleanup": [ + 0, + 0 + ], + "desktop_gone": [ + true, + true + ], + "failure_stage": null, + "failure_code": null + }, + { + "mode": "close", + "fresh_runs": 3, + "passed": 3, + "failed": 0, + "native_exit_codes": [ + 0, + 0, + 0 + ], + "timed_out": [ + false, + false, + false + ], + "outer_job_active_after": [ + 0, + 0, + 0 + ], + "outer_job_active_after_cleanup": [ + 0, + 0, + 0 + ], + "desktop_gone": [ + true, + true, + true + ], + "failure_stage": null, + "failure_code": null + }, + { + "mode": "normal", + "fresh_runs": 3, + "passed": 3, + "failed": 0, + "native_exit_codes": [ + 0, + 0, + 0 + ], + "timed_out": [ + false, + false, + false + ], + "outer_job_active_after": [ + 0, + 0, + 0 + ], + "outer_job_active_after_cleanup": [ + 0, + 0, + 0 + ], + "desktop_gone": [ + true, + true, + true + ], + "failure_stage": null, + "failure_code": null + }, + { + "mode": "ui-shells", + "fresh_runs": 2, + "passed": 2, + "failed": 0, + "native_exit_codes": [ + 0, + 0 + ], + "timed_out": [ + false, + false + ], + "outer_job_active_after": [ + 0, + 0 + ], + "outer_job_active_after_cleanup": [ + 0, + 0 + ], + "desktop_gone": [ + true, + true + ], + "failure_stage": null, + "failure_code": null + } + ], + "configured_console_width_known_reds": [ + { + "mode": "resize", + "verdict": "known_failure_reproduced", + "native_exit_code": 2, + "timed_out": false, + "stage": 43, + "error_code": "resize_state_or_stream_difference", + "paste_counts": null, + "outer_job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "outer_job_after_cleanup": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "desktop_gone": true, + "probe_sha256": "b1e7657cb6f83306a0f16d8427dbe69fbf98aa1f304d11e0f3f4c4a5d24e53fb" + }, + { + "mode": "ui-paste", + "verdict": "known_failure_reproduced", + "native_exit_code": 2, + "timed_out": false, + "stage": null, + "error_code": "transfer_completed_before_checkpoint_action", + "paste_counts": { + "checkpoint": "768", + "flood": "1", + "sent": "3000000", + "accepted": "3000000", + "total": "3000000", + "state": "3" + }, + "outer_job_after": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "outer_job_after_cleanup": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "desktop_gone": true, + "probe_sha256": "b1e7657cb6f83306a0f16d8427dbe69fbf98aa1f304d11e0f3f4c4a5d24e53fb" + } + ], + "configured_console_width_real_app_capture": { + "whole_capture_passed": false, + "supervision": { + "schema": "termforge-real-app-capture-supervision-v1", + "timed_out": false, + "returncode": 1, + "job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "cleanup_errors": [] + }, + "failure_code": "vim_editor_new_buffer_not_displayed", + "editor": { + "stage": "new-buffer", + "editor_exit": 91, + "child_signaled": true, + "editor_bytes": 1999, + "active_children": 0, + "cleanup_complete": true, + "capture_overflow": false + }, + "more_substage_passed": true, + "more": { + "schema": "termforge-more-capture-v1", + "valid": true, + "stage": "output-eof", + "prompt_end_offset": 411, + "q_bytes": 1, + "exit_code": 0, + "output_bytes": 508, + "read_error": 109, + "output_eof": true, + "cleanup_complete": true, + "active_children_after": 0, + "forced_reader_cancel": false, + "forced_process_cancel": false + }, + "pager_sha256": "f51912329ea7e8f696057afc48703ceced3d2e8d582f891239ebfcc2b08b1dc0" + }, + "earlier_flags_zero_results": { + "final_console_width_proof": false, + "gui_vim_dsr_resize_write_fresh_passes": 2, + "full_native_shell_more_editor_capture_passed": true, + "unicode_readback_existing_contract_passed": false, + "preserved_raw_evidence": "private backend-r1 and official-real-app-capture folders; not replaced by final results" + }, + "remaining_gaps": [ + "Continuous resize stage43 retains unexpected trailing text/position and Unicode replay differences", + "Console-width Vim GUI stage59 and native editor new-buffer capture fail; prior flags0 pass is a separate observation", + "3MB paste completes before the original 768-byte receiver checkpoint action; cancel-during-transfer contract unverified", + "Native CHAR_INFO main/alternate margins remain incorrect even when terminal VT is correct", + "Full R1 workflow, IME/monitor coverage, long-run resources, performance and WindTerm comparisons remain unverified" + ], + "product_default_changed": false, + "native_api_margin_gap_closed": false, + "full_r2_contract_verified": false, + "performance_claim": false, + "presented_done": null, + "issues_to_keep_open": [ + 41, + 47 + ] +} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/.gitattributes b/experiments/conpty/results/2026-10-27-native-viewport-resize/.gitattributes new file mode 100644 index 00000000..e5497457 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/.gitattributes @@ -0,0 +1,3 @@ +*.bin binary +case-*/*.json -text whitespace=cr-at-eol +case-*/plan.txt -text diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/native-after.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/native-after.json new file mode 100644 index 00000000..0a56c3f3 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/native-after.json @@ -0,0 +1 @@ +{"rows":6,"columns":8,"cursor":[2,3],"utf16_rows":[[84,79,80,32,32,32,32,32],[77,73,68,32,32,32,32,32],[66,79,84,32,32,32,32,32],[32,32,32,32,32,32,32,32],[32,32,32,32,32,32,32,32],[32,32,32,32,32,32,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/native-before.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/native-before.json new file mode 100644 index 00000000..cfe4597b --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/native-before.json @@ -0,0 +1 @@ +{"rows":3,"columns":8,"cursor":[2,3],"utf16_rows":[[84,79,80,32,32,32,32,32],[77,73,68,32,32,32,32,32],[66,79,84,32,32,32,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/plan.txt b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/plan.txt new file mode 100644 index 00000000..17bf5bba --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/plan.txt @@ -0,0 +1,4 @@ +R 3 8 +F 0 68 +R 6 8 +F 68 36 diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/source.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/source.bin new file mode 100644 index 00000000..946f45d7 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/source.bin @@ -0,0 +1,5 @@ +H0 +H1 +TOP +MID +BOT \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/transport.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/transport.bin new file mode 100644 index 00000000..139dc445 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-0/transport.bin @@ -0,0 +1,5 @@ +[?1004h[?9001hH0 +H1 +TOP +MID +BOT]0;TF_R51_READY]0;TF_R51_DONE[?1004l[?9001l \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/native-after.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/native-after.json new file mode 100644 index 00000000..ed9dc581 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/native-after.json @@ -0,0 +1 @@ +{"rows":3,"columns":16,"cursor":[1,2],"utf16_rows":[[49,50,51,52,53,54,55,56,57,32,32,32,32,32,32,32],[80,62,32,32,32,32,32,32,32,32,32,32,32,32,32,32],[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/native-before.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/native-before.json new file mode 100644 index 00000000..fdf085c7 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/native-before.json @@ -0,0 +1 @@ +{"rows":3,"columns":8,"cursor":[2,2],"utf16_rows":[[49,50,51,52,53,54,55,56],[57,32,32,32,32,32,32,32],[80,62,32,32,32,32,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/plan.txt b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/plan.txt new file mode 100644 index 00000000..df3f3127 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/plan.txt @@ -0,0 +1,4 @@ +R 3 8 +F 0 68 +R 3 16 +F 68 36 diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/source.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/source.bin new file mode 100644 index 00000000..9c74f37a --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/source.bin @@ -0,0 +1,4 @@ +H0 +H1 +123456789 +P> \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/transport.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/transport.bin new file mode 100644 index 00000000..8703ae19 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-1/transport.bin @@ -0,0 +1,4 @@ +[?1004h[?9001hH0 +H1 +123456789 +P>]0;TF_R51_READY]0;TF_R51_DONE[?1004l[?9001l \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/native-after.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/native-after.json new file mode 100644 index 00000000..8df00f4a --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/native-after.json @@ -0,0 +1 @@ +{"rows":3,"columns":16,"cursor":[1,9],"utf16_rows":[[72,50,32,32,32,32,32,32,32,32,32,32,32,32,32,32],[49,50,51,52,53,54,55,56,57,32,32,32,32,32,32,32],[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/native-before.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/native-before.json new file mode 100644 index 00000000..d08f7965 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/native-before.json @@ -0,0 +1 @@ +{"rows":3,"columns":8,"cursor":[2,1],"utf16_rows":[[72,50,32,32,32,32,32,32],[49,50,51,52,53,54,55,56],[57,32,32,32,32,32,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/plan.txt b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/plan.txt new file mode 100644 index 00000000..df3f3127 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/plan.txt @@ -0,0 +1,4 @@ +R 3 8 +F 0 68 +R 3 16 +F 68 36 diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/source.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/source.bin new file mode 100644 index 00000000..7c93df51 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/source.bin @@ -0,0 +1,4 @@ +H0 +H1 +H2 +123456789 \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/transport.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/transport.bin new file mode 100644 index 00000000..8ed3278d --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-2/transport.bin @@ -0,0 +1,4 @@ +[?1004h[?9001hH0 +H1 +H2 +123456789]0;TF_R51_READY]0;TF_R51_DONE[?1004l[?9001l \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/native-after.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/native-after.json new file mode 100644 index 00000000..6c5d6af4 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/native-after.json @@ -0,0 +1 @@ +{"rows":3,"columns":5,"cursor":[2,2],"utf16_rows":[[57,48,49,50,51],[52,53,54,55,56],[57,48,32,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/native-before.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/native-before.json new file mode 100644 index 00000000..64495c16 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/native-before.json @@ -0,0 +1 @@ +{"rows":3,"columns":8,"cursor":[2,6],"utf16_rows":[[57,48,49,50,51,52,53,54],[55,56,57,48,49,50,51,52],[53,54,55,56,57,48,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/plan.txt b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/plan.txt new file mode 100644 index 00000000..4cfb2775 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/plan.txt @@ -0,0 +1,4 @@ +R 3 8 +F 0 81 +R 3 5 +F 81 36 diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/source.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/source.bin new file mode 100644 index 00000000..ee823914 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/source.bin @@ -0,0 +1,2 @@ +H0 +123456789012345678901234567890 \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/transport.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/transport.bin new file mode 100644 index 00000000..3af93aa7 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-3/transport.bin @@ -0,0 +1,2 @@ +[?1004h[?9001hH0 +123456789012345678901234567890]0;TF_R51_READY]0;TF_R51_DONE[?1004l[?9001l \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/native-after.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/native-after.json new file mode 100644 index 00000000..ac791e80 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/native-after.json @@ -0,0 +1 @@ +{"rows":4,"columns":10,"cursor":[1,9],"utf16_rows":[[72,49,32,32,32,32,32,32,32,32],[65,66,67,68,69,70,71,72,73,74],[75,76,77,78,79,32,32,32,32,32],[66,79,84,84,79,77,32,32,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/native-before.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/native-before.json new file mode 100644 index 00000000..a64cfd8e --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/native-before.json @@ -0,0 +1 @@ +{"rows":4,"columns":8,"cursor":[2,1],"utf16_rows":[[72,49,32,32,32,32,32,32],[65,66,67,68,69,70,71,72],[73,74,75,76,77,78,79,32],[66,79,84,84,79,77,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/plan.txt b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/plan.txt new file mode 100644 index 00000000..6f4a91ed --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/plan.txt @@ -0,0 +1,4 @@ +R 4 8 +F 0 84 +R 4 10 +F 84 36 diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/source.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/source.bin new file mode 100644 index 00000000..819a1ebc --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/source.bin @@ -0,0 +1,4 @@ +H0 +H1 +ABCDEFGHIJKLMNO +BOTTOM \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/transport.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/transport.bin new file mode 100644 index 00000000..d1e064f7 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-4/transport.bin @@ -0,0 +1,4 @@ +[?1004h[?9001hH0 +H1 +ABCDEFGHIJKLMNO +BOTTOM]0;TF_R51_READY]0;TF_R51_DONE[?1004l[?9001l \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/native-after.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/native-after.json new file mode 100644 index 00000000..9c308e9f --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/native-after.json @@ -0,0 +1 @@ +{"rows":3,"columns":16,"cursor":[1,6],"utf16_rows":[[57,48,49,50,51,52,53,54,55,56,57,48,49,50,51,52],[53,54,55,56,57,48,32,32,32,32,32,32,32,32,32,32],[32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/native-before.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/native-before.json new file mode 100644 index 00000000..64495c16 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/native-before.json @@ -0,0 +1 @@ +{"rows":3,"columns":8,"cursor":[2,6],"utf16_rows":[[57,48,49,50,51,52,53,54],[55,56,57,48,49,50,51,52],[53,54,55,56,57,48,32,32]]} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/plan.txt b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/plan.txt new file mode 100644 index 00000000..e05767b9 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/plan.txt @@ -0,0 +1,4 @@ +R 3 8 +F 0 81 +R 3 16 +F 81 36 diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/source.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/source.bin new file mode 100644 index 00000000..ee823914 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/source.bin @@ -0,0 +1,2 @@ +H0 +123456789012345678901234567890 \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/transport.bin b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/transport.bin new file mode 100644 index 00000000..3af93aa7 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/case-5/transport.bin @@ -0,0 +1,2 @@ +[?1004h[?9001hH0 +123456789012345678901234567890]0;TF_R51_READY]0;TF_R51_DONE[?1004l[?9001l \ No newline at end of file diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/native-cases.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/native-cases.json new file mode 100644 index 00000000..d6b2024c --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/native-cases.json @@ -0,0 +1,330 @@ +{ + "schema": 1, + "started_utc": "2026-10-26T20:46:12.976424+00:00", + "windows": "10.0.26200", + "backend": { + "name": "Microsoft.Windows.Console.ConPTY", + "version": "1.25.260930003", + "url": "https://github.com/microsoft/terminal/releases/download/v1.25.2733.0/Microsoft.Windows.Console.ConPTY.1.25.260930003.nupkg", + "bytes": 1750533, + "sha256": "6d6f8b008c655d814c498d8205d4012dcd4d0b6dfc1096461d0a185d1e3caf03", + "files": { + "conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + } + }, + "creation_flags": 24, + "probe_sha256": "a570b55f7ef0f65be01b827112905a223fb32f37a0f645ce121ead1ed6555f59", + "replay_sha256": "c4cf0d9f68bb5bd688e601b87025f3237c8659f4d80e96bd4f67fa463463a13f", + "sources_sha256": { + "resize_native_run.py": "a7fdc198a9fde7cff00ce1f74031b680e83d130e5034a612e576340e037fa1f2", + "resize_native_probe.cpp": "ea0f26b3cfc322929193a89ea72d3e987a2ec9f3fda87241989f508cd431336a", + "session.hpp": "6945e6ffba1d61e66266f867d3cd124eb63c39da37e27662a5eaf544f60ed96b", + "backend.hpp": "5ee3ab95dc4b9aefce23ff7900cda2ecdd9cd09d1b1044074de2f5e572c31489" + }, + "cpr_replies_sent": false, + "diagnostic_only": true, + "presented_done": null, + "cases": [ + { + "case": 0, + "passed": true, + "exit_code": 0, + "timed_out": false, + "forced_outer_cleanup": false, + "job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "job_after_forced_cleanup": null, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "case": 0, + "child_exit": 37, + "active_children": 0, + "output_eof": true, + "bytes": 104, + "resize_offset": 68, + "creation_flags": 24 + }, + "replay": { + "reflow_history": { + "native_rows_equal": false, + "native_cursor_equal": false + }, + "native_viewport": { + "native_rows_equal": true, + "native_cursor_equal": true + } + }, + "files_sha256": { + "capture.json": "e742d9102fcc20cce032abb28ccba4f638bcc1869c0fc0697654e3afaedb9a8c", + "go": "4cd0e21a9a0795a14ec9aa5f0e7d1abff0492565770e43eafdf1e3e8afed1f33", + "native-after.json": "f2a0180d23afbc07ced80b775df853d494f2c2a4dd51c81ed0292d5805cc2bec", + "native-before.json": "5d5d5aad2764de6a86bbc8ae7da966a482ee551d5dd15307d15ad4e9a21dfb46", + "native_viewport.states.jsonl": "a821dce1d169cd0890b914cffadf792855d8e54c0f1da8cc81b864946aee4b95", + "native_viewport.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stdout.bin": "9ee3d5cb19a9b033cd11cfdf85e9412d93b2859a8db3beb90489bab0d97e5739", + "plan.txt": "b168dd8cf0feafe6cdf16f210328cfa2d7345dbf15babe3d14db2a842009c625", + "reflow_history.states.jsonl": "84082bce93257353c0437e76c33d67049855b327875eda74207e51726154f478", + "reflow_history.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "source.bin": "eadc97ee8bfe9eeb07261af1dfb07977b1f87b2f7884d67014e87bf31d1a57e4", + "transport.bin": "3312e6a95a1897d575bddb046cb67a63e3dca21e8003ae0885fb993b359ddac6" + } + }, + { + "case": 1, + "passed": true, + "exit_code": 0, + "timed_out": false, + "forced_outer_cleanup": false, + "job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "job_after_forced_cleanup": null, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "case": 1, + "child_exit": 37, + "active_children": 0, + "output_eof": true, + "bytes": 104, + "resize_offset": 68, + "creation_flags": 24 + }, + "replay": { + "reflow_history": { + "native_rows_equal": false, + "native_cursor_equal": false + }, + "native_viewport": { + "native_rows_equal": true, + "native_cursor_equal": true + } + }, + "files_sha256": { + "capture.json": "8ab700b25ab6634943f120d5332266ca7a9e59099797ca4d6e461bce29e5705b", + "go": "4cd0e21a9a0795a14ec9aa5f0e7d1abff0492565770e43eafdf1e3e8afed1f33", + "native-after.json": "2b154f802963e89b5e9f11e8e538880f2630749d30f1f9632cb19f8e7d076da0", + "native-before.json": "60f447bfdf502c98b2ea3f54cb7a33fff2cac4b53d9762d57082ebe191c526c0", + "native_viewport.states.jsonl": "15a5ca914be318e387b5fc2ccf753ce0d70c131134b29eb976047b843ef62544", + "native_viewport.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stdout.bin": "019d2c63c311d523f438bfafbcdd61674c311c22270e8d867cb808b1e786d185", + "plan.txt": "c1bcd96e9c95e3c21cc4b408e9ea40cc5021f13b88a91d743efc22ac70003c8c", + "reflow_history.states.jsonl": "009dd85a20a9b9978de33275cce7eae305d8f7563a7f60bef8916a48f6d29a10", + "reflow_history.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "source.bin": "304dcdd68af70924614c1a1bc1aee10bfdc853403af70f8923806dacc297c770", + "transport.bin": "356ea650a7caad777e9b0f3b87771c380e2026c6257402cbb349b94d1d10719f" + } + }, + { + "case": 2, + "passed": true, + "exit_code": 0, + "timed_out": false, + "forced_outer_cleanup": false, + "job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "job_after_forced_cleanup": null, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "case": 2, + "child_exit": 37, + "active_children": 0, + "output_eof": true, + "bytes": 104, + "resize_offset": 68, + "creation_flags": 24 + }, + "replay": { + "reflow_history": { + "native_rows_equal": false, + "native_cursor_equal": false + }, + "native_viewport": { + "native_rows_equal": true, + "native_cursor_equal": true + } + }, + "files_sha256": { + "capture.json": "3fbf908c17f86f3691db9b6a89962c229ce5cb98ebb1ba12b9638692a641fbcd", + "go": "4cd0e21a9a0795a14ec9aa5f0e7d1abff0492565770e43eafdf1e3e8afed1f33", + "native-after.json": "22b0886b647a71cd91f317097748a798905e8ebf1ee43e4105ffb7321e09807a", + "native-before.json": "c99e33188a761a2d3e0368422692bcb3692ebd9c472fa944f5f9e8aff8b162e6", + "native_viewport.states.jsonl": "a2d0e1dd831c097f1e88a7f2aa9be865ae65e016889251fd79d1eb5d35a1720f", + "native_viewport.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stdout.bin": "440e0bd7905556ef498bd333555f4cba948ff7dc92c81531627b5305c3bfd492", + "plan.txt": "c1bcd96e9c95e3c21cc4b408e9ea40cc5021f13b88a91d743efc22ac70003c8c", + "reflow_history.states.jsonl": "9fc4978a7851c6eeb2156f0493b183a6555880d8b5fde3ba0a08135266cae1c0", + "reflow_history.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "source.bin": "e218a542b2a6b18a995b9ec2673f9c54d43a2422125e382a07fffa4e7c8c156a", + "transport.bin": "899fa3110b3bb20cea20f9f8b715fc23d48c9f92adbe3438f85b2c7ed2b5017f" + } + }, + { + "case": 3, + "passed": true, + "exit_code": 0, + "timed_out": false, + "forced_outer_cleanup": false, + "job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "job_after_forced_cleanup": null, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "case": 3, + "child_exit": 37, + "active_children": 0, + "output_eof": true, + "bytes": 117, + "resize_offset": 81, + "creation_flags": 24 + }, + "replay": { + "reflow_history": { + "native_rows_equal": false, + "native_cursor_equal": false + }, + "native_viewport": { + "native_rows_equal": true, + "native_cursor_equal": true + } + }, + "files_sha256": { + "capture.json": "e6e425e3a94f0d9eb7d9a78ba23937ef9a1043bfca06ccfc7d6422036a584865", + "go": "4cd0e21a9a0795a14ec9aa5f0e7d1abff0492565770e43eafdf1e3e8afed1f33", + "native-after.json": "84889f050c31419780cdaac335be9e3302de905f53b42d88dc8b41c9425297a6", + "native-before.json": "c3f863c9a6c386ca80398353201857bede3e94e7fc447d56b9496d174bc8eeb3", + "native_viewport.states.jsonl": "1d318b4c79c46ca3bbfcf6b564d7cba4a1beb36519d66c8fb805cddd77fc979e", + "native_viewport.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stdout.bin": "f35d46efc6e4f4151ca25cf94ed01cdab5bc0a09ed53bf1c17e5493b8e081990", + "plan.txt": "e6a9af25ca49a6fb60ef6338fcd7c507f18cdd8ab21abe618045bc535374429a", + "reflow_history.states.jsonl": "dff7e610f39b72e58739ab6c8dd20558d59c7c272883acfbec3a7bdbde3e5c72", + "reflow_history.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "source.bin": "9cb572ecac93ddcf978058226140b4ace5fc6c969a71fc793b6904476503eb11", + "transport.bin": "56a2e81cdb18853b817137de53c7abc21b979f2f4605630e3bc10078851effc9" + } + }, + { + "case": 4, + "passed": true, + "exit_code": 0, + "timed_out": false, + "forced_outer_cleanup": false, + "job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "job_after_forced_cleanup": null, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "case": 4, + "child_exit": 37, + "active_children": 0, + "output_eof": true, + "bytes": 120, + "resize_offset": 84, + "creation_flags": 24 + }, + "replay": { + "reflow_history": { + "native_rows_equal": false, + "native_cursor_equal": false + }, + "native_viewport": { + "native_rows_equal": true, + "native_cursor_equal": true + } + }, + "files_sha256": { + "capture.json": "de391fe6ade5415ac487afb28e85927174a56ba1b87184da97aa0fe9cb8bf59c", + "go": "4cd0e21a9a0795a14ec9aa5f0e7d1abff0492565770e43eafdf1e3e8afed1f33", + "native-after.json": "590a730384f52d89474d7270070372991cbca06920cf552b6143b4d5407dc36c", + "native-before.json": "6b06a9e4ba13c89cbf685496c0f366f71c384b75c0da45d11c5864edfb97bc3f", + "native_viewport.states.jsonl": "bf314aeaa11317724d32569d029e891eec0b5fa6292c083a5538ddf4f93ab774", + "native_viewport.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stdout.bin": "12352f6f723177360287bd565fd73b3521a2cd62fd563874328cd6041d3ae9a5", + "plan.txt": "1c386f02ec8ae813e323d66b543f9f014154d66d7f54433611fafd85f0a16311", + "reflow_history.states.jsonl": "889bb57844746676ed1718b600cf1742979d2c31e414c1f0a357b4ed294046bf", + "reflow_history.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "source.bin": "7e419e6d600d8ec050531c34e69485ded92323815f19e9c8a76b2ccc0f9303c7", + "transport.bin": "074058e95259ab33d2853655c9a461460d60dedba5a0ea5eb21504af88754641" + } + }, + { + "case": 5, + "passed": true, + "exit_code": 0, + "timed_out": false, + "forced_outer_cleanup": false, + "job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "job_after_forced_cleanup": null, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "case": 5, + "child_exit": 37, + "active_children": 0, + "output_eof": true, + "bytes": 117, + "resize_offset": 81, + "creation_flags": 24 + }, + "replay": { + "reflow_history": { + "native_rows_equal": false, + "native_cursor_equal": false + }, + "native_viewport": { + "native_rows_equal": true, + "native_cursor_equal": true + } + }, + "files_sha256": { + "capture.json": "a11778c24628865e6b02a2ad8e8f4aa387db7d94e3952df170b66492065baaed", + "go": "4cd0e21a9a0795a14ec9aa5f0e7d1abff0492565770e43eafdf1e3e8afed1f33", + "native-after.json": "8bae95467855394186680f29db75b9556daa6888ca71c4237668759a60c11c86", + "native-before.json": "c3f863c9a6c386ca80398353201857bede3e94e7fc447d56b9496d174bc8eeb3", + "native_viewport.states.jsonl": "f9660bdcbb114d4bd713fa814b78e6c274845f82e827ae6da4b39131869e6ab9", + "native_viewport.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "parent.stdout.bin": "e4a81e5682d8a7fc7cd841988098ae605dca427ae0e52aa09a90b63d44218304", + "plan.txt": "4cc8c160bc1f563dc62bb127b145b45df5d25f3fdd3b9c260851cc8bb721c49e", + "reflow_history.states.jsonl": "16f7a95da0d135c06dceb9d700b491d99fa339cc4c01c4a003bdb57875050294", + "reflow_history.stderr.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "source.bin": "9cb572ecac93ddcf978058226140b4ace5fc6c969a71fc793b6904476503eb11", + "transport.bin": "56a2e81cdb18853b817137de53c7abc21b979f2f4605630e3bc10078851effc9" + } + } + ] +} diff --git a/experiments/conpty/results/2026-10-27-native-viewport-resize/validation.json b/experiments/conpty/results/2026-10-27-native-viewport-resize/validation.json new file mode 100644 index 00000000..78e9acdc --- /dev/null +++ b/experiments/conpty/results/2026-10-27-native-viewport-resize/validation.json @@ -0,0 +1,1667 @@ +{ + "schema": 1, + "issue": 51, + "source_commit": "92eac12d5cd2868b469e8b9a10e68f5e20ee2cb0", + "base_commit": "e0b4d67e50bda6fe08cc02b43a475137133310b3", + "candidate_version": "0.26.1-dev+termforge.5", + "backend": { + "name": "Microsoft.Windows.Console.ConPTY", + "version": "1.25.260930003", + "url": "https://github.com/microsoft/terminal/releases/download/v1.25.2733.0/Microsoft.Windows.Console.ConPTY.1.25.260930003.nupkg", + "bytes": 1750533, + "sha256": "6d6f8b008c655d814c498d8205d4012dcd4d0b6dfc1096461d0a185d1e3caf03", + "files": { + "conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + } + }, + "creation_flags": 24, + "windows": "10.0.26200", + "resize_policy": "native_viewport only for explicit reviewed-backend candidate ShellWindow", + "sources_sha256": { + "CMakeLists.txt": "3db27130f32f57eb798872410506eea4a638e0841dfd5474fdbeb216fb774b5b", + "experiments/candidates/alacritty/Cargo.lock": "f7b8906cc63b6a5d66943f15c50a78c51f773face60229fcddf24b2d02911736", + "experiments/candidates/alacritty/include/termforge_candidate.h": "e3accd6b57cce18784f9bd14bbb5042bec985464fe440bf54f652a0ebecfee92", + "experiments/candidates/alacritty/run.py": "2d83240506bf03b4da92f7b2dc85adf40446aff25cd0f0dbe08132b611c2627e", + "experiments/candidates/alacritty/src/ffi.rs": "09ea991999db3d1948cb5c4a46cd8d12e8e8f70d7648f07d09b1dd82eeab9c04", + "experiments/candidates/alacritty/vendor/alacritty_terminal/Cargo.toml": "2b5fc3bab139b7f141fbe39ae32364617cf526c4d6a5ec2ce12efc97379e42b7", + "experiments/candidates/alacritty/vendor/alacritty_terminal/src/grid/resize.rs": "eedd587edfd00917b3f8397cd5683263a33e63675ba332eba50e3648d008e157", + "experiments/candidates/alacritty/vendor/alacritty_terminal/src/grid/row.rs": "05e489c6ac0c0bf6ea50182316985c4fa59e9a7c977e808edd0de4267d87c077", + "experiments/candidates/alacritty/vendor/alacritty_terminal/src/term/mod.rs": "0479445db15d75f006398ba7fbbebba763cbedb1c993d69b3e5fdc94746a62e2", + "experiments/conpty/backend.hpp": "5ee3ab95dc4b9aefce23ff7900cda2ecdd9cd09d1b1044074de2f5e572c31489", + "experiments/conpty/resize_native_probe.cpp": "ea0f26b3cfc322929193a89ea72d3e987a2ec9f3fda87241989f508cd431336a", + "experiments/conpty/resize_native_run.py": "a7fdc198a9fde7cff00ce1f74031b680e83d130e5034a612e576340e037fa1f2", + "experiments/conpty/session.hpp": "6945e6ffba1d61e66266f867d3cd124eb63c39da37e27662a5eaf544f60ed96b", + "experiments/core/candidate_resize_replay.cpp": "c3e6bcd7dc41622c8e407507c4cd9da39398197d76aa7d3ea042ae0bd4164a7b", + "experiments/core/candidate_terminal.cpp": "16eb43f2488e9621fc965d50be99a25ebf49b6d51ad69d2446fcc13bedda7bf5", + "experiments/core/candidate_terminal.hpp": "f4e51039bc5a10fd120ef8a5fc2b12fcb9ddb1c32a4ae36fc74f226ae22898a1", + "experiments/core/candidate_terminal_test.cpp": "097faf9c92cad3751ba3d0292739a041943c4f1cd7f4e4bc5fac72bc578aa3fa", + "experiments/core/test_candidate_resize_replay.py": "14a78930060f8c66c78a6e601312cb6997efe77330d3c226e9560d8c48ce0944", + "experiments/shell/resize_trace.py": "fd75a4a1a6d3d0ad8ea213da04a875f4bda210c6501e41b4b4004161b0037501", + "experiments/shell/run.py": "45976b828eecb316881d698dedaef09ad304f72d991dfa360f1c552bbcbe9f1d", + "experiments/shell/shell.cpp": "ab5f39acd6174e3a5a256dea6f59037758e3b521af91c183a67f7d021700a089", + "experiments/shell/size_client.cpp": "cb11661bec9551053eec0dbb474bce2ac899a06ee2e50830a370af4816df39f4", + "experiments/shell/test_launcher.cpp": "19cab4a960f47f252c02f92a36316d43eed2481da1f72b5a7e97003c4fa1c2ed", + "experiments/shell/text_client.cpp": "aea8ed527e6e79fbe61446afadbb25d4fa0b7ddef4966930583ac8fa04cadd15", + "experiments/shell/workflow_checks.py": "f186ff0f5335c26fc5c4f0286961981dfd6af8fbaafc789e2bc50058486efa44", + "experiments/shell/workflow_sessions_checks.py": "b976d3504837eef57ff13319daed254870727741f36f265412a6b14b4cb3faae", + "experiments/shell/workspace_workflow_scenario.hpp": "467571556440f4e89305bc1261d389bb8f24ba84f607b8cd36b8078a58314369" + }, + "binaries_sha256": { + "termforge_shell.exe": "15a149a3d7d47efaf866226559d4b60bbf83e0ff6004a85df41edcb5415ad206", + "candidate_core_test.exe": "4c73b58d7da111ab52b6edbbb59898cf660860fdedaa64c4f49b46fae856a02d", + "candidate_resize_replay.exe": "c4cf0d9f68bb5bd688e601b87025f3237c8659f4d80e96bd4f67fa463463a13f", + "conpty_resize_native_probe.exe": "a570b55f7ef0f65be01b827112905a223fb32f37a0f645ce121ead1ed6555f59", + "shell_test_launcher.exe": "7bd78cffd78ac66d651933c9614d6be937c99baa105ce04c1a533df5785c11e2", + "shell_size_client.exe": "eeb0801f69cc8add0a8178a185dcedb78a9b33234abfe5c600fd9b20b0f5aab4", + "shell_text_client.exe": "9350e53de74c9a6b78495a3b59788e3a31e0067a9c5ec1b8685a729ff18244d3", + "shell_query_client.exe": "691b440e9c500c76c1c09c448aafbe2316793bf341ffe69bbc2bf70e41be64cc" + }, + "source_hash_policy": "Raw worktree bytes used for builds; Git checkout line endings can differ.", + "baseline_gui": { + "source": "e0b4d67e50bda6fe08cc02b43a475137133310b3", + "diagnostic_only": true, + "source_patch_applied": false, + "patched_resize_sha256": "4907427c9488435f1e1ee624629bc8445c4dde5399f0349955d1bbc2042080c4", + "binary_sha256": "e4be16054f1c43528cdaca0f54b664f856843669a43000778b751b722026dff4", + "cases": [ + { + "case": "resize-0", + "outcome": "failure", + "exit_code": 2, + "timed_out": false, + "job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "dbf63d052fae858dca4ec36d8884f2b919515defad23bec749a994eab1b9e393", + "stage": 43 + } + ], + "started_utc": "2026-10-26T19:54:02.639884+00:00" + }, + "formal_core_red": { + "exit_code": 1, + "error": "native viewport text differs", + "identity": { + "experiments/core/candidate_terminal.hpp": "f4e51039bc5a10fd120ef8a5fc2b12fcb9ddb1c32a4ae36fc74f226ae22898a1", + "experiments/core/candidate_terminal.cpp": "16eb43f2488e9621fc965d50be99a25ebf49b6d51ad69d2446fcc13bedda7bf5", + "experiments/core/candidate_terminal_test.cpp": "310ef633d13b909d5ad0d659cffc4cbe81b2f3d84bbd87400b13e54051bfc772", + "experiments/candidates/alacritty/src/ffi.rs": "0824acd1e13f74254ee38976485c21d79e6ae4feb38c4634ce3aef163315e6d4", + "experiments/candidates/alacritty/include/termforge_candidate.h": "e3accd6b57cce18784f9bd14bbb5042bec985464fe440bf54f652a0ebecfee92", + "experiments/candidates/alacritty/vendor/alacritty_terminal/src/grid/resize.rs": "4907427c9488435f1e1ee624629bc8445c4dde5399f0349955d1bbc2042080c4", + "test_exe_sha256": "0f5bd0454c288eb300368ab0090f2b917b618f74f32bde7522658b0db03f0ee8" + }, + "log_sha256": "2fb33922305c15a0912d40fe556589f7092375ffa05a903aa16b99a1f0a40dc2" + }, + "original_native_capture": { + "source": "188228ebe1a4e6cd3779fc7c6b150624514886fb", + "shell_sha256": "e81d92a8c7d380d4c33639861180b04935e021bc7c1a5179197c8a9e3c83454a", + "note": "Temporary size helper snapshots perturb timing; native row10 exact, candidate row10 had OW.", + "files_sha256": { + "case-0/resize-trace.json": "b3d57213f4da6a94e2a672ddd5d2e5690ad4604636c16a0835d506ea6c3d76f8", + "case-0/resize-trace.transport.bin": "2b4deb1d932af810cef0892064a13b481c582ad44a4faa02cd08fe502d410feb", + "case-0/r51-native-size-100x28-after.json": "67d2217d0c03212a87b4ccaac822cf9cbd93380a337f30ac91bdb988e0644ba0", + "case-0/sample.json": "87624dc16ace15e803bea774aa7af253099f9588975ddabfab0c4ccc7d04cb81", + "replay-0/plan.txt": "bab0875e0f31908a1c5f1a8194ee43b47113a78af1da28f618a17677bf29f57b" + }, + "native_row10": "TF_SIZE_100x28", + "candidate_row10": "TF_SIZE_100x28OW" + }, + "final_original_replay": { + "replay_exe_sha256": "c4cf0d9f68bb5bd688e601b87025f3237c8659f4d80e96bd4f67fa463463a13f", + "options": [ + "--native-viewport" + ], + "same_native_rows_0_through_10": true, + "exact_marker": true, + "history_rows": 9, + "cursor": [ + 12, + 3 + ], + "diagnostic_only": true + }, + "final_gui": { + "source": "92eac12d5cd2868b469e8b9a10e68f5e20ee2cb0", + "diagnostic_only": true, + "source_patch_applied": false, + "patched_resize_sha256": "eedd587edfd00917b3f8397cd5683263a33e63675ba332eba50e3648d008e157", + "binary_sha256": "15a149a3d7d47efaf866226559d4b60bbf83e0ff6004a85df41edcb5415ad206", + "cases": [ + { + "case": "resize-0", + "outcome": "green", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "b113686ea1536b96932401ec5caa6e678db2146d46ad8f43250729d5b0c037e0", + "result": { + "valid": true, + "exit_code": 37, + "active_children_after": 0, + "cleanup_complete": true, + "command_verified": true, + "unicode_verified": true, + "backspace_verified": true, + "arrows_verified": true, + "ctrl_c_verified": true, + "resize_verified": 3, + "rows": 18, + "columns": 72, + "input_rejected": 0, + "presented_done": null + } + }, + { + "case": "resize-1", + "outcome": "green", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "95eedda4e52bb2c78bf445fc068d8a7cf2acbd6952b63c8bf41ad68136862f1c", + "result": { + "valid": true, + "exit_code": 37, + "active_children_after": 0, + "cleanup_complete": true, + "command_verified": true, + "unicode_verified": true, + "backspace_verified": true, + "arrows_verified": true, + "ctrl_c_verified": true, + "resize_verified": 3, + "rows": 18, + "columns": 72, + "input_rejected": 0, + "presented_done": null + } + }, + { + "case": "resize-close-2", + "outcome": "green", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "4bfea5d8f916c27192b1d539d545e1df5ddc0fd04e338aae239fda902027a394", + "result": { + "valid": true, + "exit_code": 91, + "active_children_after": 0, + "cleanup_complete": true, + "command_verified": true, + "unicode_verified": true, + "backspace_verified": true, + "arrows_verified": true, + "ctrl_c_verified": false, + "resize_verified": 2, + "rows": 18, + "columns": 72, + "input_rejected": 0, + "presented_done": null + } + }, + { + "case": "candidate-unicode-3", + "outcome": "green", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "a3c614c702d92ac849cf287923da9593deeeb0a0506545c27876945904c119c9", + "result": { + "valid": true, + "exit_code": 37, + "active_children_after": 0, + "cleanup_complete": true, + "command_verified": true, + "unicode_verified": false, + "backspace_verified": false, + "arrows_verified": false, + "ctrl_c_verified": false, + "resize_verified": 0, + "rows": 30, + "columns": 100, + "input_rejected": 0, + "presented_done": null + }, + "unicode_output": { + "scope": "fixed-four-streaming-graphemes-width-selection-glyph", + "source_sha256": "a3b951ab67ca5d079f7e91ee8f1cd25dfde82ae4b08ed40c406c911e0ccdf8c2", + "transport_sha256": "c115bf2fd28e7a602993c30985853b895409884c0fba65fd697fbd1f89173c0e", + "transport_bytes": 3353, + "scoped_validation_passed": true, + "complex_grapheme_rendering_verified": true, + "whole_cluster_width_policy_verified": true, + "resized_native_console_verified": false, + "windterm_runtime_equivalence_verified": false, + "complete_unicode_ime_verified": false, + "presented_done": null, + "resize": { + "scope": "fixed-four-streaming-graphemes-width-selection-glyph", + "source_sha256": "a3b951ab67ca5d079f7e91ee8f1cd25dfde82ae4b08ed40c406c911e0ccdf8c2", + "transport_sha256": "d3b472c45f7ed73f9d1c4b0fb190e974cc1f39c0522d495d30402639957859c5", + "transport_bytes": 3819, + "scoped_validation_passed": true, + "complex_grapheme_rendering_verified": true, + "whole_cluster_width_policy_verified": true, + "resized_native_console_verified": true, + "windterm_runtime_equivalence_verified": false, + "complete_unicode_ime_verified": false, + "presented_done": null + } + }, + "result_field_note": "Generic result.unicode_verified belongs to the basic shell scenario; candidate-unicode acceptance is unicode_output.scoped_validation_passed and its resize record." + }, + { + "case": "candidate-unicode-4", + "outcome": "green", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "4fabd30042d7a6053663a2b3f084ea179926f211cb1acb634291877637349dd8", + "result": { + "valid": true, + "exit_code": 37, + "active_children_after": 0, + "cleanup_complete": true, + "command_verified": true, + "unicode_verified": false, + "backspace_verified": false, + "arrows_verified": false, + "ctrl_c_verified": false, + "resize_verified": 0, + "rows": 30, + "columns": 100, + "input_rejected": 0, + "presented_done": null + }, + "unicode_output": { + "scope": "fixed-four-streaming-graphemes-width-selection-glyph", + "source_sha256": "a3b951ab67ca5d079f7e91ee8f1cd25dfde82ae4b08ed40c406c911e0ccdf8c2", + "transport_sha256": "bff603002c1b35097b27bba74fd6fafa89eb44c3948b409c0c5feb9ffa40c32d", + "transport_bytes": 3353, + "scoped_validation_passed": true, + "complex_grapheme_rendering_verified": true, + "whole_cluster_width_policy_verified": true, + "resized_native_console_verified": false, + "windterm_runtime_equivalence_verified": false, + "complete_unicode_ime_verified": false, + "presented_done": null, + "resize": { + "scope": "fixed-four-streaming-graphemes-width-selection-glyph", + "source_sha256": "a3b951ab67ca5d079f7e91ee8f1cd25dfde82ae4b08ed40c406c911e0ccdf8c2", + "transport_sha256": "f50293197cfaeb077453e378f58c38c5c878e89d55f7833d2e0600e8ad2889cd", + "transport_bytes": 4001, + "scoped_validation_passed": true, + "complex_grapheme_rendering_verified": true, + "whole_cluster_width_policy_verified": true, + "resized_native_console_verified": true, + "windterm_runtime_equivalence_verified": false, + "complete_unicode_ime_verified": false, + "presented_done": null + } + }, + "result_field_note": "Generic result.unicode_verified belongs to the basic shell scenario; candidate-unicode acceptance is unicode_output.scoped_validation_passed and its resize record." + } + ], + "started_utc": "2026-10-26T20:46:03.844348+00:00" + }, + "native_cases_file": "native-cases.json", + "written_spaces_regression": { + "red": { + "source": "f40d347 plus written-space regression", + "files": { + "experiments/core/candidate_terminal_test.cpp": "097faf9c92cad3751ba3d0292739a041943c4f1cd7f4e4bc5fac72bc578aa3fa", + "experiments/candidates/alacritty/src/ffi.rs": "04f2b0a3cb66c3b588d083b861781eae6af83a2b03104d779f156a892bbd7517", + "experiments/candidates/alacritty/vendor/alacritty_terminal/src/grid/row.rs": "2f963299e52525828d9d0bf1de758d793661c908eb7c126aa8556a1c9945a83d", + "experiments/candidates/alacritty/vendor/alacritty_terminal/src/grid/resize.rs": "a1f0d8bcd133208f12b2eb0c96edf04be6dd7bae9cb3a95db6a2086cf8833bc3", + "build/candidate/bin/Release/candidate_core_test.exe": "f574f415c509ac3c78a8b048dfab3ae789d4a6d63591f0256c4492dcb9195233" + }, + "exit_code": 1, + "error": "resize changed written spaces" + }, + "red_log_sha256": "6c6ef8d9801b3020b3da305423cfd81ae0fad3197f980cdb5d21330dcdc5a39d", + "green_log_sha256": "2d790a6cc2d35b2379ea0385b384c326a361db1e5cb550d0fb209a80901b0c26", + "input": "ABC D", + "widths": [ + 4, + 5, + 8, + 4, + 5 + ], + "policies": [ + "reflow_history", + "native_viewport" + ], + "passed": true + }, + "auxiliary_review_checks": { + "source": "92eac12d5cd2868b469e8b9a10e68f5e20ee2cb0", + "native_copy_assertions": 630, + "files_sha256": { + "native-compile.log": "dad173ee0c7a5afd1408be074bfdfa13e828e1c1c71865b477a9a9ef90e058d9", + "native-probe.exe": "0a6d3f643dde129526b506d356970b311ff46a40a449ac1515da3783a25b52f9", + "native-run.log": "564666081a6201b624a62f3bd3daebf776bb83b024e29a8e93408e1bd1beb020", + "probe.cpp": "b8926e08ec1b369ebcc35bc74435863fb5cf999c902dc4832ba02a290b7f505f" + }, + "scope": "Additional reviewer diagnostic; not a native-oracle or performance comparison." + }, + "native_probe_negatives": { + "source": "92eac12d5cd2868b469e8b9a10e68f5e20ee2cb0", + "runner_sha256": "a7fdc198a9fde7cff00ce1f74031b680e83d130e5034a612e576340e037fa1f2", + "cases": [ + { + "name": "no-go", + "case": 0, + "exit_code": 2, + "timed_out": false, + "forced_outer_cleanup": false, + "job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "job_after_forced_cleanup": null, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [] + }, + { + "name": "watchdog", + "case": 0, + "exit_code": 99, + "timed_out": true, + "forced_outer_cleanup": true, + "job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "job_after_forced_cleanup": null, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [] + }, + { + "name": "missing-executable-and-unwritable-evidence", + "original_FileNotFoundError_preserved": true, + "winerror": 2, + "existing_file_unchanged": true + } + ] + }, + "rust_tests": { + "passed_per_target": [ + 157, + 2, + 2, + 2, + 1 + ], + "log_sha256": "798884c07803a574adecf796b5da6b8279639922a908b52d969abe44de62a42b" + }, + "initial_full_ctest": { + "log_sha256": "a04c06b541b15e23716ce4b542138d5a6844acb548944ff5c1a3d359c1317d9f", + "tests": [ + { + "name": "shell_launch", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "candidate_title", + "result": "passed", + "seconds": 0.72 + }, + { + "name": "candidate_reply_close", + "result": "passed", + "seconds": 0.36 + }, + { + "name": "runtime_observation", + "result": "passed", + "seconds": 1.61 + }, + { + "name": "ime_input_expectation", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "sent_message_wait", + "result": "passed", + "seconds": 0.3 + }, + { + "name": "find_bar", + "result": "passed", + "seconds": 0.39 + }, + { + "name": "renderer_metrics", + "result": "passed", + "seconds": 0.96 + }, + { + "name": "ime_context", + "result": "passed", + "seconds": 0.41 + }, + { + "name": "layout_state", + "result": "passed", + "seconds": 0.15 + }, + { + "name": "workspace_state", + "result": "passed", + "seconds": 0.38 + }, + { + "name": "transport_completion", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "scenario_tick_gate", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "candidate_core", + "result": "passed", + "seconds": 1.33 + }, + { + "name": "resize_core", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "history_core", + "result": "passed", + "seconds": 0.03 + }, + { + "name": "selection_core", + "result": "passed", + "seconds": 0.11 + }, + { + "name": "search_core", + "result": "passed", + "seconds": 0.15 + }, + { + "name": "paste", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "sender_fence", + "result": "passed", + "seconds": 1.03 + }, + { + "name": "sender_fence_pipe", + "result": "passed", + "seconds": 0.39 + }, + { + "name": "clipboard_policy", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "keyboard", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "text_action_policy", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "candidate_resize_replay", + "result": "passed", + "seconds": 0.7 + }, + { + "name": "candidate_shell_tui", + "result": "failed", + "seconds": 31.03 + }, + { + "name": "core", + "result": "passed", + "seconds": 6.59 + }, + { + "name": "recovery", + "result": "passed", + "seconds": 13.14 + }, + { + "name": "measure", + "result": "passed", + "seconds": 5.17 + }, + { + "name": "binary_paths", + "result": "passed", + "seconds": 0.21 + }, + { + "name": "conpty_margin_contract", + "result": "passed", + "seconds": 0.34 + }, + { + "name": "benchmark_tools", + "result": "passed", + "seconds": 5.67 + }, + { + "name": "differential", + "result": "passed", + "seconds": 3.55 + }, + { + "name": "ime_inventory", + "result": "passed", + "seconds": 54.43 + }, + { + "name": "text_actions", + "result": "passed", + "seconds": 5.58 + }, + { + "name": "workflow_fixture", + "result": "passed", + "seconds": 22.86 + }, + { + "name": "workflow_sessions", + "result": "failed", + "seconds": 39.01 + }, + { + "name": "workflow_resources", + "result": "passed", + "seconds": 0.5 + }, + { + "name": "workflow_resource_phases", + "result": "passed", + "seconds": 4.37 + }, + { + "name": "workflow_system_content", + "result": "passed", + "seconds": 0.18 + }, + { + "name": "workflow_system_runner", + "result": "passed", + "seconds": 0.66 + }, + { + "name": "copy_error_frame", + "result": "passed", + "seconds": 0.15 + }, + { + "name": "paste_fence_evidence", + "result": "passed", + "seconds": 0.11 + }, + { + "name": "resize_trace", + "result": "passed", + "seconds": 0.13 + }, + { + "name": "research_guards", + "result": "passed", + "seconds": 5.07 + }, + { + "name": "receive", + "result": "passed", + "seconds": 0.21 + }, + { + "name": "conpty", + "result": "passed", + "seconds": 23.1 + }, + { + "name": "conpty_ctrl_c", + "result": "passed", + "seconds": 4.34 + }, + { + "name": "conpty_margin", + "result": "passed", + "seconds": 0.38 + }, + { + "name": "conpty_backend", + "result": "passed", + "seconds": 1.19 + }, + { + "name": "presentation", + "result": "passed", + "seconds": 4.19 + }, + { + "name": "shell", + "result": "passed", + "seconds": 96.68 + }, + { + "name": "selection_bytes", + "result": "passed", + "seconds": 3.7 + }, + { + "name": "selection_context", + "result": "passed", + "seconds": 3.78 + }, + { + "name": "raw_console_receiver", + "result": "passed", + "seconds": 0.41 + }, + { + "name": "paste_system", + "result": "passed", + "seconds": 8.59 + } + ], + "total": 56, + "passed": 54, + "failed": [ + "candidate_shell_tui", + "workflow_sessions" + ], + "seconds": 354.65, + "failure_stages": [ + 50 + ], + "full_acceptance": false, + "product_source_commit": "57f24f5a2204a38bcc6429cc448247a7893ef349", + "shell_sha256": "4e23e277ea7984d85856b713b3af5b0545d68042c2bbd42a8422f8a6b422c28d" + }, + "fixed_path_intermediate_ctest": { + "log_sha256": "068ef8ad11e19c697e95df4e9d8bd8a2210c8e075e02550bf0ed706913949000", + "tests": [ + { + "name": "shell_launch", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_title", + "result": "passed", + "seconds": 0.88 + }, + { + "name": "candidate_reply_close", + "result": "passed", + "seconds": 0.33 + }, + { + "name": "runtime_observation", + "result": "passed", + "seconds": 1.43 + }, + { + "name": "ime_input_expectation", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "sent_message_wait", + "result": "passed", + "seconds": 0.29 + }, + { + "name": "find_bar", + "result": "passed", + "seconds": 0.35 + }, + { + "name": "renderer_metrics", + "result": "passed", + "seconds": 0.94 + }, + { + "name": "ime_context", + "result": "passed", + "seconds": 0.39 + }, + { + "name": "layout_state", + "result": "passed", + "seconds": 0.14 + }, + { + "name": "workspace_state", + "result": "passed", + "seconds": 0.35 + }, + { + "name": "transport_completion", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "scenario_tick_gate", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_core", + "result": "passed", + "seconds": 1.22 + }, + { + "name": "resize_core", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "history_core", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "selection_core", + "result": "passed", + "seconds": 0.1 + }, + { + "name": "search_core", + "result": "passed", + "seconds": 0.12 + }, + { + "name": "paste", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "sender_fence", + "result": "passed", + "seconds": 1.02 + }, + { + "name": "sender_fence_pipe", + "result": "passed", + "seconds": 0.37 + }, + { + "name": "clipboard_policy", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "keyboard", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "text_action_policy", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "candidate_resize_replay", + "result": "passed", + "seconds": 0.61 + }, + { + "name": "candidate_shell_tui", + "result": "failed", + "seconds": 30.57 + }, + { + "name": "core", + "result": "passed", + "seconds": 6.28 + }, + { + "name": "recovery", + "result": "passed", + "seconds": 10.45 + }, + { + "name": "measure", + "result": "passed", + "seconds": 4.02 + }, + { + "name": "binary_paths", + "result": "passed", + "seconds": 0.18 + }, + { + "name": "conpty_margin_contract", + "result": "passed", + "seconds": 0.36 + }, + { + "name": "benchmark_tools", + "result": "passed", + "seconds": 5.54 + }, + { + "name": "differential", + "result": "passed", + "seconds": 3.38 + }, + { + "name": "ime_inventory", + "result": "passed", + "seconds": 50.46 + }, + { + "name": "text_actions", + "result": "passed", + "seconds": 5.62 + }, + { + "name": "workflow_fixture", + "result": "passed", + "seconds": 22.72 + }, + { + "name": "workflow_sessions", + "result": "failed", + "seconds": 80.03 + }, + { + "name": "workflow_resources", + "result": "passed", + "seconds": 0.54 + }, + { + "name": "workflow_resource_phases", + "result": "passed", + "seconds": 4.43 + }, + { + "name": "workflow_system_content", + "result": "passed", + "seconds": 0.18 + }, + { + "name": "workflow_system_runner", + "result": "passed", + "seconds": 0.66 + }, + { + "name": "copy_error_frame", + "result": "passed", + "seconds": 0.14 + }, + { + "name": "paste_fence_evidence", + "result": "passed", + "seconds": 0.11 + }, + { + "name": "resize_trace", + "result": "passed", + "seconds": 0.13 + }, + { + "name": "research_guards", + "result": "passed", + "seconds": 5.0 + }, + { + "name": "receive", + "result": "passed", + "seconds": 0.21 + }, + { + "name": "conpty", + "result": "passed", + "seconds": 23.06 + }, + { + "name": "conpty_ctrl_c", + "result": "passed", + "seconds": 4.32 + }, + { + "name": "conpty_margin", + "result": "passed", + "seconds": 0.42 + }, + { + "name": "conpty_backend", + "result": "passed", + "seconds": 1.19 + }, + { + "name": "presentation", + "result": "passed", + "seconds": 4.15 + }, + { + "name": "shell", + "result": "passed", + "seconds": 97.02 + }, + { + "name": "selection_bytes", + "result": "passed", + "seconds": 3.56 + }, + { + "name": "selection_context", + "result": "passed", + "seconds": 3.8 + }, + { + "name": "raw_console_receiver", + "result": "passed", + "seconds": 0.39 + }, + { + "name": "paste_system", + "result": "passed", + "seconds": 8.43 + } + ], + "total": 56, + "passed": 54, + "failed": [ + "candidate_shell_tui", + "workflow_sessions" + ], + "seconds": 386.09, + "failure_stages": [ + 59 + ], + "full_acceptance": false, + "product_source_commit": "57f24f5a2204a38bcc6429cc448247a7893ef349", + "shell_sha256": "4e23e277ea7984d85856b713b3af5b0545d68042c2bbd42a8422f8a6b422c28d" + }, + "final_full_ctest": { + "log_sha256": "e9a8ea36af3b9b72665ee29c6e87a7cac15fe5531fe7c23e72bb27a60f95c17f", + "tests": [ + { + "name": "shell_launch", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "candidate_title", + "result": "passed", + "seconds": 0.9 + }, + { + "name": "candidate_reply_close", + "result": "passed", + "seconds": 0.36 + }, + { + "name": "runtime_observation", + "result": "passed", + "seconds": 1.56 + }, + { + "name": "ime_input_expectation", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "sent_message_wait", + "result": "passed", + "seconds": 0.3 + }, + { + "name": "find_bar", + "result": "passed", + "seconds": 0.36 + }, + { + "name": "renderer_metrics", + "result": "passed", + "seconds": 0.89 + }, + { + "name": "ime_context", + "result": "passed", + "seconds": 0.33 + }, + { + "name": "layout_state", + "result": "passed", + "seconds": 0.14 + }, + { + "name": "workspace_state", + "result": "passed", + "seconds": 0.37 + }, + { + "name": "transport_completion", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "scenario_tick_gate", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_core", + "result": "passed", + "seconds": 1.34 + }, + { + "name": "resize_core", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "history_core", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "selection_core", + "result": "passed", + "seconds": 0.09 + }, + { + "name": "search_core", + "result": "passed", + "seconds": 0.15 + }, + { + "name": "paste", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "sender_fence", + "result": "passed", + "seconds": 1.03 + }, + { + "name": "sender_fence_pipe", + "result": "passed", + "seconds": 0.38 + }, + { + "name": "clipboard_policy", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "keyboard", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "text_action_policy", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_resize_replay", + "result": "passed", + "seconds": 0.72 + }, + { + "name": "candidate_shell_tui", + "result": "failed", + "seconds": 30.51 + }, + { + "name": "core", + "result": "passed", + "seconds": 6.93 + }, + { + "name": "recovery", + "result": "passed", + "seconds": 10.97 + }, + { + "name": "measure", + "result": "passed", + "seconds": 4.03 + }, + { + "name": "binary_paths", + "result": "passed", + "seconds": 0.18 + }, + { + "name": "conpty_margin_contract", + "result": "passed", + "seconds": 0.29 + }, + { + "name": "benchmark_tools", + "result": "passed", + "seconds": 5.4 + }, + { + "name": "differential", + "result": "passed", + "seconds": 3.32 + }, + { + "name": "ime_inventory", + "result": "passed", + "seconds": 50.32 + }, + { + "name": "text_actions", + "result": "passed", + "seconds": 5.59 + }, + { + "name": "workflow_fixture", + "result": "passed", + "seconds": 22.88 + }, + { + "name": "workflow_sessions", + "result": "passed", + "seconds": 81.41 + }, + { + "name": "workflow_resources", + "result": "passed", + "seconds": 0.48 + }, + { + "name": "workflow_resource_phases", + "result": "passed", + "seconds": 4.31 + }, + { + "name": "workflow_system_content", + "result": "passed", + "seconds": 0.16 + }, + { + "name": "workflow_system_runner", + "result": "passed", + "seconds": 0.67 + }, + { + "name": "copy_error_frame", + "result": "passed", + "seconds": 0.14 + }, + { + "name": "paste_fence_evidence", + "result": "passed", + "seconds": 0.11 + }, + { + "name": "resize_trace", + "result": "passed", + "seconds": 0.12 + }, + { + "name": "research_guards", + "result": "passed", + "seconds": 5.0 + }, + { + "name": "receive", + "result": "passed", + "seconds": 0.23 + }, + { + "name": "conpty", + "result": "passed", + "seconds": 22.44 + }, + { + "name": "conpty_ctrl_c", + "result": "passed", + "seconds": 4.47 + }, + { + "name": "conpty_margin", + "result": "passed", + "seconds": 0.57 + }, + { + "name": "conpty_backend", + "result": "passed", + "seconds": 1.34 + }, + { + "name": "presentation", + "result": "passed", + "seconds": 4.25 + }, + { + "name": "shell", + "result": "failed", + "seconds": 121.65 + }, + { + "name": "selection_bytes", + "result": "passed", + "seconds": 3.76 + }, + { + "name": "selection_context", + "result": "passed", + "seconds": 3.81 + }, + { + "name": "raw_console_receiver", + "result": "passed", + "seconds": 0.39 + }, + { + "name": "paste_system", + "result": "passed", + "seconds": 6.72 + } + ], + "total": 56, + "passed": 54, + "failed": [ + "candidate_shell_tui", + "shell" + ], + "seconds": 411.59, + "failure_stages": [ + 59 + ], + "full_acceptance": false, + "last_test_log_sha256": "cc3f6814ba85db77091830cf20f54afcd66c5da826e6ccda539533dce7bbfc28", + "internal_skips": [ + { + "test": "setUpClass (test_candidate_compare.CandidateComparisonTests)", + "reason": "optional Alacritty binary is not built; core-candidate workflow runs these checks" + }, + { + "test": "setUpClass (test_capability_matrix.CapabilityMatrixTests)", + "reason": "optional Alacritty binary is not built; core-candidate workflow runs these checks" + }, + { + "test": "setUpClass (test_fuzz_matrix.FuzzMatrixTests)", + "reason": "optional Alacritty binary is not built; core-candidate workflow runs these checks" + }, + { + "test": "setUpClass (test_real_app_matrix.RealApplicationMatrixTests)", + "reason": "optional real application capture dependencies are not built" + }, + { + "test": "test_actual_system_copy_paste_and_shortcuts_twice (experiments.shell.test_actions.ActionWindowTest.test_actual_system_copy_paste_and_shortcuts_twice)", + "reason": "actual system Copy/Paste requires a disposable hosted VM" + }, + { + "test": "test_suspended_target_is_reclaimed_if_job_assignment_fails (test_ui_r1.EvidenceBoundaryTests.test_suspended_target_is_reclaimed_if_job_assignment_fails)", + "reason": "opt-in pinned reference failure injection" + }, + { + "test": "test_mouse_selection_to_real_system_clipboard (experiments.shell.test_shell.ShellTests.test_mouse_selection_to_real_system_clipboard)", + "reason": "system copy UI gate requires a disposable hosted VM" + }, + { + "test": "test_system_clipboard_product_read_errors_cancel_and_close (experiments.shell.test_shell.ShellTests.test_system_clipboard_product_read_errors_cancel_and_close)", + "reason": "product clipboard read gate requires a disposable hosted VM" + }, + { + "test": "test_system_clipboard_shortcut_to_window_confirmation_and_receiver (experiments.shell.test_shell.ShellTests.test_system_clipboard_shortcut_to_window_confirmation_and_receiver)", + "reason": "real system clipboard UI gate requires a disposable hosted VM" + }, + { + "test": "test_real_system_copy_shortcuts_for_styled_fixture_twice (experiments.shell.test_selection_bytes.SelectionBytesWindowTest.test_real_system_copy_shortcuts_for_styled_fixture_twice)", + "reason": "system CF requires a disposable hosted VM" + }, + { + "test": "test_real_system_copy_and_edit_context_twice (experiments.shell.test_selection_context.SelectionContextWindowTest.test_real_system_copy_and_edit_context_twice)", + "reason": "real CF/EDIT Copy requires a disposable hosted VM" + }, + { + "test": "test_real_system_clipboard (experiments.shell.test_paste.PasteTests.test_real_system_clipboard)", + "reason": "Private window station OpenClipboard denied (5); system API gate remains unverified." + } + ], + "log_encoding_note": "CTest localized date header is not UTF-8; only ASCII skip fields are extracted. Raw log hash is preserved.", + "shell_unittest": { + "run": 40, + "passed": 36, + "errors": 1, + "skipped": 3, + "seconds": 121.382 + }, + "product_source_commit": "92eac12d5cd2868b469e8b9a10e68f5e20ee2cb0", + "shell_sha256": "15a149a3d7d47efaf866226559d4b60bbf83e0ff6004a85df41edcb5415ad206" + }, + "vim_environment": { + "vim_sha256": "2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a", + "msys_sha256": "3096d2ba9be20e90be1399edd391bac65d84bc387f5a419b502c9b326081930f", + "initial_run": "Vim absent from process PATH; stage50 is not the original stage59.", + "isolated_intermediate": "Original two-round candidate_shell_tui passed once after process-only PATH fix, 6.95s.", + "full_intermediate": "Original stage59 reproduced in corrected full run; #52 remains open." + }, + "workflow_issue": 87, + "workflow_comparison": [ + { + "label": "baseline", + "shell_sha256": "e81d92a8c7d380d4c33639861180b04935e021bc7c1a5179197c8a9e3c83454a", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "error": null, + "sample_sha256": "213eccd11e89c1e4bbd0e2261ad43cf42772ac7c880ffe13d2ad4c17b52f8dd6" + }, + { + "label": "native_viewport", + "shell_sha256": "4e23e277ea7984d85856b713b3af5b0545d68042c2bbd42a8422f8a6b422c28d", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "error": null, + "sample_sha256": "9aa0079ca1b0ee43e186bd91d633490b80ee16ffc57bcf68f96b5c602994fc56" + } + ], + "workflow_mismatches": [ + { + "run": "run-89580b0cae404944b12e03e031dab1bd", + "bad": [ + { + "cycle": 1, + "name": "F5", + "source_bytes": 16384, + "actual": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301............", + "expected": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301...................................", + "exact_prefix": true, + "output": { + "queued_bytes": 8217, + "high_water_bytes": 8217, + "stopped": false + } + }, + { + "cycle": 1, + "name": "F5", + "source_bytes": 16384, + "actual": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301............", + "expected": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301...................................", + "exact_prefix": true, + "output": { + "queued_bytes": 8217, + "high_water_bytes": 8217, + "stopped": false + } + } + ] + }, + { + "run": "run-8abb195e8f824858adbc0149ce1bbca6", + "bad": [ + { + "cycle": 2, + "name": "F5", + "source_bytes": 16384, + "actual": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301............", + "expected": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301...................................", + "exact_prefix": true, + "output": { + "queued_bytes": 8217, + "high_water_bytes": 8217, + "stopped": false + } + }, + { + "cycle": 2, + "name": "F5", + "source_bytes": 16384, + "actual": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301............", + "expected": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301...................................", + "exact_prefix": true, + "output": { + "queued_bytes": 8217, + "high_water_bytes": 8217, + "stopped": false + } + } + ] + }, + { + "run": "run-9266bc270e244e05a0073d86f00ae8ae", + "bad": [] + } + ], + "workflow_runs": [ + { + "run": "run-3b821fd77c1c4e60870eeee8839d485d", + "validation_sha256": "b5bf6fe8e8dc71d8d9285378095ad9a542a74de68bf82ad4cbeafc1fb3ffae84", + "status": "passed", + "round": 1, + "sample_sha256": "915bfe48f290e082e1c461a167b1d5723217a0285de87d6597b0e2c830b99cf3", + "sessions_sha256": "0acec32f3af02cab9f89949382858ba19c121c1d1b6f8e0b1d06babc640bb39c", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "shell_sha256": "15a149a3d7d47efaf866226559d4b60bbf83e0ff6004a85df41edcb5415ad206" + }, + { + "run": "run-6515c0088c384c7c94542620ff12380b", + "validation_sha256": "450bd976cc67633db7b4a90aa28a3f818c9b188bc6281eb7fca0d3741cc553a1", + "status": "passed", + "round": 0, + "sample_sha256": "57c7f8bab95f8f98fa8b7dbae6110d18e68d4f73d1d689265c2b1fdc7e863e96", + "sessions_sha256": "e5d39eaf107c4dd112f52d1562ec6820033c356904975c4c72024100dac36b06", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "shell_sha256": "15a149a3d7d47efaf866226559d4b60bbf83e0ff6004a85df41edcb5415ad206" + }, + { + "run": "run-89580b0cae404944b12e03e031dab1bd", + "validation_sha256": "2de8f68846c3b76170acffe8bc3e717886d6f0f86b04af9405f9d58cf5df73f8", + "status": "failed", + "round": 0, + "sample_sha256": "3a5150e5e75ac3168080585af7865e1df631ec19d2b2a237f13be4a2e93e5e4f", + "sessions_sha256": "3d65a9c388ea43114b20bf3c6dc7da49825b54529e1eec25bdfc6107acfb2c97", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "shell_sha256": "4e23e277ea7984d85856b713b3af5b0545d68042c2bbd42a8422f8a6b422c28d" + }, + { + "run": "run-8abb195e8f824858adbc0149ce1bbca6", + "validation_sha256": "372adca843f92115d93a307240f58b30708e79c2700e29def8cceb179d508283", + "status": "failed", + "round": 1, + "sample_sha256": "74ceb06312732d0a38499149102f3f683f4a6f62a45961aeef8413ad6e0a20e9", + "sessions_sha256": "d4acc6bbc8f648732bf7e240d9f3613df82e1d4dbff4aa9a221363a122d6fcf2", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "shell_sha256": "4e23e277ea7984d85856b713b3af5b0545d68042c2bbd42a8422f8a6b422c28d" + }, + { + "run": "run-9266bc270e244e05a0073d86f00ae8ae", + "validation_sha256": "758bdc8ef0d865ad457bb898e14187751693d3c65b8240e15d2f3aa32a129083", + "status": "passed", + "round": 0, + "sample_sha256": "d669917b3065530eb1b65900b1ad86ef0b6a1f6bd186dc10cffa0bdddf8b1e0d", + "sessions_sha256": "8081ee0237b2d50a1450ff4c12c4a7824a955ccfde651d56eac659bd2935a2bc", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "shell_sha256": "4e23e277ea7984d85856b713b3af5b0545d68042c2bbd42a8422f8a6b422c28d" + } + ], + "restore_stage1": { + "issue": 88, + "mode": "ui-workspace-restore", + "stage": 1, + "repeat": 1, + "files_sha256": { + "persistence-failure.json": "7ccb0a90b526462a929cbebce42debccfd97b54676e54e0935fbf292826b5e5b", + "restore-geometry.json": "5cc777f65d580599f8bda2d3e7e3d246b63aba19dba55a27e65d358709402638", + "sample.json": "5e546fb36ec65e2d2eb20e9d1047216be33dc8b17eaaa611d995686a1be7d620", + "workspace.layout": "660f3a4064006db91261100c6fb1e1d2fb82f73210575910a29880489dd0cdda" + }, + "result": { + "exit_code": 2, + "timed_out": false, + "job_after": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 11, + "terminated": 0 + } + }, + "tabs": [ + { + "group": "bottom", + "kind": "cmd", + "ready": 1, + "observation_enabled": 1, + "observed_bytes": 230, + "observed_sha256": "68fadc3fc45b9fbaab78b7e1a55987f5fdc11e9a2abdbe39fc65135556703017" + }, + { + "group": "main", + "kind": "cmd", + "ready": 1, + "observation_enabled": 1, + "observed_bytes": 262, + "observed_sha256": "8db2595d8d8546bbb7bb7a6facf79ab72e8f88ee4ce6ec9cf255dbac8528013e" + }, + { + "group": "main", + "kind": "powershell", + "ready": 1, + "observation_enabled": 1, + "observed_bytes": 4373, + "observed_sha256": "06d376c5709d01185a5696726e5ed2a412184b5e1df886ac948c1ac64b349f4c" + } + ], + "cause_confirmed": false, + "note": "Original transports contain output and prompts; bare CR in cmd echo is an unproved oracle hypothesis." + }, + "excluded": [ + { + "affected": [ + "gui-restored-baseline", + "restored-replay" + ], + "validation_status": "invalid_source_binary_pair", + "reason": "Copy-Item retained the old source timestamp; incremental build reused the diagnostic static library and executables. Binary hashes matched the probe, not the restored source. Excluded from baseline comparisons.", + "recorded_utc": "2026-10-26T19:53:23.674551+00:00" + }, + { + "calls": 174, + "elapsed_seconds": 2.6090000001713634, + "reduction_complete": true, + "bytes": 30, + "events": 2, + "transport_sha256": "060ed625d586f873039fb5c6f517b99a6b1ddcab9f854e568a0edcbec91b7da0", + "diagnostic_only": true, + "expected_symptom": "exact TF_SIZE_100x28OW", + "usable_causal_reduction": false, + "reason": "The reduction removed resize and constructed a legitimate overwrite. Symptom equality alone is insufficient; not a regression fixture." + } + ], + "limits": [ + "Original GUI transport and private sample files remain local; only reviewed synthetic native cases are published.", + "Native microprobe does not reply to CPR; snapshots and bounded host query wait perturb timing.", + "Default/system, candidate/system and candidate/official evidence remain separate.", + "Final full run failed #52 Vim stage59 and #88 restore stage1; #87 earlier workflow failures remain unresolved.", + "This is a limited experimental resize fix; #29, #34 and full R2 acceptance remain open." + ], + "presented_done": null, + "windterm_runtime_equivalence": false, + "performance_acceptance": false, + "product_backend_selected": false, + "full_r2_verified": false +} diff --git a/experiments/conpty/results/2026-10-27-source-margin-controls/validation.json b/experiments/conpty/results/2026-10-27-source-margin-controls/validation.json new file mode 100644 index 00000000..5fb7e04f --- /dev/null +++ b/experiments/conpty/results/2026-10-27-source-margin-controls/validation.json @@ -0,0 +1,1667 @@ +{ + "schema": "termforge-source-margin-controls-v1", + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "generated_utc": "2026-10-27T05:46:36.962112+00:00", + "build_run": "40449292015", + "source": "edec26bb3c4d04858a667a96debf69c139476172", + "working_tree_dirty": false, + "source_files": { + "CMakeLists.txt": "9afd4590855f90d0e467824a49fc75a6f24b0d88ba7f4ff4ad92764239b682b3", + "experiments/conpty/backend.hpp": "af672718af8c05e90a26576e317b6ac9295fbee76f3f0298371060a9d167f5bb", + "experiments/conpty/session.hpp": "242ac8aa13f3fd56675b2ddefaaf207e5f4c8d3ef8e703260aaed2f0c41677aa", + "experiments/conpty/test_backend.py": "ab371ff7fbf196061451b96009a8260afb35473c1d05b2f99dda66e2b6a9bbba", + "experiments/conpty/margin_controls_probe.cpp": "bf4193ed091b83b50f095623c9bbc406b63646e92dfac552cae1818fd9fc1a18", + "experiments/conpty/margin_controls.py": "7bab11200188a30eaeac4de56b2f35a365def83651fe19e17e54e43e2740060c", + "experiments/conpty/source_margin_controls.py": "b1159026480e52fde97f7b0e36824bded9fb394f70846c94bffa767e063b3df6", + "experiments/conpty/margin_run.py": "99e6caf18224ce7b41307355066db70eacb810bc0626b15d3af09c9a89439ed2", + "experiments/conpty/source_margin_run.py": "26d07c9f912b1bb68b89d33a989ee80189230002869df83a572a22e7b2f6f657", + "experiments/conpty/run.py": "c8eef1e36b6d200b2d508cef91eaa5ca79a91fa87c5daf6265b2475c31dce329", + "experiments/candidates/alacritty/run.py": "2d83240506bf03b4da92f7b2dc85adf40446aff25cd0f0dbe08132b611c2627e", + "experiments/shell/workflow_fixture.hpp": "332d73699320a6f503fc212417a4d3820b82cc2d3feb3d1fffe3930660d57453", + "experiments/shell/workflow_checks.py": "f186ff0f5335c26fc5c4f0286961981dfd6af8fbaafc789e2bc50058486efa44" + }, + "platform": "Windows-11-10.0.26200-SP0", + "probe_sha256": "a71c94795806a40062ace7788ee69cfbac0cd8a274765dce6b28aa6d7f33c7ee", + "trace_sha256": "5941d4569d0ae146eb005f12ecfb15014bc06c18ee48d1c9460824ab65df93d3", + "pair_receipts": { + "baseline": { + "schema": "termforge-upstream-conpty-variant-v1", + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "workflow_run": "40449292015", + "production_patch_applied": false, + "focused_adapter_result": "expected-failure", + "full_adapter_verified": false, + "patch_sha256": "dc27377e399bd0217a0b76e16cc89f087c1b781929e4c958ad30c3a475322b81", + "files": { + "OpenConsole.exe": { + "sha256": "fabdc934d9755c405fe848251905e8c0e70a2bf7702b8ed7ccd104eec6591588", + "bytes": 1146880 + }, + "conpty.dll": { + "sha256": "9d165745cce4b29a5818a45c23f68e962b3a3140c2e00566bd17fee970fdd9d1", + "bytes": 108544 + } + } + }, + "patched": { + "schema": "termforge-upstream-conpty-variant-v1", + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "workflow_run": "40449292015", + "production_patch_applied": true, + "focused_adapter_result": "passed", + "full_adapter_verified": true, + "patch_sha256": "dc27377e399bd0217a0b76e16cc89f087c1b781929e4c958ad30c3a475322b81", + "files": { + "OpenConsole.exe": { + "sha256": "1c8f071f6e4779ec297fb041af4eaea39be29b6920cef625ab91d1cbc20c79cb", + "bytes": 1147392 + }, + "conpty.dll": { + "sha256": "9d165745cce4b29a5818a45c23f68e962b3a3140c2e00566bd17fee970fdd9d1", + "bytes": 108544 + } + } + } + }, + "deadlines": { + "child_seconds": 5, + "outer_seconds": 15, + "cleanup_seconds": 5 + }, + "planned_executions": 12, + "comparisons": [ + { + "case": "main-only", + "columns": 80, + "rows": 24, + "baseline_matches_prediction": true, + "patched_native_passed": true, + "both_terminal_finals_passed": true, + "passed": true + }, + { + "case": "default-alt", + "columns": 80, + "rows": 24, + "baseline_matches_prediction": true, + "patched_native_passed": true, + "both_terminal_finals_passed": true, + "passed": true + }, + { + "case": "repeat-alt", + "columns": 80, + "rows": 24, + "baseline_matches_prediction": true, + "patched_native_passed": true, + "both_terminal_finals_passed": true, + "passed": true + }, + { + "case": "main-only", + "columns": 12, + "rows": 7, + "baseline_matches_prediction": true, + "patched_native_passed": true, + "both_terminal_finals_passed": true, + "passed": true + }, + { + "case": "default-alt", + "columns": 12, + "rows": 7, + "baseline_matches_prediction": true, + "patched_native_passed": true, + "both_terminal_finals_passed": true, + "passed": true + }, + { + "case": "repeat-alt", + "columns": 12, + "rows": 7, + "baseline_matches_prediction": true, + "patched_native_passed": true, + "both_terminal_finals_passed": true, + "passed": true + } + ], + "passed": true, + "full_r2_contract_verified": false, + "product_backend_selected": false, + "presented_done": null, + "unmeasured": [ + "styled_source", + "history_stress", + "resize", + "queries_and_api_writes", + "terminal_stage_cursors", + "full_product", + "performance", + "WindTerm_equivalence" + ], + "raw_summary_sha256": "49a51e9fe31591c689203b54eedf5a7b75c93db5fb74a4062d1ddbdf00732004", + "build": { + "generator": "Visual Studio 17 2022", + "compiler": "MSVC 19.42.34433.0", + "sdk": "10.0.26100.0", + "configuration": "Release x64", + "source_experiment": true, + "candidate_adapter": false, + "product_backend_dir": "", + "build_testing": false, + "target": "conpty_source_margin_controls", + "configure_log_sha256": "80e9aa25bb3337065aa412f06d5a7e652814a181df9128b8d2fbf86db9b493f6", + "build_log_sha256": "20716d99571de46a12aedb7431f6eff87ed76668e0c444e7adc30780c5daf56c", + "cmake_cache_sha256": "45df1ee5960f8231049fc23a5eb3cd84297c696c747005ff8b5af60a3ed65be6" + }, + "checks": { + "margin_regressions": { + "tests": 17, + "passed": 17, + "skipped": 0, + "seconds": 0.375, + "stdout_log_sha256": "7090c04a72c484bcf76445e60d14136db7b247111a69552ae0abce8135e2f030" + }, + "loader_regressions": { + "tests": 14, + "passed": 14, + "skipped": 0, + "seconds": 1.02, + "stdout_log_sha256": "6b49c108d84db78da015c7b6f95d8691216ee7d50510f7f4bf80157942dc244e" + }, + "original_margin_probe_sha256": "060abdbb7e4c885f77e2617fe0ca1f5b7e0550d6c3a851f918d1836b3afb6b83", + "original_backend_probe_sha256": "2d921cc7d82f912ab87a9a6d0c73d9e6e7acfcde00d0d88020d3997d5732d1c7", + "binary_source_files_unchanged_since_parent": true, + "original_probe_build_scope": "Reused the preceding build; the native probe source and shared headers are unchanged. The current Python harness was executed." + }, + "samples": { + "baseline-80x24-main-only": { + "status": "completed", + "case": "main-only", + "columns": 80, + "rows": 24, + "source_bytes": 99, + "source_sha256": "562efe17a5fc38ef1f6c0d2178909529d410a564153af2096fd65385774b7d78", + "transport_bytes": 140, + "transport_sha256": "298ef170a31e6b682bd03e6df50fa63501bba6a4d50b93068d238de5b11c98d6", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": true, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": true, + "native_cursor": { + "before": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "final": "cd50199bb35507012250c82e89282232990e58c8dfa12d014002837520780135" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "2cc9905011e52755ad390a7ef9ea8c84ced519ae8272f6806e0d6c0c0801d328", + "console.bin": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b", + "cells.bin": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "final": { + "console.json": "44791e13f43dc0e3d8f5f85e3a0fe43d0efd140d92c44874183ae37ba75b6805", + "console.bin": "b397c51fdcda4e4c05dd0f99994518461c063798e3485b36f1fa7922902116d8", + "cells.bin": "cd50199bb35507012250c82e89282232990e58c8dfa12d014002837520780135" + } + }, + "transport_prefix_sha256": "bfc803917123cd135ebef7399d2eaa9a15617916a02f52548cb612df01e954a3", + "supervision_summary_sha256": "661250217a88ffca8b79f59e301f5d89766fde825a36a274ab0090f5ec7552b5" + }, + "patched-80x24-main-only": { + "status": "completed", + "case": "main-only", + "columns": 80, + "rows": 24, + "source_bytes": 99, + "source_sha256": "562efe17a5fc38ef1f6c0d2178909529d410a564153af2096fd65385774b7d78", + "transport_bytes": 140, + "transport_sha256": "298ef170a31e6b682bd03e6df50fa63501bba6a4d50b93068d238de5b11c98d6", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": true, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": true, + "native_cursor": { + "before": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "final": "cd50199bb35507012250c82e89282232990e58c8dfa12d014002837520780135" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "2cc9905011e52755ad390a7ef9ea8c84ced519ae8272f6806e0d6c0c0801d328", + "console.bin": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b", + "cells.bin": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "final": { + "console.json": "44791e13f43dc0e3d8f5f85e3a0fe43d0efd140d92c44874183ae37ba75b6805", + "console.bin": "b397c51fdcda4e4c05dd0f99994518461c063798e3485b36f1fa7922902116d8", + "cells.bin": "cd50199bb35507012250c82e89282232990e58c8dfa12d014002837520780135" + } + }, + "transport_prefix_sha256": "bfc803917123cd135ebef7399d2eaa9a15617916a02f52548cb612df01e954a3", + "supervision_summary_sha256": "53233abedb9bc62a5f7bbdc241403891ed825b16572c6ea9c37c89ffe3189cb5" + }, + "baseline-80x24-default-alt": { + "status": "completed", + "case": "default-alt", + "columns": 80, + "rows": 24, + "source_bytes": 150, + "source_sha256": "486f50c60cfcaac7c591c4cd943583cc547c94f3ba1d3b8a8b316772d6af12da", + "transport_bytes": 191, + "transport_sha256": "b1f24ee51249c3d8a3e6a5d354f61f69f9e23605256b7191d44f91be5f7c9224", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": true, + "viewport": true, + "passed": false + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": false, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": true, + "native_cursor": { + "before": [ + 0, + 0 + ], + "alt": [ + 23, + 8 + ], + "restored": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "alt": "9061f9f82c6518dc6a37a4ba79a7d03517dfe401fab8bca6d11d7e2ae4710221", + "restored": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "final": "cd50199bb35507012250c82e89282232990e58c8dfa12d014002837520780135" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "2cc9905011e52755ad390a7ef9ea8c84ced519ae8272f6806e0d6c0c0801d328", + "console.bin": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b", + "cells.bin": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "alt": { + "console.json": "afb696fe20079f214ebe0f3daf9fccbeab3dbfd56219d6d9b68271f5e850b70e", + "console.bin": "65e6b3bccf2aed76d811477456d87c1a0bdacdb8c956dbf292fbab220c874097", + "cells.bin": "9061f9f82c6518dc6a37a4ba79a7d03517dfe401fab8bca6d11d7e2ae4710221" + }, + "restored": { + "console.json": "5c4c6f2da1d5464f63e7d5b5cc5156e681e00febf620fcc7bed5767947d0b1b4", + "console.bin": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b", + "cells.bin": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "final": { + "console.json": "44791e13f43dc0e3d8f5f85e3a0fe43d0efd140d92c44874183ae37ba75b6805", + "console.bin": "b397c51fdcda4e4c05dd0f99994518461c063798e3485b36f1fa7922902116d8", + "cells.bin": "cd50199bb35507012250c82e89282232990e58c8dfa12d014002837520780135" + } + }, + "transport_prefix_sha256": "1d5d72c9e266d4bc59901ea1361c5c5be4a19191d67ea6283b74ff722e587982", + "supervision_summary_sha256": "661250217a88ffca8b79f59e301f5d89766fde825a36a274ab0090f5ec7552b5" + }, + "patched-80x24-default-alt": { + "status": "completed", + "case": "default-alt", + "columns": 80, + "rows": 24, + "source_bytes": 150, + "source_sha256": "486f50c60cfcaac7c591c4cd943583cc547c94f3ba1d3b8a8b316772d6af12da", + "transport_bytes": 191, + "transport_sha256": "b1f24ee51249c3d8a3e6a5d354f61f69f9e23605256b7191d44f91be5f7c9224", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": true, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": false, + "native_cursor": { + "before": [ + 0, + 0 + ], + "alt": [ + 23, + 8 + ], + "restored": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "alt": "ec772cf0abe15840349a8fe5cbe9e18c4746b4fda2c32f17062178386d4b6273", + "restored": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "final": "cd50199bb35507012250c82e89282232990e58c8dfa12d014002837520780135" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "2cc9905011e52755ad390a7ef9ea8c84ced519ae8272f6806e0d6c0c0801d328", + "console.bin": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b", + "cells.bin": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "alt": { + "console.json": "0c5fd107f5887d96aab42e833da5d377634051fdb81dcaca9ede1c17f5bb80e4", + "console.bin": "3b80a0147a3c299def30a9956a2fe30be0e769c3eaf6d345c099803e511d4920", + "cells.bin": "ec772cf0abe15840349a8fe5cbe9e18c4746b4fda2c32f17062178386d4b6273" + }, + "restored": { + "console.json": "5c4c6f2da1d5464f63e7d5b5cc5156e681e00febf620fcc7bed5767947d0b1b4", + "console.bin": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b", + "cells.bin": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "final": { + "console.json": "44791e13f43dc0e3d8f5f85e3a0fe43d0efd140d92c44874183ae37ba75b6805", + "console.bin": "b397c51fdcda4e4c05dd0f99994518461c063798e3485b36f1fa7922902116d8", + "cells.bin": "cd50199bb35507012250c82e89282232990e58c8dfa12d014002837520780135" + } + }, + "transport_prefix_sha256": "1d5d72c9e266d4bc59901ea1361c5c5be4a19191d67ea6283b74ff722e587982", + "supervision_summary_sha256": "53233abedb9bc62a5f7bbdc241403891ed825b16572c6ea9c37c89ffe3189cb5" + }, + "baseline-80x24-repeat-alt": { + "status": "completed", + "case": "repeat-alt", + "columns": 80, + "rows": 24, + "source_bytes": 221, + "source_sha256": "1e618a0c2d70bf177e8c58afba8aba50242da0eeff03cebf2f24a417cc31d83d", + "transport_bytes": 264, + "transport_sha256": "5db1cc1c0ebc73c00368561e5b9a3b7aa49587c1970dc0fdcb9ffd42aee6941f", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt1": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt2": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": true, + "viewport": true, + "passed": false + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": true, + "viewport": true, + "passed": false + } + }, + "passed": false, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": true, + "native_cursor": { + "before": [ + 0, + 0 + ], + "alt1": [ + 4, + 5 + ], + "alt2": [ + 23, + 8 + ], + "restored": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "alt1": "0fd582bf6115b38b1dbe57084658f686392c74b4d6b1340f945cfcbca4ff7635", + "alt2": "9061f9f82c6518dc6a37a4ba79a7d03517dfe401fab8bca6d11d7e2ae4710221", + "restored": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "final": "27bb6f98b11712daa002382b58f0157f1b4b1026e97b48460f65422986b01c73" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "2cc9905011e52755ad390a7ef9ea8c84ced519ae8272f6806e0d6c0c0801d328", + "console.bin": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b", + "cells.bin": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "alt1": { + "console.json": "23d40e6afe96877aebb9506bfa4b14f09047e0c68c861d2a19b20dd96baaf993", + "console.bin": "f6492387ed4760be9851cccd504ac8f6f21624d55dce9671b3be4560ada0b5ac", + "cells.bin": "0fd582bf6115b38b1dbe57084658f686392c74b4d6b1340f945cfcbca4ff7635" + }, + "alt2": { + "console.json": "90e7b9d0dbbdaca888d20bb89c3599578e2c894eab5b797580776f5b04e0b7fc", + "console.bin": "65e6b3bccf2aed76d811477456d87c1a0bdacdb8c956dbf292fbab220c874097", + "cells.bin": "9061f9f82c6518dc6a37a4ba79a7d03517dfe401fab8bca6d11d7e2ae4710221" + }, + "restored": { + "console.json": "5c4c6f2da1d5464f63e7d5b5cc5156e681e00febf620fcc7bed5767947d0b1b4", + "console.bin": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b", + "cells.bin": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "final": { + "console.json": "bed3585f74d24e6466a540ba266c247da766211b7fdda0c97c4a82986582ba9c", + "console.bin": "d80cd19d088c244593a32ae4eac1d3b66bb0bf6c93841c208535cec6f29fed55", + "cells.bin": "27bb6f98b11712daa002382b58f0157f1b4b1026e97b48460f65422986b01c73" + } + }, + "transport_prefix_sha256": "3f35d4d6e53642c5763e1627b717fe49c47efd6633f6a8890aa78351cc2d9b34", + "supervision_summary_sha256": "661250217a88ffca8b79f59e301f5d89766fde825a36a274ab0090f5ec7552b5" + }, + "patched-80x24-repeat-alt": { + "status": "completed", + "case": "repeat-alt", + "columns": 80, + "rows": 24, + "source_bytes": 221, + "source_sha256": "1e618a0c2d70bf177e8c58afba8aba50242da0eeff03cebf2f24a417cc31d83d", + "transport_bytes": 264, + "transport_sha256": "5db1cc1c0ebc73c00368561e5b9a3b7aa49587c1970dc0fdcb9ffd42aee6941f", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt1": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt2": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": true, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": false, + "native_cursor": { + "before": [ + 0, + 0 + ], + "alt1": [ + 4, + 5 + ], + "alt2": [ + 23, + 8 + ], + "restored": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "alt1": "0fd582bf6115b38b1dbe57084658f686392c74b4d6b1340f945cfcbca4ff7635", + "alt2": "ec772cf0abe15840349a8fe5cbe9e18c4746b4fda2c32f17062178386d4b6273", + "restored": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "final": "cd50199bb35507012250c82e89282232990e58c8dfa12d014002837520780135" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "2cc9905011e52755ad390a7ef9ea8c84ced519ae8272f6806e0d6c0c0801d328", + "console.bin": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b", + "cells.bin": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "alt1": { + "console.json": "23d40e6afe96877aebb9506bfa4b14f09047e0c68c861d2a19b20dd96baaf993", + "console.bin": "f6492387ed4760be9851cccd504ac8f6f21624d55dce9671b3be4560ada0b5ac", + "cells.bin": "0fd582bf6115b38b1dbe57084658f686392c74b4d6b1340f945cfcbca4ff7635" + }, + "alt2": { + "console.json": "170bfa243bf9568e843cd045a5577ff17055cd73282eeb70657e9758867cd387", + "console.bin": "3b80a0147a3c299def30a9956a2fe30be0e769c3eaf6d345c099803e511d4920", + "cells.bin": "ec772cf0abe15840349a8fe5cbe9e18c4746b4fda2c32f17062178386d4b6273" + }, + "restored": { + "console.json": "5c4c6f2da1d5464f63e7d5b5cc5156e681e00febf620fcc7bed5767947d0b1b4", + "console.bin": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b", + "cells.bin": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "final": { + "console.json": "44791e13f43dc0e3d8f5f85e3a0fe43d0efd140d92c44874183ae37ba75b6805", + "console.bin": "b397c51fdcda4e4c05dd0f99994518461c063798e3485b36f1fa7922902116d8", + "cells.bin": "cd50199bb35507012250c82e89282232990e58c8dfa12d014002837520780135" + } + }, + "transport_prefix_sha256": "3f35d4d6e53642c5763e1627b717fe49c47efd6633f6a8890aa78351cc2d9b34", + "supervision_summary_sha256": "53233abedb9bc62a5f7bbdc241403891ed825b16572c6ea9c37c89ffe3189cb5" + }, + "baseline-12x7-main-only": { + "status": "completed", + "case": "main-only", + "columns": 12, + "rows": 7, + "source_bytes": 99, + "source_sha256": "562efe17a5fc38ef1f6c0d2178909529d410a564153af2096fd65385774b7d78", + "transport_bytes": 140, + "transport_sha256": "298ef170a31e6b682bd03e6df50fa63501bba6a4d50b93068d238de5b11c98d6", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": true, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": true, + "native_cursor": { + "before": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "final": "3143631df305f659111e37d5a4a81be0b4c1ad63957cc73c3a162f7ec1c782d7" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "0ff49b4ca941a2569ba6b6e88be65a2d371bdeebb1ec02c1028c720d84a74e6e", + "console.bin": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10", + "cells.bin": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "final": { + "console.json": "7e0a4e914d3163ba1eed10904852c8fb8a392c585f53612d2e96395c65cb5931", + "console.bin": "ae750de80c88d1345983e4ff3af5c96f9d83f550efe08480233b9d4f593b0465", + "cells.bin": "3143631df305f659111e37d5a4a81be0b4c1ad63957cc73c3a162f7ec1c782d7" + } + }, + "transport_prefix_sha256": "bfc803917123cd135ebef7399d2eaa9a15617916a02f52548cb612df01e954a3", + "supervision_summary_sha256": "661250217a88ffca8b79f59e301f5d89766fde825a36a274ab0090f5ec7552b5" + }, + "patched-12x7-main-only": { + "status": "completed", + "case": "main-only", + "columns": 12, + "rows": 7, + "source_bytes": 99, + "source_sha256": "562efe17a5fc38ef1f6c0d2178909529d410a564153af2096fd65385774b7d78", + "transport_bytes": 140, + "transport_sha256": "298ef170a31e6b682bd03e6df50fa63501bba6a4d50b93068d238de5b11c98d6", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": true, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": true, + "native_cursor": { + "before": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "final": "3143631df305f659111e37d5a4a81be0b4c1ad63957cc73c3a162f7ec1c782d7" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "0ff49b4ca941a2569ba6b6e88be65a2d371bdeebb1ec02c1028c720d84a74e6e", + "console.bin": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10", + "cells.bin": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "final": { + "console.json": "7e0a4e914d3163ba1eed10904852c8fb8a392c585f53612d2e96395c65cb5931", + "console.bin": "ae750de80c88d1345983e4ff3af5c96f9d83f550efe08480233b9d4f593b0465", + "cells.bin": "3143631df305f659111e37d5a4a81be0b4c1ad63957cc73c3a162f7ec1c782d7" + } + }, + "transport_prefix_sha256": "bfc803917123cd135ebef7399d2eaa9a15617916a02f52548cb612df01e954a3", + "supervision_summary_sha256": "53233abedb9bc62a5f7bbdc241403891ed825b16572c6ea9c37c89ffe3189cb5" + }, + "baseline-12x7-default-alt": { + "status": "completed", + "case": "default-alt", + "columns": 12, + "rows": 7, + "source_bytes": 149, + "source_sha256": "f454182447e992f9384e00b8754b1650068dad69304ea0d61815b049f1e1e212", + "transport_bytes": 190, + "transport_sha256": "f0241ef4bb6c24d2ab43143d810209559fff24a66461e4321113588857f3d243", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": true, + "viewport": true, + "passed": false + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": false, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": true, + "native_cursor": { + "before": [ + 0, + 0 + ], + "alt": [ + 6, + 8 + ], + "restored": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "alt": "2bb287dce6b1d142599046e30596417ed0ea1abdff31f81471cb2c03fe46e34a", + "restored": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "final": "3143631df305f659111e37d5a4a81be0b4c1ad63957cc73c3a162f7ec1c782d7" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "0ff49b4ca941a2569ba6b6e88be65a2d371bdeebb1ec02c1028c720d84a74e6e", + "console.bin": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10", + "cells.bin": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "alt": { + "console.json": "a80a93e5a1c401273bd9ec9776fa022aad8b3dd409d3ec0285aafb5126bed46e", + "console.bin": "be8621c984e3f28209bbc97d377e78b8ecd01ca4f2600129c72181f0230f7744", + "cells.bin": "2bb287dce6b1d142599046e30596417ed0ea1abdff31f81471cb2c03fe46e34a" + }, + "restored": { + "console.json": "d846fba64eedf13310f9b819d2ef8d5cec418b79617be1aaab3ebee496de85c2", + "console.bin": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10", + "cells.bin": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "final": { + "console.json": "7e0a4e914d3163ba1eed10904852c8fb8a392c585f53612d2e96395c65cb5931", + "console.bin": "ae750de80c88d1345983e4ff3af5c96f9d83f550efe08480233b9d4f593b0465", + "cells.bin": "3143631df305f659111e37d5a4a81be0b4c1ad63957cc73c3a162f7ec1c782d7" + } + }, + "transport_prefix_sha256": "6f36d5c80521c6b16edeb5255b5ee7c76140ac9b6e953ff0af7f0256fd01b325", + "supervision_summary_sha256": "661250217a88ffca8b79f59e301f5d89766fde825a36a274ab0090f5ec7552b5" + }, + "patched-12x7-default-alt": { + "status": "completed", + "case": "default-alt", + "columns": 12, + "rows": 7, + "source_bytes": 149, + "source_sha256": "f454182447e992f9384e00b8754b1650068dad69304ea0d61815b049f1e1e212", + "transport_bytes": 190, + "transport_sha256": "f0241ef4bb6c24d2ab43143d810209559fff24a66461e4321113588857f3d243", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": true, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": false, + "native_cursor": { + "before": [ + 0, + 0 + ], + "alt": [ + 6, + 8 + ], + "restored": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "alt": "17469e5eb0c1cfa2577d55e2f5870e4d478f650f2d4a9d72c330094bec23ccc6", + "restored": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "final": "3143631df305f659111e37d5a4a81be0b4c1ad63957cc73c3a162f7ec1c782d7" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "0ff49b4ca941a2569ba6b6e88be65a2d371bdeebb1ec02c1028c720d84a74e6e", + "console.bin": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10", + "cells.bin": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "alt": { + "console.json": "2ee82c69922b50787b528fae0134f67dfa2e50226f4c5d14ffef428873fb9976", + "console.bin": "127f85391d796833c9f5e9a6ac970ab4fa3fc369ebfb8df5214291504940c6a1", + "cells.bin": "17469e5eb0c1cfa2577d55e2f5870e4d478f650f2d4a9d72c330094bec23ccc6" + }, + "restored": { + "console.json": "d846fba64eedf13310f9b819d2ef8d5cec418b79617be1aaab3ebee496de85c2", + "console.bin": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10", + "cells.bin": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "final": { + "console.json": "7e0a4e914d3163ba1eed10904852c8fb8a392c585f53612d2e96395c65cb5931", + "console.bin": "ae750de80c88d1345983e4ff3af5c96f9d83f550efe08480233b9d4f593b0465", + "cells.bin": "3143631df305f659111e37d5a4a81be0b4c1ad63957cc73c3a162f7ec1c782d7" + } + }, + "transport_prefix_sha256": "6f36d5c80521c6b16edeb5255b5ee7c76140ac9b6e953ff0af7f0256fd01b325", + "supervision_summary_sha256": "53233abedb9bc62a5f7bbdc241403891ed825b16572c6ea9c37c89ffe3189cb5" + }, + "baseline-12x7-repeat-alt": { + "status": "completed", + "case": "repeat-alt", + "columns": 12, + "rows": 7, + "source_bytes": 220, + "source_sha256": "2b68cea085a519f73306b02b702c685aa0dba44d780c8619e0e3ef7b202d1dcd", + "transport_bytes": 263, + "transport_sha256": "7859bdb124e0b8ed7858a5d090648dc30948d81c56948c0942313cead0e79161", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt1": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt2": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": true, + "viewport": true, + "passed": false + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": true, + "viewport": true, + "passed": false + } + }, + "passed": false, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": true, + "native_cursor": { + "before": [ + 0, + 0 + ], + "alt1": [ + 4, + 5 + ], + "alt2": [ + 6, + 8 + ], + "restored": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "alt1": "c7b9b5456a0566673db0a45765f1de63ac3ae76501da1be8cc3f0aadf848b3b7", + "alt2": "2bb287dce6b1d142599046e30596417ed0ea1abdff31f81471cb2c03fe46e34a", + "restored": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "final": "ca4f1e7fdd65663604cfe2eb8c50a838839adac9ac7bcf10fd22a342058efba7" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "0ff49b4ca941a2569ba6b6e88be65a2d371bdeebb1ec02c1028c720d84a74e6e", + "console.bin": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10", + "cells.bin": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "alt1": { + "console.json": "c9144171f486448d88de93fc4f6f4d0bc602a77b5b748136f34757b4d638bdc8", + "console.bin": "c2e8954d37be9bfc2b600951255d9410a9873e9259b7980ed41785de97e863c3", + "cells.bin": "c7b9b5456a0566673db0a45765f1de63ac3ae76501da1be8cc3f0aadf848b3b7" + }, + "alt2": { + "console.json": "2253a902f36fc1d407ab5d72faf6d928f6ee8df10f5c947a0d27a24d2e6259de", + "console.bin": "be8621c984e3f28209bbc97d377e78b8ecd01ca4f2600129c72181f0230f7744", + "cells.bin": "2bb287dce6b1d142599046e30596417ed0ea1abdff31f81471cb2c03fe46e34a" + }, + "restored": { + "console.json": "d846fba64eedf13310f9b819d2ef8d5cec418b79617be1aaab3ebee496de85c2", + "console.bin": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10", + "cells.bin": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "final": { + "console.json": "f318dcc781710db4d4695dd2906b401edf6d44710d30d5d5a59574b29b4fb58c", + "console.bin": "ad734bcaaac7c400337e93737f2a3c0f99993bbd7e0bdd8ca80278b1e0ef386a", + "cells.bin": "ca4f1e7fdd65663604cfe2eb8c50a838839adac9ac7bcf10fd22a342058efba7" + } + }, + "transport_prefix_sha256": "ef90cd86ca36da979fe06820f50ec8695a0ed86b46288f6de74ab8a07bef8e6e", + "supervision_summary_sha256": "661250217a88ffca8b79f59e301f5d89766fde825a36a274ab0090f5ec7552b5" + }, + "patched-12x7-repeat-alt": { + "status": "completed", + "case": "repeat-alt", + "columns": 12, + "rows": 7, + "source_bytes": 220, + "source_sha256": "2b68cea085a519f73306b02b702c685aa0dba44d780c8619e0e3ef7b202d1dcd", + "transport_bytes": 263, + "transport_sha256": "7859bdb124e0b8ed7858a5d090648dc30948d81c56948c0942313cead0e79161", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt1": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt2": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": true, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": false, + "native_cursor": { + "before": [ + 0, + 0 + ], + "alt1": [ + 4, + 5 + ], + "alt2": [ + 6, + 8 + ], + "restored": [ + 0, + 0 + ], + "final": [ + 6, + 0 + ] + }, + "native_cell_sha256": { + "before": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "alt1": "c7b9b5456a0566673db0a45765f1de63ac3ae76501da1be8cc3f0aadf848b3b7", + "alt2": "17469e5eb0c1cfa2577d55e2f5870e4d478f650f2d4a9d72c330094bec23ccc6", + "restored": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "final": "3143631df305f659111e37d5a4a81be0b4c1ad63957cc73c3a162f7ec1c782d7" + }, + "terminal_alternate": false, + "terminal_final_passed": true, + "lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "error": null + }, + "native_stage_files": { + "before": { + "console.json": "0ff49b4ca941a2569ba6b6e88be65a2d371bdeebb1ec02c1028c720d84a74e6e", + "console.bin": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10", + "cells.bin": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "alt1": { + "console.json": "c9144171f486448d88de93fc4f6f4d0bc602a77b5b748136f34757b4d638bdc8", + "console.bin": "c2e8954d37be9bfc2b600951255d9410a9873e9259b7980ed41785de97e863c3", + "cells.bin": "c7b9b5456a0566673db0a45765f1de63ac3ae76501da1be8cc3f0aadf848b3b7" + }, + "alt2": { + "console.json": "1d0cce7996e41de52f5399433caa8a2397c19a8ab5caff37a072fce707e7d695", + "console.bin": "127f85391d796833c9f5e9a6ac970ab4fa3fc369ebfb8df5214291504940c6a1", + "cells.bin": "17469e5eb0c1cfa2577d55e2f5870e4d478f650f2d4a9d72c330094bec23ccc6" + }, + "restored": { + "console.json": "d846fba64eedf13310f9b819d2ef8d5cec418b79617be1aaab3ebee496de85c2", + "console.bin": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10", + "cells.bin": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "final": { + "console.json": "7e0a4e914d3163ba1eed10904852c8fb8a392c585f53612d2e96395c65cb5931", + "console.bin": "ae750de80c88d1345983e4ff3af5c96f9d83f550efe08480233b9d4f593b0465", + "cells.bin": "3143631df305f659111e37d5a4a81be0b4c1ad63957cc73c3a162f7ec1c782d7" + } + }, + "transport_prefix_sha256": "ef90cd86ca36da979fe06820f50ec8695a0ed86b46288f6de74ab8a07bef8e6e", + "supervision_summary_sha256": "53233abedb9bc62a5f7bbdc241403891ed825b16572c6ea9c37c89ffe3189cb5" + } + } +} diff --git a/experiments/conpty/results/2026-10-27-source-margin-runtime/build-summary.json b/experiments/conpty/results/2026-10-27-source-margin-runtime/build-summary.json new file mode 100644 index 00000000..3e0b091a --- /dev/null +++ b/experiments/conpty/results/2026-10-27-source-margin-runtime/build-summary.json @@ -0,0 +1,294 @@ +{ + "schema": "termforge-upstream-conpty-build-v2", + "purpose": "isolated source-build and adapter experiment; not an official ConPTY package", + "status": "adapter-verified-runtime-unverified", + "termforge_source": "ad857d448dfe64c0c11d10254043a8b893e7546a", + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "vcpkg_source": "927f62e4b8838bd7e441e9c45103a16ffd75007e", + "image_os": "win25-vs2026", + "image_version": "20261021.278.1", + "workflow_run": "40449292015", + "workflow_attempt": "1", + "configuration": "Release/x64/v145/WindowsSDK10.0.26100.0", + "stages": [ + { + "name": "vcpkg-tool-download", + "exit_code": 0, + "elapsed_seconds": 0.7866937, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "vcpkg-version", + "exit_code": 0, + "elapsed_seconds": 0.0399271, + "log_sha256": "fea4ead8f40a8aeca48fc22406d6102a7f1e07373fc0d6a5decb129457a43161" + }, + { + "name": "nuget-restore", + "exit_code": 0, + "elapsed_seconds": 13.0426646, + "log_sha256": "5e70d22a3fe292a819ec1459a71a5db932927a6a5c61df3c4761c6dfc9a85bb9" + }, + { + "name": "baseline-patch-check", + "exit_code": 0, + "elapsed_seconds": 0.0436494, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "baseline-test-patch", + "exit_code": 0, + "elapsed_seconds": 0.0362571, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "baseline-proxy-build", + "exit_code": 0, + "elapsed_seconds": 71.6812146, + "log_sha256": "e5911ff82f7de99e1ed420bbf32afe56748651db63db74406b21451459d69954" + }, + { + "name": "baseline-types-build", + "exit_code": 0, + "elapsed_seconds": 7.5849581, + "log_sha256": "2517edeadee0c2ece0eb57d76fc9b638eb4c24dcb36bff67d7aff6bce2c01fd4" + }, + { + "name": "baseline-buffer-build", + "exit_code": 0, + "elapsed_seconds": 8.0015929, + "log_sha256": "5e0cd5be3d1fa74b0db5bd0ca246b75cad536912d1264cb2a04ce5243fe483cc" + }, + { + "name": "baseline-render-base-build", + "exit_code": 0, + "elapsed_seconds": 5.39903, + "log_sha256": "6a80b6b730498b86e451d25f08194d592438d4f02dca945aa6dd7ad4c67919c4" + }, + { + "name": "baseline-render-gdi-build", + "exit_code": 0, + "elapsed_seconds": 5.6435044, + "log_sha256": "5ffba2be38849e5bedbc3f852b4a416fbc44eb25b859c0ad59115626ece82867" + }, + { + "name": "baseline-adapter-build", + "exit_code": 0, + "elapsed_seconds": 83.908652, + "log_sha256": "27de5599e32a701c602340f27ae0c9ca1cdf9c42ec2b9c9ab5f169a2c204f631" + }, + { + "name": "baseline-regression", + "exit_code": 1, + "elapsed_seconds": 0.2718681, + "log_sha256": "d1907fb1f5e1dd008eef1b1e5611d6533d37538df0a2a6cba0871784cb8d4988" + }, + { + "name": "baseline-regression-contract", + "exit_code": 0, + "elapsed_seconds": 0.0513568, + "log_sha256": "b7aa5de14c43240cceac182a506bd51937189c7b22b4a3998c8ec37bba6f1896" + }, + { + "name": "baseline-propsheet-build", + "exit_code": 0, + "elapsed_seconds": 10.929838, + "log_sha256": "b0ca024bae4050c4acbc7bea2ba6435710a8d7ea4b8f70fe351d79dba20f8eaf" + }, + { + "name": "baseline-host-build", + "exit_code": 0, + "elapsed_seconds": 22.6881976, + "log_sha256": "3186d0fc9afea5dd466b68042787b259cf722a84d8a429850309d5a1d4e50bb8" + }, + { + "name": "baseline-dll-build", + "exit_code": 0, + "elapsed_seconds": 8.9063766, + "log_sha256": "1dbb9fc9a551831d8d69ad67a7142e3247c28f92982a04bf42784be75ea8c650" + }, + { + "name": "production-patch-check", + "exit_code": 0, + "elapsed_seconds": 0.0368057, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "production-patch", + "exit_code": 0, + "elapsed_seconds": 0.035935, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "patched-adapter-build", + "exit_code": 0, + "elapsed_seconds": 7.9965399, + "log_sha256": "fd4e8df0088e935f74ac60407a659bfc69638f0329e12777fa9ab33cef1d57f1" + }, + { + "name": "patched-regression", + "exit_code": 0, + "elapsed_seconds": 0.2678428, + "log_sha256": "b0413a44a181bbd07e81dcf612d18a00423baa01da4a28d0759004dc2603873c" + }, + { + "name": "patched-regression-contract", + "exit_code": 0, + "elapsed_seconds": 0.0473823, + "log_sha256": "da281146aa232fafccb57afd0100781005fc28c4625a5a782e0513e12912573d" + }, + { + "name": "patched-adapter", + "exit_code": 0, + "elapsed_seconds": 1.9669664, + "log_sha256": "343a699ea0b2bf861cf9af70d8a93e5660f1086a73d59c3b9ab48971acd66704" + }, + { + "name": "patched-adapter-contract", + "exit_code": 0, + "elapsed_seconds": 0.0649075, + "log_sha256": "332b578d7b8603574df41dea702bfb7ef14c7e201ff24b194c57a0bf61c2ff4f" + }, + { + "name": "patched-propsheet-build", + "exit_code": 0, + "elapsed_seconds": 0.8511354, + "log_sha256": "fd638f0969daef7e599fa8151210c63fc249df769639a208d10d9925becef4ad" + }, + { + "name": "patched-host-build", + "exit_code": 0, + "elapsed_seconds": 6.3205807, + "log_sha256": "a50332e3893eea02a86feb72af5673dccf0757f299e8343192ec028cbdb60b81" + }, + { + "name": "patched-dll-build", + "exit_code": 0, + "elapsed_seconds": 0.7732798, + "log_sha256": "568584e4abd446efe5e74f0f66c1aa921f5f337201ac5910122a66aa73b3a156" + } + ], + "test_binaries": [ + { + "stage": "baseline-regression", + "test_dll_sha256": "0e5e32fa345b104a669337fb26488e0d80812500bfc7a7f3e665f7e4b4c6320f", + "taef_sha256": "b729c665a51a1e36dc24152ecde4e4a7efb618b75dc7387d8c6edb103ef952c1" + }, + { + "stage": "patched-regression", + "test_dll_sha256": "a46029f198ad998d52d65df9b94902ed7ddb545bbd46fce587eabe23b5eab1b0", + "taef_sha256": "b729c665a51a1e36dc24152ecde4e4a7efb618b75dc7387d8c6edb103ef952c1" + }, + { + "stage": "patched-adapter", + "test_dll_sha256": "a46029f198ad998d52d65df9b94902ed7ddb545bbd46fce587eabe23b5eab1b0", + "taef_sha256": "b729c665a51a1e36dc24152ecde4e4a7efb618b75dc7387d8c6edb103ef952c1" + } + ], + "adapter_tests_verified": true, + "native_runtime_verified": false, + "full_r2_contract_verified": false, + "product_backend_selected": false, + "vcpkg_shallow": "false", + "patch_sha256": "dc27377e399bd0217a0b76e16cc89f087c1b781929e4c958ad30c3a475322b81", + "source_hashes_verified": true, + "tools": { + "visual_studio": "18.0", + "msvc": "14.51.36231", + "sdk": "10.0.26100.0\\", + "compiler_sha256": "b0a1818ebae6da7f18230a84e76ce839212584ac4c2ab55b97a0d5268085da57", + "msbuild_sha256": "fc55d2743dbbb20708b2ca6084fc5b036a2ce72291ff989eae94ad8220ae2f74" + }, + "vcpkg_exe_sha256": "f1edbf3a39de350e2bb065214fdc057111aa87a2e2ed9a7dcb8ddc86e17751b9", + "baseline_files": { + "OpenConsole.exe": { + "sha256": "fabdc934d9755c405fe848251905e8c0e70a2bf7702b8ed7ccd104eec6591588", + "bytes": 1146880 + }, + "conpty.dll": { + "sha256": "9d165745cce4b29a5818a45c23f68e962b3a3140c2e00566bd17fee970fdd9d1", + "bytes": 108544 + } + }, + "files": { + "OpenConsole.exe": { + "sha256": "1c8f071f6e4779ec297fb041af4eaea39be29b6920cef625ab91d1cbc20c79cb", + "bytes": 1147392 + }, + "conpty.dll": { + "sha256": "9d165745cce4b29a5818a45c23f68e962b3a3140c2e00566bd17fee970fdd9d1", + "bytes": 108544 + } + }, + "nuget_packages": [ + { + "name": "Appium.WebDriver.3.0.0.2.nupkg", + "sha256": "c67adece6bd5730036812af29614a7e5699f048b8e0d261841f47d2007358702" + }, + { + "name": "Castle.Core.4.1.1.nupkg", + "sha256": "c3f130d751103ec89a4ec24ec4f3c8bfa02c4d7ca70a865b68c79eddae5dea45" + }, + { + "name": "Microsoft.Internal.PGO-Helpers.Cpp.0.2.34.nupkg", + "sha256": "92aca6465e2cbe04b312d8255d15d7af2e5cfceee59fc91194c1228283bfc453" + }, + { + "name": "Microsoft.Internal.Windows.Terminal.ThemeHelpers.0.8.250811004.nupkg", + "sha256": "c70c34c5ed0b937a23285402396c3f23523496dca59ede2aaddc2914f6ea339d" + }, + { + "name": "Microsoft.MSBuildCache.AzurePipelines.0.1.283-preview.nupkg", + "sha256": "9a5a7815a175000b8c608d94727758f0c22a8e6d5f318515169cf9d003b36f82" + }, + { + "name": "Microsoft.MSBuildCache.Local.0.1.283-preview.nupkg", + "sha256": "732767cf82dc8d4e83790d9421c4c7bdbb7b5bbc6e9ca3bb2d3e79cb92dbed79" + }, + { + "name": "Microsoft.MSBuildCache.SharedCompilation.0.1.283-preview.nupkg", + "sha256": "40d947d33e2b31341870831b320de4db2926026e2e0dbdcb71099fae1a876f34" + }, + { + "name": "Microsoft.Taef.10.100.251104001.nupkg", + "sha256": "46b1290acaebc7cbcd3c4ac2522d9526cd7c4dad3a618759754619a052396a4b" + }, + { + "name": "Microsoft.UI.Xaml.2.8.4.nupkg", + "sha256": "486dbe1f271b31057ec01ecb7ce4df3eedad11efdc26569170fb128ee4a4e964" + }, + { + "name": "Microsoft.VisualStudio.Setup.Configuration.Native.2.3.2262.nupkg", + "sha256": "43c2d1c5694a846d04d5f1cb3c3a8269ebad3b0432954da2948e53b33c5ed5fb" + }, + { + "name": "Microsoft.Web.WebView2.1.0.1661.34.nupkg", + "sha256": "bad4c011c20ab68526c4c1448da05a6297586806123019ac89387fc62f46c3ce" + }, + { + "name": "Microsoft.Windows.CppWinRT.2.0.250303.1.nupkg", + "sha256": "955e3051b35db1c00177ed14ab6b7b995c3b32a53fdb6c184ea53b1dba66e439" + }, + { + "name": "Microsoft.Windows.ImplementationLibrary.1.0.250325.1.nupkg", + "sha256": "b3e3ac9077c4f5f96bd8f90785bcae47bac6ba9688d896cd04422c8972ec5b2b" + }, + { + "name": "Microsoft.WindowsPackageManager.ComInterop.1.8.1911.nupkg", + "sha256": "9b8a8a5186a554e56fcb7997b6ea48f3432813c0945a2d9ba60930d1241cfe2b" + }, + { + "name": "Newtonsoft.Json.13.0.1.nupkg", + "sha256": "2b6b52556e27e1b7913f33eedeb95568110c746bd64afff74357f1683878323a" + }, + { + "name": "Selenium.Support.3.5.0.nupkg", + "sha256": "0716656ae84c72cc31595ee2f06bf1f59311b96f813f9ada3d31d7f7f72ffb82" + }, + { + "name": "Selenium.WebDriver.3.5.0.nupkg", + "sha256": "79c41eb770a8728a15ddf27c7ac41ca433597983ac37e4db7746a52e16cec876" + } + ], + "vcpkg_status_sha256": "9957c37c4d2da3b71509a3180374a6b5ddb4126f9e1a6cffe46a9ea0c307337c" +} diff --git a/experiments/conpty/results/2026-10-27-source-margin-runtime/validation.json b/experiments/conpty/results/2026-10-27-source-margin-runtime/validation.json new file mode 100644 index 00000000..0930b308 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-source-margin-runtime/validation.json @@ -0,0 +1,1035 @@ +{ + "schema": "termforge-source-conpty-margin-v1", + "generated_utc": "2026-10-27T04:36:45.581770+00:00", + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "build_run": "40449292015", + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "termforge_source": "fdee94fe94d48e83f5a61f191bddfc812d43a2f8", + "working_tree_dirty": false, + "source_files": { + "CMakeLists.txt": "44f3b6bb99d1836b9fd5597213080e55dfe6b5d09ce13ca4afe6d9be7f6fa46a", + "experiments/conpty/backend.hpp": "af672718af8c05e90a26576e317b6ac9295fbee76f3f0298371060a9d167f5bb", + "experiments/conpty/session.hpp": "242ac8aa13f3fd56675b2ddefaaf207e5f4c8d3ef8e703260aaed2f0c41677aa", + "experiments/conpty/margin_probe.cpp": "2316c237785a367772c5adcd98e09b38e31bd9eef0bdc154a204287070244335", + "experiments/conpty/margin_run.py": "99e6caf18224ce7b41307355066db70eacb810bc0626b15d3af09c9a89439ed2", + "experiments/conpty/margin_contract.py": "f6ff82099b4675d7f64c9bbebcd226b9c3d5da1998a20c8477945956eadd3561", + "experiments/conpty/source_margin_run.py": "26d07c9f912b1bb68b89d33a989ee80189230002869df83a572a22e7b2f6f657" + }, + "platform": "Windows-11-10.0.26200-SP0", + "probe_sha256": "9b2debc8060f1addb2e348f28e3468a99851ca35484039163becc3b588d009ba", + "trace_sha256": "5941d4569d0ae146eb005f12ecfb15014bc06c18ee48d1c9460824ab65df93d3", + "pair_receipts": { + "baseline": { + "schema": "termforge-upstream-conpty-variant-v1", + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "workflow_run": "40449292015", + "production_patch_applied": false, + "focused_adapter_result": "expected-failure", + "full_adapter_verified": false, + "patch_sha256": "dc27377e399bd0217a0b76e16cc89f087c1b781929e4c958ad30c3a475322b81", + "files": { + "OpenConsole.exe": { + "sha256": "fabdc934d9755c405fe848251905e8c0e70a2bf7702b8ed7ccd104eec6591588", + "bytes": 1146880 + }, + "conpty.dll": { + "sha256": "9d165745cce4b29a5818a45c23f68e962b3a3140c2e00566bd17fee970fdd9d1", + "bytes": 108544 + } + } + }, + "patched": { + "schema": "termforge-upstream-conpty-variant-v1", + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "workflow_run": "40449292015", + "production_patch_applied": true, + "focused_adapter_result": "passed", + "full_adapter_verified": true, + "patch_sha256": "dc27377e399bd0217a0b76e16cc89f087c1b781929e4c958ad30c3a475322b81", + "files": { + "OpenConsole.exe": { + "sha256": "1c8f071f6e4779ec297fb041af4eaea39be29b6920cef625ab91d1cbc20c79cb", + "bytes": 1147392 + }, + "conpty.dll": { + "sha256": "9d165745cce4b29a5818a45c23f68e962b3a3140c2e00566bd17fee970fdd9d1", + "bytes": 108544 + } + } + } + }, + "comparisons": [ + { + "columns": 80, + "rows": 24, + "baseline_expected_native_failure": true, + "patched_all_native_stages_passed": true, + "both_terminal_finals_passed": true, + "vt_off_unchanged": true, + "passed": true + }, + { + "columns": 12, + "rows": 7, + "baseline_expected_native_failure": true, + "patched_all_native_stages_passed": true, + "both_terminal_finals_passed": true, + "vt_off_unchanged": true, + "passed": true + } + ], + "passed": true, + "full_r2_contract_verified": false, + "product_backend_selected": false, + "presented_done": null, + "unmeasured": [ + "styled_source", + "history", + "resize_cross_margin", + "terminal_stage_cursors", + "full_product_workflows", + "performance", + "WindTerm_equivalence" + ], + "samples": { + "baseline-80x24-vt-on": { + "status": "completed", + "mode": "vt-on", + "columns": 80, + "rows": 24, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 218, + "transport_sha256": "d793c84c56624d6c647e562ef7ba35e21d8998baa43371cb36f95b2add684246", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "native_contract": { + "schema": "termforge-native-margin-contract-v1", + "columns": 80, + "rows": 24, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "initial_native_attribute": 7, + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "final": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": true, + "passed": false + } + }, + "all_native_stages_passed": false, + "unmeasured": [ + "styled_source", + "history", + "resize", + "terminal_stage_cursors" + ], + "full_r2_contract_verified": false + }, + "native_cell_sha256": { + "before": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "alt": "0fd582bf6115b38b1dbe57084658f686392c74b4d6b1340f945cfcbca4ff7635", + "restored": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "final": "00896cdf02c29564c82f4b2f7b118e6c1ac5cb8a0b8f8f5a0d91be3556a94421" + }, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "terminal_alternate": false, + "replay_passed": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [] + }, + "patched-80x24-vt-on": { + "status": "completed", + "mode": "vt-on", + "columns": 80, + "rows": 24, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 218, + "transport_sha256": "d793c84c56624d6c647e562ef7ba35e21d8998baa43371cb36f95b2add684246", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "native_contract": { + "schema": "termforge-native-margin-contract-v1", + "columns": 80, + "rows": 24, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "initial_native_attribute": 7, + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + } + }, + "all_native_stages_passed": true, + "unmeasured": [ + "styled_source", + "history", + "resize", + "terminal_stage_cursors" + ], + "full_r2_contract_verified": false + }, + "native_cell_sha256": { + "before": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "alt": "0fd582bf6115b38b1dbe57084658f686392c74b4d6b1340f945cfcbca4ff7635", + "restored": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "final": "1dc413a54e0b457e9a301fb6dc2eb9d40733314e5fb589a60c6a8951edd29800" + }, + "native_main_margins_restored": true, + "terminal_main_margins_restored": true, + "terminal_alternate": false, + "replay_passed": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [] + }, + "baseline-80x24-vt-off": { + "status": "completed", + "mode": "vt-off", + "columns": 80, + "rows": 24, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 218, + "transport_sha256": "d793c84c56624d6c647e562ef7ba35e21d8998baa43371cb36f95b2add684246", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "native_cell_sha256": { + "before": "d1c4bf6e7fe26f05575ef2c2b14b99774a1396ecc521b71e25937f302302f57d", + "alt": "29e73cec4d64d55aaac58b0278ba0baeaacacb6751d33c65eb2e0e80c1eadd28", + "restored": "6ac38720c2b51b66f34cb786408f6a2967b5a8023ca5546044c91f7ed4f2e154", + "final": "5374bda9fdcf2000436f66d7d6a9acce59149362247208987ea7935e3f462766" + }, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "terminal_alternate": false, + "replay_passed": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [] + }, + "patched-80x24-vt-off": { + "status": "completed", + "mode": "vt-off", + "columns": 80, + "rows": 24, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 218, + "transport_sha256": "d793c84c56624d6c647e562ef7ba35e21d8998baa43371cb36f95b2add684246", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "native_cell_sha256": { + "before": "d1c4bf6e7fe26f05575ef2c2b14b99774a1396ecc521b71e25937f302302f57d", + "alt": "29e73cec4d64d55aaac58b0278ba0baeaacacb6751d33c65eb2e0e80c1eadd28", + "restored": "6ac38720c2b51b66f34cb786408f6a2967b5a8023ca5546044c91f7ed4f2e154", + "final": "5374bda9fdcf2000436f66d7d6a9acce59149362247208987ea7935e3f462766" + }, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "terminal_alternate": false, + "replay_passed": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [] + }, + "baseline-12x7-vt-on": { + "status": "completed", + "mode": "vt-on", + "columns": 12, + "rows": 7, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 218, + "transport_sha256": "d793c84c56624d6c647e562ef7ba35e21d8998baa43371cb36f95b2add684246", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "native_contract": { + "schema": "termforge-native-margin-contract-v1", + "columns": 12, + "rows": 7, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "initial_native_attribute": 7, + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "final": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": true, + "passed": false + } + }, + "all_native_stages_passed": false, + "unmeasured": [ + "styled_source", + "history", + "resize", + "terminal_stage_cursors" + ], + "full_r2_contract_verified": false + }, + "native_cell_sha256": { + "before": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "alt": "c7b9b5456a0566673db0a45765f1de63ac3ae76501da1be8cc3f0aadf848b3b7", + "restored": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "final": "86cdf8cc46178d0eff6f3b801d3ce2eab0bb714db9fedd98e018ee46538489ea" + }, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "terminal_alternate": false, + "replay_passed": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [] + }, + "patched-12x7-vt-on": { + "status": "completed", + "mode": "vt-on", + "columns": 12, + "rows": 7, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 218, + "transport_sha256": "d793c84c56624d6c647e562ef7ba35e21d8998baa43371cb36f95b2add684246", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "native_contract": { + "schema": "termforge-native-margin-contract-v1", + "columns": 12, + "rows": 7, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "initial_native_attribute": 7, + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "passed": true + } + }, + "all_native_stages_passed": true, + "unmeasured": [ + "styled_source", + "history", + "resize", + "terminal_stage_cursors" + ], + "full_r2_contract_verified": false + }, + "native_cell_sha256": { + "before": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "alt": "c7b9b5456a0566673db0a45765f1de63ac3ae76501da1be8cc3f0aadf848b3b7", + "restored": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "final": "9f777d4471731af76d13ae779cc060c1920a8e4b0e5a41aa38858bb14bc41440" + }, + "native_main_margins_restored": true, + "terminal_main_margins_restored": true, + "terminal_alternate": false, + "replay_passed": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [] + }, + "baseline-12x7-vt-off": { + "status": "completed", + "mode": "vt-off", + "columns": 12, + "rows": 7, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 222, + "transport_sha256": "01064e034cc1cd3c34eae65a2f656ae940936cf381e60371b8e17428ec00617d", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "native_cell_sha256": { + "before": "fff7ff68ab09ddf930d4f85b4d59f50336bcaca7e891b36c7171607d74d693ef", + "alt": "feb6fabd4a576f1f15af2cdf03adf188f7269eb61d676684d81113e3661c4bc0", + "restored": "2f8d6538d3f8570df2eca932c4a8ad9292b35cd231d367c9a75a571723f00ea9", + "final": "b19f6d442b71d2bb273dd991216132b25b0d753572084cc5761bbced02a9128f" + }, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "terminal_alternate": false, + "replay_passed": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [] + }, + "patched-12x7-vt-off": { + "status": "completed", + "mode": "vt-off", + "columns": 12, + "rows": 7, + "source_bytes": 175, + "source_sha256": "01878a5d54c343007309abb89faeb90c89262a8b55e420c5f267342ed9b27e59", + "transport_bytes": 222, + "transport_sha256": "01064e034cc1cd3c34eae65a2f656ae940936cf381e60371b8e17428ec00617d", + "original_decstbm_forwarded": true, + "source_equal_transport": false, + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "native_cell_sha256": { + "before": "fff7ff68ab09ddf930d4f85b4d59f50336bcaca7e891b36c7171607d74d693ef", + "alt": "feb6fabd4a576f1f15af2cdf03adf188f7269eb61d676684d81113e3661c4bc0", + "restored": "2f8d6538d3f8570df2eca932c4a8ad9292b35cd231d367c9a75a571723f00ea9", + "final": "b19f6d442b71d2bb273dd991216132b25b0d753572084cc5761bbced02a9128f" + }, + "native_main_margins_restored": false, + "terminal_main_margins_restored": true, + "terminal_alternate": false, + "replay_passed": true, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_outer_cleanup": false, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [] + } + }, + "same_source_build": { + "head": "5c073e49ecef6722f997cdc9a7d3b8dd97e594ee", + "actual_checkout": "ad857d448dfe64c0c11d10254043a8b893e7546a", + "run_id": 40449292015, + "job_id": 122007975668, + "summary_sha256": "8132695b32162ff22e61d2de166a31fad508f0b63cbb46de8d1612bd197e1ded", + "artifacts": { + "summary": { + "id": 12710186210, + "sha256": "681f2337cbb6e666110230871671057ab5c8468b1013914051e5c1e0132ee2fe" + }, + "baseline": { + "id": 12710186222, + "sha256": "770a1a1bb77adca8039fef6e6dc777e187afee18db5f9e7a46f1e685958e1c7b" + }, + "patched": { + "id": 12710146241, + "sha256": "7efed8379ac0e66a0a7cd0720d2f342c72d446b4a7f8bfb22548e787ad9b08df" + } + } + }, + "backend_checks": { + "schema": "termforge-source-conpty-backend-check-v1", + "build_run": "40449292015", + "probe_sha256": { + "conpty_source_backend_probe.exe": "604c4815bb9329bdae1700137a5ee57b87c494a6bc93e0e1cf4124586ea85003", + "conpty_backend_probe.exe": "2d921cc7d82f912ab87a9a6d0c73d9e6e7acfcde00d0d88020d3997d5732d1c7" + }, + "native_cases": { + "baseline-identity": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "identity_accepted": true, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "error": null + }, + "baseline-lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "valid": true, + "side_by_side": true, + "creation_flags": 24, + "loaded_during_session": true, + "loaded_after_close": true, + "module_unloaded_after_session": true, + "exit_code": 37, + "active_children_after": 0, + "read_error": 109, + "cleanup_complete": true, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + }, + "error": null + }, + "official-rejects-baseline": { + "status": "completed", + "failure_code": null, + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": null, + "error": "identity_rejected" + }, + "baseline-rejects-conpty.dll-tamper": { + "status": "completed", + "failure_code": null, + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": null, + "error": "identity_rejected" + }, + "baseline-rejects-OpenConsole.exe-tamper": { + "status": "completed", + "failure_code": null, + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": null, + "error": "identity_rejected" + }, + "patched-identity": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "identity_accepted": true, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "error": null + }, + "patched-lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "valid": true, + "side_by_side": true, + "creation_flags": 24, + "loaded_during_session": true, + "loaded_after_close": true, + "module_unloaded_after_session": true, + "exit_code": 37, + "active_children_after": 0, + "read_error": 109, + "cleanup_complete": true, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "backend_identity": "source-dc8-r56-patched-run40449292015" + }, + "error": null + }, + "official-rejects-patched": { + "status": "completed", + "failure_code": null, + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": null, + "error": "identity_rejected" + }, + "patched-rejects-conpty.dll-tamper": { + "status": "completed", + "failure_code": null, + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": null, + "error": "identity_rejected" + }, + "patched-rejects-OpenConsole.exe-tamper": { + "status": "completed", + "failure_code": null, + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": null, + "error": "identity_rejected" + }, + "source-rejects-official": { + "status": "completed", + "failure_code": null, + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": null, + "error": "identity_rejected" + }, + "source-rejects-relative": { + "status": "completed", + "failure_code": null, + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": null, + "error": "identity_rejected" + }, + "source-rejects-missing": { + "status": "completed", + "failure_code": null, + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": null, + "error": "identity_rejected" + }, + "source-rejects-unknown": { + "status": "completed", + "failure_code": null, + "returncode": 2, + "outer_job_after": { + "active": 0, + "total": 2, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": null, + "error": "identity_rejected" + }, + "system-lifecycle": { + "status": "completed", + "failure_code": null, + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "outer_job_after_forced_cleanup": null, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "valid": true, + "side_by_side": false, + "creation_flags": 0, + "loaded_during_session": false, + "loaded_after_close": false, + "module_unloaded_after_session": true, + "exit_code": 37, + "active_children_after": 0, + "read_error": 109, + "cleanup_complete": true, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "backend_identity": "system" + }, + "error": null + } + }, + "receipt_rejections": [ + "baseline-wrong-variant", + "baseline-numeric-boolean", + "baseline-summary-bytes", + "baseline-binary-bytes", + "patched-wrong-variant", + "patched-numeric-boolean", + "patched-summary-bytes", + "patched-binary-bytes" + ], + "passed": true, + "product_backend_selected": false, + "full_r2_contract_verified": false + }, + "backend_check_source": { + "commit": "08ec4708afa347d87b584def73a3dba5021f7870", + "script_sha256": "4ea7a8feded7caa5ea5d2aedd4db335f8aee5a2a9d0b827a6bfa0b1de539bd0f" + }, + "preserved_failures": [ + { + "scope": "first local margin test invocation", + "result": "2 setup errors: explicit build directory omitted; no native invocation in these two tests", + "resolution": "set TERMFORGE_BIN_DIR to the actual new build; original 13 tests passed without source or deadline change" + }, + { + "scope": "backend-check-1", + "result": "new checker incorrectly required total Job members=1; known official rejection and source rejection both recorded total2/active0", + "resolution": "retain observed total, require active0/terminated0 and no force; corrected checker passed 15 native cases and 8 receipt rejections; original backend contracts unchanged" + }, + { + "scope": "push candidate/system CI 40449286764", + "result": "candidate-scroll original20s timeout after correct final frame; parent build-only source did not alter this path", + "issue": 97, + "causal_fix": false + } + ], + "validation": { + "original_margin_and_cleanup_tests": { + "passed": 13, + "seconds": 0.377, + "evidence_kind": "session-command-output-only", + "standalone_stdout_log_saved": false + }, + "existing_system_and_official_loader_checks": { + "passed": 14, + "seconds": 1.551, + "evidence_kind": "session-command-output-only", + "standalone_stdout_log_saved": false + }, + "source_native_cases": 15, + "source_receipt_rejections": 8, + "source_matrix_executions": 8, + "native_matrix_deadlines": { + "child_wait_seconds": 5, + "outer_seconds": 15, + "cleanup_seconds": 5 + }, + "api_lifetime_probe_outer_seconds": 20 + } +} diff --git a/experiments/conpty/results/2026-10-27-source-margin-styles/validation.json b/experiments/conpty/results/2026-10-27-source-margin-styles/validation.json new file mode 100644 index 00000000..503b5ecc --- /dev/null +++ b/experiments/conpty/results/2026-10-27-source-margin-styles/validation.json @@ -0,0 +1,1571 @@ +{ + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "generated_utc": "2026-10-27T07:07:20.450780+00:00", + "build_run": "40449292015", + "source": "485c3e253e88a2d83f72326c0ff9185b94d87269", + "working_tree_dirty": false, + "source_files": { + "CMakeLists.txt": "9afd4590855f90d0e467824a49fc75a6f24b0d88ba7f4ff4ad92764239b682b3", + "experiments/conpty/backend.hpp": "af672718af8c05e90a26576e317b6ac9295fbee76f3f0298371060a9d167f5bb", + "experiments/conpty/session.hpp": "242ac8aa13f3fd56675b2ddefaaf207e5f4c8d3ef8e703260aaed2f0c41677aa", + "experiments/conpty/test_backend.py": "ab371ff7fbf196061451b96009a8260afb35473c1d05b2f99dda66e2b6a9bbba", + "experiments/conpty/margin_controls_probe.cpp": "5095dd3a113b799d417e522cbbe30aa0217a539dd46e1c096a8b707ab709b4c7", + "experiments/conpty/margin_controls.py": "e538503832c453cfd72d285969dcb1c4f78f6519fe06540c48f9a5a78d9c1138", + "experiments/conpty/source_margin_controls.py": "8476a975ac959468cf6177d3301cedd53e2a41d9c3ba029b1ac066c1999d2a99", + "experiments/conpty/margin_run.py": "99e6caf18224ce7b41307355066db70eacb810bc0626b15d3af09c9a89439ed2", + "experiments/conpty/source_margin_run.py": "26d07c9f912b1bb68b89d33a989ee80189230002869df83a572a22e7b2f6f657", + "experiments/conpty/run.py": "c8eef1e36b6d200b2d508cef91eaa5ca79a91fa87c5daf6265b2475c31dce329", + "experiments/candidates/alacritty/run.py": "2d83240506bf03b4da92f7b2dc85adf40446aff25cd0f0dbe08132b611c2627e", + "experiments/shell/workflow_fixture.hpp": "332d73699320a6f503fc212417a4d3820b82cc2d3feb3d1fffe3930660d57453", + "experiments/shell/workflow_checks.py": "f186ff0f5335c26fc5c4f0286961981dfd6af8fbaafc789e2bc50058486efa44" + }, + "platform": "Windows-11-10.0.26200-SP0", + "probe_sha256": "ca19645b65aea8ac74b56d1e59837cb7514c3acf5932d24112411725b92206d7", + "trace_sha256": "5941d4569d0ae146eb005f12ecfb15014bc06c18ee48d1c9460824ab65df93d3", + "pair_receipts": { + "baseline": { + "schema": "termforge-upstream-conpty-variant-v1", + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "workflow_run": "40449292015", + "production_patch_applied": false, + "focused_adapter_result": "expected-failure", + "full_adapter_verified": false, + "patch_sha256": "dc27377e399bd0217a0b76e16cc89f087c1b781929e4c958ad30c3a475322b81", + "files": { + "OpenConsole.exe": { + "sha256": "fabdc934d9755c405fe848251905e8c0e70a2bf7702b8ed7ccd104eec6591588", + "bytes": 1146880 + }, + "conpty.dll": { + "sha256": "9d165745cce4b29a5818a45c23f68e962b3a3140c2e00566bd17fee970fdd9d1", + "bytes": 108544 + } + } + }, + "patched": { + "schema": "termforge-upstream-conpty-variant-v1", + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "workflow_run": "40449292015", + "production_patch_applied": true, + "focused_adapter_result": "passed", + "full_adapter_verified": true, + "patch_sha256": "dc27377e399bd0217a0b76e16cc89f087c1b781929e4c958ad30c3a475322b81", + "files": { + "OpenConsole.exe": { + "sha256": "1c8f071f6e4779ec297fb041af4eaea39be29b6920cef625ab91d1cbc20c79cb", + "bytes": 1147392 + }, + "conpty.dll": { + "sha256": "9d165745cce4b29a5818a45c23f68e962b3a3140c2e00566bd17fee970fdd9d1", + "bytes": 108544 + } + } + } + }, + "deadlines": { + "child_seconds": 5, + "outer_seconds": 15, + "cleanup_seconds": 5 + }, + "cases": [ + "styled-cursor" + ], + "planned_executions": 4, + "comparisons": [ + { + "case": "styled-cursor", + "columns": 80, + "rows": 24, + "baseline_matches_prediction": true, + "patched_native_passed": true, + "both_terminal_finals_passed": false, + "passed": false + }, + { + "case": "styled-cursor", + "columns": 12, + "rows": 7, + "baseline_matches_prediction": true, + "patched_native_passed": true, + "both_terminal_finals_passed": false, + "passed": false + } + ], + "passed": false, + "full_r2_contract_verified": false, + "product_backend_selected": false, + "presented_done": null, + "unmeasured": [ + "history_stress", + "resize", + "queries_and_api_writes", + "terminal_intermediate_stages", + "other_SGR_and_truecolor", + "full_product", + "performance", + "WindTerm_equivalence" + ], + "schema": "termforge-source-margin-styled-observation-v1", + "scope": "Four original executions; native patch comparison passed, strict terminal cell-attribute comparison failed. No retry, default backend selection or WindTerm equivalence.", + "raw_summary": { + "bytes": 27676, + "sha256": "e87a2d689ed8e0b3b38efdde70a339be8eddf2e03f19883da75c83b63e57e9d3" + }, + "offline_reevaluation": { + "source": "6e52e6957de10c14c570d3b7b83992c585fcc3a9", + "oracle_file": { + "bytes": 7263, + "sha256": "f33bcded8366be3c66fbb7761957f62ba4d12b28b5a6d52249c2f9097ec56c37" + }, + "native_executions": 0, + "original_summary_unchanged": true, + "correction": "Untouched default blanks use text empty and width 0; colored blanks use a space and width 1. Explicit colored-blank foreground expectation remains 1.", + "original_gate_passed": false, + "corrected_gate_passed": false + }, + "samples": { + "baseline-80x24-styled-cursor": { + "status": "completed", + "case": "styled-cursor", + "columns": 80, + "rows": 24, + "source_bytes": 211, + "source_sha256": "51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62", + "transport_bytes": 254, + "transport_sha256": "b584cd146f447c1e78e51d74e6d1c38c6a93d860d738a0afacdf959c8327d9bd", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "after-write": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": true, + "viewport": true, + "passed": false + } + }, + "passed": false, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": true, + "native_lines": { + "before": [ + "TOP_FIXED", + "REGION_A", + "REGION_B", + "BOTTOM_FIXED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "alt": [ + "ALT_OUTSIDE", + "", + "", + "ALT_C", + "ALT_D", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "restored": [ + "TOP_FIXED", + "REGION_A", + "REGION_B", + "BOTTOM_FIXED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "after-write": [ + "TOP_FIXED", + "REGION_A", + "REGIOM_B", + "BOTTOM_FIXED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "final": [ + "TOP_FIXED", + "REGION_A", + "REGIOM_B", + "REGION_CIXED", + "REGION_D", + "SGR_DONE", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "native_cursor": { + "before": [ + 2, + 5 + ], + "alt": [ + 4, + 7 + ], + "restored": [ + 2, + 5 + ], + "after-write": [ + 2, + 6 + ], + "final": [ + 5, + 8 + ] + }, + "native_cell_sha256": { + "before": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "alt": "d2e9a140a7b7a3c537b4cb25ea306c0b26fdf9694fc8c9d44218be173a99108e", + "restored": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "after-write": "84708a877d836570697978465b4c2b788652b2de0a20a09d8a117111d3c82dc0", + "final": "68ea1c55640dde6862f56fc015df6821072a72d589d315aff42776d5b5f46938" + }, + "terminal_lines": [ + "TOP_FIXED", + "REGION_C", + "REGION_D", + "BOTTOM_FIXED", + "", + "SGR_DONE", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "terminal_alternate": false, + "terminal_cursor": [ + 5, + 8 + ], + "terminal_current_style": { + "bg": 4, + "bold": false, + "fg": 1 + }, + "terminal_contract": { + "text": true, + "main_screen": true, + "cells_and_styles": false, + "cursor": true, + "current_style": true + }, + "terminal_final_passed": false, + "lifecycle": { + "status": "completed", + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + } + }, + "capture_files": { + "after-write.cells.bin": { + "bytes": 7680, + "sha256": "84708a877d836570697978465b4c2b788652b2de0a20a09d8a117111d3c82dc0" + }, + "after-write.console.bin": { + "bytes": 3840, + "sha256": "0463eaeda9c44a38ad9003ca14df549dcfc74ceb364308432aceadb7491fa007" + }, + "after-write.console.json": { + "bytes": 442, + "sha256": "e0c0890312f36d46be7aed7ec3ede6c37213f782790f309ff0509e6b8b2132ff" + }, + "alt.cells.bin": { + "bytes": 7680, + "sha256": "d2e9a140a7b7a3c537b4cb25ea306c0b26fdf9694fc8c9d44218be173a99108e" + }, + "alt.console.bin": { + "bytes": 3840, + "sha256": "f6492387ed4760be9851cccd504ac8f6f21624d55dce9671b3be4560ada0b5ac" + }, + "alt.console.json": { + "bytes": 434, + "sha256": "81304f5e1cd83bbf0039f4880b7fd44913ef877911075a69268f761f6589a29b" + }, + "before.cells.bin": { + "bytes": 7680, + "sha256": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "before.console.bin": { + "bytes": 3840, + "sha256": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b" + }, + "before.console.json": { + "bytes": 437, + "sha256": "6014972055b4eb00031ac07ff4abffef4adf62ca7033b192321e09ee5732a3db" + }, + "final.cells.bin": { + "bytes": 7680, + "sha256": "68ea1c55640dde6862f56fc015df6821072a72d589d315aff42776d5b5f46938" + }, + "final.console.bin": { + "bytes": 3840, + "sha256": "acea12c6e10ea9ad409f7c9df8015dd47ac1c4f22fbb3dfbae99fe064424807d" + }, + "final.console.json": { + "bytes": 436, + "sha256": "07ecbd646eec84165dc6bd007ab31ac962db93dd78c878e327d139e651dc4611" + }, + "restored.cells.bin": { + "bytes": 7680, + "sha256": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "restored.console.bin": { + "bytes": 3840, + "sha256": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b" + }, + "restored.console.json": { + "bytes": 439, + "sha256": "f6c9971ed7f756a1c0792a378167c871b6cb6fd17864bc8b65a1ba0bd27e9fc4" + }, + "source.bin": { + "bytes": 211, + "sha256": "51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62" + }, + "transport.bin": { + "bytes": 254, + "sha256": "b584cd146f447c1e78e51d74e6d1c38c6a93d860d738a0afacdf959c8327d9bd" + }, + "transport.prefix.bin": { + "bytes": 238, + "sha256": "d46065b8507db6fc51f2f4cf1c232bbc39ca99b03405dd4a5c92509c741a4e10" + } + }, + "terminal_trace": { + "bytes": 234723, + "sha256": "ab0f259d147d4a517473f66bf593a30e180b7e29279832d913c670d54420825d" + }, + "terminal_blank_foreground_difference": { + "count": 144, + "zero_based_rows": [ + 1, + 2 + ], + "columns_begin": 8, + "columns_end_exclusive": 80, + "text": " ", + "width": 1, + "background": 4, + "bold": false, + "expected_foreground": 1, + "actual_foreground": -1, + "original_gate_passed": false, + "corrected_gate_passed": false + }, + "oracle_serialization_correction": { + "default_empty_cells": 1731, + "original_expected": { + "text": " ", + "width": 1 + }, + "corrected_expected": { + "text": "", + "width": 0 + }, + "attribute_expectations_unchanged": true + } + }, + "patched-80x24-styled-cursor": { + "status": "completed", + "case": "styled-cursor", + "columns": 80, + "rows": 24, + "source_bytes": 211, + "source_sha256": "51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62", + "transport_bytes": 254, + "transport_sha256": "b584cd146f447c1e78e51d74e6d1c38c6a93d860d738a0afacdf959c8327d9bd", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "after-write": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": true, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": false, + "native_lines": { + "before": [ + "TOP_FIXED", + "REGION_A", + "REGION_B", + "BOTTOM_FIXED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "alt": [ + "ALT_OUTSIDE", + "", + "", + "ALT_C", + "ALT_D", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "restored": [ + "TOP_FIXED", + "REGION_A", + "REGION_B", + "BOTTOM_FIXED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "after-write": [ + "TOP_FIXED", + "REGION_A", + "REGIOM_B", + "BOTTOM_FIXED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "final": [ + "TOP_FIXED", + "REGION_C", + "REGION_D", + "BOTTOM_FIXED", + "", + "SGR_DONE", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "native_cursor": { + "before": [ + 2, + 5 + ], + "alt": [ + 4, + 7 + ], + "restored": [ + 2, + 5 + ], + "after-write": [ + 2, + 6 + ], + "final": [ + 5, + 8 + ] + }, + "native_cell_sha256": { + "before": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "alt": "d2e9a140a7b7a3c537b4cb25ea306c0b26fdf9694fc8c9d44218be173a99108e", + "restored": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651", + "after-write": "84708a877d836570697978465b4c2b788652b2de0a20a09d8a117111d3c82dc0", + "final": "be9fa7d2fa9870457043d00a2b97c17a43383ffcaed1094e29e8e229905748c1" + }, + "terminal_lines": [ + "TOP_FIXED", + "REGION_C", + "REGION_D", + "BOTTOM_FIXED", + "", + "SGR_DONE", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "terminal_alternate": false, + "terminal_cursor": [ + 5, + 8 + ], + "terminal_current_style": { + "bg": 4, + "bold": false, + "fg": 1 + }, + "terminal_contract": { + "text": true, + "main_screen": true, + "cells_and_styles": false, + "cursor": true, + "current_style": true + }, + "terminal_final_passed": false, + "lifecycle": { + "status": "completed", + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + } + }, + "capture_files": { + "after-write.cells.bin": { + "bytes": 7680, + "sha256": "84708a877d836570697978465b4c2b788652b2de0a20a09d8a117111d3c82dc0" + }, + "after-write.console.bin": { + "bytes": 3840, + "sha256": "0463eaeda9c44a38ad9003ca14df549dcfc74ceb364308432aceadb7491fa007" + }, + "after-write.console.json": { + "bytes": 442, + "sha256": "e0c0890312f36d46be7aed7ec3ede6c37213f782790f309ff0509e6b8b2132ff" + }, + "alt.cells.bin": { + "bytes": 7680, + "sha256": "d2e9a140a7b7a3c537b4cb25ea306c0b26fdf9694fc8c9d44218be173a99108e" + }, + "alt.console.bin": { + "bytes": 3840, + "sha256": "f6492387ed4760be9851cccd504ac8f6f21624d55dce9671b3be4560ada0b5ac" + }, + "alt.console.json": { + "bytes": 434, + "sha256": "81304f5e1cd83bbf0039f4880b7fd44913ef877911075a69268f761f6589a29b" + }, + "before.cells.bin": { + "bytes": 7680, + "sha256": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "before.console.bin": { + "bytes": 3840, + "sha256": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b" + }, + "before.console.json": { + "bytes": 437, + "sha256": "6014972055b4eb00031ac07ff4abffef4adf62ca7033b192321e09ee5732a3db" + }, + "final.cells.bin": { + "bytes": 7680, + "sha256": "be9fa7d2fa9870457043d00a2b97c17a43383ffcaed1094e29e8e229905748c1" + }, + "final.console.bin": { + "bytes": 3840, + "sha256": "3a57853c6ca7cc6a7fb53ea445a9967d8e92faf2ef6391d820d2e6d6fbaf3950" + }, + "final.console.json": { + "bytes": 436, + "sha256": "2c5cbccfa24897e74b2a8da7c3fd398ece2f8c1c91e4266661cb223ea2d2c988" + }, + "restored.cells.bin": { + "bytes": 7680, + "sha256": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "restored.console.bin": { + "bytes": 3840, + "sha256": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b" + }, + "restored.console.json": { + "bytes": 439, + "sha256": "f6c9971ed7f756a1c0792a378167c871b6cb6fd17864bc8b65a1ba0bd27e9fc4" + }, + "source.bin": { + "bytes": 211, + "sha256": "51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62" + }, + "transport.bin": { + "bytes": 254, + "sha256": "b584cd146f447c1e78e51d74e6d1c38c6a93d860d738a0afacdf959c8327d9bd" + }, + "transport.prefix.bin": { + "bytes": 238, + "sha256": "d46065b8507db6fc51f2f4cf1c232bbc39ca99b03405dd4a5c92509c741a4e10" + } + }, + "terminal_trace": { + "bytes": 234723, + "sha256": "ab0f259d147d4a517473f66bf593a30e180b7e29279832d913c670d54420825d" + }, + "terminal_blank_foreground_difference": { + "count": 144, + "zero_based_rows": [ + 1, + 2 + ], + "columns_begin": 8, + "columns_end_exclusive": 80, + "text": " ", + "width": 1, + "background": 4, + "bold": false, + "expected_foreground": 1, + "actual_foreground": -1, + "original_gate_passed": false, + "corrected_gate_passed": false + }, + "oracle_serialization_correction": { + "default_empty_cells": 1731, + "original_expected": { + "text": " ", + "width": 1 + }, + "corrected_expected": { + "text": "", + "width": 0 + }, + "attribute_expectations_unchanged": true + } + }, + "baseline-12x7-styled-cursor": { + "status": "completed", + "case": "styled-cursor", + "columns": 12, + "rows": 7, + "source_bytes": 211, + "source_sha256": "51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62", + "transport_bytes": 254, + "transport_sha256": "b584cd146f447c1e78e51d74e6d1c38c6a93d860d738a0afacdf959c8327d9bd", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "after-write": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": true, + "viewport": true, + "passed": false + } + }, + "passed": false, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": true, + "native_lines": { + "before": [ + "TOP_FIXED", + "REGION_A", + "REGION_B", + "BOTTOM_FIXED", + "", + "", + "" + ], + "alt": [ + "ALT_OUTSIDE", + "", + "", + "ALT_C", + "ALT_D", + "", + "" + ], + "restored": [ + "TOP_FIXED", + "REGION_A", + "REGION_B", + "BOTTOM_FIXED", + "", + "", + "" + ], + "after-write": [ + "TOP_FIXED", + "REGION_A", + "REGIOM_B", + "BOTTOM_FIXED", + "", + "", + "" + ], + "final": [ + "TOP_FIXED", + "REGION_A", + "REGIOM_B", + "REGION_CIXED", + "REGION_D", + "SGR_DONE", + "" + ] + }, + "native_cursor": { + "before": [ + 2, + 5 + ], + "alt": [ + 4, + 7 + ], + "restored": [ + 2, + 5 + ], + "after-write": [ + 2, + 6 + ], + "final": [ + 5, + 8 + ] + }, + "native_cell_sha256": { + "before": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "alt": "b6955bf5bd843cb3acb16f862eabe4341e18526437e62adb9cc7e9afcea789e4", + "restored": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "after-write": "9bb0cc966b92b1a1f86e7dbdde94a6e101e8512b271d2baecb8a3661e47b8687", + "final": "428cc23d0edbc831126dc5f1cf0044af45946a43a695b39dc95b5f15f2454046" + }, + "terminal_lines": [ + "TOP_FIXED", + "REGION_C", + "REGION_D", + "BOTTOM_FIXED", + "", + "SGR_DONE", + "" + ], + "terminal_alternate": false, + "terminal_cursor": [ + 5, + 8 + ], + "terminal_current_style": { + "bg": 4, + "bold": false, + "fg": 1 + }, + "terminal_contract": { + "text": true, + "main_screen": true, + "cells_and_styles": false, + "cursor": true, + "current_style": true + }, + "terminal_final_passed": false, + "lifecycle": { + "status": "completed", + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-baseline-run40449292015" + } + }, + "capture_files": { + "after-write.cells.bin": { + "bytes": 336, + "sha256": "9bb0cc966b92b1a1f86e7dbdde94a6e101e8512b271d2baecb8a3661e47b8687" + }, + "after-write.console.bin": { + "bytes": 168, + "sha256": "e44ad01ff79993fee760691a952b672cd8d53c1c2b6e4cb12e0c09af6182a6a1" + }, + "after-write.console.json": { + "bytes": 386, + "sha256": "46029fec056b0d1f56d62d850a99185625ef5b2614dbdea7cfade9ab4117ca3d" + }, + "alt.cells.bin": { + "bytes": 336, + "sha256": "b6955bf5bd843cb3acb16f862eabe4341e18526437e62adb9cc7e9afcea789e4" + }, + "alt.console.bin": { + "bytes": 168, + "sha256": "c2e8954d37be9bfc2b600951255d9410a9873e9259b7980ed41785de97e863c3" + }, + "alt.console.json": { + "bytes": 378, + "sha256": "56d31b92ef96caf3d12cf388d2f8491b9b719de3fb137956df77429a8e9d3bc5" + }, + "before.cells.bin": { + "bytes": 336, + "sha256": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "before.console.bin": { + "bytes": 168, + "sha256": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10" + }, + "before.console.json": { + "bytes": 381, + "sha256": "6997410b5bb147cbcc80c7d70014e81e105f1e9f9b0553c2ff0fe1731d007677" + }, + "final.cells.bin": { + "bytes": 336, + "sha256": "428cc23d0edbc831126dc5f1cf0044af45946a43a695b39dc95b5f15f2454046" + }, + "final.console.bin": { + "bytes": 168, + "sha256": "82c05767aae71e19dbaef245ad930cc5847b725f27c52dc79c37c470a9904990" + }, + "final.console.json": { + "bytes": 380, + "sha256": "0afd964ba580b478680682a52cd9fc07313169b1891ccb56d76d3c7dbf3f1118" + }, + "restored.cells.bin": { + "bytes": 336, + "sha256": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "restored.console.bin": { + "bytes": 168, + "sha256": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10" + }, + "restored.console.json": { + "bytes": 383, + "sha256": "34fd72b6596e93feb19578af411822d04b0cd8b3657da1909ee6cdb55c3b6aed" + }, + "source.bin": { + "bytes": 211, + "sha256": "51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62" + }, + "transport.bin": { + "bytes": 254, + "sha256": "b584cd146f447c1e78e51d74e6d1c38c6a93d860d738a0afacdf959c8327d9bd" + }, + "transport.prefix.bin": { + "bytes": 238, + "sha256": "d46065b8507db6fc51f2f4cf1c232bbc39ca99b03405dd4a5c92509c741a4e10" + } + }, + "terminal_trace": { + "bytes": 10663, + "sha256": "91b97be296766a8cf6c7dc6bf2e36b27252d45e4e3d8875ada68ae75885201b7" + }, + "terminal_blank_foreground_difference": { + "count": 8, + "zero_based_rows": [ + 1, + 2 + ], + "columns_begin": 8, + "columns_end_exclusive": 12, + "text": " ", + "width": 1, + "background": 4, + "bold": false, + "expected_foreground": 1, + "actual_foreground": -1, + "original_gate_passed": false, + "corrected_gate_passed": false + }, + "oracle_serialization_correction": { + "default_empty_cells": 31, + "original_expected": { + "text": " ", + "width": 1 + }, + "corrected_expected": { + "text": "", + "width": 0 + }, + "attribute_expectations_unchanged": true + } + }, + "patched-12x7-styled-cursor": { + "status": "completed", + "case": "styled-cursor", + "columns": 12, + "rows": 7, + "source_bytes": 211, + "source_sha256": "51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62", + "transport_bytes": 254, + "transport_sha256": "b584cd146f447c1e78e51d74e6d1c38c6a93d860d738a0afacdf959c8327d9bd", + "native_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "after-write": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "final": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + } + }, + "passed": true, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "unpatched_prediction_matches": false, + "native_lines": { + "before": [ + "TOP_FIXED", + "REGION_A", + "REGION_B", + "BOTTOM_FIXED", + "", + "", + "" + ], + "alt": [ + "ALT_OUTSIDE", + "", + "", + "ALT_C", + "ALT_D", + "", + "" + ], + "restored": [ + "TOP_FIXED", + "REGION_A", + "REGION_B", + "BOTTOM_FIXED", + "", + "", + "" + ], + "after-write": [ + "TOP_FIXED", + "REGION_A", + "REGIOM_B", + "BOTTOM_FIXED", + "", + "", + "" + ], + "final": [ + "TOP_FIXED", + "REGION_C", + "REGION_D", + "BOTTOM_FIXED", + "", + "SGR_DONE", + "" + ] + }, + "native_cursor": { + "before": [ + 2, + 5 + ], + "alt": [ + 4, + 7 + ], + "restored": [ + 2, + 5 + ], + "after-write": [ + 2, + 6 + ], + "final": [ + 5, + 8 + ] + }, + "native_cell_sha256": { + "before": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "alt": "b6955bf5bd843cb3acb16f862eabe4341e18526437e62adb9cc7e9afcea789e4", + "restored": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3", + "after-write": "9bb0cc966b92b1a1f86e7dbdde94a6e101e8512b271d2baecb8a3661e47b8687", + "final": "863a5472a5eb1208f304c4872bb580f7c74be4faf0d3eb8cac9f72918441f8af" + }, + "terminal_lines": [ + "TOP_FIXED", + "REGION_C", + "REGION_D", + "BOTTOM_FIXED", + "", + "SGR_DONE", + "" + ], + "terminal_alternate": false, + "terminal_cursor": [ + 5, + 8 + ], + "terminal_current_style": { + "bg": 4, + "bold": false, + "fg": 1 + }, + "terminal_contract": { + "text": true, + "main_screen": true, + "cells_and_styles": false, + "cursor": true, + "current_style": true + }, + "terminal_final_passed": false, + "lifecycle": { + "status": "completed", + "returncode": 0, + "outer_job_after": { + "active": 0, + "total": 4, + "terminated": 0 + }, + "forced_cleanup": false, + "job_assigned": true, + "process_reaped": true, + "streams_drained": true, + "cleanup_errors": [], + "native": { + "waited": true, + "side_by_side": true, + "creation_flags": 0, + "exit_code": 37, + "read_error": 109, + "capture_overflow": false, + "forced_reader_cancel": false, + "forced_process_cancel": false, + "cleanup_complete": true, + "active_children_after": 0, + "backend_identity": "source-dc8-r56-patched-run40449292015" + } + }, + "capture_files": { + "after-write.cells.bin": { + "bytes": 336, + "sha256": "9bb0cc966b92b1a1f86e7dbdde94a6e101e8512b271d2baecb8a3661e47b8687" + }, + "after-write.console.bin": { + "bytes": 168, + "sha256": "e44ad01ff79993fee760691a952b672cd8d53c1c2b6e4cb12e0c09af6182a6a1" + }, + "after-write.console.json": { + "bytes": 386, + "sha256": "46029fec056b0d1f56d62d850a99185625ef5b2614dbdea7cfade9ab4117ca3d" + }, + "alt.cells.bin": { + "bytes": 336, + "sha256": "b6955bf5bd843cb3acb16f862eabe4341e18526437e62adb9cc7e9afcea789e4" + }, + "alt.console.bin": { + "bytes": 168, + "sha256": "c2e8954d37be9bfc2b600951255d9410a9873e9259b7980ed41785de97e863c3" + }, + "alt.console.json": { + "bytes": 378, + "sha256": "56d31b92ef96caf3d12cf388d2f8491b9b719de3fb137956df77429a8e9d3bc5" + }, + "before.cells.bin": { + "bytes": 336, + "sha256": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "before.console.bin": { + "bytes": 168, + "sha256": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10" + }, + "before.console.json": { + "bytes": 381, + "sha256": "6997410b5bb147cbcc80c7d70014e81e105f1e9f9b0553c2ff0fe1731d007677" + }, + "final.cells.bin": { + "bytes": 336, + "sha256": "863a5472a5eb1208f304c4872bb580f7c74be4faf0d3eb8cac9f72918441f8af" + }, + "final.console.bin": { + "bytes": 168, + "sha256": "d2fb3eaf337d2f63c74009b554d61c9eecae9dfbd6131726acb7cb643c9f7cf4" + }, + "final.console.json": { + "bytes": 380, + "sha256": "d4aa2f046ca74cc270c1ebb86d058ce918512b2726a3b3f38ca3ef2d6cc0afbe" + }, + "restored.cells.bin": { + "bytes": 336, + "sha256": "323107891dd2f32c2be1fecd7ae03379c96f8fe38eff938ece8f19eeebe6dbf3" + }, + "restored.console.bin": { + "bytes": 168, + "sha256": "f3f613e2347734671af75bb4747b55ebc89ea0c2b1994b5efd7a86152aa80b10" + }, + "restored.console.json": { + "bytes": 383, + "sha256": "34fd72b6596e93feb19578af411822d04b0cd8b3657da1909ee6cdb55c3b6aed" + }, + "source.bin": { + "bytes": 211, + "sha256": "51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62" + }, + "transport.bin": { + "bytes": 254, + "sha256": "b584cd146f447c1e78e51d74e6d1c38c6a93d860d738a0afacdf959c8327d9bd" + }, + "transport.prefix.bin": { + "bytes": 238, + "sha256": "d46065b8507db6fc51f2f4cf1c232bbc39ca99b03405dd4a5c92509c741a4e10" + } + }, + "terminal_trace": { + "bytes": 10663, + "sha256": "91b97be296766a8cf6c7dc6bf2e36b27252d45e4e3d8875ada68ae75885201b7" + }, + "terminal_blank_foreground_difference": { + "count": 8, + "zero_based_rows": [ + 1, + 2 + ], + "columns_begin": 8, + "columns_end_exclusive": 12, + "text": " ", + "width": 1, + "background": 4, + "bold": false, + "expected_foreground": 1, + "actual_foreground": -1, + "original_gate_passed": false, + "corrected_gate_passed": false + }, + "oracle_serialization_correction": { + "default_empty_cells": 31, + "original_expected": { + "text": " ", + "width": 1 + }, + "corrected_expected": { + "text": "", + "width": 0 + }, + "attribute_expectations_unchanged": true + } + } + }, + "source_hex": "1b5b306d1b5b324a1b5b48544f505f46495845440d0a524547494f4e5f410d0a524547494f4e5f420d0a424f54544f4d5f46495845440d0a1b5b323b33721b5b33313b34346d1b5b333b36481b5b3f31303439681b5b306d1b5b324a1b5b48414c545f4f5554534944450d0a1b5b343b3148414c545f410d0a414c545f421b5b343b35721b5b33323b34356d1b5b353b31480a414c545f430a414c545f441b5b353b38481b5b3f313034396c4d1b5b333b31480a524547494f4e5f430a524547494f4e5f441b5b363b31485347525f444f4e45", + "transport_hex": "1b5b31741b5b631b5b3f31303034681b5b3f39303031681b5b306d1b5b324a1b5b48544f505f46495845440d0a524547494f4e5f410d0a524547494f4e5f420d0a424f54544f4d5f46495845440d0a1b5b323b33721b5b33313b34346d1b5b333b36481b5b3f31303439681b5b306d1b5b324a1b5b48414c545f4f5554534944450d0a1b5b343b3148414c545f410d0a414c545f421b5b343b35721b5b33323b34356d1b5b353b31480d0a414c545f430d0a414c545f441b5b353b38481b5b3f313034396c4d1b5b333b31480d0a524547494f4e5f430d0a524547494f4e5f441b5b363b31485347525f444f4e451b5b3f313030346c1b5b3f393030316c", + "validation": { + "initial_oracle_regressions": { + "passed": 7, + "total": 7, + "seconds": 0.09 + }, + "canonical_empty_cell_red": { + "failed": 1, + "total": 1, + "seconds": 0.001 + }, + "corrected_oracle_regressions": { + "passed": 7, + "total": 7, + "seconds": 0.069 + }, + "observed_blank_foreground_counterexample": "included in corrected regressions", + "old_capture_offline_recheck": { + "passed": 12, + "total": 12, + "native_executions": 0 + }, + "native_probe_build": "passed", + "new_product_regression": "not-run" + }, + "validation_logs": { + "configure.log": { + "bytes": 911, + "sha256": "6619d952f08570277c0d3e562a3dde1ad7a2d04aad54dba0a28152eba06daa1e" + }, + "build.log": { + "bytes": 335, + "sha256": "fc88a5ad4f07523f2e6aa8fabb6c4780c3d63f4be1d2a04bd505cf862278ab13" + }, + "matrix-1.log": { + "bytes": 389, + "sha256": "619b58e89b4d5538fb21d8cce317666211d526a4d2a0a60862a0086d0210ca24" + }, + "oracle-serialization-red.log": { + "bytes": 820, + "sha256": "aa6b26efeccd9fb0b19bc90e64dcb1b49a489921dd3e2de51a87a8e77e9ce049" + }, + "oracle-serialization-green.log": { + "bytes": 1594, + "sha256": "4a115ee9f4be09e5c96726f6430990d81df503f7bdc9d0531c3997cda1475f4d" + }, + "old-capture-recheck.json": { + "bytes": 1818, + "sha256": "f86bab6f7cda08abd490c5e476a269b35a1f594fbaf8d43b76ca9e46cf5489b5" + } + }, + "limitations": [ + "The candidate Cell::reset retains background and defaults foreground; source observation does not establish WindTerm behavior or approve a product policy.", + "The initial oracle incorrectly serialized untouched default blanks. Offline correction changes that encoding only; the expected explicit foreground remains 1 and both original and corrected matrix verdicts remain failed.", + "Native CHAR_INFO and terminal style are separate interfaces; current foreground and written colored text were preserved.", + "Other SGR, truecolor, intermediate terminal states, history, resize, queries/API, full product and maintenance remain unverified." + ] +} diff --git a/experiments/conpty/results/2026-10-27-upstream-margin-build/build-summary.json b/experiments/conpty/results/2026-10-27-upstream-margin-build/build-summary.json new file mode 100644 index 00000000..e4958591 --- /dev/null +++ b/experiments/conpty/results/2026-10-27-upstream-margin-build/build-summary.json @@ -0,0 +1,266 @@ +{ + "schema": "termforge-upstream-conpty-build-v1", + "purpose": "isolated source-build and adapter experiment; not an official ConPTY package", + "status": "adapter-verified-runtime-unverified", + "termforge_source": "eb88c25fea343cff92bd7d5c03e74c55df6bafff", + "upstream_source": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "vcpkg_source": "927f62e4b8838bd7e441e9c45103a16ffd75007e", + "image_os": "win25-vs2026", + "image_version": "20261021.278.1", + "workflow_run": "40447628163", + "workflow_attempt": "1", + "configuration": "Release/x64/v145/WindowsSDK10.0.26100.0", + "stages": [ + { + "name": "vcpkg-tool-download", + "exit_code": 0, + "elapsed_seconds": 0.5864599, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "vcpkg-version", + "exit_code": 0, + "elapsed_seconds": 0.029197, + "log_sha256": "fea4ead8f40a8aeca48fc22406d6102a7f1e07373fc0d6a5decb129457a43161" + }, + { + "name": "nuget-restore", + "exit_code": 0, + "elapsed_seconds": 10.1804599, + "log_sha256": "c868754fca3b184523987c5c0ea4064a4c6e260955437bcb35a588298fc8d14e" + }, + { + "name": "baseline-patch-check", + "exit_code": 0, + "elapsed_seconds": 0.0519633, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "baseline-test-patch", + "exit_code": 0, + "elapsed_seconds": 0.0446913, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "baseline-proxy-build", + "exit_code": 0, + "elapsed_seconds": 88.2472551, + "log_sha256": "30c4807f5bb76565f5f2f7de380afcde17cd814f4165771b7057b41e0d69bf60" + }, + { + "name": "baseline-types-build", + "exit_code": 0, + "elapsed_seconds": 10.7958636, + "log_sha256": "2517edeadee0c2ece0eb57d76fc9b638eb4c24dcb36bff67d7aff6bce2c01fd4" + }, + { + "name": "baseline-buffer-build", + "exit_code": 0, + "elapsed_seconds": 16.3077754, + "log_sha256": "5e0cd5be3d1fa74b0db5bd0ca246b75cad536912d1264cb2a04ce5243fe483cc" + }, + { + "name": "baseline-render-base-build", + "exit_code": 0, + "elapsed_seconds": 8.5950454, + "log_sha256": "6a80b6b730498b86e451d25f08194d592438d4f02dca945aa6dd7ad4c67919c4" + }, + { + "name": "baseline-render-gdi-build", + "exit_code": 0, + "elapsed_seconds": 7.4118507, + "log_sha256": "5ffba2be38849e5bedbc3f852b4a416fbc44eb25b859c0ad59115626ece82867" + }, + { + "name": "baseline-adapter-build", + "exit_code": 0, + "elapsed_seconds": 114.0402119, + "log_sha256": "27de5599e32a701c602340f27ae0c9ca1cdf9c42ec2b9c9ab5f169a2c204f631" + }, + { + "name": "baseline-regression", + "exit_code": 1, + "elapsed_seconds": 0.304792, + "log_sha256": "d1907fb1f5e1dd008eef1b1e5611d6533d37538df0a2a6cba0871784cb8d4988" + }, + { + "name": "baseline-regression-contract", + "exit_code": 0, + "elapsed_seconds": 0.0679866, + "log_sha256": "b7aa5de14c43240cceac182a506bd51937189c7b22b4a3998c8ec37bba6f1896" + }, + { + "name": "production-patch-check", + "exit_code": 0, + "elapsed_seconds": 0.04526, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "production-patch", + "exit_code": 0, + "elapsed_seconds": 0.044372, + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "name": "patched-adapter-build", + "exit_code": 0, + "elapsed_seconds": 10.4338222, + "log_sha256": "29d597ee653b103114c0d7fdaad3fe694350d54f3914a0b6cc42ea251b84b928" + }, + { + "name": "patched-regression", + "exit_code": 0, + "elapsed_seconds": 0.2892821, + "log_sha256": "b0413a44a181bbd07e81dcf612d18a00423baa01da4a28d0759004dc2603873c" + }, + { + "name": "patched-regression-contract", + "exit_code": 0, + "elapsed_seconds": 0.0721329, + "log_sha256": "da281146aa232fafccb57afd0100781005fc28c4625a5a782e0513e12912573d" + }, + { + "name": "patched-adapter", + "exit_code": 0, + "elapsed_seconds": 3.0609593, + "log_sha256": "343a699ea0b2bf861cf9af70d8a93e5660f1086a73d59c3b9ab48971acd66704" + }, + { + "name": "patched-adapter-contract", + "exit_code": 0, + "elapsed_seconds": 0.0728841, + "log_sha256": "332b578d7b8603574df41dea702bfb7ef14c7e201ff24b194c57a0bf61c2ff4f" + }, + { + "name": "patched-propsheet-build", + "exit_code": 0, + "elapsed_seconds": 14.8334641, + "log_sha256": "b0ca024bae4050c4acbc7bea2ba6435710a8d7ea4b8f70fe351d79dba20f8eaf" + }, + { + "name": "patched-host-build", + "exit_code": 0, + "elapsed_seconds": 28.4543468, + "log_sha256": "3186d0fc9afea5dd466b68042787b259cf722a84d8a429850309d5a1d4e50bb8" + }, + { + "name": "patched-dll-build", + "exit_code": 0, + "elapsed_seconds": 12.3535776, + "log_sha256": "1dbb9fc9a551831d8d69ad67a7142e3247c28f92982a04bf42784be75ea8c650" + } + ], + "test_binaries": [ + { + "stage": "baseline-regression", + "test_dll_sha256": "3e161442de1785596a54f489d3c0b468a22b16ae8966a6dcb3402bbd70052856", + "taef_sha256": "b729c665a51a1e36dc24152ecde4e4a7efb618b75dc7387d8c6edb103ef952c1" + }, + { + "stage": "patched-regression", + "test_dll_sha256": "6a5c51aaeee2ef99eff4c0257c20e4bbaf9b4c2efb509a4d2b6a424cccb8a16b", + "taef_sha256": "b729c665a51a1e36dc24152ecde4e4a7efb618b75dc7387d8c6edb103ef952c1" + }, + { + "stage": "patched-adapter", + "test_dll_sha256": "6a5c51aaeee2ef99eff4c0257c20e4bbaf9b4c2efb509a4d2b6a424cccb8a16b", + "taef_sha256": "b729c665a51a1e36dc24152ecde4e4a7efb618b75dc7387d8c6edb103ef952c1" + } + ], + "adapter_tests_verified": true, + "native_runtime_verified": false, + "full_r2_contract_verified": false, + "product_backend_selected": false, + "vcpkg_shallow": "false", + "patch_sha256": "dc27377e399bd0217a0b76e16cc89f087c1b781929e4c958ad30c3a475322b81", + "source_hashes_verified": true, + "tools": { + "visual_studio": "18.0", + "msvc": "14.51.36231", + "sdk": "10.0.26100.0\\", + "compiler_sha256": "b0a1818ebae6da7f18230a84e76ce839212584ac4c2ab55b97a0d5268085da57", + "msbuild_sha256": "fc55d2743dbbb20708b2ca6084fc5b036a2ce72291ff989eae94ad8220ae2f74" + }, + "vcpkg_exe_sha256": "f1edbf3a39de350e2bb065214fdc057111aa87a2e2ed9a7dcb8ddc86e17751b9", + "files": { + "OpenConsole.exe": { + "sha256": "6516b5c9b890d810ba9f178d082d69f664bce775acb2820e9d40f297ae037bdb", + "bytes": 1147392 + }, + "conpty.dll": { + "sha256": "22710cf4e1ddd94bd76888717e394be556644d137b08355884649a63ee5b7590", + "bytes": 108544 + } + }, + "nuget_packages": [ + { + "name": "Appium.WebDriver.3.0.0.2.nupkg", + "sha256": "c67adece6bd5730036812af29614a7e5699f048b8e0d261841f47d2007358702" + }, + { + "name": "Castle.Core.4.1.1.nupkg", + "sha256": "c3f130d751103ec89a4ec24ec4f3c8bfa02c4d7ca70a865b68c79eddae5dea45" + }, + { + "name": "Microsoft.Internal.PGO-Helpers.Cpp.0.2.34.nupkg", + "sha256": "92aca6465e2cbe04b312d8255d15d7af2e5cfceee59fc91194c1228283bfc453" + }, + { + "name": "Microsoft.Internal.Windows.Terminal.ThemeHelpers.0.8.250811004.nupkg", + "sha256": "c70c34c5ed0b937a23285402396c3f23523496dca59ede2aaddc2914f6ea339d" + }, + { + "name": "Microsoft.MSBuildCache.AzurePipelines.0.1.283-preview.nupkg", + "sha256": "9a5a7815a175000b8c608d94727758f0c22a8e6d5f318515169cf9d003b36f82" + }, + { + "name": "Microsoft.MSBuildCache.Local.0.1.283-preview.nupkg", + "sha256": "732767cf82dc8d4e83790d9421c4c7bdbb7b5bbc6e9ca3bb2d3e79cb92dbed79" + }, + { + "name": "Microsoft.MSBuildCache.SharedCompilation.0.1.283-preview.nupkg", + "sha256": "40d947d33e2b31341870831b320de4db2926026e2e0dbdcb71099fae1a876f34" + }, + { + "name": "Microsoft.Taef.10.100.251104001.nupkg", + "sha256": "46b1290acaebc7cbcd3c4ac2522d9526cd7c4dad3a618759754619a052396a4b" + }, + { + "name": "Microsoft.UI.Xaml.2.8.4.nupkg", + "sha256": "486dbe1f271b31057ec01ecb7ce4df3eedad11efdc26569170fb128ee4a4e964" + }, + { + "name": "Microsoft.VisualStudio.Setup.Configuration.Native.2.3.2262.nupkg", + "sha256": "43c2d1c5694a846d04d5f1cb3c3a8269ebad3b0432954da2948e53b33c5ed5fb" + }, + { + "name": "Microsoft.Web.WebView2.1.0.1661.34.nupkg", + "sha256": "bad4c011c20ab68526c4c1448da05a6297586806123019ac89387fc62f46c3ce" + }, + { + "name": "Microsoft.Windows.CppWinRT.2.0.250303.1.nupkg", + "sha256": "955e3051b35db1c00177ed14ab6b7b995c3b32a53fdb6c184ea53b1dba66e439" + }, + { + "name": "Microsoft.Windows.ImplementationLibrary.1.0.250325.1.nupkg", + "sha256": "b3e3ac9077c4f5f96bd8f90785bcae47bac6ba9688d896cd04422c8972ec5b2b" + }, + { + "name": "Microsoft.WindowsPackageManager.ComInterop.1.8.1911.nupkg", + "sha256": "9b8a8a5186a554e56fcb7997b6ea48f3432813c0945a2d9ba60930d1241cfe2b" + }, + { + "name": "Newtonsoft.Json.13.0.1.nupkg", + "sha256": "2b6b52556e27e1b7913f33eedeb95568110c746bd64afff74357f1683878323a" + }, + { + "name": "Selenium.Support.3.5.0.nupkg", + "sha256": "0716656ae84c72cc31595ee2f06bf1f59311b96f813f9ada3d31d7f7f72ffb82" + }, + { + "name": "Selenium.WebDriver.3.5.0.nupkg", + "sha256": "79c41eb770a8728a15ddf27c7ac41ca433597983ac37e4db7746a52e16cec876" + } + ], + "vcpkg_status_sha256": "9957c37c4d2da3b71509a3180374a6b5ddb4126f9e1a6cffe46a9ea0c307337c" +} diff --git a/experiments/conpty/results/2026-10-27-upstream-margin-build/validation.json b/experiments/conpty/results/2026-10-27-upstream-margin-build/validation.json new file mode 100644 index 00000000..4bb7411a --- /dev/null +++ b/experiments/conpty/results/2026-10-27-upstream-margin-build/validation.json @@ -0,0 +1,73 @@ +{ + "schema": "termforge-upstream-margin-build-evidence-v1", + "date_utc": "2026-10-27", + "issue": 56, + "pull_request": 96, + "head": "b56058e9c4becb30f6afda3100b73acf1e552ff7", + "tree": "e5031af701d8cd1d8c710624fb7e1a2ce3b61c74", + "run_url": "https://github.com/JavaZeroo/termforge/actions/runs/40447628163", + "job_id": 122002564243, + "summary_artifact": { + "id": 12708429315, + "zip_sha256": "ec391e524557e163aa40149dc9f5c3d801a0b7cede3b67ac52aaf15dc3fe5238" + }, + "pair_artifact": { + "id": 12708509216, + "zip_sha256": "60367bbde7a1ac5839ddb3718b19604869313e8f28df60bc33b22bdaa4d8eb31" + }, + "captured_summary_sha256": "c1f7d41e60417c50524c299ac8c9ca6617ebd90244ac9e756c51d29f39bd61c5", + "summary_representation": "build-summary.json preserves parsed fields; UTF-8/LF JSON normalization is not the captured byte identity", + "tests": { + "baseline-regression": { + "expected": "red", + "exit_code": 1, + "counts": { + "total": 1, + "passed": 0, + "failed": 1, + "blocked": 0, + "not_run": 0, + "skipped": 0 + }, + "accepted": true + }, + "patched-regression": { + "expected": "focused-green", + "exit_code": 0, + "counts": { + "total": 1, + "passed": 1, + "failed": 0, + "blocked": 0, + "not_run": 0, + "skipped": 0 + }, + "accepted": true + }, + "patched-adapter": { + "expected": "full-green", + "exit_code": 0, + "counts": { + "total": 412, + "passed": 412, + "failed": 0, + "blocked": 0, + "not_run": 0, + "skipped": 0 + }, + "accepted": true + } + }, + "baseline_failure": "expected default alternate margins; actual top=1,bottom=2 at adapterTest.cpp:3006", + "first_success_only_patched_pair": true, + "same_source_baseline_pair_built": false, + "native_runtime_verified": false, + "full_r2_contract_verified": false, + "product_backend_selected": false, + "limitations": [ + "Adapter state tests do not establish native console or downstream transport behavior.", + "This v1 build contains no unpatched native pair; same-source native red/green remains unmeasured.", + "Artifacts are temporary research outputs; no WindTerm files or upstream binary bytes are committed.", + "Earlier checkout, shallow-history and build-order failures remain in PR96 and issue56." + ] +} diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/closing-reply.json b/experiments/shell/results/2026-10-26-replay-cost-and-close/closing-reply.json new file mode 100644 index 00000000..f3ca2ca5 --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/closing-reply.json @@ -0,0 +1,65 @@ +{ + "red_test_note": "Red used the same ordering fixture before strengthening the green marker/consumed-byte assertions; source hashes differ explicitly.", + "native_backend": "candidate .4 plus explicit official ConPTY 1.25.260930003 flags24", + "runs": [ + { + "phase": "red", + "identity": { + "commit": "06bf6b5cf4c5f7457cbb02355aa4971276c2b581", + "files": { + "experiments/shell/candidate_reply_close_test.cpp": "79386c5fe342a959d8f14e0dd1a9d321aa9f6bac93d460532595a31a6b4898af", + "experiments/shell/shell.cpp": "b369968152bbff107c699181d4e23f271e62a5732f0c41793159b3efc3609321", + "experiments/core/candidate_terminal.cpp": "3092ee2ea44ca0f897a7d3b6244c079ba8073dc109993204e435f065388a2ed1", + "CMakeLists.txt": "f5bb85e12b7a815c4feb7417da9ebc5298de58664bcd2792b277cb282729da73", + "build/candidate/bin/Release/candidate_reply_close_test.exe": "7df5ef5ddc896b8fef626ed15cb9c3dbfd4955c93009bf83700e1b9c115e9664" + }, + "result": "query observed after close; stopping=true; rejected=1; terminal reply rejected by input queue" + }, + "log_sha256": "9c2fcbd3c53d9e831cae2d23396d8fe0c46578cf433f6ac3e14bf5f6f8f92baf", + "observations": [ + { + "query_consumed_after_close": true, + "consumed_bytes": 0, + "input_stopping": true, + "input_rejected": 1 + } + ], + "passed": false + }, + { + "phase": "green", + "identity": { + "files": { + "experiments/shell/candidate_reply_close_test.cpp": "453ab888fb57d4f918bcfa583da7167a21463ce185be2a3d67caec74505fc424", + "experiments/shell/shell.cpp": "ac4dd44861aa2928213fffe91d30cdaf3aedf19f08468aefeed22828352296cc", + "experiments/core/candidate_terminal.cpp": "3092ee2ea44ca0f897a7d3b6244c079ba8073dc109993204e435f065388a2ed1", + "CMakeLists.txt": "f5bb85e12b7a815c4feb7417da9ebc5298de58664bcd2792b277cb282729da73", + "build/candidate/bin/Release/candidate_reply_close_test.exe": "662a331701e49885ce56328ae19ddc2166347c5f802d7faa2787eef46e25b000", + "build/candidate/bin/Release/termforge_shell.exe": "9c01fa0577d8fc922d239d8a711ac13d1e4989104aad68795230bfcd998b4eb6" + }, + "result": "two actual owned processes; query observed after input stop; received65B; rejected0; Job0 and desktop deletion" + }, + "log_sha256": "d3e40250906444017e55fc7dc62fa00c7280131f83a521c300547349140a97af", + "observations": [ + { + "query_consumed_after_close": true, + "consumed_bytes": 65, + "input_stopping": true, + "input_rejected": 0 + }, + { + "query_consumed_after_close": true, + "consumed_bytes": 65, + "input_stopping": true, + "input_rejected": 0 + }, + { + "closing_reply": "passed", + "owned_job_zero": true, + "desktop_deleted": true + } + ], + "passed": true + } + ] +} diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/headless-ordinary.json b/experiments/shell/results/2026-10-26-replay-cost-and-close/headless-ordinary.json new file mode 100644 index 00000000..e3db1b60 --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/headless-ordinary.json @@ -0,0 +1,376 @@ +{ + "plan": { + "schema": "local-candidate-phase-probe-v1", + "source_commit": "8ff112e785073dde91a74142cf1a3000fa240007", + "files": { + "experiments\\core\\candidate_terminal.cpp": "0d0eaabe5ef896aa7b263c8151622f579f37c421bf9473fc3d69ada010a64e61", + "local\\r53-cost-probe\\instrumented.cpp": "753b5b1c5a9fb1585401dee36fba0722be78038ef6967c713ca61e4334997d12", + "local\\r53-cost-probe\\phase_probe.cpp": "3a39b8b01e97f6ae245a1cb0bd0fc05f8a6cab6e14a5584d6b8b98fdc942ba63", + "local\\r53-cost-probe\\probe_timing.hpp": "a114631fbb6777808a791a3e75c665a0f3b92e1103c2ed91a4e1fb46daed2579", + "local\\r53-cost-probe\\CMakeLists.txt": "a6d0346bdde98988d07f2b594b7ef79f6de9bf1570be0cba573913f9cbb83a6a", + "local\\r53-cost-probe\\f1.bin": "c0d35b68ed7d8147bfa42eb9ea7e8a64ddafef8a786b1b1f42b0b85f179057a4", + "experiments\\candidates\\alacritty\\target\\release\\termforge_alacritty_core.lib": "aa41a9ea5749f3933a0db8bfa41dda68812c68727d47d394fc3edd859973a260" + }, + "workload": { + "role": "F1 producer bytes; no ConPTY transformation", + "bytes": 2048000, + "rows": 17, + "columns": 74, + "history": 100, + "chunk": 8192 + }, + "order": [ + "plain", + "instrumented", + "instrumented", + "plain", + "plain", + "instrumented" + ], + "limitations": [ + "headless, no transport or GUI", + "shared host", + "timers perturb execution", + "diagnostic only, not R54 formal sample or performance budget" + ] + }, + "os": "Windows-11-10.0.26200-SP0", + "logical_cpus": 8, + "power_plan": "电源方案 GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (高性能)", + "binaries": { + "plain": "be21af65b5017a9277092747843f894321a6b82621a25d0766377258cffb706a", + "instrumented": "0c27682bac6a51ed874d2d3b23f0b4d13de513c2ff0cf8e00f6bb3bd09698680" + }, + "run_script": "b19a723a976751a656a68ce24e1f428e67eb21a76a8fc24b1226bb46d246195a", + "utc_start": "2026-10-26T15:13:52Z", + "samples": [ + { + "mode": "plain", + "returncode": 0, + "outer_seconds": 0.5309999999590218, + "background_cpu_before_percent": 30.0, + "result": { + "bytes": 2048000, + "cpu_ns": 453125000, + "wall_ns": 486336100, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 1, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 2, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 3, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 4, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 5, + "ns": 0, + "max_ns": 0, + "count": 0 + } + ] + }, + "state_sha256": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0" + }, + { + "mode": "instrumented", + "returncode": 0, + "outer_seconds": 0.4690000000409782, + "background_cpu_before_percent": 34.1, + "result": { + "bytes": 2048000, + "cpu_ns": 437500000, + "wall_ns": 430316800, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 70976000, + "max_ns": 655500, + "count": 250 + }, + { + "id": 1, + "ns": 534800, + "max_ns": 26400, + "count": 250 + }, + { + "id": 2, + "ns": 358655700, + "max_ns": 2857500, + "count": 250 + }, + { + "id": 3, + "ns": 33800, + "max_ns": 1400, + "count": 250 + }, + { + "id": 4, + "ns": 295519000, + "max_ns": 2096700, + "count": 250 + }, + { + "id": 5, + "ns": 35803000, + "max_ns": 881800, + "count": 250 + } + ] + }, + "state_sha256": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0" + }, + { + "mode": "instrumented", + "returncode": 0, + "outer_seconds": 0.4839999999385327, + "background_cpu_before_percent": 15.6, + "result": { + "bytes": 2048000, + "cpu_ns": 437500000, + "wall_ns": 448960700, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 72738000, + "max_ns": 724000, + "count": 250 + }, + { + "id": 1, + "ns": 460500, + "max_ns": 12300, + "count": 250 + }, + { + "id": 2, + "ns": 375608200, + "max_ns": 2725500, + "count": 250 + }, + { + "id": 3, + "ns": 27600, + "max_ns": 1300, + "count": 250 + }, + { + "id": 4, + "ns": 312636300, + "max_ns": 1923500, + "count": 250 + }, + { + "id": 5, + "ns": 35133200, + "max_ns": 586600, + "count": 250 + } + ] + }, + "state_sha256": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0" + }, + { + "mode": "plain", + "returncode": 0, + "outer_seconds": 0.4839999999385327, + "background_cpu_before_percent": 28.7, + "result": { + "bytes": 2048000, + "cpu_ns": 421875000, + "wall_ns": 446410900, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 1, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 2, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 3, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 4, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 5, + "ns": 0, + "max_ns": 0, + "count": 0 + } + ] + }, + "state_sha256": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0" + }, + { + "mode": "plain", + "returncode": 0, + "outer_seconds": 0.5160000000614673, + "background_cpu_before_percent": 33.8, + "result": { + "bytes": 2048000, + "cpu_ns": 468750000, + "wall_ns": 478586600, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 1, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 2, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 3, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 4, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 5, + "ns": 0, + "max_ns": 0, + "count": 0 + } + ] + }, + "state_sha256": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0" + }, + { + "mode": "instrumented", + "returncode": 0, + "outer_seconds": 0.546000000089407, + "background_cpu_before_percent": 25.6, + "result": { + "bytes": 2048000, + "cpu_ns": 500000000, + "wall_ns": 496894700, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 80278700, + "max_ns": 1027000, + "count": 250 + }, + { + "id": 1, + "ns": 810600, + "max_ns": 103900, + "count": 250 + }, + { + "id": 2, + "ns": 414892000, + "max_ns": 6602700, + "count": 250 + }, + { + "id": 3, + "ns": 66400, + "max_ns": 6800, + "count": 250 + }, + { + "id": 4, + "ns": 325008500, + "max_ns": 5494600, + "count": 250 + }, + { + "id": 5, + "ns": 51881600, + "max_ns": 1497400, + "count": 250 + } + ] + }, + "state_sha256": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0" + } + ], + "local_raw_identity_sha256": "5fd91a263fb64c2487882aa1c98f35970fbff4eaa97c763c301595f02d81a52a", + "local_raw_files_sha256": { + "00-plain.state.json": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0", + "00-plain.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "00-plain.stdout": "00cc5fd93c82252f6968a348206e7c910ad7265160f1ae515857e9b47f94a3a9", + "01-instrumented.state.json": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0", + "01-instrumented.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "01-instrumented.stdout": "46b812a26f02455cfad72e5253fc1af4436909af5a8880b6e5483da6113aef2a", + "02-instrumented.state.json": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0", + "02-instrumented.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "02-instrumented.stdout": "f2d05c9fa772228c7900a288589d4a3a8ac9a2909595b972e3ca8cb0eec18cdb", + "03-plain.state.json": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0", + "03-plain.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "03-plain.stdout": "a3fe321b8bab4643b8530adf767adb6346a0e17af78ed892cfe0cd1b01d4e2ac", + "04-plain.state.json": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0", + "04-plain.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "04-plain.stdout": "28b8830d041869aa2b13826d5da2a0877a87b9216db31281960de97c712ea33d", + "05-instrumented.state.json": "ecfa1c1b31203793cd40d0d2977910e6fef4df1c9f33ba8d7f65a8eee4364dc0", + "05-instrumented.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "05-instrumented.stdout": "e20225b03b1c861180d2ce4620e1265b97eae88469bc9d39c5715ef0b12540ce", + "identity.json": "5fd91a263fb64c2487882aa1c98f35970fbff4eaa97c763c301595f02d81a52a" + } +} diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/headless-resize.json b/experiments/shell/results/2026-10-26-replay-cost-and-close/headless-resize.json new file mode 100644 index 00000000..bfc3ec00 --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/headless-resize.json @@ -0,0 +1,398 @@ +{ + "plan": { + "source_commit": "8ff112e785073dde91a74142cf1a3000fa240007", + "hypothesis": "same-size resize activates replay-origin reconciliation for subsequent ordinary output", + "files": { + "CMakeLists.txt": "fda1598de7e5f379dad96f66cd8a3f7eeaba3f67419a47604debaa523c2fb559", + "f1.bin": "e2639311e8fd54ea2632d4e35efa590d467284b0c3f25ba85875ef0312107580", + "instrumented.cpp": "753b5b1c5a9fb1585401dee36fba0722be78038ef6967c713ca61e4334997d12", + "original.cpp": "0d0eaabe5ef896aa7b263c8151622f579f37c421bf9473fc3d69ada010a64e61", + "phase_probe.cpp": "3e9b7260814772630bb2c32aae56fe3ff293cf46a0320c25146ed1ee59ef5980", + "probe_timing.hpp": "a114631fbb6777808a791a3e75c665a0f3b92e1103c2ed91a4e1fb46daed2579" + }, + "order": [ + [ + "plain", + "plain" + ], + [ + "plain", + "resize" + ], + [ + "instrumented", + "resize" + ], + [ + "instrumented", + "plain" + ], + [ + "plain", + "resize" + ], + [ + "plain", + "plain" + ] + ], + "workload": { + "bytes": 204800, + "records": 3200, + "rows": 17, + "columns": 74, + "history": 100, + "chunk": 8192 + }, + "limitations": [ + "shared host", + "headless diagnostic", + "not R54 formal samples or user budget" + ] + }, + "os": "Windows-11-10.0.26200-SP0", + "logical_cpus": 8, + "power_plan": "电源方案 GUID: 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c (高性能)", + "binaries": { + "plain": "e007dae8618944dde2c9c57e05796be9e6f4d68052badfa2690e248dd7d4e90e", + "instrumented": "9b0d14a30f0ae2fdfe649e0e89e9d5ebeb78b6b30291ea7eb7efda374e270a03" + }, + "run_script": "96d11bbf8c6a58859f10673db46bd091df18459f099e99adab48f9b550c48f73", + "utc_start": "2026-10-26T15:26:14Z", + "samples": [ + { + "mode": "plain", + "context": "plain", + "returncode": 0, + "outer_seconds": 0.06199999991804361, + "background_cpu_before_percent": 39.3, + "result": { + "bytes": 204800, + "cpu_ns": 46875000, + "wall_ns": 46402100, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 1, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 2, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 3, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 4, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 5, + "ns": 0, + "max_ns": 0, + "count": 0 + } + ] + }, + "state_sha256": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e" + }, + { + "mode": "plain", + "context": "resize", + "returncode": 0, + "outer_seconds": 0.9529999999795109, + "background_cpu_before_percent": 29.7, + "result": { + "bytes": 204800, + "cpu_ns": 921875000, + "wall_ns": 929186300, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 1, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 2, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 3, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 4, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 5, + "ns": 0, + "max_ns": 0, + "count": 0 + } + ] + }, + "state_sha256": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e" + }, + { + "mode": "instrumented", + "context": "resize", + "returncode": 0, + "outer_seconds": 0.9529999999795109, + "background_cpu_before_percent": 17.5, + "result": { + "bytes": 204800, + "cpu_ns": 921875000, + "wall_ns": 931817400, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 7996700, + "max_ns": 824700, + "count": 25 + }, + { + "id": 1, + "ns": 104500, + "max_ns": 26100, + "count": 25 + }, + { + "id": 2, + "ns": 923683900, + "max_ns": 38156500, + "count": 25 + }, + { + "id": 3, + "ns": 9200, + "max_ns": 1100, + "count": 25 + }, + { + "id": 4, + "ns": 28528000, + "max_ns": 1404800, + "count": 25 + }, + { + "id": 5, + "ns": 891658400, + "max_ns": 36740200, + "count": 25 + } + ] + }, + "state_sha256": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e" + }, + { + "mode": "instrumented", + "context": "plain", + "returncode": 0, + "outer_seconds": 0.0940000000409782, + "background_cpu_before_percent": 31.4, + "result": { + "bytes": 204800, + "cpu_ns": 62500000, + "wall_ns": 60924400, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 10826000, + "max_ns": 1149300, + "count": 25 + }, + { + "id": 1, + "ns": 119100, + "max_ns": 20200, + "count": 25 + }, + { + "id": 2, + "ns": 49945500, + "max_ns": 3270500, + "count": 25 + }, + { + "id": 3, + "ns": 8900, + "max_ns": 2700, + "count": 25 + }, + { + "id": 4, + "ns": 37565700, + "max_ns": 2179600, + "count": 25 + }, + { + "id": 5, + "ns": 7396500, + "max_ns": 886500, + "count": 25 + } + ] + }, + "state_sha256": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e" + }, + { + "mode": "plain", + "context": "resize", + "returncode": 0, + "outer_seconds": 1.0, + "background_cpu_before_percent": 39.5, + "result": { + "bytes": 204800, + "cpu_ns": 953125000, + "wall_ns": 968977700, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 1, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 2, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 3, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 4, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 5, + "ns": 0, + "max_ns": 0, + "count": 0 + } + ] + }, + "state_sha256": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e" + }, + { + "mode": "plain", + "context": "plain", + "returncode": 0, + "outer_seconds": 0.06199999991804361, + "background_cpu_before_percent": 30.6, + "result": { + "bytes": 204800, + "cpu_ns": 46875000, + "wall_ns": 44071200, + "valid": true, + "phases": [ + { + "id": 0, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 1, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 2, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 3, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 4, + "ns": 0, + "max_ns": 0, + "count": 0 + }, + { + "id": 5, + "ns": 0, + "max_ns": 0, + "count": 0 + } + ] + }, + "state_sha256": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e" + } + ], + "local_raw_identity_sha256": "f4b084750d02bc8ca2c7b9a9c736c5c4b6fd727b2b514e63093b9bdfd3736b8d", + "local_raw_files_sha256": { + "00-plain-plain.state.json": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e", + "00-plain-plain.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "00-plain-plain.stdout": "ac3258615fda6a3a7e5e900f9ebe62c83b85dfb3e3fe662fd62229b0cd1fd854", + "01-plain-resize.state.json": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e", + "01-plain-resize.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "01-plain-resize.stdout": "4223388fbc400eb96eccbe2863f2f8f5e43c9326d81ecb8610f3a019dbe5ce65", + "02-instrumented-resize.state.json": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e", + "02-instrumented-resize.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "02-instrumented-resize.stdout": "3a59d598755257174e624d9e265df19cfeaf791942029161a4a969f8dfaa4b50", + "03-instrumented-plain.state.json": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e", + "03-instrumented-plain.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "03-instrumented-plain.stdout": "40f4e11781aae3fbfea6d9854df4816aa9beacb8a2b819b7842f454a5ed022e8", + "04-plain-resize.state.json": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e", + "04-plain-resize.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "04-plain-resize.stdout": "845a7ddb7e0b9e8680c07b9f7f987d8b7af30457f992ceda73829dedfc90b4e9", + "05-plain-plain.state.json": "aa05cafdeb1bf5737e553ef5c01669a8b30e9aef5b4e8eac3c73597ee005b19e", + "05-plain-plain.stderr": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "05-plain-plain.stdout": "51761f7531d0d0e2a36b04c56a61fddd5cd9ddbb023544fd8e474ef31c5749f2", + "identity.json": "f4b084750d02bc8ca2c7b9a9c736c5c4b6fd727b2b514e63093b9bdfd3736b8d" + } +} diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/intermediate-workflows.json b/experiments/shell/results/2026-10-26-replay-cost-and-close/intermediate-workflows.json new file mode 100644 index 00000000..4f2d8610 --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/intermediate-workflows.json @@ -0,0 +1,716 @@ +{ + "runs": [ + { + "run": "run-868918e65b584884877b410fa6c48805", + "sample": { + "mode": "ui-workflow-sessions", + "status": "failed", + "timed_out": false, + "exit_code": 2, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "resources": { + "summary": "resource-summary.json", + "scope": "launcher-tree", + "performance_gate": "not_evaluated" + }, + "error_kind": "ProbeFailure" + }, + "data_only": true, + "system_clipboard": false, + "ime": false, + "checkpoints": [ + { + "phase": "eight-ready", + "elapsed_ms": 572, + "cycle": 0 + }, + { + "phase": "reject-ninth", + "elapsed_ms": 576, + "cycle": 0 + }, + { + "phase": "load-started", + "elapsed_ms": 766, + "cycle": 0 + }, + { + "phase": "reading-before-append", + "elapsed_ms": 798, + "cycle": 0 + }, + { + "phase": "reading-after-append", + "elapsed_ms": 944, + "cycle": 0 + }, + { + "phase": "search-running", + "elapsed_ms": 1105, + "cycle": 0 + }, + { + "phase": "find-complete", + "elapsed_ms": 6944, + "cycle": 0 + }, + { + "phase": "foreground-input", + "elapsed_ms": 7093, + "cycle": 0 + }, + { + "phase": "zoom-75", + "elapsed_ms": 7222, + "cycle": 0 + }, + { + "phase": "switch-zoom", + "elapsed_ms": 7377, + "cycle": 0 + }, + { + "phase": "history-evicted", + "elapsed_ms": 7660, + "cycle": 0 + }, + { + "phase": "paste-cancel-pending", + "elapsed_ms": 8297, + "cycle": 0 + }, + { + "phase": "paste-cancelled", + "elapsed_ms": 8728, + "cycle": 0 + }, + { + "phase": "background-complete", + "elapsed_ms": 27467, + "cycle": 0 + }, + { + "phase": "cycle-six", + "elapsed_ms": 27779, + "cycle": 1 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 29048, + "cycle": 1 + }, + { + "phase": "cycle-six", + "elapsed_ms": 29328, + "cycle": 2 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 30633, + "cycle": 2 + }, + { + "phase": "cycle-six", + "elapsed_ms": 30925, + "cycle": 3 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 32255, + "cycle": 3 + }, + { + "phase": "cycle-six", + "elapsed_ms": 32580, + "cycle": 4 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 33843, + "cycle": 4 + }, + { + "phase": "cycle-six", + "elapsed_ms": 34162, + "cycle": 5 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 35424, + "cycle": 5 + }, + { + "phase": "paste-close-pending", + "elapsed_ms": 35756, + "cycle": 5 + }, + { + "phase": "after-paste-close", + "elapsed_ms": 35974, + "cycle": 5 + } + ], + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ], + "raw_sha256": { + "cancel.bin": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "close.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "close.bin.before.json": "42d48c9b60c19059b0fd753b871521787ece886f5976aef804fe05baa7db1584", + "frame.bmp": "4443a91feb73693650c2a6f8ac4feb91fa9fe3fee9e1340086892c2257db1990", + "resource-observations.jsonl": "dd709b8cd12e332610082a7ae44c1dcbbe486e9451a7a21b7b899639c83453a0", + "resource-phases.jsonl": "f6dc0847c07730eafd232b117c375628a3d746285700805245570f087c926b05", + "resource-summary.json": "75f03192836a8f1b0dd3f7789b618a6305025bb4f6b11ff98efc3fac12aef32a", + "sample.json": "170f4625886507719d22cbcc1d05e3e72df3c1d53f9c54b6dba7697cc9b09cfa", + "sample.public.json": "63735633ab5fcace05f2deb18b21a39d9df834cc9534f6f9ad16a1e3385dfcf9", + "sessions.json": "ba4522ff74c1942f45da7fd2729a8ba0e631c9783d3d01292a1c8bf3cae528cc", + "validation.json": "a01ca51810fd51c4fee9947b3a43422dede0cba5e6ae6a9a72a0fef8a10bc5b0", + "workspace.layout": "9a96d62943f54727e7c50ce5785a571efbfa6cbece6248f6a6d144257c1e1d58" + }, + "observed_failure": "terminal reply rejected by input queue", + "source": "06bf6b5cf4c5f7457cbb02355aa4971276c2b581" + }, + { + "run": "run-39a01aa2558747c3b71d531c66e234e8", + "sample": { + "mode": "ui-workflow-sessions", + "status": "passed", + "timed_out": false, + "exit_code": 0, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "result": { + "valid": true, + "mode": "ui-workflow-sessions", + "sessions_closed": 18, + "active_children_after": 0, + "presented_done": null + }, + "frame_sha256": "68fb528174c7f7edf2916ca1b6f1f7d2a6b80deeb4cec787539fb051bb344ee5", + "sessions_workflow": { + "schema": "termforge-workflow-sessions-identity-validation-v1", + "live_sessions": 8, + "checkpoints": 26, + "rejected_ninth": true, + "load_foreground_verified": true, + "data_workflow_verified": true, + "complete_workflow_verified": false, + "system_clipboard_verified": false, + "ime_verified": false + }, + "resources": { + "summary": "resource-summary.json", + "scope": "launcher-tree", + "performance_gate": "not_evaluated" + }, + "error_kind": null + }, + "data_only": true, + "system_clipboard": false, + "ime": false, + "checkpoints": [ + { + "phase": "eight-ready", + "elapsed_ms": 570, + "cycle": 0 + }, + { + "phase": "reject-ninth", + "elapsed_ms": 573, + "cycle": 0 + }, + { + "phase": "load-started", + "elapsed_ms": 727, + "cycle": 0 + }, + { + "phase": "reading-before-append", + "elapsed_ms": 747, + "cycle": 0 + }, + { + "phase": "reading-after-append", + "elapsed_ms": 867, + "cycle": 0 + }, + { + "phase": "search-running", + "elapsed_ms": 1011, + "cycle": 0 + }, + { + "phase": "find-complete", + "elapsed_ms": 6314, + "cycle": 0 + }, + { + "phase": "foreground-input", + "elapsed_ms": 6454, + "cycle": 0 + }, + { + "phase": "zoom-75", + "elapsed_ms": 6591, + "cycle": 0 + }, + { + "phase": "switch-zoom", + "elapsed_ms": 6751, + "cycle": 0 + }, + { + "phase": "history-evicted", + "elapsed_ms": 7000, + "cycle": 0 + }, + { + "phase": "paste-cancel-pending", + "elapsed_ms": 7606, + "cycle": 0 + }, + { + "phase": "paste-cancelled", + "elapsed_ms": 7990, + "cycle": 0 + }, + { + "phase": "background-complete", + "elapsed_ms": 26131, + "cycle": 0 + }, + { + "phase": "cycle-six", + "elapsed_ms": 26437, + "cycle": 1 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 27720, + "cycle": 1 + }, + { + "phase": "cycle-six", + "elapsed_ms": 28020, + "cycle": 2 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 29254, + "cycle": 2 + }, + { + "phase": "cycle-six", + "elapsed_ms": 29556, + "cycle": 3 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 30810, + "cycle": 3 + }, + { + "phase": "cycle-six", + "elapsed_ms": 31122, + "cycle": 4 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 32383, + "cycle": 4 + }, + { + "phase": "cycle-six", + "elapsed_ms": 32669, + "cycle": 5 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 33961, + "cycle": 5 + }, + { + "phase": "paste-close-pending", + "elapsed_ms": 34293, + "cycle": 5 + }, + { + "phase": "after-paste-close", + "elapsed_ms": 34504, + "cycle": 5 + } + ], + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ], + "raw_sha256": { + "cancel.bin": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "close.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "close.bin.before.json": "42d48c9b60c19059b0fd753b871521787ece886f5976aef804fe05baa7db1584", + "frame.bmp": "68fb528174c7f7edf2916ca1b6f1f7d2a6b80deeb4cec787539fb051bb344ee5", + "resource-observations.jsonl": "86c5915c71b43c3724b5c083401c481d2fc644d7b92c7c7b71c6fac3b7eb8c1c", + "resource-phases.jsonl": "2c438eed39c5948baaebb03893ea1791c28c563f6f08555dff9da7c4007edb2e", + "resource-summary.json": "a1af28883ff9efa10a0ac32af7a649047a886161d7fbf9a24d8ee286e32b75ed", + "sample.json": "6e4100ef925345920031c7885393ffea19621c138ba4a7c990fd8f4d01592195", + "sample.public.json": "9507843aee6d9088fd93fb35fb925f64d9b854f0d0c307dc5bc6676422ff7604", + "sessions.json": "8daad6179ab2acbbc4800f02e8d1377bb925c477028ce999bbb4ef47efcda590", + "validation.json": "e2d23746c84fed9ac9dcddb248fabee42cd8f8bfe13bfe2cf9ff6cd87f15acd5", + "workspace.layout": "9a96d62943f54727e7c50ce5785a571efbfa6cbece6248f6a6d144257c1e1d58" + }, + "source": "06bf6b5 plus bounded reply-state diagnostics" + }, + { + "run": "run-942f5c4bfd9d4922a23481675ad17e7d", + "sample": { + "mode": "ui-workflow-sessions", + "status": "failed", + "timed_out": false, + "exit_code": 2, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "resources": { + "summary": "resource-summary.json", + "scope": "launcher-tree", + "performance_gate": "not_evaluated" + }, + "error_kind": "ProbeFailure" + }, + "data_only": true, + "system_clipboard": false, + "ime": false, + "checkpoints": [ + { + "phase": "eight-ready", + "elapsed_ms": 533, + "cycle": 0 + }, + { + "phase": "reject-ninth", + "elapsed_ms": 536, + "cycle": 0 + }, + { + "phase": "load-started", + "elapsed_ms": 685, + "cycle": 0 + }, + { + "phase": "reading-before-append", + "elapsed_ms": 704, + "cycle": 0 + }, + { + "phase": "reading-after-append", + "elapsed_ms": 825, + "cycle": 0 + }, + { + "phase": "search-running", + "elapsed_ms": 966, + "cycle": 0 + }, + { + "phase": "find-complete", + "elapsed_ms": 6316, + "cycle": 0 + }, + { + "phase": "foreground-input", + "elapsed_ms": 6441, + "cycle": 0 + }, + { + "phase": "zoom-75", + "elapsed_ms": 6575, + "cycle": 0 + }, + { + "phase": "switch-zoom", + "elapsed_ms": 6738, + "cycle": 0 + }, + { + "phase": "history-evicted", + "elapsed_ms": 6984, + "cycle": 0 + }, + { + "phase": "paste-cancel-pending", + "elapsed_ms": 7647, + "cycle": 0 + }, + { + "phase": "paste-cancelled", + "elapsed_ms": 8011, + "cycle": 0 + }, + { + "phase": "background-complete", + "elapsed_ms": 26248, + "cycle": 0 + }, + { + "phase": "cycle-six", + "elapsed_ms": 26542, + "cycle": 1 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 27794, + "cycle": 1 + }, + { + "phase": "cycle-six", + "elapsed_ms": 28111, + "cycle": 2 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 29384, + "cycle": 2 + }, + { + "phase": "cycle-six", + "elapsed_ms": 29719, + "cycle": 3 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 30983, + "cycle": 3 + }, + { + "phase": "cycle-six", + "elapsed_ms": 31270, + "cycle": 4 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 32527, + "cycle": 4 + }, + { + "phase": "cycle-six", + "elapsed_ms": 32839, + "cycle": 5 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 34055, + "cycle": 5 + }, + { + "phase": "paste-close-pending", + "elapsed_ms": 34351, + "cycle": 5 + }, + { + "phase": "after-paste-close", + "elapsed_ms": 34568, + "cycle": 5 + } + ], + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ], + "raw_sha256": { + "cancel.bin": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "close.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "close.bin.before.json": "42d48c9b60c19059b0fd753b871521787ece886f5976aef804fe05baa7db1584", + "frame.bmp": "4443a91feb73693650c2a6f8ac4feb91fa9fe3fee9e1340086892c2257db1990", + "resource-observations.jsonl": "97e19f4c8fe8de708740e1d2cce01f8117b531ba7c231a4552a3091a5668adbf", + "resource-phases.jsonl": "100f32a411ed3930e70630d411c7c354019366470eb4d5bbce3e7ba5431b76ce", + "resource-summary.json": "2feb2d4c8ecfc99d7a82b9b0f4213df47396d9b6dab29d5604c15ea146df1d26", + "sample.json": "7edc081e4c8dc9e22ee08dc40dfdf90f99062c82ccd234f2c9ccfa8c2eb6177f", + "sample.public.json": "63735633ab5fcace05f2deb18b21a39d9df834cc9534f6f9ad16a1e3385dfcf9", + "sessions.json": "6afe299c8fbb4014d8c2875ed824bbcd8bb5f8076e42115dea3f204d4c74336e", + "validation.json": "6e9c0fe26639b5dae2ee347a9f2b972e89b4402568e9ef60c76881c9051dbc9d", + "workspace.layout": "9a96d62943f54727e7c50ce5785a571efbfa6cbece6248f6a6d144257c1e1d58" + }, + "observed_failure": "terminal reply rejected by input queue; session=3 closing=1 stopping=1 queued=0 failed=0 paste_busy=0 reply_hex=1b5b343b3452", + "source": "06bf6b5 plus bounded reply-state diagnostics" + } + ], + "reply_diagnostic_identity": { + "original_sha256": "b369968152bbff107c699181d4e23f271e62a5732f0c41793159b3efc3609321", + "diagnostic_sha256": "bcae8cd6c012fe3cf8b0e8ca5219c5136210dd6cd1e4940a9562d1eb73b59156" + } +} diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/README.md b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/README.md new file mode 100644 index 00000000..f9722477 --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/README.md @@ -0,0 +1,12 @@ +# 成本诊断的固定计时边界 + +本目录归档 `8ff112e785073dde91a74142cf1a3000fa240007` 上实际使用的诊断源与插桩差异,不参与产品或 CI 构建。原始 EXE、屏幕、运输记录留在本地;脱敏后的全部样本、原始文件哈希及构建身份见上级 JSON。 + +- `ordinary_probe.cpp` 和 `resize_probe.cpp` 是实际 headless 驱动,分别消费 2,048,000B 和 204,800B;最终状态按独立的逐行字面值、历史长度、淘汰数及光标验证。 +- 合成输入每行由 `f'TF_R108_F1_{row:05d} 中文 e\u0301'.encode('utf-8').ljust(62, b'.') + b'\r\n'` 生成;分别连接 32,000 / 3,200 行。其字节哈希、17×74、history100、chunk8192 与完整样本次序已记录。 +- headless 构建将驱动与固定源码的 `experiments/core/candidate_terminal.cpp`(或应用 `headless-instrumentation.patch` 的副本)链接到同一固定 `.4` Rust Release 库;MSVC `/W4 /utf-8`、C++17,链接 `ws2_32 userenv ntdll`。构造和可选同尺寸 resize 在计时前,循环 feed 计时,finish 和正确性校验在计时后。每个样本是新的进程。 +- headless phases 0–5 依次是 Rust feed、scan_replay、synchronize、event drain、cell export、reconcile 及后续同步收尾。phase5 包含后续工作,不能直接称为纯 reconcile。UI 第二次插桩才把 reconcile、history merge 和 versions/copy 分开。 +- UI 第一批使用 `ui-instrumentation.patch` 的 phases0–9;第二批再使用 `ui-core-instrumentation.patch` 增加 phases10–16。`ui_timing.hpp` 为最终17槽版本;第一批仅10槽。UI 计时由主线程累计,析构写到 `TERMFORGE_DIAGNOSTIC_PHASE_OUT`;原场景仍由自有 Job/desktop 与原期限监督。 +- UI patch 的 include 位置已从本机绝对路径改成仓库相对标识,移植时需令其可由 include 搜索路径解析;各 patch 已规范化换行和行末空白。这些是归档差异,不是当前分支的可直接应用补丁。JSON 中源码与 EXE 哈希对应实际运行的本地版本。 + +嵌套 wall time 不相加。采样很短,宿主有其他负载,插桩有扰动;这些是定位原因的诊断,不是 #54 的正式 A/B、性能预算或实际呈现验收。修复后回归使用未插桩的产品代码。 diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/headless-instrumentation.patch b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/headless-instrumentation.patch new file mode 100644 index 00000000..ed03091a --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/headless-instrumentation.patch @@ -0,0 +1,41 @@ +--- candidate_terminal.cpp ++++ instrumented.cpp +@@ -1,3 +1,4 @@ ++#include "probe_timing.hpp" + #include "candidate_terminal.hpp" + #include "../candidates/alacritty/include/termforge_candidate.h" + #include +@@ -224,10 +225,12 @@ + + void CandidateTerminal::feed(std::string_view bytes) { + std::array error{}; +- check(tf_terminal_feed(impl_, reinterpret_cast(bytes.data()), bytes.size(), +- error.data(), error.size()), "candidate feed failed"); +- scan_replay(bytes); +- synchronize(); ++ { ProbeTimer timer(0); ++ check(tf_terminal_feed(impl_, reinterpret_cast(bytes.data()), bytes.size(), ++ error.data(), error.size()), "candidate feed failed"); } ++ { ProbeTimer timer(1); scan_replay(bytes); } ++ { ProbeTimer timer(2); synchronize(); } ++ ProbeTimer event_timer(3); + uint32_t kind = 0; + for (;;) { + size_t needed = 0; +@@ -295,6 +298,7 @@ + std::vector retained(meta.history + meta.rows); + std::vector raw_ids; + raw_ids.reserve(retained.size()); ++ { ProbeTimer export_timer(4); + for (size_t r = 0; r < retained.size(); ++r) { + TfRowMeta row{}; + check(tf_terminal_row_meta(impl_, r, &row), "candidate row metadata failed"); +@@ -313,6 +317,8 @@ + } + retained[r] = std::move(line); + } ++ } ++ ProbeTimer reconcile_timer(5); + const auto preserved = reconcile_replay(retained); + if (replay_show_) preserve_history_ = true; + if (preserve_history_ && !replay_origin_ && meta.history == 0 && meta.discarded == screen.discarded) diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ordinary_probe.cpp b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ordinary_probe.cpp new file mode 100644 index 00000000..7980cfd9 --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ordinary_probe.cpp @@ -0,0 +1,53 @@ +#define NOMINMAX +#include +#include "candidate_terminal.hpp" +#include "text_projection.hpp" +#include "probe_timing.hpp" +#include +#include +#include +#include +#include + +uint64_t cpu_ns() { + FILETIME created{}, exited{}, kernel{}, user{}; + if (!GetProcessTimes(GetCurrentProcess(), &created, &exited, &kernel, &user)) + throw std::runtime_error("GetProcessTimes failed"); + const auto value = [](const FILETIME& ft) { return (uint64_t(ft.dwHighDateTime)<<32) | ft.dwLowDateTime; }; + return (value(kernel)+value(user))*100; +} +int main(int argc, char** argv) { + try { + if(argc!=3) throw std::runtime_error("usage: phase_probe input.bin state.json"); + std::ifstream input(argv[1], std::ios::binary); + if(!input) throw std::runtime_error("input missing"); + const std::string bytes((std::istreambuf_iterator(input)), {}); + if(bytes.size()!=2048000) throw std::runtime_error("unexpected workload"); + termforge::CandidateTerminal terminal(17,74,100); + probe_ns.fill(0); probe_count.fill(0); probe_max.fill(0); + const auto cpu_start=cpu_ns(); const auto start=ProbeTimer::Clock::now(); + for(size_t i=0;i(ProbeTimer::Clock::now()-start).count(); + const auto cpu_elapsed=cpu_ns()-cpu_start; + terminal.finish(); + const auto& screen=terminal.screen; + if(screen.row!=16 || screen.column!=0 || screen.history.size()!=100 || screen.retained_size()!=117 || screen.discarded!=31884) + throw std::runtime_error("final cursor/history mismatch"); + for(size_t r=0;r<116;++r) { + std::ostringstream expected; + expected<<"TF_R108_F1_"< +#include +#include +inline std::array probe_ns{}, probe_max{}, probe_count{}; +struct ProbeTimer { + using Clock = std::chrono::steady_clock; + size_t phase; + Clock::time_point start = Clock::now(); + explicit ProbeTimer(size_t value) : phase(value) {} + ~ProbeTimer() { + const auto elapsed = static_cast(std::chrono::duration_cast(Clock::now()-start).count()); + probe_ns[phase] += elapsed; ++probe_count[phase]; + if (elapsed > probe_max[phase]) probe_max[phase] = elapsed; + } +}; diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/resize_probe.cpp b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/resize_probe.cpp new file mode 100644 index 00000000..68fbf318 --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/resize_probe.cpp @@ -0,0 +1,54 @@ +#define NOMINMAX +#include +#include "candidate_terminal.hpp" +#include "text_projection.hpp" +#include "probe_timing.hpp" +#include +#include +#include +#include +#include + +uint64_t cpu_ns() { + FILETIME created{}, exited{}, kernel{}, user{}; + if (!GetProcessTimes(GetCurrentProcess(), &created, &exited, &kernel, &user)) + throw std::runtime_error("GetProcessTimes failed"); + const auto value = [](const FILETIME& ft) { return (uint64_t(ft.dwHighDateTime)<<32) | ft.dwLowDateTime; }; + return (value(kernel)+value(user))*100; +} +int main(int argc, char** argv) { + try { + if(argc!=4) throw std::runtime_error("usage: phase_probe input.bin state.json resize|plain"); + std::ifstream input(argv[1], std::ios::binary); + if(!input) throw std::runtime_error("input missing"); + const std::string bytes((std::istreambuf_iterator(input)), {}); + if(bytes.size()!=204800) throw std::runtime_error("unexpected workload"); + termforge::CandidateTerminal terminal(17,74,100); + if(std::string(argv[3])=="resize") terminal.resize(17,74); + probe_ns.fill(0); probe_count.fill(0); probe_max.fill(0); + const auto cpu_start=cpu_ns(); const auto start=ProbeTimer::Clock::now(); + for(size_t i=0;i(ProbeTimer::Clock::now()-start).count(); + const auto cpu_elapsed=cpu_ns()-cpu_start; + terminal.finish(); + const auto& screen=terminal.screen; + if(screen.row!=16 || screen.column!=0 || screen.history.size()!=100 || screen.retained_size()!=117 || screen.discarded!=3084) + throw std::runtime_error("final cursor/history mismatch"); + for(size_t r=0;r<116;++r) { + std::ostringstream expected; + expected<<"TF_R108_F1_"< +@@ -224,10 +225,11 @@ + + void CandidateTerminal::feed(std::string_view bytes) { + std::array error{}; +- check(tf_terminal_feed(impl_, reinterpret_cast(bytes.data()), bytes.size(), +- error.data(), error.size()), "candidate feed failed"); +- scan_replay(bytes); +- synchronize(); ++ { UiPhase phase_core(10); ++ check(tf_terminal_feed(impl_, reinterpret_cast(bytes.data()), bytes.size(), ++ error.data(), error.size()), "candidate feed failed"); } ++ { UiPhase phase_scan(11); scan_replay(bytes); } ++ { UiPhase phase_sync(12); synchronize(); } + uint32_t kind = 0; + for (;;) { + size_t needed = 0; +@@ -295,6 +297,7 @@ + std::vector retained(meta.history + meta.rows); + std::vector raw_ids; + raw_ids.reserve(retained.size()); ++ { UiPhase phase_export(13); + for (size_t r = 0; r < retained.size(); ++r) { + TfRowMeta row{}; + check(tf_terminal_row_meta(impl_, r, &row), "candidate row metadata failed"); +@@ -313,11 +316,16 @@ + } + retained[r] = std::move(line); + } +- const auto preserved = reconcile_replay(retained); ++ } ++ std::unordered_set preserved; ++ { UiPhase phase_reconcile(14); preserved = reconcile_replay(retained); } + if (replay_show_) preserve_history_ = true; + if (preserve_history_ && !replay_origin_ && meta.history == 0 && meta.discarded == screen.discarded) + preserve_history_ = false; ++ { UiPhase phase_merge(15); + merge_history(retained, raw_ids, meta.history, meta.discarded); ++ } ++ UiPhase phase_versions(16); + if (replay_show_) replay_origin_.reset(); + screen.normalize_identities(retained); + for (size_t r = 0; r + 1 < retained.size(); ++r) diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ui-instrumentation.patch b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ui-instrumentation.patch new file mode 100644 index 00000000..fefd5eac --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ui-instrumentation.patch @@ -0,0 +1,103 @@ +--- experiments/shell/shell.cpp ++++ experiments/shell/shell.cpp +@@ -1,3 +1,4 @@ ++#include "local/r53-cost-probe/ui_timing.hpp" + // Local shell with physical-row resize. See README for the limited contract. + #include "../presentation/render.hpp" + #ifdef TERMFORGE_CANDIDATE_CORE +@@ -367,7 +368,7 @@ + closed_.store(true); + }); + } +- void publish(std::optional scroll_operation=std::nullopt,bool scroll_changed=false) { ++ void publish(std::optional scroll_operation=std::nullopt,bool scroll_changed=false) { UiPhase probe(3); + selection_.reconcile(termforge::TextDocument(parser_.screen)); + auto view = viewport_.snapshot(parser_.screen); + if(runtime_enabled_) runtime_published_viewport_=view.viewport; +@@ -617,7 +618,7 @@ + stage_ = 6; + #endif + } +- void scenario() { ++ void scenario() { UiPhase probe(5); + if (mode_.empty() || closing_) return; + require(ms(start_) < 25000, "shell scenario timeout"); + if (mode_ == "watchdog") { +@@ -778,7 +779,7 @@ + } + } + #endif +- void tick() { ++ void tick() { UiPhase probe(0); + const auto began = Clock::now(); ++result_.ticks; + poll_paste(); + selection_autoscroll(); +@@ -793,7 +794,7 @@ + if(observed_output_.size()>8192) observed_output_.erase(0,observed_output_.size()-8192); + } + resize_trace_.observe(tf_shell_test::ResizeTrace::feed, parser_.screen.height(), parser_.screen.width(), 0, stage_, bytes); +- parser_.feed(bytes); batch += bytes.size(); ++ { UiPhase probe(1); parser_.feed(bytes); } batch += bytes.size(); + #ifdef TERMFORGE_CANDIDATE_CORE + route_terminal_events(); + #endif +@@ -914,7 +915,7 @@ + } + if (message == WM_TIMER && (self->started_ || self->closing_)) { self->tick(); return 0; } + if (message == WM_ERASEBKGND) return 1; +- if (message == WM_PAINT) { ++ if (message == WM_PAINT) { UiPhase probe(6); + PAINTSTRUCT paint{}; HDC dc = BeginPaint(hwnd, &paint); + const int painted_revision=self->snapshot_->revision; + const bool observed=self->operation_observations_.paint_candidate(painted_revision); +--- experiments/shell/search_interactions.hpp ++++ experiments/shell/search_interactions.hpp +@@ -12,7 +12,7 @@ + find_->focus_query(); + } + +-inline void ShellWindow::search_changed() { ++inline void ShellWindow::search_changed() { UiPhase probe(2); + const termforge::TextDocument document(parser_.screen); + search_.notify_change(document); + if(find_resize_pending_ && !find_resize_anchor_.reconcile(document)) clear_find_resize_anchor(); +@@ -66,7 +66,7 @@ + publish(); + } + +-inline void ShellWindow::poll_find() { ++inline void ShellWindow::poll_find() { UiPhase probe(4); + if(closing_) return; + termforge::TextDocument document(parser_.screen); + if(find_) { +--- experiments/shell/workspace_workflow_scenario.hpp ++++ experiments/shell/workspace_workflow_scenario.hpp +@@ -44,7 +44,7 @@ + require(FlushFileBuffers(evidence.resource_phase_file.get())!=FALSE,"workflow resource phase flush failed"); + } + } +-inline void Workspace::workflow_checkpoint(const char* phase,unsigned cycle,const std::vector& names) { ++inline void Workspace::workflow_checkpoint(const char* phase,unsigned cycle,const std::vector& names) { UiPhase probe(8); + auto& evidence=*workflow_;evidence.reserve_observations(names.empty()?static_cast(session_count()):names.size()); + workflow_resource_mark(phase,cycle); + JOBOBJECT_BASIC_ACCOUNTING_INFORMATION job{}; +@@ -169,7 +169,7 @@ + if(workflow_system_ && stage_==100 && workflow_->closed.size()==18) workflow_system_finish();return; + } + } +-inline void Workspace::scenario_workflow() { ++inline void Workspace::scenario_workflow() { UiPhase probe(7); + if(image_.empty() || closing_) return; + require(workflow_!=nullptr,"workflow scenario state is missing"); + if(ms(started_)>=70000) throw std::runtime_error("workflow sessions scenario timeout at stage "+std::to_string(stage_)); +--- experiments/shell/workspace.hpp ++++ experiments/shell/workspace.hpp +@@ -381,7 +381,7 @@ + if(!settings_error_.empty()) result+=L": "+utf16(settings_error_.c_str()); + return result; + } +- void paint(HDC dc) { ++ void paint(HDC dc) { UiPhase probe(9); + auto old=SelectObject(dc,font_); SetBkMode(dc,TRANSPARENT); + fill(dc,{0,0,width_,height_},background); + label(dc,{0,0,82,33},L"Session"); label(dc,{82,0,150,33},L"View"); diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ui_timing.hpp b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ui_timing.hpp new file mode 100644 index 00000000..9b576009 --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/probe/ui_timing.hpp @@ -0,0 +1,31 @@ +#pragma once +#include +#include +#include +#include +#include +struct UiProfile { + std::array ns{}, count{}, maximum{}; + ~UiProfile() { + const char* path=std::getenv("TERMFORGE_DIAGNOSTIC_PHASE_OUT"); + if(!path) return; + std::ofstream out(path); + out<<"{\"phases\":["; + for(size_t i=0;i(std::chrono::duration_cast(Clock::now()-start).count()); + ui_profile.ns[phase]+=elapsed; ++ui_profile.count[phase]; + if(elapsed>ui_profile.maximum[phase]) ui_profile.maximum[phase]=elapsed; + } +}; diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/ui-profiles.json b/experiments/shell/results/2026-10-26-replay-cost-and-close/ui-profiles.json new file mode 100644 index 00000000..ebc26ccf --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/ui-profiles.json @@ -0,0 +1,699 @@ +[ + { + "run": "ui-run-2b18652f1a8841f5a097e28148ff0d34", + "sample": { + "mode": "ui-workflow-sessions", + "status": "failed", + "timed_out": false, + "exit_code": 2, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "error_kind": "ProbeFailure" + }, + "data_only": true, + "system_clipboard": false, + "ime": false, + "checkpoints": [ + { + "phase": "eight-ready", + "elapsed_ms": 579, + "cycle": 0 + }, + { + "phase": "reject-ninth", + "elapsed_ms": 583, + "cycle": 0 + }, + { + "phase": "load-started", + "elapsed_ms": 857, + "cycle": 0 + }, + { + "phase": "reading-before-append", + "elapsed_ms": 881, + "cycle": 0 + }, + { + "phase": "reading-after-append", + "elapsed_ms": 1130, + "cycle": 0 + }, + { + "phase": "search-running", + "elapsed_ms": 1392, + "cycle": 0 + }, + { + "phase": "find-complete", + "elapsed_ms": 11461, + "cycle": 0 + }, + { + "phase": "foreground-input", + "elapsed_ms": 11678, + "cycle": 0 + }, + { + "phase": "zoom-75", + "elapsed_ms": 11894, + "cycle": 0 + }, + { + "phase": "switch-zoom", + "elapsed_ms": 12152, + "cycle": 0 + }, + { + "phase": "history-evicted", + "elapsed_ms": 12611, + "cycle": 0 + }, + { + "phase": "paste-cancel-pending", + "elapsed_ms": 13775, + "cycle": 0 + }, + { + "phase": "paste-cancelled", + "elapsed_ms": 14486, + "cycle": 0 + }, + { + "phase": "background-complete", + "elapsed_ms": 50071, + "cycle": 0 + }, + { + "phase": "cycle-six", + "elapsed_ms": 50552, + "cycle": 1 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 51912, + "cycle": 1 + }, + { + "phase": "cycle-six", + "elapsed_ms": 52683, + "cycle": 2 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 54041, + "cycle": 2 + }, + { + "phase": "cycle-six", + "elapsed_ms": 54799, + "cycle": 3 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 56168, + "cycle": 3 + }, + { + "phase": "cycle-six", + "elapsed_ms": 56961, + "cycle": 4 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 58253, + "cycle": 4 + }, + { + "phase": "cycle-six", + "elapsed_ms": 58889, + "cycle": 5 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 60200, + "cycle": 5 + }, + { + "phase": "paste-close-pending", + "elapsed_ms": 60724, + "cycle": 5 + } + ], + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ], + "raw_sha256": { + "cancel.bin": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "close.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "close.bin.before.json": "42d48c9b60c19059b0fd753b871521787ece886f5976aef804fe05baa7db1584", + "identity.json": "bd2605c691401cbaba684f8b3dbf8d5ec4d87004dc5cc2a99043dd7137e0bd05", + "resource-phases.jsonl": "eb0a3de3035663d0086328cc52f98dac18a5e553f64197057a516169a4be56f3", + "sample.json": "7159224e988be562a77cbad22953c4bb2ef47b7ccc19ac9593c037630bde513e", + "sessions.json": "6ef9405ea3055273463e9d72fa467f7df9e9c4459dffb7a203a061c7dbaa3e94", + "ui-phases.json": "6644c6534aa391b9bd4bf2a6c344c4e8d9d1548c4c2fc3656e589b8a61809997", + "workspace.layout": "9a96d62943f54727e7c50ce5785a571efbfa6cbece6248f6a6d144257c1e1d58" + }, + "observed_failure": "workflow sessions scenario timeout at stage 45", + "instrumentation": { + "phases": [ + "whole_tick", + "parser_feed", + "search_changed", + "publish", + "poll_find", + "shell_scenario", + "shell_paint", + "workflow_scenario", + "workflow_checkpoint", + "workspace_paint" + ], + "source": { + "experiments/shell/shell.cpp": { + "original": "b369968152bbff107c699181d4e23f271e62a5732f0c41793159b3efc3609321", + "instrumented": "0e0cfbd952c37d05a0333bd79662ead2777dd19db220f08993a762437cb9bb77" + }, + "experiments/shell/search_interactions.hpp": { + "original": "75f1ac520dc3070efba2d01812bf56c29e8683540196956423b0984c42d7b181", + "instrumented": "b337e56639d273b45faca154ed20830157991b6e158834e3c377a1a74c6f4b55" + }, + "experiments/shell/workspace_workflow_scenario.hpp": { + "original": "467571556440f4e89305bc1261d389bb8f24ba84f607b8cd36b8078a58314369", + "instrumented": "2a95c33f6b6212f61c8217fd55298b16ca90209f8b9cd972e7dc135e94fc4c57" + }, + "experiments/shell/workspace.hpp": { + "original": "5669a13701b2fe60e8bd567a122edb970bdc4aadcb98ceb3927905f0c000275e", + "instrumented": "9cbe9e5db3529e578eec705307d9cab23035623b3f46ac9d14d6838f7ab7c61e" + } + }, + "original_exe": "0a1fee632cb640dff4599fdcca277c959038d31ec88bfed8cff893b3271d26a6", + "instrumented_exe": "babd7b24d89ae970f614c6d4b6090054db9df3a40dfbcbdcadaf53b5b2e79f24", + "resources": false + }, + "phase_wall_times": { + "phases": [ + { + "id": 0, + "ns": 64631951400, + "max_ns": 55502600, + "count": 4896 + }, + { + "id": 1, + "ns": 64079457000, + "max_ns": 55183600, + "count": 1771 + }, + { + "id": 2, + "ns": 335900, + "max_ns": 24500, + "count": 1806 + }, + { + "id": 3, + "ns": 500625100, + "max_ns": 8645600, + "count": 1958 + }, + { + "id": 4, + "ns": 73427600, + "max_ns": 9092300, + "count": 4896 + }, + { + "id": 5, + "ns": 745500, + "max_ns": 20500, + "count": 4754 + }, + { + "id": 6, + "ns": 1053698100, + "max_ns": 10532400, + "count": 233 + }, + { + "id": 7, + "ns": 1137670500, + "max_ns": 268286300, + "count": 611 + }, + { + "id": 8, + "ns": 157240300, + "max_ns": 17637500, + "count": 25 + }, + { + "id": 9, + "ns": 160054100, + "max_ns": 40076700, + "count": 48 + } + ] + }, + "limitations": [ + "nested inclusive wall timers; do not add phases", + "instrumentation overhead", + "resource sampler disabled for diagnosis", + "shared host; not formal R54 samples", + "no actual presented endpoint; no user-approved performance tolerance" + ] + }, + { + "run": "ui-run-82b1582d98de4cc1bd659c481ee99cfa", + "sample": { + "mode": "ui-workflow-sessions", + "status": "failed", + "timed_out": false, + "exit_code": 2, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "error_kind": "ProbeFailure" + }, + "data_only": true, + "system_clipboard": false, + "ime": false, + "checkpoints": [ + { + "phase": "eight-ready", + "elapsed_ms": 603, + "cycle": 0 + }, + { + "phase": "reject-ninth", + "elapsed_ms": 606, + "cycle": 0 + }, + { + "phase": "load-started", + "elapsed_ms": 839, + "cycle": 0 + }, + { + "phase": "reading-before-append", + "elapsed_ms": 870, + "cycle": 0 + }, + { + "phase": "reading-after-append", + "elapsed_ms": 1104, + "cycle": 0 + }, + { + "phase": "search-running", + "elapsed_ms": 1350, + "cycle": 0 + }, + { + "phase": "find-complete", + "elapsed_ms": 11017, + "cycle": 0 + }, + { + "phase": "foreground-input", + "elapsed_ms": 11226, + "cycle": 0 + }, + { + "phase": "zoom-75", + "elapsed_ms": 11434, + "cycle": 0 + }, + { + "phase": "switch-zoom", + "elapsed_ms": 11664, + "cycle": 0 + }, + { + "phase": "history-evicted", + "elapsed_ms": 12079, + "cycle": 0 + }, + { + "phase": "paste-cancel-pending", + "elapsed_ms": 13120, + "cycle": 0 + }, + { + "phase": "paste-cancelled", + "elapsed_ms": 14002, + "cycle": 0 + }, + { + "phase": "background-complete", + "elapsed_ms": 47021, + "cycle": 0 + }, + { + "phase": "cycle-six", + "elapsed_ms": 47482, + "cycle": 1 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 48797, + "cycle": 1 + }, + { + "phase": "cycle-six", + "elapsed_ms": 49478, + "cycle": 2 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 50760, + "cycle": 2 + }, + { + "phase": "cycle-six", + "elapsed_ms": 51410, + "cycle": 3 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 52749, + "cycle": 3 + }, + { + "phase": "cycle-six", + "elapsed_ms": 53355, + "cycle": 4 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 54707, + "cycle": 4 + }, + { + "phase": "cycle-six", + "elapsed_ms": 55349, + "cycle": 5 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 56623, + "cycle": 5 + }, + { + "phase": "paste-close-pending", + "elapsed_ms": 57079, + "cycle": 5 + } + ], + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ], + "raw_sha256": { + "cancel.bin": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "close.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "close.bin.before.json": "42d48c9b60c19059b0fd753b871521787ece886f5976aef804fe05baa7db1584", + "identity.json": "7dc04a9a23392081f4b638214f91063c0a4b1704727470d1d14394d37aa97cde", + "resource-phases.jsonl": "0ed18c34974f8bf7e8d3e20949384e52b911672723293df5a3acf8c036cfb646", + "sample.json": "4d3fdb3f0561f468199900f2dfaaf4ed980cc1bdcdb9a1fa2db249676c170bbc", + "sessions.json": "1197f7ec3928c0dd08d8497610fe95b5171aa96559e9058e4ce1669f2fdc86cf", + "ui-phases.json": "cf363bd31befa7c37a6495591d630b1f0b9b164c07b1a9baa7871f6b1032aae4", + "workspace.layout": "9a96d62943f54727e7c50ce5785a571efbfa6cbece6248f6a6d144257c1e1d58" + }, + "observed_failure": "workflow sessions scenario timeout at stage 45", + "instrumentation": { + "phases": [ + "whole_tick", + "parser_feed", + "search_changed", + "publish", + "poll_find", + "shell_scenario", + "shell_paint", + "workflow_scenario", + "workflow_checkpoint", + "workspace_paint", + "core_feed", + "scan_replay", + "synchronize", + "cell_export", + "reconcile_replay", + "merge_history", + "versions_copy" + ], + "source": { + "experiments/shell/shell.cpp": { + "original": "b369968152bbff107c699181d4e23f271e62a5732f0c41793159b3efc3609321", + "instrumented": "0e0cfbd952c37d05a0333bd79662ead2777dd19db220f08993a762437cb9bb77" + }, + "experiments/shell/search_interactions.hpp": { + "original": "75f1ac520dc3070efba2d01812bf56c29e8683540196956423b0984c42d7b181", + "instrumented": "b337e56639d273b45faca154ed20830157991b6e158834e3c377a1a74c6f4b55" + }, + "experiments/shell/workspace_workflow_scenario.hpp": { + "original": "467571556440f4e89305bc1261d389bb8f24ba84f607b8cd36b8078a58314369", + "instrumented": "2a95c33f6b6212f61c8217fd55298b16ca90209f8b9cd972e7dc135e94fc4c57" + }, + "experiments/shell/workspace.hpp": { + "original": "5669a13701b2fe60e8bd567a122edb970bdc4aadcb98ceb3927905f0c000275e", + "instrumented": "9cbe9e5db3529e578eec705307d9cab23035623b3f46ac9d14d6838f7ab7c61e" + }, + "experiments/core/candidate_terminal.cpp": { + "original": "0d0eaabe5ef896aa7b263c8151622f579f37c421bf9473fc3d69ada010a64e61", + "instrumented": "5138c797086f84f584a254894004286257a1434bf2903ffcafd3751acb60ebba" + } + }, + "original_exe": "0a1fee632cb640dff4599fdcca277c959038d31ec88bfed8cff893b3271d26a6", + "instrumented_exe": "23b92b9087d836947bf848da3de7e04f624bada0c6ca6284690ea63719b6668f", + "resources": false + }, + "phase_wall_times": { + "phases": [ + { + "id": 0, + "ns": 64458192200, + "max_ns": 56417700, + "count": 5278 + }, + { + "id": 1, + "ns": 63986560900, + "max_ns": 56035900, + "count": 1892 + }, + { + "id": 2, + "ns": 449600, + "max_ns": 17600, + "count": 1922 + }, + { + "id": 3, + "ns": 432217300, + "max_ns": 3678600, + "count": 2074 + }, + { + "id": 4, + "ns": 52400300, + "max_ns": 4067000, + "count": 5278 + }, + { + "id": 5, + "ns": 787000, + "max_ns": 88700, + "count": 5137 + }, + { + "id": 6, + "ns": 958451800, + "max_ns": 11927600, + "count": 233 + }, + { + "id": 7, + "ns": 1086472600, + "max_ns": 239174200, + "count": 671 + }, + { + "id": 8, + "ns": 149742300, + "max_ns": 18294300, + "count": 25 + }, + { + "id": 9, + "ns": 141821100, + "max_ns": 21889600, + "count": 48 + }, + { + "id": 10, + "ns": 559755900, + "max_ns": 3343000, + "count": 1892 + }, + { + "id": 11, + "ns": 4690100, + "max_ns": 51400, + "count": 1892 + }, + { + "id": 12, + "ns": 63419742700, + "max_ns": 55759500, + "count": 1892 + }, + { + "id": 13, + "ns": 2031090200, + "max_ns": 7882100, + "count": 1930 + }, + { + "id": 14, + "ns": 60905226900, + "max_ns": 54182500, + "count": 1930 + }, + { + "id": 15, + "ns": 317300, + "max_ns": 3000, + "count": 1930 + }, + { + "id": 16, + "ns": 363684200, + "max_ns": 3660300, + "count": 1930 + } + ] + }, + "limitations": [ + "nested inclusive wall timers; do not add phases", + "instrumentation overhead", + "resource sampler disabled for diagnosis", + "shared host; not formal R54 samples", + "no actual presented endpoint; no user-approved performance tolerance" + ] + } +] diff --git a/experiments/shell/results/2026-10-26-replay-cost-and-close/validation.json b/experiments/shell/results/2026-10-26-replay-cost-and-close/validation.json new file mode 100644 index 00000000..a575046f --- /dev/null +++ b/experiments/shell/results/2026-10-26-replay-cost-and-close/validation.json @@ -0,0 +1,1513 @@ +{ + "schema": "termforge-replay-cost-closing-reply-v1", + "date": "2026-10-26", + "issue": 53, + "source_commit": "eae4b6a4ef3e044ebfebbbbfeccf9aec74cd7f0d", + "source_tree": "b07036829c5c8bd61ede6a8aa46f655e541ada1b", + "source_files": { + "CMakeLists.txt": { + "git_blob": "2454a7b8dc34fa2bbd74b25b0ad77d19a71a5f18", + "checkout_sha256": "f5bb85e12b7a815c4feb7417da9ebc5298de58664bcd2792b277cb282729da73" + }, + "experiments/core/candidate_terminal.cpp": { + "git_blob": "9bb1fab8f6deac294d0ba1a44712b67c919d03c7", + "checkout_sha256": "3092ee2ea44ca0f897a7d3b6244c079ba8073dc109993204e435f065388a2ed1" + }, + "experiments/shell/shell.cpp": { + "git_blob": "90b3f166e8a50ca2488f749e8e188c52cb5e4a91", + "checkout_sha256": "ac4dd44861aa2928213fffe91d30cdaf3aedf19f08468aefeed22828352296cc" + }, + "experiments/shell/candidate_reply_close_test.cpp": { + "git_blob": "1a5e0149c553469645dbfe3ddb217908b1958d42", + "checkout_sha256": "453ab888fb57d4f918bcfa583da7167a21463ce185be2a3d67caec74505fc424" + }, + "experiments/shell/test_workflow_sessions.py": { + "git_blob": "de6cef3be06725d606b91ae68eb1cc45eb744fb5", + "checkout_sha256": "6c968a443c46b30e75a929f880228e6a23bf2b92d9221bbbf18816933babd6e7" + }, + "experiments/shell/test_shell.py": { + "git_blob": "66512ac1099cf477cac8f26f225b18c301c1d3d8", + "checkout_sha256": "a6b63c1754b0e0dc1cc01863891f4c7c9d989f818d351838a8cfe295edaf811c" + }, + "experiments/shell/run.py": { + "git_blob": "bbd4dfc05012c55956973d7e2c69be717b48b1a9", + "checkout_sha256": "45976b828eecb316881d698dedaef09ad304f72d991dfa360f1c552bbcbe9f1d" + }, + "experiments/shell/workflow_sessions_checks.py": { + "git_blob": "8369b412abe893393bf316430ccedd22e9eb75ba", + "checkout_sha256": "b976d3504837eef57ff13319daed254870727741f36f265412a6b14b4cb3faae" + } + }, + "environment": { + "os": "Windows-11-10.0.26200-SP0", + "architecture": "AMD64", + "compiler": "MSVC 19.42.34433", + "configuration": "Release x64", + "candidate": "alacritty_terminal 0.26.1-dev+termforge.4", + "backend": "Microsoft.Windows.Console.ConPTY 1.25.260930003", + "glyph_width_flags": 24 + }, + "request": { + "utf8_bytes": 3000000, + "utf16_units": 1000000, + "literal": "U+6C49 repeated 1000000", + "sha256": "0ba67970de9941c1bc33e97869b116a0e129c8a859e3b4c0087e20c51f6a404b", + "minimum_sent": 16384, + "receiver_checkpoint_bytes": 768 + }, + "deadlines_ms": { + "standalone_ui": 35000, + "standalone_outer": 40000, + "receiver_gate": 15000, + "eight_session_ui": 70000, + "workflow_fixture": 55000, + "missing_go_negative_only": 2000 + }, + "binaries": { + "alpha_normal_smoke.exe": "36ac6dbe36c942b9850d6d9f5b3538fbfe2fc251f38ac026ea12c343b0e9abc8", + "candidate_core_test.exe": "6e9df1abbe2271690a1480a1be9042e219a5947779b6a4b03f529a742fbd10ce", + "candidate_reply_close_test.exe": "662a331701e49885ce56328ae19ddc2166347c5f802d7faa2787eef46e25b000", + "candidate_resize_replay.exe": "3d91227adb37bba4defcef8f803f0f3c2916001223300b99d18e0e2ab695de94", + "candidate_title_test.exe": "a9591c36d5a54a1f54cf30ec8f8b0e7ff047096f5adf2e2a74169252ab041852", + "clipboard_policy_test.exe": "809815e9838cad5b3443c98620d23a4e6c7186b5304b524d0990988eb47a6da9", + "conpty_backend_probe.exe": "3c54962c20f04e688a0413bb822713e908582af20b0be8bcfd188fb436907ef8", + "conpty_ctrl_c_probe.exe": "ac5ae5ccdb77c82512a8a6d769fafbe74693bf6fc535ce4d22bf60b0c8df2bfa", + "conpty_margin_probe.exe": "5404b009d0e005cd940d8a65afeb0fb9caf9c9ce2a18f651a88146343c41c252", + "core_measure.exe": "df9df797b16239d2fb71707f8a042a1ed956ad30c407d884527cdf18d600e785", + "find_bar_test.exe": "030733a2396ca9b31bbd029c610f1b838ab52394338c08410274501747dd9982", + "history_test.exe": "035507366facfd6de00e0c2762775c8d3816f605da3e55d498995a74a3f447d2", + "ime_context_test.exe": "be0d71ca72aee3dbd1565c9ad2314f81f0cd0c5511ec54cb623bbd39eede9974", + "ime_input_expectation_test.exe": "a5ea4532a06b893d955299793b4859cb9ccf221fab64e51949e1af2ee6ba5d0b", + "keyboard_test.exe": "18a35c2b2ab8a6316e0c938d8c36d0b82bcc131989d683205888b08bf4d33e19", + "layout_state_test.exe": "307519003536ce16d7d6fc552b3a25e9de25356d50a80c2de0c01168a10784a9", + "paste_test.exe": "47e9a5ce33335370b6fb199b0ff11adc19e2ab55bf64657061a13c1c020a24b0", + "presentation_probe.exe": "b7043cace46f65b22c7295df2fc06b214f060c2fd6fe18ac5ff27e13d943e096", + "raw_console_receiver_test.exe": "9c05cdb80d87ff264b3275387eb01dabc8f57640adbc7ee3910b0fc44f378224", + "real_app_capture.exe": "011efaad94da74ce182e30a3ff8abb0c1e1f58235bc77fa8c347ec3d9dcb822e", + "receive.exe": "ef316e11ddcc764ddac57426fc37b8b69f599ddb28a0ffedf5c2e85a3004a9d4", + "recovery_probe.exe": "c84e7b1b1792773b993f2758d5cafa59b80495451c01d194c3afd6cc653f0344", + "renderer_metrics_test.exe": "4cebad62798ff0f8eac42641a1119c7b9725728dd5fd31befcdf7e1ecb686cfd", + "replay.exe": "674f96ebbf00497576951a6780a5cf5195e3b80cc4acdb7f296fa8910a6203b7", + "resize_test.exe": "f566c56a1fa34e2a8ff480900ac5ae5059e2ac6872554208d5dbf0e24673dde0", + "runtime_observation_test.exe": "b721e08397dc0a1b80cff3cc9b3354d5ba81c59d9ef3e0934a7ec27fb2f5eebe", + "scenario_tick_gate_test.exe": "06cd4e813f1034d1a8c7fea592979f49c3ef89117c97fc6636cdae5012017ce8", + "search_test.exe": "0f29f3ea3147cc45eb2e500e683f3bcc1db04f820470b2ff473fffcb31cdb4f4", + "selection_test.exe": "104576787b62c2c4bb2428e0786c7742e63a23ceb766df293c88a5ccc6a1b836", + "sender_fence_pipe_test.exe": "6a94ac84631434a81ae1098932813d7ceeb81f2bb33a2e4b2456834bd8972e92", + "sender_fence_test.exe": "ab4af3b0f148f6e6377e70c98936c6c34d0be0d3cee4b17b3f8554c39b2d3e52", + "sent_message_wait_test.exe": "bc3cff14f60e3f1b17b3fd6255ff1c5b507f506d897d528802efa9666be74dcf", + "shell_clipboard_reader.exe": "bacc4bff465ca644fae61f9d26184a7adc22df9793470feca647af1d823fece8", + "shell_ime_client.exe": "d787ebf702cf5895e1ad0d71f895a51b3dead34d02953b5e7deff086c2bf8eb7", + "shell_input_client.exe": "850c82fb8bb58de8170bf096cc6dd4f8ba34d9ba11dbd2addc41508cddc31d8c", + "shell_launch_test.exe": "ace9b63148848bf7b405edb4b8818ca23d52699ac2ce8ca03a90c5bc1e32622d", + "shell_paste_probe.exe": "1370c6381b990270dfd816f53758e5aa57c63deba050fa7cf0dbd0d5cbf4f315", + "shell_query_client.exe": "71419f7918bc58f4ee47d14f8e6de35aa1828ac838a73ed607797fc120f56886", + "shell_queue_probe.exe": "7f34d6ff66b3e00d56798e22a480fb20a5afa083cff65a9d689dcbca44dbe12d", + "shell_selection_text_client.exe": "dbad81a22ecce4508eada90ae445f9a75abfe1effd2571776ef31b32144c8ac4", + "shell_size_client.exe": "5394d9863df9a589012f0d9a31f7e4167e7bc4ea23e93f9711c0a67c540651f6", + "shell_test_launcher.exe": "dbde4249dc08c7df80120398ffd252aa5e4958e4ef640cc161ea4c2d28b9f291", + "shell_text_client.exe": "9485b03424e421a4018596cc9487e7feeb33c26d30820985aa45843fdcf315d9", + "termforge_conpty_probe.exe": "7dd59bc8d0309ad5b131cde1c3ed98819139b6bb70f505347c98aabe8396f618", + "termforge_ime_probe.exe": "788a186b5fafb6d155eeab74f78d4f7cb992a599937b3aa48c5efcf49affe993", + "termforge_shell.exe": "9c01fa0577d8fc922d239d8a711ac13d1e4989104aad68795230bfcd998b4eb6", + "terminal_trace.exe": "40e869753f4c00515ee0990f3732eac04f965fe2c3070f1bf772717476269f3d", + "text_action_policy_test.exe": "535b469c9aa0da7e77670578f75d04956d98e9f912d5c9a6c310ab796ab58d4f", + "transport_completion_test.exe": "b83b797cacd8aaa05bfe8697b54f86da4d0ffe618b37b9b7080dbe05a0e99ad9", + "workflow_fixture_test.exe": "a6624a6b1536c6f445f92e05ff72a5318ece47d455500f6adc467d94f9f04222", + "workspace_state_test.exe": "ac3fbc8a56d33efda33cc9040c731c183e0a8666e23fce48d368c1868797714d", + "conpty-backend/conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "conpty-backend/OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "vim": { + "version": "9.1 patches 1-532, MSYS2", + "sha256": "2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a", + "scope": "test-process PATH only" + }, + "final_ctest": { + "started_at": "2026-10-26T15:52:21.7023013Z", + "completed_at": "2026-10-26T16:00:07.0924704Z", + "exit_code": 8, + "tests": [ + { + "number": 1, + "name": "shell_launch", + "result": "Passed", + "elapsed_seconds": 0.01 + }, + { + "number": 2, + "name": "candidate_title", + "result": "Passed", + "elapsed_seconds": 0.78 + }, + { + "number": 3, + "name": "candidate_reply_close", + "result": "Passed", + "elapsed_seconds": 0.36 + }, + { + "number": 4, + "name": "runtime_observation", + "result": "Passed", + "elapsed_seconds": 1.66 + }, + { + "number": 5, + "name": "ime_input_expectation", + "result": "Passed", + "elapsed_seconds": 0.01 + }, + { + "number": 6, + "name": "sent_message_wait", + "result": "Passed", + "elapsed_seconds": 0.3 + }, + { + "number": 7, + "name": "find_bar", + "result": "Passed", + "elapsed_seconds": 0.37 + }, + { + "number": 8, + "name": "renderer_metrics", + "result": "Passed", + "elapsed_seconds": 0.92 + }, + { + "number": 9, + "name": "ime_context", + "result": "Passed", + "elapsed_seconds": 0.35 + }, + { + "number": 10, + "name": "layout_state", + "result": "Passed", + "elapsed_seconds": 0.13 + }, + { + "number": 11, + "name": "workspace_state", + "result": "Passed", + "elapsed_seconds": 0.34 + }, + { + "number": 12, + "name": "transport_completion", + "result": "Passed", + "elapsed_seconds": 0.01 + }, + { + "number": 13, + "name": "scenario_tick_gate", + "result": "Passed", + "elapsed_seconds": 0.01 + }, + { + "number": 14, + "name": "candidate_core", + "result": "Passed", + "elapsed_seconds": 1.17 + }, + { + "number": 15, + "name": "resize_core", + "result": "Passed", + "elapsed_seconds": 0.02 + }, + { + "number": 16, + "name": "history_core", + "result": "Passed", + "elapsed_seconds": 0.02 + }, + { + "number": 17, + "name": "selection_core", + "result": "Passed", + "elapsed_seconds": 0.09 + }, + { + "number": 18, + "name": "search_core", + "result": "Passed", + "elapsed_seconds": 0.12 + }, + { + "number": 19, + "name": "paste", + "result": "Passed", + "elapsed_seconds": 0.01 + }, + { + "number": 20, + "name": "sender_fence", + "result": "Passed", + "elapsed_seconds": 1.03 + }, + { + "number": 21, + "name": "sender_fence_pipe", + "result": "Passed", + "elapsed_seconds": 0.38 + }, + { + "number": 22, + "name": "clipboard_policy", + "result": "Passed", + "elapsed_seconds": 0.01 + }, + { + "number": 23, + "name": "keyboard", + "result": "Passed", + "elapsed_seconds": 0.01 + }, + { + "number": 24, + "name": "text_action_policy", + "result": "Passed", + "elapsed_seconds": 0.01 + }, + { + "number": 25, + "name": "candidate_resize_replay", + "result": "Passed", + "elapsed_seconds": 0.56 + }, + { + "number": 26, + "name": "candidate_shell_tui", + "result": "***Failed", + "elapsed_seconds": 30.68 + }, + { + "number": 27, + "name": "core", + "result": "Passed", + "elapsed_seconds": 6.15 + }, + { + "number": 28, + "name": "recovery", + "result": "Passed", + "elapsed_seconds": 9.89 + }, + { + "number": 29, + "name": "measure", + "result": "Passed", + "elapsed_seconds": 4.03 + }, + { + "number": 30, + "name": "binary_paths", + "result": "Passed", + "elapsed_seconds": 0.18 + }, + { + "number": 31, + "name": "conpty_margin_contract", + "result": "Passed", + "elapsed_seconds": 0.36 + }, + { + "number": 32, + "name": "benchmark_tools", + "result": "Passed", + "elapsed_seconds": 5.57 + }, + { + "number": 33, + "name": "differential", + "result": "Passed", + "elapsed_seconds": 3.67 + }, + { + "number": 34, + "name": "ime_inventory", + "result": "Passed", + "elapsed_seconds": 50.6 + }, + { + "number": 35, + "name": "text_actions", + "result": "Passed", + "elapsed_seconds": 5.6 + }, + { + "number": 36, + "name": "workflow_fixture", + "result": "Passed", + "elapsed_seconds": 22.74 + }, + { + "number": 37, + "name": "workflow_sessions", + "result": "Passed", + "elapsed_seconds": 77.08 + }, + { + "number": 38, + "name": "workflow_resources", + "result": "Passed", + "elapsed_seconds": 0.6 + }, + { + "number": 39, + "name": "workflow_resource_phases", + "result": "Passed", + "elapsed_seconds": 4.35 + }, + { + "number": 40, + "name": "workflow_system_content", + "result": "Passed", + "elapsed_seconds": 0.16 + }, + { + "number": 41, + "name": "workflow_system_runner", + "result": "Passed", + "elapsed_seconds": 0.67 + }, + { + "number": 42, + "name": "copy_error_frame", + "result": "Passed", + "elapsed_seconds": 0.17 + }, + { + "number": 43, + "name": "paste_fence_evidence", + "result": "Passed", + "elapsed_seconds": 0.12 + }, + { + "number": 44, + "name": "resize_trace", + "result": "Passed", + "elapsed_seconds": 0.13 + }, + { + "number": 45, + "name": "research_guards", + "result": "Passed", + "elapsed_seconds": 5.06 + }, + { + "number": 46, + "name": "receive", + "result": "Passed", + "elapsed_seconds": 0.25 + }, + { + "number": 47, + "name": "conpty", + "result": "Passed", + "elapsed_seconds": 23.48 + }, + { + "number": 48, + "name": "conpty_ctrl_c", + "result": "Passed", + "elapsed_seconds": 4.42 + }, + { + "number": 49, + "name": "conpty_margin", + "result": "Passed", + "elapsed_seconds": 0.36 + }, + { + "number": 50, + "name": "conpty_backend", + "result": "Passed", + "elapsed_seconds": 1.24 + }, + { + "number": 51, + "name": "presentation", + "result": "Passed", + "elapsed_seconds": 4.05 + }, + { + "number": 52, + "name": "shell", + "result": "***Timeout", + "elapsed_seconds": 180.05 + }, + { + "number": 53, + "name": "selection_bytes", + "result": "Passed", + "elapsed_seconds": 3.65 + }, + { + "number": 54, + "name": "selection_context", + "result": "Passed", + "elapsed_seconds": 3.91 + }, + { + "number": 55, + "name": "raw_console_receiver", + "result": "Passed", + "elapsed_seconds": 0.41 + }, + { + "number": 56, + "name": "paste_system", + "result": "Passed", + "elapsed_seconds": 6.7 + } + ], + "ctest_log_sha256": "8aafbb86aff94166f27131a0730ae9f89047eabfd573df3009c1b2be7d60bef2", + "last_test_log_sha256": "c7c335df7b947320a6fcd0fdd22287d8bdb13aed18bc9ed95377b8c8dc2e64a2" + }, + "diagnostic_artifacts": [ + "headless-ordinary.json", + "headless-resize.json", + "ui-profiles.json", + "intermediate-workflows.json", + "closing-reply.json" + ], + "limitations": [ + "Only candidate .4 with explicit official backend validated here", + "Data-only eight-session contract; no hosted real clipboard or IME acceptance", + "Shared-host diagnostics are not R54 formal samples or WindTerm performance equivalence", + "No user-approved numeric budget; presentation endpoint unknown", + "Unrelated Vim, resize and workspace failures remain open" + ], + "eight_session_runs": [ + { + "run": "run-40c6fff18ecd453684ad2ee06a44c669", + "sample": { + "mode": "ui-workflow-sessions", + "status": "passed", + "timed_out": false, + "exit_code": 0, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "result": { + "valid": true, + "mode": "ui-workflow-sessions", + "sessions_closed": 18, + "active_children_after": 0, + "presented_done": null + }, + "frame_sha256": "68fb528174c7f7edf2916ca1b6f1f7d2a6b80deeb4cec787539fb051bb344ee5", + "sessions_workflow": { + "schema": "termforge-workflow-sessions-identity-validation-v1", + "live_sessions": 8, + "checkpoints": 26, + "rejected_ninth": true, + "load_foreground_verified": true, + "data_workflow_verified": true, + "complete_workflow_verified": false, + "system_clipboard_verified": false, + "ime_verified": false + }, + "resources": { + "summary": "resource-summary.json", + "scope": "launcher-tree", + "performance_gate": "not_evaluated" + }, + "error_kind": null + }, + "data_only": true, + "system_clipboard": false, + "ime": false, + "checkpoints": [ + { + "phase": "eight-ready", + "elapsed_ms": 571, + "cycle": 0 + }, + { + "phase": "reject-ninth", + "elapsed_ms": 574, + "cycle": 0 + }, + { + "phase": "load-started", + "elapsed_ms": 731, + "cycle": 0 + }, + { + "phase": "reading-before-append", + "elapsed_ms": 749, + "cycle": 0 + }, + { + "phase": "reading-after-append", + "elapsed_ms": 877, + "cycle": 0 + }, + { + "phase": "search-running", + "elapsed_ms": 1021, + "cycle": 0 + }, + { + "phase": "find-complete", + "elapsed_ms": 6355, + "cycle": 0 + }, + { + "phase": "foreground-input", + "elapsed_ms": 6493, + "cycle": 0 + }, + { + "phase": "zoom-75", + "elapsed_ms": 6626, + "cycle": 0 + }, + { + "phase": "switch-zoom", + "elapsed_ms": 6775, + "cycle": 0 + }, + { + "phase": "history-evicted", + "elapsed_ms": 7020, + "cycle": 0 + }, + { + "phase": "paste-cancel-pending", + "elapsed_ms": 7606, + "cycle": 0 + }, + { + "phase": "paste-cancelled", + "elapsed_ms": 7975, + "cycle": 0 + }, + { + "phase": "background-complete", + "elapsed_ms": 26268, + "cycle": 0 + }, + { + "phase": "cycle-six", + "elapsed_ms": 26584, + "cycle": 1 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 27859, + "cycle": 1 + }, + { + "phase": "cycle-six", + "elapsed_ms": 28160, + "cycle": 2 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 29429, + "cycle": 2 + }, + { + "phase": "cycle-six", + "elapsed_ms": 29734, + "cycle": 3 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 31003, + "cycle": 3 + }, + { + "phase": "cycle-six", + "elapsed_ms": 31326, + "cycle": 4 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 32562, + "cycle": 4 + }, + { + "phase": "cycle-six", + "elapsed_ms": 32875, + "cycle": 5 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 34169, + "cycle": 5 + }, + { + "phase": "paste-close-pending", + "elapsed_ms": 34461, + "cycle": 5 + }, + { + "phase": "after-paste-close", + "elapsed_ms": 34675, + "cycle": 5 + } + ], + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ], + "raw_sha256": { + "cancel.bin": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "close.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "close.bin.before.json": "42d48c9b60c19059b0fd753b871521787ece886f5976aef804fe05baa7db1584", + "frame.bmp": "68fb528174c7f7edf2916ca1b6f1f7d2a6b80deeb4cec787539fb051bb344ee5", + "resource-observations.jsonl": "39a33bf36d3da8512f99e18c617bb8ae9d2ce18bd45d8fb923ea89e3bc6fd15c", + "resource-phases.jsonl": "3d4bed0243cafdcb17e067cf7a80fc0a8deab7b297a4976cd4ca3fab6595b100", + "resource-summary.json": "8084b1234602e26ee63f26be0067a9fc8845eef227e9db7277c7092ea0528273", + "sample.json": "efb0f88de0d82b21f38592e2858c3937c9e4c56a0f57c9cbfc128b8cdb5ef818", + "sample.public.json": "9507843aee6d9088fd93fb35fb925f64d9b854f0d0c307dc5bc6676422ff7604", + "sessions.json": "953d27af5461179b5cfa672022f9ab7d7f1c50670b20f3acba9fb9bb046f7f28", + "validation.json": "0449c92f202590a5255928fb7df1f5ab615821d26656a3675c9b78a50c7692ef", + "workspace.layout": "9a96d62943f54727e7c50ce5785a571efbfa6cbece6248f6a6d144257c1e1d58" + } + }, + { + "run": "run-529ed519a8f145f191c850d0218abb04", + "sample": { + "mode": "ui-workflow-sessions", + "status": "passed", + "timed_out": false, + "exit_code": 0, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "result": { + "valid": true, + "mode": "ui-workflow-sessions", + "sessions_closed": 18, + "active_children_after": 0, + "presented_done": null + }, + "frame_sha256": "4443a91feb73693650c2a6f8ac4feb91fa9fe3fee9e1340086892c2257db1990", + "sessions_workflow": { + "schema": "termforge-workflow-sessions-identity-validation-v1", + "live_sessions": 8, + "checkpoints": 26, + "rejected_ninth": true, + "load_foreground_verified": true, + "data_workflow_verified": true, + "complete_workflow_verified": false, + "system_clipboard_verified": false, + "ime_verified": false + }, + "resources": { + "summary": "resource-summary.json", + "scope": "launcher-tree", + "performance_gate": "not_evaluated" + }, + "error_kind": null + }, + "data_only": true, + "system_clipboard": false, + "ime": false, + "checkpoints": [ + { + "phase": "eight-ready", + "elapsed_ms": 570, + "cycle": 0 + }, + { + "phase": "reject-ninth", + "elapsed_ms": 574, + "cycle": 0 + }, + { + "phase": "load-started", + "elapsed_ms": 730, + "cycle": 0 + }, + { + "phase": "reading-before-append", + "elapsed_ms": 752, + "cycle": 0 + }, + { + "phase": "reading-after-append", + "elapsed_ms": 881, + "cycle": 0 + }, + { + "phase": "search-running", + "elapsed_ms": 1038, + "cycle": 0 + }, + { + "phase": "find-complete", + "elapsed_ms": 6482, + "cycle": 0 + }, + { + "phase": "foreground-input", + "elapsed_ms": 6642, + "cycle": 0 + }, + { + "phase": "zoom-75", + "elapsed_ms": 6791, + "cycle": 0 + }, + { + "phase": "switch-zoom", + "elapsed_ms": 6946, + "cycle": 0 + }, + { + "phase": "history-evicted", + "elapsed_ms": 7233, + "cycle": 0 + }, + { + "phase": "paste-cancel-pending", + "elapsed_ms": 7992, + "cycle": 0 + }, + { + "phase": "paste-cancelled", + "elapsed_ms": 8387, + "cycle": 0 + }, + { + "phase": "background-complete", + "elapsed_ms": 27312, + "cycle": 0 + }, + { + "phase": "cycle-six", + "elapsed_ms": 27632, + "cycle": 1 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 28930, + "cycle": 1 + }, + { + "phase": "cycle-six", + "elapsed_ms": 29255, + "cycle": 2 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 30560, + "cycle": 2 + }, + { + "phase": "cycle-six", + "elapsed_ms": 30907, + "cycle": 3 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 32144, + "cycle": 3 + }, + { + "phase": "cycle-six", + "elapsed_ms": 32466, + "cycle": 4 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 33763, + "cycle": 4 + }, + { + "phase": "cycle-six", + "elapsed_ms": 34105, + "cycle": 5 + }, + { + "phase": "cycle-eight", + "elapsed_ms": 35332, + "cycle": 5 + }, + { + "phase": "paste-close-pending", + "elapsed_ms": 35604, + "cycle": 5 + }, + { + "phase": "after-paste-close", + "elapsed_ms": 35808, + "cycle": 5 + } + ], + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ], + "raw_sha256": { + "cancel.bin": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "close.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "close.bin.before.json": "42d48c9b60c19059b0fd753b871521787ece886f5976aef804fe05baa7db1584", + "frame.bmp": "4443a91feb73693650c2a6f8ac4feb91fa9fe3fee9e1340086892c2257db1990", + "resource-observations.jsonl": "4a24473a1c2c48d3f96098f18dd8c99b16e1e33c30856900727c20af6cd4a832", + "resource-phases.jsonl": "4ddef626506c4410572d43f8daaa521487ce6121bc26fadca51c17a3ed73dc50", + "resource-summary.json": "a1c3b5a9b1c224c2ee9bd398ee72edecfc0046aacd464998ed68d20171dd5a59", + "sample.json": "d8abba7266e09bfbfab499957e620b1fd2e111c0b26aab6994baf0222108f3cf", + "sample.public.json": "2a0f6f9d77f7a858d372dcc0ad139b74b6e5e27550af87acb11f099df85986ed", + "sessions.json": "29bea82e4c709a55704b9dc6491e7a9c9a1cba08dfb42e4ef0564e765128aacf", + "validation.json": "1cc474b79845172d40b6544689ef261a331cdd7ebb4760d908c55c8d21fa9c41", + "workspace.layout": "9a96d62943f54727e7c50ce5785a571efbfa6cbece6248f6a6d144257c1e1d58" + } + } + ], + "internal_skips": [ + "setUpClass (test_candidate_compare.CandidateComparisonTests) ... skipped 'optional Alacritty binary is not built; core-candidate workflow runs these checks'", + "setUpClass (test_capability_matrix.CapabilityMatrixTests) ... skipped 'optional Alacritty binary is not built; core-candidate workflow runs these checks'", + "setUpClass (test_fuzz_matrix.FuzzMatrixTests) ... skipped 'optional Alacritty binary is not built; core-candidate workflow runs these checks'", + "setUpClass (test_real_app_matrix.RealApplicationMatrixTests) ... skipped 'optional real application capture dependencies are not built'", + "test_actual_system_copy_paste_and_shortcuts_twice (experiments.shell.test_actions.ActionWindowTest.test_actual_system_copy_paste_and_shortcuts_twice) ... skipped 'actual system Copy/Paste requires a disposable hosted VM'", + "test_suspended_target_is_reclaimed_if_job_assignment_fails (test_ui_r1.EvidenceBoundaryTests.test_suspended_target_is_reclaimed_if_job_assignment_fails) ... skipped 'opt-in pinned reference failure injection'", + "test_mouse_selection_to_real_system_clipboard (experiments.shell.test_shell.ShellTests.test_mouse_selection_to_real_system_clipboard) ... skipped 'system copy UI gate requires a disposable hosted VM'", + "test_system_clipboard_product_read_errors_cancel_and_close (experiments.shell.test_shell.ShellTests.test_system_clipboard_product_read_errors_cancel_and_close) ... skipped 'product clipboard read gate requires a disposable hosted VM'", + "test_system_clipboard_shortcut_to_window_confirmation_and_receiver (experiments.shell.test_shell.ShellTests.test_system_clipboard_shortcut_to_window_confirmation_and_receiver) ... skipped 'real system clipboard UI gate requires a disposable hosted VM'", + "test_real_system_copy_shortcuts_for_styled_fixture_twice (experiments.shell.test_selection_bytes.SelectionBytesWindowTest.test_real_system_copy_shortcuts_for_styled_fixture_twice) ... skipped 'system CF requires a disposable hosted VM'", + "test_real_system_copy_and_edit_context_twice (experiments.shell.test_selection_context.SelectionContextWindowTest.test_real_system_copy_and_edit_context_twice) ... skipped 'real CF/EDIT Copy requires a disposable hosted VM'", + "test_real_system_clipboard (experiments.shell.test_paste.PasteTests.test_real_system_clipboard) ... skipped 'Private window station OpenClipboard denied (5); system API gate remains unverified." + ], + "shell_unit_status": [ + { + "name": "test_clipboard_evidence_rejects_leaks_missing_phases_and_false_cleanup", + "status": "ok" + }, + { + "name": "test_hosted_guards_reject_missing_or_partial_identity_before_any_work", + "status": "ok" + }, + { + "name": "test_native_clipboard_mode_refuses_non_hosted_before_window_creation", + "status": "ok" + }, + { + "name": "test_actual_client_bounds_drive_geometry", + "status": "ok" + }, + { + "name": "test_native_copy_return_highlight_cf_and_target_are_independent_gates", + "status": "ok" + }, + { + "name": "test_occupied_product_copy_keeps_original_error_sentinel_target_and_strict_join", + "status": "ok" + }, + { + "name": "test_old_v3_is_readable_but_never_claims_the_new_copy_popup_gate", + "status": "ok" + }, + { + "name": "test_assignment_failure_reaps_gated_launcher_and_preserves_failure", + "status": "ok" + }, + { + "name": "test_close_during_continuous_output", + "status": "ok" + }, + { + "name": "test_close_while_resizing_continuous_output", + "status": "ERROR" + }, + { + "name": "test_commands_unicode_editing_interrupt_and_normal_exit", + "status": "ok" + }, + { + "name": "test_desktop_creation_failure_closes_job_and_keeps_evidence", + "status": "ok" + }, + { + "name": "test_find_continuous_output_partial_navigation_replace_cancel_and_target_close", + "status": "ok" + }, + { + "name": "test_find_real_edit_navigation_unicode_output_isolation_and_cancel", + "status": "ok" + }, + { + "name": "test_invalid_arguments_create_no_session", + "status": "ok" + }, + { + "name": "test_keyboard_message_path_to_real_console_bytes", + "status": "ok" + }, + { + "name": "test_launch_failure_is_visible_and_recoverable", + "status": "ok" + }, + { + "name": "test_local_shell_launch_working_directory_and_cleanup", + "status": "ok" + }, + { + "name": "test_main_and_bottom_sessions_focus_geometry_and_cleanup", + "status": "ERROR" + }, + { + "name": "test_main_split_background_restore_close_and_focus", + "status": "ok" + }, + { + "name": "test_mouse_selection_copy_model_zoom_sessions_and_eviction", + "status": "ok" + }, + { + "name": "test_mouse_selection_to_real_system_clipboard", + "status": "skipped" + }, + { + "name": "test_paste_confirmation_and_hidden_target_preserve_visible_focus", + "status": "ok" + }, + { + "name": "test_paste_control_eof_remains_failure_after_cleanup", + "status": "ok" + }, + { + "name": "test_paste_missing_go_remains_failure_after_cleanup", + "status": "ok" + }, + { + "name": "test_per_session_zoom_and_controlled_dpi_transitions", + "status": "ok" + }, + { + "name": "test_queues_apply_bounded_backpressure_and_reject_input", + "status": "ok" + }, + { + "name": "test_real_history_scroll_anchor_eviction_and_hidden_sessions", + "status": "ok" + }, + { + "name": "test_real_monitor_round_trip_preserves_workspace", + "status": "ok" + }, + { + "name": "test_resize_child_dimensions_and_interrupt", + "status": "ERROR" + }, + { + "name": "test_selection_autoscroll_with_short_and_tall_workspace", + "status": "ok" + }, + { + "name": "test_system_clipboard_product_read_errors_cancel_and_close", + "status": "skipped" + }, + { + "name": "test_system_clipboard_shortcut_to_window_confirmation_and_receiver", + "status": "skipped" + }, + { + "name": "test_watchdog_contains_real_shell_tree", + "status": "ok" + }, + { + "name": "test_workspace_rename_drag_and_fresh_process_restore", + "status": "ok" + }, + { + "name": "test_workspace_sessions_resize_and_cleanup", + "status": "ERROR" + }, + { + "name": "test_workspace_v1_empty_and_invalid_recovery", + "status": "ok" + }, + { + "name": "test_workspace_v2_empty_session_roundtrip", + "status": "ok" + } + ], + "shell_module_complete": false, + "shell_module_limitation": "CTest killed aggregate at original 180s; listed method statuses do not make the complete module pass", + "standalone_paste_runs": [ + { + "run": "paste-0", + "sample": { + "mode": "ui-paste", + "status": "passed", + "timed_out": false, + "exit_code": 0, + "job_after": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "desktop_gone": true + }, + "raw_sha256": { + "cancel.bin": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "close.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "close.bin.before.json": "42d48c9b60c19059b0fd753b871521787ece886f5976aef804fe05baa7db1584", + "confirmation.bmp": "2b63b1d079427584b5bb4be1739dc221535af2291ef0b062994c3e5903a7c6a8", + "frame.bmp": "6e947f9d4d723f67da816440e3182629b4c4321a9ccb5876c87a4fa2ea06b9ce", + "input.bin": "d4acd50607214fe6614644e1f5502d7f1043dc3e0d38ca87bbdaf66f12e527b2", + "paste-workflow.json": "6c971df3ae4711bcbf07ecf4f5336211e7da3256a0ffcf694c7a9b06574f464b", + "sample.json": "f14a5f6d1977734e06a599aeed4b01da1f9ff17e523953f8035cf4b1544726f1", + "workspace.layout": "4c271282879f651f87a060c325ff62287a9ddd86cda103c86855a3133b209b13" + }, + "workflow": { + "schema": "termforge-window-paste-v2", + "keyboard": { + "default_enter_accept": true, + "default_escape_cancel": true, + "tab_enter_accept": true + }, + "cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ] + } + }, + { + "run": "paste-1", + "sample": { + "mode": "ui-paste", + "status": "passed", + "timed_out": false, + "exit_code": 0, + "job_after": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "desktop_gone": true + }, + "raw_sha256": { + "cancel.bin": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "close.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "close.bin.before.json": "42d48c9b60c19059b0fd753b871521787ece886f5976aef804fe05baa7db1584", + "confirmation.bmp": "2b63b1d079427584b5bb4be1739dc221535af2291ef0b062994c3e5903a7c6a8", + "frame.bmp": "6e947f9d4d723f67da816440e3182629b4c4321a9ccb5876c87a4fa2ea06b9ce", + "input.bin": "d4acd50607214fe6614644e1f5502d7f1043dc3e0d38ca87bbdaf66f12e527b2", + "paste-workflow.json": "6c971df3ae4711bcbf07ecf4f5336211e7da3256a0ffcf694c7a9b06574f464b", + "sample.json": "d52d098a6e8be6cf6e415bee3659f3add3d6d9998e3ed1bc702ceeda70da81c1", + "workspace.layout": "4c271282879f651f87a060c325ff62287a9ddd86cda103c86855a3133b209b13" + }, + "workflow": { + "schema": "termforge-window-paste-v2", + "keyboard": { + "default_enter_accept": true, + "default_escape_cancel": true, + "tab_enter_accept": true + }, + "cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ] + } + }, + { + "run": "paste-control-eof", + "sample": { + "mode": "ui-paste-control-eof", + "status": "failed", + "timed_out": false, + "exit_code": 2, + "job_after": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "desktop_gone": true + }, + "raw_sha256": { + "cancel.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "confirmation.bmp": "2b63b1d079427584b5bb4be1739dc221535af2291ef0b062994c3e5903a7c6a8", + "input.bin": "d4acd50607214fe6614644e1f5502d7f1043dc3e0d38ca87bbdaf66f12e527b2", + "paste-control-failure.json": "b0fd2d17e5d7fa2d635cae3416293e4a2c1d11e240a48f829b5da4552b51d68c", + "sample.json": "2f9a3caf3ad18d64dd7d6f542c465c52db071c462dfbac552096ed01d127a1f5", + "workspace.layout": "a26afdba5f7a4c7a7056bab7530fc98f0866419b5d87087cd85142d4243b163c" + }, + "observed_failure": "paste control EOF rejected", + "control_failure": { + "eof_observed": true, + "timed_out": false, + "wait_finished": true, + "state": "failed", + "in_flight": 0, + "retained_capacity": 15 + }, + "receiver_bytes": 768 + }, + { + "run": "paste-control-timeout", + "sample": { + "mode": "ui-paste-control-timeout", + "status": "failed", + "timed_out": false, + "exit_code": 2, + "job_after": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "desktop_gone": true + }, + "raw_sha256": { + "cancel.bin": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c", + "cancel.bin.before.json": "a90746e62c8e815c76305806dfff25d55dd34d67f54308b0c865152693425663", + "confirmation.bmp": "2b63b1d079427584b5bb4be1739dc221535af2291ef0b062994c3e5903a7c6a8", + "input.bin": "d4acd50607214fe6614644e1f5502d7f1043dc3e0d38ca87bbdaf66f12e527b2", + "paste-control-failure.json": "e296e5fa38603e2d8818e9332d52248bb5a68c32c42c0593b84cfb311d473ec1", + "sample.json": "fbf107cba73ca6b72f1f78ae14cdbc94c3809b2cd5c919a3002c9a5c6828ee3c", + "workspace.layout": "a26afdba5f7a4c7a7056bab7530fc98f0866419b5d87087cd85142d4243b163c" + }, + "observed_failure": "paste control missing GO rejected", + "control_failure": { + "eof_observed": false, + "timed_out": true, + "wait_finished": true, + "state": "failed", + "in_flight": 0, + "retained_capacity": 15 + }, + "receiver_bytes": 768 + } + ], + "other_shell_failures": [ + { + "run": "resize-0", + "stage": 43, + "sample": { + "mode": "resize", + "status": "failed", + "timed_out": false, + "exit_code": 2, + "job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "desktop_gone": true + }, + "expected_exact_line": "TF_SIZE_100x28", + "observed_line": "TF_SIZE_100x28OW", + "local_raw_sample_sha256": "ac6f650ce3bd87b934755ca47072f65b689be5662ea3396cb7939c41e847d7da" + }, + { + "run": "resize-close-0", + "stage": 43, + "sample": { + "mode": "resize-close", + "status": "failed", + "timed_out": false, + "exit_code": 2, + "job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "desktop_gone": true + }, + "expected_exact_line": "TF_SIZE_100x28", + "observed_line": "TF_SIZE_100x28OW", + "local_raw_sample_sha256": "6489fa48ad6bb446e5c5395f3b133829d9f8852479f352f15926a126a8308c2f" + }, + { + "run": "main-2", + "stage": 7, + "sample": { + "mode": "ui-main", + "status": "failed", + "timed_out": false, + "exit_code": 2, + "job_after": { + "active": 0, + "total": 16, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 16, + "terminated": 0 + }, + "desktop_gone": true + }, + "expected_exact_line": null, + "observed_line": null, + "local_raw_sample_sha256": "8ca836c302b4bdf21a81dbfd1668381978d7c55c45fb05140bbcbad596712926" + }, + { + "run": "ui-2", + "stage": 52, + "sample": { + "mode": "ui", + "status": "failed", + "timed_out": false, + "exit_code": 2, + "job_after": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "desktop_gone": true + }, + "expected_exact_line": null, + "observed_line": null, + "local_raw_sample_sha256": "de287a2da956ccb3a75985ec690146d8097ca61da63517c9fd61f33b02bc99d4" + } + ] +} diff --git a/experiments/shell/results/2026-10-26-resize-order/validation.json b/experiments/shell/results/2026-10-26-resize-order/validation.json new file mode 100644 index 00000000..4bb81fc2 --- /dev/null +++ b/experiments/shell/results/2026-10-26-resize-order/validation.json @@ -0,0 +1,276 @@ +{ + "schema": 1, + "date": "2026-10-26", + "scope": "R51 bounded resize-order diagnosis; no behavior fix or R2 acceptance", + "source_commit": "386ebe725aab691b13a7cf962a09b56f858b0804", + "parent_commit": "3e5b96d0e0854b691b6dd41821ab10b6124b83eb", + "platform": "Windows-11-10.0.26200-SP0", + "source_git_blob_sha1": { + "CMakeLists.txt": "2ce3ac63485b81a7140cdb87c3f32c7f24270c82", + "experiments/core/candidate_resize_replay.cpp": "7c8c58240e27f23cda1e1a24d10037f2e25a8cc6", + "experiments/core/candidate_terminal.cpp": "cc12246ee7e94382bf95835cd45e6ef6b8949a19", + "experiments/core/candidate_terminal.hpp": "55de3176ec220b2e404cc7e108f6d0063af3c004", + "experiments/shell/resize.hpp": "20843d154fffdd982e1a9221984245eb0d4cc654", + "experiments/shell/resize_trace.hpp": "9feeef78fa42eee3cbbc60d1ab94ccdef7fc539b", + "experiments/shell/resize_trace.py": "1f182627f341494b2ca07fe02f457596900abd06", + "experiments/shell/test_resize_trace.py": "29faf4557592932d9c4f2cbc543fa043d103fb4b", + "experiments/shell/shell.cpp": "e440a83a98f9e86093cb82bd30f5ffc28e9f8299", + "experiments/shell/size_client.cpp": "251220197098b1b654b7554b0a727e4a2e85d7a9", + "experiments/conpty/backend.hpp": "3195dceaefa166b1251839108d29c5fd034aa2fb", + "experiments/conpty/session.hpp": "d44f36661594a5b76b62d1ecb95cf166db22e90a", + "experiments/candidates/alacritty/Cargo.lock": "6501189a98bfe0610ebcb5e3c31d3abc2ae3f132" + }, + "source_raw_sha256": { + "CMakeLists.txt": "613d9a5a3285af26bc3cdce151ce87968f0795a5f13ab409e87a9f81f55efa06", + "experiments/core/candidate_resize_replay.cpp": "dd3f38062312592e39d6e63f63bebc5839c16efcf5b53b75127f2497b34714d8", + "experiments/core/candidate_terminal.cpp": "0d0eaabe5ef896aa7b263c8151622f579f37c421bf9473fc3d69ada010a64e61", + "experiments/core/candidate_terminal.hpp": "328411c1af6ddb509623ded8fe9c814cb6ac56cd502a2952e8cedd0a3bb2d997", + "experiments/shell/resize.hpp": "37d22ba31fc3fee8004a3dd555f53fa55cb398057b6576f5a2d9b5403e2f5cd0", + "experiments/shell/resize_trace.hpp": "a33f06302c9573b71d2432a4e962dc79d3e5916b69bfba210599f071a3cd6853", + "experiments/shell/resize_trace.py": "ffc6b0924ce5777ce3695e869179f479afa4d02e483c0547158e1f2dea2b34a0", + "experiments/shell/test_resize_trace.py": "31956a0aca0fdee2a8ea6bd26911bb1f3a4ded4233a485a4d04806aae31cfac7", + "experiments/shell/shell.cpp": "872f4d0c5f4ca4f38f074761d1ac5f3ac728fcc732ef5058c98ccfa8a4384b84", + "experiments/shell/size_client.cpp": "cb11661bec9551053eec0dbb474bce2ac899a06ee2e50830a370af4816df39f4", + "experiments/conpty/backend.hpp": "5ee3ab95dc4b9aefce23ff7900cda2ecdd9cd09d1b1044074de2f5e572c31489", + "experiments/conpty/session.hpp": "6945e6ffba1d61e66266f867d3cd124eb63c39da37e27662a5eaf544f60ed96b", + "experiments/candidates/alacritty/Cargo.lock": "896c6e60909d55d61fb26d277b1a98daf9245e8aee811caff37fc3e9d06ca627" + }, + "binaries_sha256": { + "termforge_shell.exe": "7c06cbf1b605e17aa2d70914565370088111dc6e48257a8e120e883f77c860a0", + "shell_test_launcher.exe": "05a18755d869de52608c32518291281161446ca70c794dde65f9a50f06ecaa97", + "shell_size_client.exe": "df1c8cbdc0ea13d583f4b616bba0e6b8df10c492afdcfba1308231912084905d", + "candidate_resize_replay.exe": "d17f350c4a673fa73cf806c2df734fe282ae005e0b671b03700d45f48a0c9a54" + }, + "rust_library_sha256": "e1897a65b7a06a174ac0dbc89c3c54a01672d1373037c27c8becdc329a6f27eb", + "candidate": "0.26.1-dev+termforge.4", + "backend": "reviewed-side-by-side-1.25.260930003", + "creation_flags": 24, + "native_deadline_seconds": 25, + "outer_deadline_seconds": 40, + "replay_deadline_seconds": 10, + "instrumentation": { + "opt_in": true, + "event_limit": 1024, + "transport_limit_bytes": 131072, + "observer_order_only": true + }, + "runs": [ + { + "index": 0, + "scenario": "resize", + "stage": 43, + "verdict": "known_red_reproduced", + "process_exit": 2, + "outer_timed_out": false, + "event_overflow": false, + "transport_overflow": false, + "captured_bytes": 8412, + "replay_steps": 29, + "replay_exit": 0, + "replay_full_screen_equals_live_failure": true, + "failing_line": { + "row_zero_based": 10, + "expected": "TF_SIZE_100x28", + "actual": "TF_SIZE_100x28OW" + }, + "actual_host_resize_calls": [ + { + "rows": 12, + "columns": 60, + "generation": 1 + }, + { + "rows": 30, + "columns": 90, + "generation": 2 + }, + { + "rows": 10, + "columns": 50, + "generation": 3 + }, + { + "rows": 28, + "columns": 100, + "generation": 4 + } + ], + "outer_job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "outer_job_after_cleanup": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "desktop_gone": true, + "private_artifact_sha256": { + "sample.json": "f8a340201bd2628ae48fcf3b4fece393ea9f5d210cc2bbef19c63a4343683d32", + "resize-trace.json": "204bdb643cdc1863b28a734ffa2b9ce5702d659021e262ed70ac030cfd4057c1", + "resize-trace.transport.bin": "38d09be70c1f18d512be5beb3966cea922423bf45d2aaee7c7bc56a61678aaf8" + }, + "private_replay_sha256": { + "plan.txt": "6f9d840e1d93847be1babf7cd36b65897f8feb246dbd731d26631fd300f86d1b", + "states.jsonl": "8bf1f05bf4304934f806e722c2e8516714669f11dd59c798519a8ceeccc8baac", + "summary.json": "76ad3cdaa39387f64a63d2dc77fbbde6bdcfefa85ff72b940c453b45666991c4" + } + }, + { + "index": 1, + "scenario": "resize", + "stage": 43, + "verdict": "known_red_reproduced", + "process_exit": 2, + "outer_timed_out": false, + "event_overflow": false, + "transport_overflow": false, + "captured_bytes": 8871, + "replay_steps": 22, + "replay_exit": 0, + "replay_full_screen_equals_live_failure": true, + "failing_line": { + "row_zero_based": 10, + "expected": "TF_SIZE_100x28", + "actual": "TF_SIZE_100x28OW" + }, + "actual_host_resize_calls": [ + { + "rows": 12, + "columns": 60, + "generation": 1 + }, + { + "rows": 30, + "columns": 90, + "generation": 2 + }, + { + "rows": 10, + "columns": 50, + "generation": 3 + }, + { + "rows": 28, + "columns": 100, + "generation": 4 + } + ], + "outer_job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "outer_job_after_cleanup": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "desktop_gone": true, + "private_artifact_sha256": { + "sample.json": "be125db57708bd7988aac013c90e6510f9fb2078ce195bd68bc696767f1d9f98", + "resize-trace.json": "02d915b8c3f560039ab367393f77223a8ad41baa5a54613eef9db5e4bc5144a0", + "resize-trace.transport.bin": "7808e2e2acfd47a79f8e1f5fe4c2f90aaf4687be164ad537f081f30ee0ca8dc5" + }, + "private_replay_sha256": { + "plan.txt": "f257a0af38e6a728e277d5f35d1857a26924e3fb2d224377a3098cae80287409", + "states.jsonl": "031084cab09d80bd9bee69bac7d2ee96583fa2fe4fc34f72ccb27fe94e7df9ea", + "summary.json": "71db0675197bc34fc7aef126237a196f259a968970739120173e1b1bea69a8a2" + } + }, + { + "index": 2, + "scenario": "resize", + "stage": 43, + "verdict": "known_red_reproduced", + "process_exit": 2, + "outer_timed_out": false, + "event_overflow": false, + "transport_overflow": false, + "captured_bytes": 7237, + "replay_steps": 29, + "replay_exit": 0, + "replay_full_screen_equals_live_failure": true, + "failing_line": { + "row_zero_based": 10, + "expected": "TF_SIZE_100x28", + "actual": "TF_SIZE_100x28OW" + }, + "actual_host_resize_calls": [ + { + "rows": 12, + "columns": 60, + "generation": 1 + }, + { + "rows": 30, + "columns": 90, + "generation": 2 + }, + { + "rows": 10, + "columns": 50, + "generation": 3 + }, + { + "rows": 28, + "columns": 100, + "generation": 4 + } + ], + "outer_job_after": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "outer_job_after_cleanup": { + "active": 0, + "total": 8, + "terminated": 0 + }, + "desktop_gone": true, + "private_artifact_sha256": { + "sample.json": "9418216aed5386bdace578e1031b533031bdb22b2f458af57e95f1d2516c500e", + "resize-trace.json": "776240939667bec7bd071d1a1f7d447a3b2474891a6e7fc725f48561bab9581d", + "resize-trace.transport.bin": "2a07279ca1df863f4ef9506d1e1ddf4cdd307d6a079a5800e26e1581146785b1" + }, + "private_replay_sha256": { + "plan.txt": "41bd8ed8c07abe1062f2b8a3f7628ed54819351b3657178b9c3d33551bf62a3b", + "states.jsonl": "78d7d10747d7019f9c50fee747de5990207863ffdcb7b3cfd09900c631438ec2", + "summary.json": "7ea79948a04acf18c4b05f8a671a8c91e1e090175bb7b079808d30824d47ae8b" + } + } + ], + "additional_validation": { + "pure_trace_tests_passed": 2, + "negative_capture_cases": 10, + "normal_mode_with_trace_environment": "passed_without_trace_files", + "normal_mode_job_after_cleanup": { + "active": 0, + "total": 6, + "terminated": 0 + } + }, + "observations": [ + "All three original resize runs retain the stage43 failure, and all four host API calls occurred; coalescing alone cannot explain these samples.", + "Replaying exactly the observed UI parser resizes and feed partitions reproduces the full live failed screen, not only the failing marker.", + "The candidate grows the visible buffer by pulling history into it. In these samples the later host stream does not repaint the whole resized buffer, and its cursor-addressed echo and size output overwrite different existing rows.", + "The native size helper output contains the independent TF_SIZE_100x28 result; no CHAR_INFO snapshot at this failure boundary was captured.", + "Pinned host source already documents divergent host/terminal reflow and lazy DSR CPR synchronization at console-info queries. This is relevant source evidence, not proof of an exhaustive root cause or a completed fix." + ], + "primary_sources": [ + "https://github.com/microsoft/terminal/blob/dc8ae365847d41f62d1ebca93815bb00959bc12f/src/host/screenInfo.cpp#L1412", + "https://github.com/microsoft/terminal/issues/18725", + "https://github.com/microsoft/terminal/pull/19535" + ], + "limitations": [ + "Opt-in observers alter scheduling. The uninstrumented joint baseline separately has both a red and a green; neither is overwritten by these results.", + "The scenario code and native deadline are unchanged, but the absolute synthetic helper launch path follows this isolated build directory; its transport is not byte-identical to the root joint-baseline capture.", + "This is a fixed diagnostic batch of three, not a pass/failure-rate estimate or performance measurement.", + "No native/transport/terminal synchronization fix has been applied. R51 remains open.", + "Raw transport, full screen states, frame and desktop identity remain local; this record publishes hashes and synthetic marker metadata only.", + "No input, oracle, load, native deadline or history/reflow feature was weakened. API return is not a host completion fence.", + "Default-core, system-backend, full R1/R2, native buffer contents, actual presentation and WindTerm parity are not validated by this batch." + ] +} diff --git a/experiments/shell/results/2026-10-26-resize-replay-guards/validation.json b/experiments/shell/results/2026-10-26-resize-replay-guards/validation.json new file mode 100644 index 00000000..bf6289f2 --- /dev/null +++ b/experiments/shell/results/2026-10-26-resize-replay-guards/validation.json @@ -0,0 +1,209 @@ +{ + "schema": "termforge-resize-replay-guard-validation-v1", + "source_base_commit": "3cdfda92c40666e214006df86f36de8c40cf1cda", + "source_identity": "source_sha256 identifies reviewed checkout bytes before this commit; Git blobs can differ by checkout newline normalization", + "source_sha256": { + "CMakeLists.txt": "aeb3802d438c96b160ef8185969b39416231b91c044fda4695a7f56f650d9f9e", + "experiments/core/candidate_resize_replay.cpp": "e5c2e29b29a63edc0b5d3671f0fd3e9cdc1df9567088c4242855206053439081", + "experiments/core/test_candidate_resize_replay.py": "eab1fefd6cbbc7eb9eda6271792af12704f8d03b46d99690312d83a46b88574e", + "experiments/shell/resize_trace.py": "e4b23211ae1b1f1a1435de744558ad04de053872db136f67a22dac476a8ec5cd", + "experiments/shell/test_resize_trace.py": "5438f9aeef805f90b789a1a881fa974b525e000f14365cab54b4507479dd6d6d", + "experiments/shell/README.md": "a218d43988f8f9e8cbcc4ce9d314e3a14d006e4eab91ac10c46b9ce3728c41b1" + }, + "binaries_sha256": { + "before": "d17f350c4a673fa73cf806c2df734fe282ae005e0b671b03700d45f48a0c9a54", + "after": "e859d743a54ae13177bdf0fba7834a12a1029b5de760cb194fb7929fe0809e05" + }, + "scope": "Diagnostic parser/schema validation only; no terminal, transport, worker or oracle behavior change", + "actual_exe_red_green": [ + { + "trailing_record": "R 12", + "before_exit": 0, + "after_exit": 1 + }, + { + "trailing_record": "F 3", + "before_exit": 0, + "after_exit": 1 + }, + { + "trailing_record": "X", + "before_exit": 0, + "after_exit": 1 + }, + { + "trailing_record": "R 12 999999999999999999999999999999999", + "before_exit": 0, + "after_exit": 1 + }, + { + "trailing_record": "F 3 999999999999999999999999999999999", + "before_exit": 0, + "after_exit": 1 + } + ], + "original_trace_mutation_red_green": [ + { + "capture": 0, + "case": "host-negative-generation", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 0, + "case": "host-end-wrong-generation", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 0, + "case": "host-zero-columns", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 0, + "case": "feed-wrong-current-grid", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 0, + "case": "qpc-regresses", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 1, + "case": "host-negative-generation", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 1, + "case": "host-end-wrong-generation", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 1, + "case": "host-zero-columns", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 1, + "case": "feed-wrong-current-grid", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 1, + "case": "qpc-regresses", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 2, + "case": "host-negative-generation", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 2, + "case": "host-end-wrong-generation", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 2, + "case": "host-zero-columns", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 2, + "case": "feed-wrong-current-grid", + "before_accepted": true, + "after_rejected": true + }, + { + "capture": 2, + "case": "qpc-regresses", + "before_accepted": true, + "after_rejected": true + } + ], + "original_offline_replays": [ + { + "index": 0, + "trace_sha256": "204bdb643cdc1863b28a734ffa2b9ce5702d659021e262ed70ac030cfd4057c1", + "transport_sha256": "38d09be70c1f18d512be5beb3966cea922423bf45d2aaee7c7bc56a61678aaf8", + "plan_sha256": "6f9d840e1d93847be1babf7cd36b65897f8feb246dbd731d26631fd300f86d1b", + "states_sha256": "8bf1f05bf4304934f806e722c2e8516714669f11dd59c798519a8ceeccc8baac", + "previous_states_sha256": "8bf1f05bf4304934f806e722c2e8516714669f11dd59c798519a8ceeccc8baac", + "replay_exit": 0, + "steps": 29, + "original_plan_unchanged": true, + "full_states_byte_identical": true, + "captured_bytes": 8412 + }, + { + "index": 1, + "trace_sha256": "02d915b8c3f560039ab367393f77223a8ad41baa5a54613eef9db5e4bc5144a0", + "transport_sha256": "7808e2e2acfd47a79f8e1f5fe4c2f90aaf4687be164ad537f081f30ee0ca8dc5", + "plan_sha256": "f257a0af38e6a728e277d5f35d1857a26924e3fb2d224377a3098cae80287409", + "states_sha256": "031084cab09d80bd9bee69bac7d2ee96583fa2fe4fc34f72ccb27fe94e7df9ea", + "previous_states_sha256": "031084cab09d80bd9bee69bac7d2ee96583fa2fe4fc34f72ccb27fe94e7df9ea", + "replay_exit": 0, + "steps": 22, + "original_plan_unchanged": true, + "full_states_byte_identical": true, + "captured_bytes": 8871 + }, + { + "index": 2, + "trace_sha256": "776240939667bec7bd071d1a1f7d447a3b2474891a6e7fc725f48561bab9581d", + "transport_sha256": "2a07279ca1df863f4ef9506d1e1ddf4cdd307d6a079a5800e26e1581146785b1", + "plan_sha256": "41bd8ed8c07abe1062f2b8a3f7628ed54819351b3657178b9c3d33551bf62a3b", + "states_sha256": "78d7d10747d7019f9c50fee747de5990207863ffdcb7b3cfd09900c631438ec2", + "previous_states_sha256": "78d7d10747d7019f9c50fee747de5990207863ffdcb7b3cfd09900c631438ec2", + "replay_exit": 0, + "steps": 29, + "original_plan_unchanged": true, + "full_states_byte_identical": true, + "captured_bytes": 7237 + } + ], + "focused_ctest": { + "tests": 2, + "passed": 2, + "failures": 0, + "internal_unit_tests": 8, + "log_sha256": "a90b9931d34986bcb980ae7da386b29c77d27d275883020cabddd5a155e90349" + }, + "before_test_logs": { + "exe_sha256": "d33fd8c72a470e740730424bf8526890c82715a7049320b788a228500098d7ce", + "trace_sha256": "7fa1e64b5d2a1ed4460219c44374884ec26fcb2a29b4847f00e686d16ae8d41a" + }, + "original_proof_sha256": "74769899db987da8842f2b37db5a78e5088eb413691426900c06fb5c0eae0c47", + "supported_observation_orders": [ + "host begin/end before the matching request observation", + "coalesced requests without host calls", + "in-flight older worker calls interleaved with later UI parser resizes", + "equal QPC values in mutex observation order" + ], + "deadlines": { + "exe_seconds": 10, + "original_live_native_seconds": 25, + "original_live_outer_seconds": 40 + }, + "limitations": [ + "No new live GUI or native run; original native failure and proof unchanged", + "Offline replay does not establish host completion, actual presentation or timing", + "Host request mapping validates observed metadata; no synchronization fence is inferred", + "Raw original trace, transport and complete states remain private" + ], + "r51_behavior_fixed": false, + "r2_accepted": false +} diff --git a/experiments/shell/results/2026-10-26-ui-paste-fence/validation.json b/experiments/shell/results/2026-10-26-ui-paste-fence/validation.json new file mode 100644 index 00000000..3e990195 --- /dev/null +++ b/experiments/shell/results/2026-10-26-ui-paste-fence/validation.json @@ -0,0 +1,689 @@ +{ + "schema": "termforge-ui-paste-fence-validation-v1", + "date": "2026-10-26", + "issue": 53, + "status": "partial_issue_remains_open", + "source_commit": "a15eb7f67315fb53c9d66b9c5a4424e13511a311", + "source_tree": "b2a2d7b5b5e1f74de1be4aa3ccb8b692cb4c9fec", + "source_files": { + "CMakeLists.txt": { + "git_blob": "4f29e60930e0ce5f5aed359a6ee94c2b178dbdd2", + "checkout_sha256": "fa0bc11bd7821cab83dc0076d2d1fd305410febca7ccba96dd14c7bfa4b39fcf" + }, + "experiments/shell/paste_checks.py": { + "git_blob": "3de07a7a49726e1365daba541054ae94ad609e7e", + "checkout_sha256": "3e565ed0c297c94573589230bcff57c5e6f4a043d5b63ac605a79cd46a0ae18e" + }, + "experiments/shell/paste_scenario_state.hpp": { + "git_blob": "77db7d43dc22777596e4597ec4081078acd994e6", + "checkout_sha256": "52fdef856fe365b3a39aa27360d31c9d88979366b39de7d618c49942b0fc5433" + }, + "experiments/shell/sender_fence.hpp": { + "git_blob": "56e092f0397d6052e278b464cfc08add2cbee8ec", + "checkout_sha256": "fefdd87fff5840b7a0e03f1c682a2ca626249b48536b483fac8a12e8cf882987" + }, + "experiments/shell/sender_fence_pipe.hpp": { + "git_blob": "aca1566dfd9224c9c4e798c4d7435aced680c3b1", + "checkout_sha256": "ee3b862a6496b060ad2312c234221570ac081ebbf2e24cfccbec3ced57bdeb03" + }, + "experiments/shell/sender_fence_pipe_test.cpp": { + "git_blob": "64580c0c831eab4e52ded57a36bfd7d2b07c5368", + "checkout_sha256": "424c5645246dec064bfc76129553a273f1ae8c3cb0104be91b19269c69b8a59a" + }, + "experiments/shell/shell.cpp": { + "git_blob": "cd112860aa377857cdbd749cc2ef44973c80360b", + "checkout_sha256": "b369968152bbff107c699181d4e23f271e62a5732f0c41793159b3efc3609321" + }, + "experiments/shell/test_paste_checks.py": { + "git_blob": "0c53e0532c74bb5e936389f24eb002c818489894", + "checkout_sha256": "fdb2a4ceff178d07e18facaa8e30226670d1b0c4a4c0b69b2fd21fd2f0327d1c" + }, + "experiments/shell/test_shell.py": { + "git_blob": "66512ac1099cf477cac8f26f225b18c301c1d3d8", + "checkout_sha256": "a6b63c1754b0e0dc1cc01863891f4c7c9d989f818d351838a8cfe295edaf811c" + }, + "experiments/shell/test_workflow_sessions.py": { + "git_blob": "de6cef3be06725d606b91ae68eb1cc45eb744fb5", + "checkout_sha256": "6c968a443c46b30e75a929f880228e6a23bf2b92d9221bbbf18816933babd6e7" + }, + "experiments/shell/workflow_sessions_checks.py": { + "git_blob": "8369b412abe893393bf316430ccedd22e9eb75ba", + "checkout_sha256": "b976d3504837eef57ff13319daed254870727741f36f265412a6b14b4cb3faae" + }, + "experiments/shell/workspace.hpp": { + "git_blob": "7d4fa607b4878add7e0b5c411c711cc3e60abe3d", + "checkout_sha256": "5669a13701b2fe60e8bd567a122edb970bdc4aadcb98ceb3927905f0c000275e" + }, + "experiments/shell/workspace_paste_scenario.hpp": { + "git_blob": "2a22a036696ecf3ce6d2ff2a0b7aed3decad49b4", + "checkout_sha256": "d55b7568f345373784c288f496e97e0b3bfc336c47f4b59378d4c51409e0b128" + }, + "experiments/shell/workspace_workflow_scenario.hpp": { + "git_blob": "029ef4bcf9393be4ab6194bbbe95d145e98ff70b", + "checkout_sha256": "467571556440f4e89305bc1261d389bb8f24ba84f607b8cd36b8078a58314369" + } + }, + "environment": { + "os": "Windows-11-10.0.26200-SP0", + "architecture": "AMD64", + "compiler": "MSVC 19.42.34433", + "configuration": "Release x64", + "candidate": "alacritty_terminal 0.26.1-dev+termforge.4", + "backend": "Microsoft.Windows.Console.ConPTY 1.25.260930003", + "glyph_width_flags": 24 + }, + "binaries": { + "termforge_shell.exe": "0a1fee632cb640dff4599fdcca277c959038d31ec88bfed8cff893b3271d26a6", + "shell_test_launcher.exe": "dbde4249dc08c7df80120398ffd252aa5e4958e4ef640cc161ea4c2d28b9f291", + "shell_input_client.exe": "850c82fb8bb58de8170bf096cc6dd4f8ba34d9ba11dbd2addc41508cddc31d8c", + "shell_text_client.exe": "9485b03424e421a4018596cc9487e7feeb33c26d30820985aa45843fdcf315d9", + "sender_fence_test.exe": "ab4af3b0f148f6e6377e70c98936c6c34d0be0d3cee4b17b3f8554c39b2d3e52", + "sender_fence_pipe_test.exe": "6a94ac84631434a81ae1098932813d7ceeb81f2bb33a2e4b2456834bd8972e92", + "conpty-backend/conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "conpty-backend/OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "request": { + "utf8_bytes": 3000000, + "utf16_units": 1000000, + "literal": "U+6C49 repeated 1000000", + "sha256": "0ba67970de9941c1bc33e97869b116a0e129c8a859e3b4c0087e20c51f6a404b", + "minimum_sent": 16384, + "receiver_checkpoint_bytes": 768 + }, + "deadlines_ms": { + "standalone_ui": 35000, + "standalone_outer": 40000, + "receiver_gate": 15000, + "eight_session_ui": 70000, + "workflow_fixture": 55000, + "missing_go_negative_only": 2000 + }, + "controls": [ + { + "case": "paste-0", + "sample_sha256": "aa28ff969ef47debda3f78e9d5eeb2e414492e30ecea5d354cfbb2d7857997a9", + "status": "passed", + "exit_code": 0, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "desktop_gone": true, + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ], + "captures": { + "cancel.bin": { + "bytes": 18414, + "sha256": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6" + }, + "close.bin": { + "bytes": 768, + "sha256": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c" + }, + "input.bin": { + "bytes": 25021, + "sha256": "d4acd50607214fe6614644e1f5502d7f1043dc3e0d38ca87bbdaf66f12e527b2" + } + } + }, + { + "case": "paste-1", + "sample_sha256": "d769fff8294f3b933520464be2a710863cbc1c2cbc4d48b09ce04fdb09fc9d27", + "status": "passed", + "exit_code": 0, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "desktop_gone": true, + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ], + "captures": { + "cancel.bin": { + "bytes": 18414, + "sha256": "bcc3593351da0137a27071da66416a7cbe02ca5605f49b14e5a6c85ebac894a6" + }, + "close.bin": { + "bytes": 768, + "sha256": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c" + }, + "input.bin": { + "bytes": 25021, + "sha256": "d4acd50607214fe6614644e1f5502d7f1043dc3e0d38ca87bbdaf66f12e527b2" + } + } + }, + { + "case": "paste-control-eof", + "sample_sha256": "577e1a5125a10f42ba176cafcc8bd4b72d92271be33ae8ec6b4f0e1ba61a71dc", + "status": "failed", + "exit_code": 2, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "desktop_gone": true, + "expected_failure": { + "eof_observed": true, + "timed_out": false, + "wait_finished": true, + "state": "failed", + "in_flight": 0, + "retained_capacity": 15 + }, + "captures": { + "cancel.bin": { + "bytes": 768, + "sha256": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c" + }, + "input.bin": { + "bytes": 25021, + "sha256": "d4acd50607214fe6614644e1f5502d7f1043dc3e0d38ca87bbdaf66f12e527b2" + } + } + }, + { + "case": "paste-control-timeout", + "sample_sha256": "2a5b36750f15d093e34ad81a29363e33ea84c4ea21e2798af96dc5702960e19b", + "status": "failed", + "exit_code": 2, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "desktop_gone": true, + "expected_failure": { + "eof_observed": false, + "timed_out": true, + "wait_finished": true, + "state": "failed", + "in_flight": 0, + "retained_capacity": 15 + }, + "captures": { + "cancel.bin": { + "bytes": 768, + "sha256": "61da7e55d911305206ae68ac162a0a73d2fc1433efae5f0cfda2b9d0c9b5363c" + }, + "input.bin": { + "bytes": 25021, + "sha256": "d4acd50607214fe6614644e1f5502d7f1043dc3e0d38ca87bbdaf66f12e527b2" + } + } + } + ], + "eight_session_runs": [ + { + "source_commit": "62226af2d1f636cef1920ac0ef9998935a7dd243", + "resource_sampling": true, + "diagnostic_only": false, + "sample_sha256": "93be8809499aa33081e411df03e20c879d63e4c4bf4940f85fcab8e1d992059f", + "sessions_sha256": "063739d6e17ff15a2861fd13f247dffd40fe7d1f92a4835e040f9a04b0d61106", + "exit_code": 2, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "failure": "workflow sessions scenario timeout at stage 45", + "foreground_fixture_failure": "workflow control deadline expired", + "foreground_fixture_sha256": "48a40aec11a95182dd5a55b5f7c3e5eceb58b093f36ad02674aae6ba103325d5", + "phases": [ + { + "phase": "paste-cancel-pending", + "elapsed_ms": 14371 + }, + { + "phase": "paste-cancelled", + "elapsed_ms": 15111 + }, + { + "phase": "background-complete", + "elapsed_ms": 51158 + }, + { + "phase": "paste-close-pending", + "elapsed_ms": 61806 + } + ], + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "stopped", + "wrong_generation_rejected": true + } + } + ], + "wake_evidence": "legacy_exit_is_final_state_not_actual_wake" + }, + { + "source_commit": "62226af2d1f636cef1920ac0ef9998935a7dd243", + "resource_sampling": true, + "diagnostic_only": false, + "sample_sha256": "6bcd382eca3ec3e09bdd3ab59f1aba530e1fe9670fb3423d9adda2a941920635", + "sessions_sha256": "dd918bc9fc472bfa6ff8bd851fc13467143185f740a9d5bca6348e5492c8a26a", + "exit_code": 2, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "failure": "workflow sessions scenario timeout at stage 45", + "foreground_fixture_failure": "workflow control deadline expired", + "foreground_fixture_sha256": "48a40aec11a95182dd5a55b5f7c3e5eceb58b093f36ad02674aae6ba103325d5", + "phases": [ + { + "phase": "paste-cancel-pending", + "elapsed_ms": 14766 + }, + { + "phase": "paste-cancelled", + "elapsed_ms": 15730 + }, + { + "phase": "background-complete", + "elapsed_ms": 52546 + }, + { + "phase": "paste-close-pending", + "elapsed_ms": 63096 + } + ], + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "stopped", + "wrong_generation_rejected": true + } + } + ], + "wake_evidence": "legacy_exit_is_final_state_not_actual_wake" + }, + { + "source_commit": "a15eb7f67315fb53c9d66b9c5a4424e13511a311", + "resource_sampling": false, + "diagnostic_only": true, + "sample_sha256": "e762d5d0caf2d016959572ec2c60272ba791a7d994b0ff006627406776d3250d", + "sessions_sha256": "5762dc068ce78233fdc40d06ebfa28734d263f0b4557c258f0146147fd6b25ef", + "exit_code": 2, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "failure": "workflow sessions scenario timeout at stage 45", + "foreground_fixture_failure": "workflow control deadline expired", + "foreground_fixture_sha256": "48a40aec11a95182dd5a55b5f7c3e5eceb58b093f36ad02674aae6ba103325d5", + "phases": [ + { + "phase": "paste-cancel-pending", + "elapsed_ms": 14071 + }, + { + "phase": "paste-cancelled", + "elapsed_ms": 14785 + }, + { + "phase": "background-complete", + "elapsed_ms": 50262 + }, + { + "phase": "paste-close-pending", + "elapsed_ms": 60948 + } + ], + "paste_cases": [ + { + "name": "cancel", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 18414, + "flood_observed": true, + "fence": { + "generation": 1, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "cancelled", + "wrong_generation_rejected": true + } + }, + { + "name": "close", + "target": 1, + "total": 3000000, + "before_sent": 17391, + "before_accepted": 18414, + "accepted": 18414, + "sent": 18414, + "in_flight": 0, + "retained_capacity": 15, + "state": "cancelled", + "checkpoint_bytes": 768, + "received": 768, + "flood_observed": true, + "fence": { + "generation": 2, + "held": true, + "owned_bytes": 1023, + "wait_finished": true, + "other_responsive": true, + "exit": "cancelled", + "final_state": "stopped", + "wrong_generation_rejected": true + } + } + ], + "wake_evidence": "immutable_wait_exit_and_final_state" + } + ], + "original_red": { + "source_commit": "abe5a850343cdeb96606961a7d1bfc062fc52d2a", + "binaries": { + "build\\candidate\\bin\\Release\\termforge_shell.exe": { + "sha256": "62d57a551746f6c9379fba73af87230f1cb1edc9b74de9bc8136a38441fd33c6", + "bytes": 1741312 + }, + "build\\candidate\\bin\\Release\\conpty-backend\\manifest.json": { + "sha256": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439", + "bytes": 1467 + }, + "build\\candidate\\bin\\Release\\conpty-backend\\conpty.dll": { + "sha256": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "bytes": 119608 + }, + "build\\candidate\\bin\\Release\\conpty-backend\\OpenConsole.exe": { + "sha256": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586", + "bytes": 1089376 + } + }, + "samples": [ + { + "sample_sha256": "27341653ab0979ffc5a6feb9904a9abaa146bc37a956780c5a4b63b33d92ba01", + "exit_code": 2, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "desktop_gone": true, + "failure": "paste action did not occur during a partial transfer with consumed bytes and output flood; checkpoint=768 flood=1 sent=3000000 accepted=3000000 total=3000000 state=3" + }, + { + "sample_sha256": "16213745702fcc944287229eafc9c4029de21dd4c2a4651f244eb983e93848ff", + "exit_code": 2, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "desktop_gone": true, + "failure": "cancel transfer completed before receiver gate" + } + ] + }, + "fence_without_ui_notify": { + "base": "abe5a850343cdeb96606961a7d1bfc062fc52d2a", + "patch_sha256": "fef9501e555c5ba103da297e320df903cbd100f4864e9847e38844aa1f410cd0", + "exe_sha256": "6f5c95e32ff688768ac02383735a4864b5acf84f38b49faeaab04392a8f3ba03", + "status": "failed at original 35000ms UI deadline; original one-line UI cancel changed after this run" + }, + "full_suite": { + "source_commit": "62226af2d1f636cef1920ac0ef9998935a7dd243", + "ctest_passed": 52, + "ctest_total": 55, + "failed": [ + "candidate_shell_tui: Vim absent from process PATH", + "workflow_sessions: stage45, original B fixture deadline expired", + "shell: 180s CTest aggregate deadline; resize stage43 and workspace main7/ui52 failures retained" + ], + "log_sha256": "4295f3d895b289cb326b182fa3f1d30e09ea521d096ea95c768cb49aff746c07" + }, + "reviewed_targeted_checks": { + "ctest": [ + "sender_fence", + "sender_fence_pipe", + "paste_fence_evidence" + ], + "ctest_passed": 3, + "ui_positive_processes": 2, + "ui_expected_failure_processes": 2, + "go_ack": "actual anonymous Win32 pipes with same-process endpoints; positive GO uses unit-level payload simulation only", + "pipe_capacity": "actual inbound server buffer checked against whole128B request/192B reply budgets; saturation8+8 and ninthrejection tested" + }, + "limitations": [ + "Full eight-session acceptance still failed; issue53 and parent47 remain open.", + "Candidate/system and default/system have no success claimed from these official-backend samples.", + "No hosted system-clipboard or IME acceptance is claimed here.", + "Held payload is not measured OS backpressure; workload has synchronization and is not a performance benchmark.", + "UI observed producer, output, state and cleanup; actual presented endpoint is unknown.", + "Raw logs and captures remain local; only synthetic byte counts, hashes and whitelisted records published." + ], + "vim_path_followup": { + "source_commit": "a15eb7f67315fb53c9d66b9c5a4424e13511a311", + "vim_version": "9.1 patches1-532 MSYS2", + "vim_sha256": "2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a", + "sample_sha256": "5f35275f20697c8559b0b2e1b7a460b38032b9549fe0bbb60b3ccfb0ad18da01", + "status": "failed", + "failure": "candidate-tui stage59; resize command appeared in inserted text", + "exit_code": 2, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 7, + "terminated": 0 + }, + "desktop_gone": true, + "issue": 52 + } +} diff --git a/experiments/shell/results/2026-10-27-clipboard-stages/trace-0.jsonl b/experiments/shell/results/2026-10-27-clipboard-stages/trace-0.jsonl new file mode 100644 index 00000000..7c11e336 --- /dev/null +++ b/experiments/shell/results/2026-10-27-clipboard-stages/trace-0.jsonl @@ -0,0 +1,72 @@ +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":0,"turn":1,"elapsed_ms":61,"case":0,"stage":0,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":1,"turn":3,"elapsed_ms":121,"case":0,"stage":1,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":2,"turn":5,"elapsed_ms":189,"case":0,"stage":2,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":3,"turn":6,"elapsed_ms":220,"case":0,"stage":3,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":4,"turn":6,"elapsed_ms":220,"case":0,"stage":3,"event":"prepare-owner-begin","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":5,"turn":6,"elapsed_ms":222,"case":0,"stage":3,"event":"prepare-owner-end","paste_busy":false,"helper_wait":null,"owner_step":"Wait-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":6,"turn":7,"elapsed_ms":251,"case":0,"stage":4,"event":"tick","paste_busy":true,"helper_wait":0,"owner_step":"Wait-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":7,"turn":9,"elapsed_ms":315,"case":0,"stage":5,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":"Wait-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":8,"turn":9,"elapsed_ms":315,"case":0,"stage":5,"event":"owner-release-begin","paste_busy":false,"helper_wait":0,"owner_step":"Wait-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":9,"turn":9,"elapsed_ms":315,"case":0,"stage":5,"event":"owner-release-end","paste_busy":false,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":10,"turn":10,"elapsed_ms":346,"case":0,"stage":6,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":11,"turn":10,"elapsed_ms":346,"case":0,"stage":6,"event":"owner-finish-begin","paste_busy":false,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":12,"turn":10,"elapsed_ms":347,"case":0,"stage":6,"event":"owner-finish-end","paste_busy":false,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":13,"turn":10,"elapsed_ms":347,"case":0,"stage":6,"event":"owner-reset-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":14,"turn":10,"elapsed_ms":347,"case":0,"stage":6,"event":"after-marker-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":15,"turn":10,"elapsed_ms":350,"case":0,"stage":7,"event":"after-marker-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":16,"turn":11,"elapsed_ms":383,"case":0,"stage":7,"event":"retry-clipboard-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":17,"turn":11,"elapsed_ms":383,"case":0,"stage":7,"event":"retry-clipboard-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":18,"turn":11,"elapsed_ms":383,"case":0,"stage":7,"event":"retry-command-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":19,"turn":11,"elapsed_ms":385,"case":0,"stage":8,"event":"retry-command-end","paste_busy":true,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":20,"turn":14,"elapsed_ms":501,"case":0,"stage":9,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":21,"turn":16,"elapsed_ms":580,"case":1,"stage":2,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":22,"turn":17,"elapsed_ms":612,"case":1,"stage":3,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":23,"turn":17,"elapsed_ms":612,"case":1,"stage":3,"event":"prepare-owner-begin","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":24,"turn":17,"elapsed_ms":614,"case":1,"stage":3,"event":"prepare-owner-end","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":25,"turn":18,"elapsed_ms":644,"case":1,"stage":4,"event":"tick","paste_busy":true,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":26,"turn":21,"elapsed_ms":741,"case":1,"stage":5,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":27,"turn":22,"elapsed_ms":787,"case":1,"stage":6,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":28,"turn":22,"elapsed_ms":787,"case":1,"stage":6,"event":"owner-finish-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":29,"turn":22,"elapsed_ms":787,"case":1,"stage":6,"event":"owner-finish-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":30,"turn":22,"elapsed_ms":788,"case":1,"stage":6,"event":"owner-reset-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":31,"turn":22,"elapsed_ms":788,"case":1,"stage":6,"event":"after-marker-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":32,"turn":22,"elapsed_ms":792,"case":1,"stage":7,"event":"after-marker-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":33,"turn":23,"elapsed_ms":825,"case":1,"stage":7,"event":"retry-clipboard-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":34,"turn":23,"elapsed_ms":825,"case":1,"stage":7,"event":"retry-clipboard-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":35,"turn":23,"elapsed_ms":826,"case":1,"stage":7,"event":"retry-command-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":36,"turn":23,"elapsed_ms":828,"case":1,"stage":8,"event":"retry-command-end","paste_busy":true,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":37,"turn":27,"elapsed_ms":944,"case":1,"stage":9,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":38,"turn":29,"elapsed_ms":1040,"case":2,"stage":2,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":39,"turn":30,"elapsed_ms":1087,"case":2,"stage":3,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":40,"turn":30,"elapsed_ms":1087,"case":2,"stage":3,"event":"prepare-owner-begin","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":41,"turn":30,"elapsed_ms":1089,"case":2,"stage":3,"event":"prepare-owner-end","paste_busy":false,"helper_wait":null,"owner_step":"GetMessageW","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":42,"turn":31,"elapsed_ms":1135,"case":2,"stage":4,"event":"tick","paste_busy":true,"helper_wait":258,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":43,"turn":32,"elapsed_ms":1167,"case":2,"stage":5,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":44,"turn":32,"elapsed_ms":1167,"case":2,"stage":5,"event":"owner-release-begin","paste_busy":false,"helper_wait":0,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":45,"turn":32,"elapsed_ms":1167,"case":2,"stage":5,"event":"owner-release-end","paste_busy":false,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":46,"turn":33,"elapsed_ms":1214,"case":2,"stage":6,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":47,"turn":33,"elapsed_ms":1214,"case":2,"stage":6,"event":"owner-finish-begin","paste_busy":false,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":48,"turn":33,"elapsed_ms":1215,"case":2,"stage":6,"event":"owner-finish-end","paste_busy":false,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":49,"turn":33,"elapsed_ms":1216,"case":2,"stage":6,"event":"owner-reset-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":50,"turn":33,"elapsed_ms":1216,"case":2,"stage":6,"event":"after-marker-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":51,"turn":33,"elapsed_ms":1219,"case":2,"stage":7,"event":"after-marker-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":52,"turn":34,"elapsed_ms":1251,"case":2,"stage":7,"event":"retry-clipboard-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":53,"turn":34,"elapsed_ms":1251,"case":2,"stage":7,"event":"retry-clipboard-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":54,"turn":34,"elapsed_ms":1252,"case":2,"stage":7,"event":"retry-command-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":55,"turn":34,"elapsed_ms":1254,"case":2,"stage":8,"event":"retry-command-end","paste_busy":true,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":56,"turn":38,"elapsed_ms":1371,"case":2,"stage":9,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":57,"turn":40,"elapsed_ms":1451,"case":3,"stage":2,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":58,"turn":41,"elapsed_ms":1483,"case":3,"stage":3,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":59,"turn":41,"elapsed_ms":1483,"case":3,"stage":3,"event":"prepare-owner-begin","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":60,"turn":41,"elapsed_ms":1484,"case":3,"stage":3,"event":"prepare-owner-end","paste_busy":false,"helper_wait":null,"owner_step":"GetMessageW","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":61,"turn":42,"elapsed_ms":1514,"case":3,"stage":4,"event":"tick","paste_busy":true,"helper_wait":258,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":62,"turn":43,"elapsed_ms":1546,"case":3,"stage":5,"event":"tick","paste_busy":null,"helper_wait":0,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":63,"turn":43,"elapsed_ms":1547,"case":3,"stage":5,"event":"owner-release-begin","paste_busy":null,"helper_wait":0,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":64,"turn":43,"elapsed_ms":1547,"case":3,"stage":5,"event":"owner-release-end","paste_busy":null,"helper_wait":0,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":65,"turn":44,"elapsed_ms":1580,"case":3,"stage":6,"event":"tick","paste_busy":null,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":66,"turn":44,"elapsed_ms":1580,"case":3,"stage":6,"event":"owner-finish-begin","paste_busy":null,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":67,"turn":44,"elapsed_ms":1582,"case":3,"stage":6,"event":"owner-finish-end","paste_busy":null,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":68,"turn":44,"elapsed_ms":1582,"case":3,"stage":6,"event":"owner-reset-end","paste_busy":null,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":69,"turn":44,"elapsed_ms":1582,"case":3,"stage":6,"event":"after-marker-begin","paste_busy":null,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":70,"turn":44,"elapsed_ms":1584,"case":3,"stage":7,"event":"after-marker-end","paste_busy":null,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":71,"turn":45,"elapsed_ms":1614,"case":3,"stage":100,"event":"complete-before-close","paste_busy":null,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} diff --git a/experiments/shell/results/2026-10-27-clipboard-stages/trace-1.jsonl b/experiments/shell/results/2026-10-27-clipboard-stages/trace-1.jsonl new file mode 100644 index 00000000..d6687b3f --- /dev/null +++ b/experiments/shell/results/2026-10-27-clipboard-stages/trace-1.jsonl @@ -0,0 +1,72 @@ +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":0,"turn":1,"elapsed_ms":63,"case":0,"stage":0,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":1,"turn":3,"elapsed_ms":115,"case":0,"stage":1,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":2,"turn":5,"elapsed_ms":185,"case":0,"stage":2,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":3,"turn":7,"elapsed_ms":253,"case":0,"stage":3,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":4,"turn":7,"elapsed_ms":254,"case":0,"stage":3,"event":"prepare-owner-begin","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":5,"turn":7,"elapsed_ms":255,"case":0,"stage":3,"event":"prepare-owner-end","paste_busy":false,"helper_wait":null,"owner_step":"Wait-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":6,"turn":8,"elapsed_ms":285,"case":0,"stage":4,"event":"tick","paste_busy":true,"helper_wait":0,"owner_step":"Wait-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":7,"turn":10,"elapsed_ms":364,"case":0,"stage":5,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":"Wait-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":8,"turn":10,"elapsed_ms":365,"case":0,"stage":5,"event":"owner-release-begin","paste_busy":false,"helper_wait":0,"owner_step":"Wait-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":9,"turn":10,"elapsed_ms":365,"case":0,"stage":5,"event":"owner-release-end","paste_busy":false,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":10,"turn":11,"elapsed_ms":412,"case":0,"stage":6,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":11,"turn":11,"elapsed_ms":412,"case":0,"stage":6,"event":"owner-finish-begin","paste_busy":false,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":12,"turn":11,"elapsed_ms":413,"case":0,"stage":6,"event":"owner-finish-end","paste_busy":false,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":13,"turn":11,"elapsed_ms":413,"case":0,"stage":6,"event":"owner-reset-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":14,"turn":11,"elapsed_ms":413,"case":0,"stage":6,"event":"after-marker-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":15,"turn":11,"elapsed_ms":416,"case":0,"stage":7,"event":"after-marker-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":16,"turn":12,"elapsed_ms":448,"case":0,"stage":7,"event":"retry-clipboard-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":17,"turn":12,"elapsed_ms":448,"case":0,"stage":7,"event":"retry-clipboard-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":18,"turn":12,"elapsed_ms":449,"case":0,"stage":7,"event":"retry-command-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":19,"turn":12,"elapsed_ms":451,"case":0,"stage":8,"event":"retry-command-end","paste_busy":true,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":20,"turn":16,"elapsed_ms":573,"case":0,"stage":9,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":21,"turn":17,"elapsed_ms":603,"case":1,"stage":2,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":22,"turn":18,"elapsed_ms":635,"case":1,"stage":3,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":23,"turn":18,"elapsed_ms":635,"case":1,"stage":3,"event":"prepare-owner-begin","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":24,"turn":18,"elapsed_ms":637,"case":1,"stage":3,"event":"prepare-owner-end","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":25,"turn":19,"elapsed_ms":667,"case":1,"stage":4,"event":"tick","paste_busy":true,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":26,"turn":22,"elapsed_ms":762,"case":1,"stage":5,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":27,"turn":23,"elapsed_ms":809,"case":1,"stage":6,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":28,"turn":23,"elapsed_ms":810,"case":1,"stage":6,"event":"owner-finish-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":29,"turn":23,"elapsed_ms":810,"case":1,"stage":6,"event":"owner-finish-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":30,"turn":23,"elapsed_ms":810,"case":1,"stage":6,"event":"owner-reset-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":31,"turn":23,"elapsed_ms":810,"case":1,"stage":6,"event":"after-marker-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":32,"turn":23,"elapsed_ms":813,"case":1,"stage":7,"event":"after-marker-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":33,"turn":24,"elapsed_ms":847,"case":1,"stage":7,"event":"retry-clipboard-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":34,"turn":24,"elapsed_ms":848,"case":1,"stage":7,"event":"retry-clipboard-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":35,"turn":24,"elapsed_ms":848,"case":1,"stage":7,"event":"retry-command-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":36,"turn":24,"elapsed_ms":849,"case":1,"stage":8,"event":"retry-command-end","paste_busy":true,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":37,"turn":28,"elapsed_ms":970,"case":1,"stage":9,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":38,"turn":29,"elapsed_ms":999,"case":2,"stage":2,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":39,"turn":30,"elapsed_ms":1031,"case":2,"stage":3,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":40,"turn":30,"elapsed_ms":1031,"case":2,"stage":3,"event":"prepare-owner-begin","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":41,"turn":30,"elapsed_ms":1033,"case":2,"stage":3,"event":"prepare-owner-end","paste_busy":false,"helper_wait":null,"owner_step":"GetMessageW","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":42,"turn":31,"elapsed_ms":1063,"case":2,"stage":4,"event":"tick","paste_busy":true,"helper_wait":258,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":43,"turn":32,"elapsed_ms":1094,"case":2,"stage":5,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":44,"turn":32,"elapsed_ms":1094,"case":2,"stage":5,"event":"owner-release-begin","paste_busy":false,"helper_wait":0,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":45,"turn":32,"elapsed_ms":1095,"case":2,"stage":5,"event":"owner-release-end","paste_busy":false,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":46,"turn":33,"elapsed_ms":1126,"case":2,"stage":6,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":47,"turn":33,"elapsed_ms":1126,"case":2,"stage":6,"event":"owner-finish-begin","paste_busy":false,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":48,"turn":33,"elapsed_ms":1127,"case":2,"stage":6,"event":"owner-finish-end","paste_busy":false,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":49,"turn":33,"elapsed_ms":1127,"case":2,"stage":6,"event":"owner-reset-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":50,"turn":33,"elapsed_ms":1127,"case":2,"stage":6,"event":"after-marker-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":51,"turn":33,"elapsed_ms":1130,"case":2,"stage":7,"event":"after-marker-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":52,"turn":34,"elapsed_ms":1161,"case":2,"stage":7,"event":"retry-clipboard-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":53,"turn":34,"elapsed_ms":1161,"case":2,"stage":7,"event":"retry-clipboard-end","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":54,"turn":34,"elapsed_ms":1161,"case":2,"stage":7,"event":"retry-command-begin","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":55,"turn":34,"elapsed_ms":1163,"case":2,"stage":8,"event":"retry-command-end","paste_busy":true,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":56,"turn":38,"elapsed_ms":1271,"case":2,"stage":9,"event":"tick","paste_busy":false,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":57,"turn":40,"elapsed_ms":1332,"case":3,"stage":2,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":58,"turn":41,"elapsed_ms":1366,"case":3,"stage":3,"event":"tick","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":59,"turn":41,"elapsed_ms":1366,"case":3,"stage":3,"event":"prepare-owner-begin","paste_busy":false,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":60,"turn":41,"elapsed_ms":1368,"case":3,"stage":3,"event":"prepare-owner-end","paste_busy":false,"helper_wait":null,"owner_step":"GetMessageW","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":61,"turn":42,"elapsed_ms":1396,"case":3,"stage":4,"event":"tick","paste_busy":true,"helper_wait":258,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":62,"turn":43,"elapsed_ms":1427,"case":3,"stage":5,"event":"tick","paste_busy":null,"helper_wait":0,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":63,"turn":43,"elapsed_ms":1428,"case":3,"stage":5,"event":"owner-release-begin","paste_busy":null,"helper_wait":0,"owner_step":"WaitForSingleObject-render-release","owner_released_wait":258,"owner_worker_error":0,"owner_native_error":0,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":64,"turn":43,"elapsed_ms":1428,"case":3,"stage":5,"event":"owner-release-end","paste_busy":null,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":65,"turn":44,"elapsed_ms":1459,"case":3,"stage":6,"event":"tick","paste_busy":null,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":66,"turn":44,"elapsed_ms":1459,"case":3,"stage":6,"event":"owner-finish-begin","paste_busy":null,"helper_wait":0,"owner_step":"SetEvent-render-released","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":67,"turn":44,"elapsed_ms":1460,"case":3,"stage":6,"event":"owner-finish-end","paste_busy":null,"helper_wait":0,"owner_step":"GetMessageW","owner_released_wait":0,"owner_worker_error":1418,"owner_native_error":1418,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":68,"turn":44,"elapsed_ms":1460,"case":3,"stage":6,"event":"owner-reset-end","paste_busy":null,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":69,"turn":44,"elapsed_ms":1460,"case":3,"stage":6,"event":"after-marker-begin","paste_busy":null,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":70,"turn":44,"elapsed_ms":1462,"case":3,"stage":7,"event":"after-marker-end","paste_busy":null,"helper_wait":0,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} +{"schema":"termforge-clipboard-stage-r99-v1","tag":"[DEBUG-r99]","record":71,"turn":45,"elapsed_ms":1527,"case":3,"stage":100,"event":"complete-before-close","paste_busy":null,"helper_wait":null,"owner_step":null,"owner_released_wait":null,"owner_worker_error":null,"owner_native_error":null,"truncated":false} diff --git a/experiments/shell/results/2026-10-27-clipboard-stages/validation.json b/experiments/shell/results/2026-10-27-clipboard-stages/validation.json new file mode 100644 index 00000000..f7f575cc --- /dev/null +++ b/experiments/shell/results/2026-10-27-clipboard-stages/validation.json @@ -0,0 +1,282 @@ +{ + "schema": "termforge-clipboard-stage-observation-v1", + "source": "b9789543a792b0a0b96139377ea43f4dfab46626", + "run_id": 40459936505, + "job_id": 122041868650, + "artifact_id": 12714865514, + "artifact": { + "bytes": 4269771, + "sha256": "4b597e169d36624c87a6a9859e0fc3b2a37846569bca3eaca4c51322ec7d2791" + }, + "build_receipt_file": { + "bytes": 732, + "sha256": "af9e2ede8f1f0d77a9e670a68252ecf776b2b98b81c626d94e833c6d430f0844" + }, + "build_receipt": { + "schema": "termforge-clipboard-stage-build-r99-v1", + "files": { + "shell_input_client.exe": { + "bytes": 52224, + "sha256": "944c8b6a5dfdb4725b5a9d2c39d40b5ca7c2a429f1aebef23299eece286f8099" + }, + "termforge_shell.exe": { + "bytes": 1283072, + "sha256": "b38f109255baf4c9b8e40b91107873c5e6f57852152cb5781b2798f1aadf3561" + }, + "shell_clipboard_reader.exe": { + "bytes": 32256, + "sha256": "5f3cac4487bc3bf343bf972ef3481d97cbaab399dc9256ea4c1a52c390cb729a" + }, + "shell_test_launcher.exe": { + "bytes": 56320, + "sha256": "7fa383d355f29630812496216a6a8b5037d6c6397ad85fd5204d5ad33339fc48" + } + }, + "source": "b9789543a792b0a0b96139377ea43f4dfab46626" + }, + "samples": [ + { + "repeat": 0, + "trace": { + "bytes": 21810, + "sha256": "13bb8dc1fa4167b5baafaba6e999cd5fccdb25ac79a53b9b0a8012bdabfd27c4", + "file": "trace-0.jsonl" + }, + "sample": { + "bytes": 2027, + "sha256": "77af1bec6e478701e1ea977b4d5022b7750242517603e71e1f3d64efea064652" + }, + "workflow_file": { + "bytes": 2686, + "sha256": "d8f3caf1707451b8ee8d79a26869c92660bbccf7b3cddd9b41277a9ea6781976" + }, + "trace_rows": 72, + "turns": 45, + "first_elapsed_ms": 61, + "complete_before_close_ms": 1614, + "truncated": false, + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 27, + "terminated": 0 + }, + "desktop_gone": true, + "cases": { + "occupied": { + "received": 270, + "helper_exited": true, + "retry": true, + "owner_release": { + "reason": "ordinary", + "publication_succeeded": false, + "expected_requester_gone": false, + "native_error": 0, + "release_event": true, + "thread_exited": true + } + }, + "oversize": { + "received": 270, + "helper_exited": true, + "retry": true, + "owner_release": null + }, + "cancel": { + "received": 268, + "helper_exited": true, + "retry": true, + "owner_release": { + "reason": "requester-cancelled", + "publication_succeeded": false, + "expected_requester_gone": true, + "native_error": 1418, + "release_event": true, + "thread_exited": true + } + }, + "close": { + "received": 256, + "helper_exited": true, + "retry": false, + "owner_release": { + "reason": "target-closed", + "publication_succeeded": false, + "expected_requester_gone": true, + "native_error": 1418, + "release_event": true, + "thread_exited": true + } + } + } + }, + { + "repeat": 1, + "trace": { + "bytes": 21806, + "sha256": "a4838fac461364dce95f0f68e7a3c927ed4f264c88f6629fc2b2bafc607205b4", + "file": "trace-1.jsonl" + }, + "sample": { + "bytes": 2027, + "sha256": "5ff403b8493652dcaa4ec4c985bc9760e698371a3dae0fe289a17aadacc8376d" + }, + "workflow_file": { + "bytes": 2686, + "sha256": "9312881e90286002d2fa5eed62142eb0dc794fa0a6322ad5ced9495a65acd97b" + }, + "trace_rows": 72, + "turns": 45, + "first_elapsed_ms": 63, + "complete_before_close_ms": 1527, + "truncated": false, + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 27, + "terminated": 0 + }, + "desktop_gone": true, + "cases": { + "occupied": { + "received": 270, + "helper_exited": true, + "retry": true, + "owner_release": { + "reason": "ordinary", + "publication_succeeded": false, + "expected_requester_gone": false, + "native_error": 0, + "release_event": true, + "thread_exited": true + } + }, + "oversize": { + "received": 270, + "helper_exited": true, + "retry": true, + "owner_release": null + }, + "cancel": { + "received": 268, + "helper_exited": true, + "retry": true, + "owner_release": { + "reason": "requester-cancelled", + "publication_succeeded": false, + "expected_requester_gone": true, + "native_error": 1418, + "release_event": true, + "thread_exited": true + } + }, + "close": { + "received": 256, + "helper_exited": true, + "retry": false, + "owner_release": { + "reason": "target-closed", + "publication_succeeded": false, + "expected_requester_gone": true, + "native_error": 1418, + "release_event": true, + "thread_exited": true + } + } + } + } + ], + "scope": "Original timeout not reproduced in this fixed batch. No causal fix, product acceptance, performance or WindTerm equivalence claim.", + "configuration": { + "core": "default", + "conpty": "system", + "host": "GitHub-hosted windows-2025", + "trace_enabled": true, + "method": "ShellTests.test_system_clipboard_product_read_errors_cancel_and_close", + "repeats": 2, + "launcher_deadline_seconds": 45, + "outer_deadline_seconds": 60 + }, + "ci": [ + { + "run_id": 40459936505, + "event": "push", + "workflow": "default", + "source": "b9789543a792b0a0b96139377ea43f4dfab46626", + "windows": { + "job_id": 122041868650, + "passed": 50, + "total": 52, + "seconds": 280.05, + "failures": [ + "workflow artifact-path count assertion", + "ui-copy-system repeat 1 OpenClipboard: 5" + ] + }, + "linux": { + "job_id": 122041868427, + "passed": 32, + "total": 33, + "seconds": 12.67, + "failures": [ + "workflow artifact-path count assertion" + ] + } + }, + { + "run_id": 40459942201, + "event": "pull_request", + "workflow": "default", + "source": "b58c029fc0f861c2e7d251d125b18ec70e80dda9", + "trace_enabled": false, + "windows": { + "job_id": 122041885778, + "passed": 51, + "total": 52, + "seconds": 276.72, + "failures": [ + "workflow artifact-path count assertion" + ] + }, + "linux": { + "job_id": 122041885396, + "passed": 32, + "total": 33, + "seconds": 12.95, + "failures": [ + "workflow artifact-path count assertion" + ] + } + }, + { + "run_id": 40459936582, + "event": "push", + "workflow": "external-candidate", + "trace_enabled": false, + "conclusion": "success" + }, + { + "run_id": 40459942259, + "event": "pull_request", + "workflow": "external-candidate", + "trace_enabled": false, + "conclusion": "success" + } + ], + "observation_sources": { + ".github/workflows/build.yml": "1508ad7b088ab24e66f7eb45164892843ed1d56ba7b99f9e1345b362d4c43d5a", + "experiments/shell/clipboard_scenario_state.hpp": "1e99dcfd4eed0b036c89bf08f7dbdb7b6e95f3a166ebff9fe337cb4aafbd9f73", + "experiments/shell/workspace_clipboard_scenario.hpp": "b19e32352b5c0b3417ee04ad41b1badc423f6e1ab3749d59a79cd716af20bbd4" + }, + "limitations": [ + "Trace file I/O can alter scheduling; successful observation cannot explain the original timeout.", + "Begin/end events observe call boundaries; owner atomic fields are not one coherent snapshot.", + "complete_before_close_ms ends before close_all and is not natural-exit or presentation latency.", + "The CI receipt hashes clean-build files; unarchived EXE bytes were not independently rehashed locally.", + "Original private workflow files include process identity and remain local; only whitelisted summaries and content-free traces are published.", + "Default and candidate, push and PR, and observation and cleanup runs retain separate identities.", + "Temporary instrumentation and CI opt-in are removed after this batch; their exact source remains in the observation commit." + ] +} diff --git a/experiments/shell/results/2026-10-27-vim-msys-input/validation.json b/experiments/shell/results/2026-10-27-vim-msys-input/validation.json new file mode 100644 index 00000000..9d86b6b0 --- /dev/null +++ b/experiments/shell/results/2026-10-27-vim-msys-input/validation.json @@ -0,0 +1,1659 @@ +{ + "schema": "termforge.vim-msys-input-observation.v1", + "scope": "diagnosis only; no product fix or R2 acceptance", + "base_commit": "44ea45b988b6bb0b72f21cd24597fe54b9b4ec31", + "product_source": "c662011616a0498e0fbd6af8019f5f3cc03fdcaa", + "configuration": { + "candidate": "termforge.5", + "backend": "reviewed-side-by-side-1.25.260930003", + "creation_flags": 24, + "platform": "Windows-11-10.0.26200-SP0", + "vim_version": "9.1 patches 1-532", + "vim_file_sha256": "2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a", + "msys_file_sha256": "3096d2ba9be20e90be1399edd391bac65d84bc387f5a419b502c9b326081930f", + "msys_source_commit": "2e2ef940151485490aff0c7b00c00965ef7a71a4", + "frida_provider_version": null + }, + "diagnostic_identity": { + "shell_sha256": "73472864e5aa291704917812ff1848f7a59be6e5f30c41f6a613e3fc18c740d4", + "source_sha256": { + "experiments/conpty/session.hpp": "c41a4b401f412a9845fc6b2f365e241fdd039af3432f1e9f96f734e98118a521", + "experiments/shell/shell.cpp": "0f262abf4ef3ba62a2553bc2d80513b080e1bf06d4116c82d193c05722467495" + }, + "baseline_shell_sha256": "941ef34db129282a26625d8bad4fd663c4284fe3307802907366299ab04f31c4", + "original_scenario_sha256": "a300380b97ad424c5af06219a021a256de6178c3af7fb7e933e24bb8142201ee", + "original_runner_sha256": "45976b828eecb316881d698dedaef09ad304f72d991dfa360f1c552bbcbe9f1d", + "temporary_patch_sha256": "4e2b450c3d7c16bfc7c8d8530e381234bb1330b3e6b8840d6eace8c917ce7167" + }, + "protocol": { + "inner_timeout_seconds": 25, + "outer_timeout_seconds": 40, + "input": "\u000f:call writefile([string(&columns) . 'x' . string(&lines)], 'candidate-resize-log.txt', 'b')\r", + "attachment_gate": "only after original VimEnter READY and visible New; inside original deadline, before original i input", + "selection": "unique fixed-path Vim from session-owned Job; no global process scan", + "boundary_batch": { + "maximum": 4, + "executed": 3, + "stop": "at least one original stage59 and one valid green, or any different failure; otherwise maximum four cases", + "observed_outcomes": [ + "stage59", + "stage59", + "green" + ] + }, + "function_batch": { + "maximum": 2, + "executed": 1, + "stop": "first original stage59 or any different failure; otherwise maximum two cases", + "observed_outcomes": [ + "stage59" + ] + }, + "target_input_buffers_or_return_values_modified_by_script": false, + "records_limit": 512, + "native_records_per_call_limit": 256, + "read_bytes_per_call_limit": 512 + }, + "cases": [ + { + "id": "boundary-red-0", + "outcome": "stage59", + "outer_exit_code": 2, + "outer_timed_out": false, + "owned_job_after": { + "active": 0, + "total": 7, + "terminated": 0 + }, + "owned_desktop_gone": true, + "writer": { + "records": 91, + "truncated": false, + "command_written_bytes": 93, + "command_error": 0 + }, + "frida": { + "evidence_id": "ev_18adf14197eb077fa8d019c7f021251982860dcbcd9f22cc6e9117c8f41cd10c", + "event_count": 19, + "messages_truncated": false, + "provider": { + "id": "frida", + "name": "Frida", + "version": null + }, + "provider_limitations": [ + "Artifact identity is unavailable for this observation.", + "The target operating system and architecture were not reported by this observation." + ], + "script_limitations": [ + "calls already entered before attach are not observed", + "interception changes scheduling", + "timestamps are observer wall clock; no cross-process high resolution alignment" + ], + "script_sha256": "f01e1363d482ef404a7ef2031caf13434409f00dfe936b55fc3863c60628b9cb" + }, + "events": [ + { + "sequence": 2, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [] + }, + { + "sequence": 3, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 2048, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [] + }, + { + "sequence": 4, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [] + }, + { + "sequence": 5, + "type": "msys-read", + "thread": "T2", + "count": 1, + "requested": 4096, + "truncated": false, + "bytes_hex": "69" + }, + { + "sequence": 6, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "54", + "resize_events": [] + }, + { + "sequence": 7, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 16, + "requested": 2048, + "returned_count": 16, + "truncated": false, + "key_characters_hex": "54465f43414e4449444154455f545549", + "resize_events": [] + }, + { + "sequence": 8, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 16, + "requested": 16, + "returned_count": 16, + "truncated": false, + "key_characters_hex": "54465f43414e4449444154455f545549", + "resize_events": [] + }, + { + "sequence": 9, + "type": "msys-read", + "thread": "T2", + "count": 16, + "requested": 4096, + "truncated": false, + "bytes_hex": "54465f43414e4449444154455f545549" + }, + { + "sequence": 10, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + } + ] + }, + { + "sequence": 11, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 2, + "requested": 2048, + "returned_count": 2, + "truncated": false, + "key_characters_hex": "", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + }, + { + "position": 1, + "columns": 60, + "rows": 12 + } + ] + }, + { + "sequence": 12, + "type": "console", + "thread": "T3", + "name": "ReadConsoleInputW", + "success": true, + "count": 95, + "requested": 2176, + "returned_count": 95, + "truncated": false, + "key_characters_hex": "0f3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + }, + { + "position": 1, + "columns": 60, + "rows": 12 + } + ] + }, + { + "sequence": 13, + "type": "console", + "thread": "T3", + "name": "WriteConsoleInputW", + "success": true, + "count": 93, + "requested": 93, + "returned_count": 93, + "truncated": false, + "key_characters_hex": "0f3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [] + }, + { + "sequence": 14, + "type": "console", + "thread": "T3", + "name": "PeekConsoleInputW", + "success": true, + "count": 93, + "requested": 2176, + "returned_count": 93, + "truncated": false, + "key_characters_hex": "0f3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [] + }, + { + "sequence": 15, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "0f", + "resize_events": [] + }, + { + "sequence": 16, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "3a", + "resize_events": [] + }, + { + "sequence": 17, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 92, + "requested": 2048, + "returned_count": 92, + "truncated": false, + "key_characters_hex": "3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [] + }, + { + "sequence": 18, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 92, + "requested": 92, + "returned_count": 92, + "truncated": false, + "key_characters_hex": "3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [] + }, + { + "sequence": 19, + "type": "msys-read", + "thread": "T2", + "count": 92, + "requested": 4096, + "truncated": false, + "bytes_hex": "3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d" + } + ], + "private_artifact_sha256": { + "sample.json": "a5b6287b358da1678d30efb47d541c10377ee24f3a606202f75a4053ef1eeae0", + "r52-writes.json": "d89fb7eadbcee2846a37c8b8b71784fa58d2f3a9a6a8d8da4a1453b654f6fd4d", + "candidate-input.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "candidate-insert-log.txt": "e6de4daeba1841783e7e22f81dbf87154f341c309dc5b54405e5fc2c2f3550a6", + "candidate-resize-log.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "candidate-output.bin": "fc43e5c356005f9c32847476d4bdba5fabaf51439083d8ac4e530d3e8bb5c883", + "case-0-identity.json": "5632d1aac8f0e3df18b3fef69b532d6cd5e577a8496cf40ec03d5b21529d6081", + "case-0-status-final.json": "db0736829d3d23154f3dac4b8e4941d3350ba33e6e51f21f4d45de0c0396b76e", + "case-0-load.json": "cfa00b7a534855dea6708ea9bee6721f78df77f0beaa454549ea4a0af7b8176e", + "case-0-detach.json": "b53d8b7832810f75d86584dbc495295037f01103e868dcf359d1be54012afdc5" + }, + "observed_file_sha256": { + "alpha_normal_smoke.exe": "55f76e0ef0a68a2d3ee2d047852551b86e63074b84604e59fe6d0893361ba3a6", + "candidate_core_test.exe": "4c73b58d7da111ab52b6edbbb59898cf660860fdedaa64c4f49b46fae856a02d", + "candidate_reply_close_test.exe": "7431b2d5a414703d85fb9425b07b7df125eb7b5668851cb5383cf575cb620a69", + "candidate_resize_replay.exe": "c4cf0d9f68bb5bd688e601b87025f3237c8659f4d80e96bd4f67fa463463a13f", + "candidate_title_test.exe": "359141b75c6eeb9a0cc9ef59f9f21ad0d07bcaefb51beb19f64e3288a059bec2", + "clipboard_policy_test.exe": "ef7c7d860bad3b458b7ac8e659c46acd0f768f70281e7d6797e489520d1d559e", + "conpty_backend_probe.exe": "39b52ad4acc4e432718d3cdd6dc6ee2ab80b1584de16c0edc3d775ccc7b03c0d", + "conpty_ctrl_c_probe.exe": "30ad460b54cfcc752e20ccd5f656c6769e292528408a4a68e7182ab3206d39b6", + "conpty_margin_probe.exe": "7aaef1da461b3b6d833aea79332f28d8f924e26de2f9332feeb1f1303a51e30f", + "conpty_resize_native_probe.exe": "a570b55f7ef0f65be01b827112905a223fb32f37a0f645ce121ead1ed6555f59", + "core_measure.exe": "dfe74cf8e6ec0fdb976911569c14e52709be5e880d9b36d2a108187bca9c165b", + "find_bar_test.exe": "632e5ff486b7ad5d29292b4af1206c196d09ca1c1c8a38a830a004ee9c21f1a1", + "history_test.exe": "3b3f6199ad4d345ef5cc759ddcf80667fdde4c7778658e99764342cc17949e2e", + "ime_context_test.exe": "8941d52ed7642b15c46da5a50927ba09ceab7078c5f31c649e4e3baa859e8ae1", + "ime_input_expectation_test.exe": "a960fbd62a7c0d6eec564a5a2bb1cc271582e7bb55ec07ddb63bc46044b9c438", + "keyboard_test.exe": "fe027bbcb21a09fac9411dd5766a37e8edd711d3ef547f37a080ded097a4de3e", + "layout_state_test.exe": "7b174db85ff75e8a8f5613c949c264a4dedbb8cfeb8a18581f016191bd036ddb", + "paste_test.exe": "1e6acc382a75fe18b50212cf6950d3d714f89939b1cf63000795348e4db22d54", + "presentation_probe.exe": "91aa34c2ac7b4f6610da419a04091d4391cb78e224e6b5f567437a5565d4e33a", + "raw_console_receiver_test.exe": "0731af92b2536b189d80894b5ca4243d814e07ab2c513fff7b4d3fd3654578f2", + "real_app_capture.exe": "fddd86a02d7c8ba13b7cd458373c8acd19d999199baefce77e8f237efce47189", + "receive.exe": "b5ea1d10bba964ec80f183d761b1c0ea4334f6963597ccd1bb16b9c769fc76d5", + "recovery_probe.exe": "72213828da26b5657915667faccd1d0aca83dbe6d9537f38dbd9d5464750313b", + "renderer_metrics_test.exe": "f08e88f6ff8bb6be87f724ff6a3c398df359a639f83d75b5970e69659f8a4a5c", + "replay.exe": "54298c3fa5020d3ebcaa55c76564b9dcbfec5b25d772343c428e2e36e1858ca1", + "resize_test.exe": "fd97c87127d4763320832d1d538af5755eece8a1ec1485435cab6b41e9e549cd", + "runtime_observation_test.exe": "0049a0d863724bf8bd181c85868bd68a409eb5e12c755a5538add5f85bf8b0bf", + "scenario_tick_gate_test.exe": "f7368d2d4c13a9eee4a210e857fd5d13479641328fa71a984582c69b57735ecf", + "search_test.exe": "6bf2a5fa47e1f0665462e6601e01253674c6662e5db730161bd7eb09c81d621d", + "selection_test.exe": "19eaf7ef3e6f1a35f67e1b17a60858bfb0f268a20c9f2686d141c847a68fbb3a", + "sender_fence_pipe_test.exe": "19bba0df9e37159cc70728f68ae8a28364127fac21ab72cb21cdb036f9380686", + "sender_fence_test.exe": "b3c396a7d8a306d0987ef149fd9d5e014ab90ac6d54d0915a48b6d261a6e21c1", + "sent_message_wait_test.exe": "b9bb4960dc470d5aac08fecb2c0775c16e2a7e75fdabe283b6c028d284679abb", + "shell_clipboard_reader.exe": "01aad3988dfc520ec6419f9747cb2baa04efc9c1409f4b50a4a65b2f385bd7be", + "shell_ime_client.exe": "f02ec529d90db13bf4c904bbee8bc77930fdcf51ba868b4a43a43ed783f61830", + "shell_input_client.exe": "0075a332e524071809a1fdbd5161d1f360fa8e89faaf2b45b24c19f1d94829cc", + "shell_launch_test.exe": "6e96e163b4adc40b8d53c022a23a206176bf558c73eb76d9790b61f2abb13baf", + "shell_paste_probe.exe": "dd49d693dc30372d6f44cce2b7a1dcfc64adea1e6638399da4d400784a14bf6f", + "shell_query_client.exe": "691b440e9c500c76c1c09c448aafbe2316793bf341ffe69bbc2bf70e41be64cc", + "shell_queue_probe.exe": "e030070a6f287421bc3b74350fd45c8cd762837dc1512a76f688d20d39aa8715", + "shell_selection_text_client.exe": "18b60279aed48a9d39b6f5c57371c60b3a2b59bb21d6e30f92bac7adf50a3ed2", + "shell_size_client.exe": "eeb0801f69cc8add0a8178a185dcedb78a9b33234abfe5c600fd9b20b0f5aab4", + "shell_test_launcher.exe": "7bd78cffd78ac66d651933c9614d6be937c99baa105ce04c1a533df5785c11e2", + "shell_text_client.exe": "9350e53de74c9a6b78495a3b59788e3a31e0067a9c5ec1b8685a729ff18244d3", + "termforge_conpty_probe.exe": "1dcf69f65e9dd2abca1a58c10df2be3a296a4e22cdd895ba457222fe9e27f021", + "termforge_ime_probe.exe": "ba59ec28909430669c187a644651588b2f1984b1308b97056f222f332e7de9c9", + "termforge_shell.exe": "73472864e5aa291704917812ff1848f7a59be6e5f30c41f6a613e3fc18c740d4", + "terminal_trace.exe": "d09f34702cbd2d8be6ecfe98ab56a2326be1fde6b1fde4d10ef85d0f62955d2f", + "text_action_policy_test.exe": "9988026742d9ff45f300a6fa336ceca052a502b568f32114be7fd5057e57f5a4", + "transport_completion_test.exe": "6952438843e8a7605bb6cf0eb7add56dd8574f4e5edfbc3a534f795030a3fcc8", + "workflow_checkpoint_test.exe": "056047580e8ddd77224908667297a0b704f97ef57d1eadeb382b52c7c7875b86", + "workflow_fixture_test.exe": "ce3f09d8b3bb97d92dd6c61531e2cb9ba36070d2222b7b4ad7b86de82021f208", + "workspace_state_test.exe": "18080df77a0b7a370aa1e2dc79f2986dd3a4eb01661663dd95c43a11b802ee11" + } + }, + { + "id": "boundary-red-1", + "outcome": "stage59", + "outer_exit_code": 2, + "outer_timed_out": false, + "owned_job_after": { + "active": 0, + "total": 7, + "terminated": 0 + }, + "owned_desktop_gone": true, + "writer": { + "records": 91, + "truncated": false, + "command_written_bytes": 93, + "command_error": 0 + }, + "frida": { + "evidence_id": "ev_57b774550517dd49065104ebb12df86fbb31f791e78b51424637cd505a3a4d1e", + "event_count": 17, + "messages_truncated": false, + "provider": { + "id": "frida", + "name": "Frida", + "version": null + }, + "provider_limitations": [ + "Artifact identity is unavailable for this observation.", + "The target operating system and architecture were not reported by this observation." + ], + "script_limitations": [ + "calls already entered before attach are not observed", + "interception changes scheduling", + "timestamps are observer wall clock; no cross-process high resolution alignment" + ], + "script_sha256": "f01e1363d482ef404a7ef2031caf13434409f00dfe936b55fc3863c60628b9cb" + }, + "events": [ + { + "sequence": 2, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [] + }, + { + "sequence": 3, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 2048, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [] + }, + { + "sequence": 4, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [] + }, + { + "sequence": 5, + "type": "msys-read", + "thread": "T2", + "count": 1, + "requested": 4096, + "truncated": false, + "bytes_hex": "69" + }, + { + "sequence": 6, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "54", + "resize_events": [] + }, + { + "sequence": 7, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 16, + "requested": 2048, + "returned_count": 16, + "truncated": false, + "key_characters_hex": "54465f43414e4449444154455f545549", + "resize_events": [] + }, + { + "sequence": 8, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 16, + "requested": 16, + "returned_count": 16, + "truncated": false, + "key_characters_hex": "54465f43414e4449444154455f545549", + "resize_events": [] + }, + { + "sequence": 9, + "type": "msys-read", + "thread": "T2", + "count": 16, + "requested": 4096, + "truncated": false, + "bytes_hex": "54465f43414e4449444154455f545549" + }, + { + "sequence": 10, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + } + ] + }, + { + "sequence": 11, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 2, + "requested": 2048, + "returned_count": 2, + "truncated": false, + "key_characters_hex": "", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + }, + { + "position": 1, + "columns": 60, + "rows": 12 + } + ] + }, + { + "sequence": 12, + "type": "console", + "thread": "T3", + "name": "ReadConsoleInputW", + "success": true, + "count": 2, + "requested": 2176, + "returned_count": 2, + "truncated": false, + "key_characters_hex": "", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + }, + { + "position": 1, + "columns": 60, + "rows": 12 + } + ] + }, + { + "sequence": 13, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "0f", + "resize_events": [] + }, + { + "sequence": 14, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "3a", + "resize_events": [] + }, + { + "sequence": 15, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 92, + "requested": 2048, + "returned_count": 92, + "truncated": false, + "key_characters_hex": "3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [] + }, + { + "sequence": 16, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 92, + "requested": 92, + "returned_count": 92, + "truncated": false, + "key_characters_hex": "3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [] + }, + { + "sequence": 17, + "type": "msys-read", + "thread": "T2", + "count": 92, + "requested": 4096, + "truncated": false, + "bytes_hex": "3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d" + } + ], + "private_artifact_sha256": { + "sample.json": "1fad8b791526612e05cc06053e43ef8277028ee5061874ab06940736b24a4b0f", + "r52-writes.json": "8b5f6d77dc5a2814e3f725e5ffa4a6c97820fb799c577debdaa2e6e06121ec87", + "candidate-input.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "candidate-insert-log.txt": "e6de4daeba1841783e7e22f81dbf87154f341c309dc5b54405e5fc2c2f3550a6", + "candidate-resize-log.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "candidate-output.bin": "fc43e5c356005f9c32847476d4bdba5fabaf51439083d8ac4e530d3e8bb5c883", + "case-1-identity.json": "9feb950dd6183c656fa552975a985784774b6cd78022761cb9f7edede1160384", + "case-1-status-final.json": "bbaa93f260e171490538831f67c96aa21409c0cf0c94cec8fb316a8d23b16e11", + "case-1-load.json": "87f1209688e5efb1d81fa8f374640215070d15bc25f5dab8d5dcd4d5d965d103", + "case-1-detach.json": "b53d8b7832810f75d86584dbc495295037f01103e868dcf359d1be54012afdc5" + }, + "observed_file_sha256": { + "alpha_normal_smoke.exe": "55f76e0ef0a68a2d3ee2d047852551b86e63074b84604e59fe6d0893361ba3a6", + "candidate_core_test.exe": "4c73b58d7da111ab52b6edbbb59898cf660860fdedaa64c4f49b46fae856a02d", + "candidate_reply_close_test.exe": "7431b2d5a414703d85fb9425b07b7df125eb7b5668851cb5383cf575cb620a69", + "candidate_resize_replay.exe": "c4cf0d9f68bb5bd688e601b87025f3237c8659f4d80e96bd4f67fa463463a13f", + "candidate_title_test.exe": "359141b75c6eeb9a0cc9ef59f9f21ad0d07bcaefb51beb19f64e3288a059bec2", + "clipboard_policy_test.exe": "ef7c7d860bad3b458b7ac8e659c46acd0f768f70281e7d6797e489520d1d559e", + "conpty_backend_probe.exe": "39b52ad4acc4e432718d3cdd6dc6ee2ab80b1584de16c0edc3d775ccc7b03c0d", + "conpty_ctrl_c_probe.exe": "30ad460b54cfcc752e20ccd5f656c6769e292528408a4a68e7182ab3206d39b6", + "conpty_margin_probe.exe": "7aaef1da461b3b6d833aea79332f28d8f924e26de2f9332feeb1f1303a51e30f", + "conpty_resize_native_probe.exe": "a570b55f7ef0f65be01b827112905a223fb32f37a0f645ce121ead1ed6555f59", + "core_measure.exe": "dfe74cf8e6ec0fdb976911569c14e52709be5e880d9b36d2a108187bca9c165b", + "find_bar_test.exe": "632e5ff486b7ad5d29292b4af1206c196d09ca1c1c8a38a830a004ee9c21f1a1", + "history_test.exe": "3b3f6199ad4d345ef5cc759ddcf80667fdde4c7778658e99764342cc17949e2e", + "ime_context_test.exe": "8941d52ed7642b15c46da5a50927ba09ceab7078c5f31c649e4e3baa859e8ae1", + "ime_input_expectation_test.exe": "a960fbd62a7c0d6eec564a5a2bb1cc271582e7bb55ec07ddb63bc46044b9c438", + "keyboard_test.exe": "fe027bbcb21a09fac9411dd5766a37e8edd711d3ef547f37a080ded097a4de3e", + "layout_state_test.exe": "7b174db85ff75e8a8f5613c949c264a4dedbb8cfeb8a18581f016191bd036ddb", + "paste_test.exe": "1e6acc382a75fe18b50212cf6950d3d714f89939b1cf63000795348e4db22d54", + "presentation_probe.exe": "91aa34c2ac7b4f6610da419a04091d4391cb78e224e6b5f567437a5565d4e33a", + "raw_console_receiver_test.exe": "0731af92b2536b189d80894b5ca4243d814e07ab2c513fff7b4d3fd3654578f2", + "real_app_capture.exe": "fddd86a02d7c8ba13b7cd458373c8acd19d999199baefce77e8f237efce47189", + "receive.exe": "b5ea1d10bba964ec80f183d761b1c0ea4334f6963597ccd1bb16b9c769fc76d5", + "recovery_probe.exe": "72213828da26b5657915667faccd1d0aca83dbe6d9537f38dbd9d5464750313b", + "renderer_metrics_test.exe": "f08e88f6ff8bb6be87f724ff6a3c398df359a639f83d75b5970e69659f8a4a5c", + "replay.exe": "54298c3fa5020d3ebcaa55c76564b9dcbfec5b25d772343c428e2e36e1858ca1", + "resize_test.exe": "fd97c87127d4763320832d1d538af5755eece8a1ec1485435cab6b41e9e549cd", + "runtime_observation_test.exe": "0049a0d863724bf8bd181c85868bd68a409eb5e12c755a5538add5f85bf8b0bf", + "scenario_tick_gate_test.exe": "f7368d2d4c13a9eee4a210e857fd5d13479641328fa71a984582c69b57735ecf", + "search_test.exe": "6bf2a5fa47e1f0665462e6601e01253674c6662e5db730161bd7eb09c81d621d", + "selection_test.exe": "19eaf7ef3e6f1a35f67e1b17a60858bfb0f268a20c9f2686d141c847a68fbb3a", + "sender_fence_pipe_test.exe": "19bba0df9e37159cc70728f68ae8a28364127fac21ab72cb21cdb036f9380686", + "sender_fence_test.exe": "b3c396a7d8a306d0987ef149fd9d5e014ab90ac6d54d0915a48b6d261a6e21c1", + "sent_message_wait_test.exe": "b9bb4960dc470d5aac08fecb2c0775c16e2a7e75fdabe283b6c028d284679abb", + "shell_clipboard_reader.exe": "01aad3988dfc520ec6419f9747cb2baa04efc9c1409f4b50a4a65b2f385bd7be", + "shell_ime_client.exe": "f02ec529d90db13bf4c904bbee8bc77930fdcf51ba868b4a43a43ed783f61830", + "shell_input_client.exe": "0075a332e524071809a1fdbd5161d1f360fa8e89faaf2b45b24c19f1d94829cc", + "shell_launch_test.exe": "6e96e163b4adc40b8d53c022a23a206176bf558c73eb76d9790b61f2abb13baf", + "shell_paste_probe.exe": "dd49d693dc30372d6f44cce2b7a1dcfc64adea1e6638399da4d400784a14bf6f", + "shell_query_client.exe": "691b440e9c500c76c1c09c448aafbe2316793bf341ffe69bbc2bf70e41be64cc", + "shell_queue_probe.exe": "e030070a6f287421bc3b74350fd45c8cd762837dc1512a76f688d20d39aa8715", + "shell_selection_text_client.exe": "18b60279aed48a9d39b6f5c57371c60b3a2b59bb21d6e30f92bac7adf50a3ed2", + "shell_size_client.exe": "eeb0801f69cc8add0a8178a185dcedb78a9b33234abfe5c600fd9b20b0f5aab4", + "shell_test_launcher.exe": "7bd78cffd78ac66d651933c9614d6be937c99baa105ce04c1a533df5785c11e2", + "shell_text_client.exe": "9350e53de74c9a6b78495a3b59788e3a31e0067a9c5ec1b8685a729ff18244d3", + "termforge_conpty_probe.exe": "1dcf69f65e9dd2abca1a58c10df2be3a296a4e22cdd895ba457222fe9e27f021", + "termforge_ime_probe.exe": "ba59ec28909430669c187a644651588b2f1984b1308b97056f222f332e7de9c9", + "termforge_shell.exe": "73472864e5aa291704917812ff1848f7a59be6e5f30c41f6a613e3fc18c740d4", + "terminal_trace.exe": "d09f34702cbd2d8be6ecfe98ab56a2326be1fde6b1fde4d10ef85d0f62955d2f", + "text_action_policy_test.exe": "9988026742d9ff45f300a6fa336ceca052a502b568f32114be7fd5057e57f5a4", + "transport_completion_test.exe": "6952438843e8a7605bb6cf0eb7add56dd8574f4e5edfbc3a534f795030a3fcc8", + "workflow_checkpoint_test.exe": "056047580e8ddd77224908667297a0b704f97ef57d1eadeb382b52c7c7875b86", + "workflow_fixture_test.exe": "ce3f09d8b3bb97d92dd6c61531e2cb9ba36070d2222b7b4ad7b86de82021f208", + "workspace_state_test.exe": "18080df77a0b7a370aa1e2dc79f2986dd3a4eb01661663dd95c43a11b802ee11" + } + }, + { + "id": "boundary-green", + "outcome": "green", + "outer_exit_code": 0, + "outer_timed_out": false, + "owned_job_after": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "owned_desktop_gone": true, + "writer": { + "records": 288, + "truncated": false, + "command_written_bytes": 93, + "command_error": 0 + }, + "frida": { + "evidence_id": "ev_5d9f4e9910aa1a8acaae8b86d66a0b214a83e3d88f94b2dc5a8e4b141c2169a9", + "event_count": 23, + "messages_truncated": false, + "provider": { + "id": "frida", + "name": "Frida", + "version": null + }, + "provider_limitations": [ + "Artifact identity is unavailable for this observation.", + "The target operating system and architecture were not reported by this observation." + ], + "script_limitations": [ + "calls already entered before attach are not observed", + "interception changes scheduling", + "timestamps are observer wall clock; no cross-process high resolution alignment" + ], + "script_sha256": "f01e1363d482ef404a7ef2031caf13434409f00dfe936b55fc3863c60628b9cb" + }, + "events": [ + { + "sequence": 2, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [] + }, + { + "sequence": 3, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 2048, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [] + }, + { + "sequence": 4, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [] + }, + { + "sequence": 5, + "type": "msys-read", + "thread": "T2", + "count": 1, + "requested": 4096, + "truncated": false, + "bytes_hex": "69" + }, + { + "sequence": 6, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "54", + "resize_events": [] + }, + { + "sequence": 7, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 16, + "requested": 2048, + "returned_count": 16, + "truncated": false, + "key_characters_hex": "54465f43414e4449444154455f545549", + "resize_events": [] + }, + { + "sequence": 8, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 16, + "requested": 16, + "returned_count": 16, + "truncated": false, + "key_characters_hex": "54465f43414e4449444154455f545549", + "resize_events": [] + }, + { + "sequence": 9, + "type": "msys-read", + "thread": "T2", + "count": 16, + "requested": 4096, + "truncated": false, + "bytes_hex": "54465f43414e4449444154455f545549" + }, + { + "sequence": 10, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + } + ] + }, + { + "sequence": 11, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 95, + "requested": 2048, + "returned_count": 95, + "truncated": false, + "key_characters_hex": "0f3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + }, + { + "position": 1, + "columns": 60, + "rows": 12 + } + ] + }, + { + "sequence": 12, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + } + ] + }, + { + "sequence": 13, + "type": "console", + "thread": "T3", + "name": "ReadConsoleInputW", + "success": true, + "count": 94, + "requested": 2176, + "returned_count": 94, + "truncated": false, + "key_characters_hex": "0f3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 12 + } + ] + }, + { + "sequence": 14, + "type": "console", + "thread": "T3", + "name": "WriteConsoleInputW", + "success": true, + "count": 93, + "requested": 93, + "returned_count": 93, + "truncated": false, + "key_characters_hex": "0f3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [] + }, + { + "sequence": 15, + "type": "console", + "thread": "T3", + "name": "PeekConsoleInputW", + "success": true, + "count": 93, + "requested": 2176, + "returned_count": 93, + "truncated": false, + "key_characters_hex": "0f3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [] + }, + { + "sequence": 16, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "0f", + "resize_events": [] + }, + { + "sequence": 17, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 93, + "requested": 2048, + "returned_count": 93, + "truncated": false, + "key_characters_hex": "0f3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [] + }, + { + "sequence": 18, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 93, + "requested": 93, + "returned_count": 93, + "truncated": false, + "key_characters_hex": "0f3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [] + }, + { + "sequence": 19, + "type": "msys-read", + "thread": "T2", + "count": 93, + "requested": 4096, + "truncated": false, + "bytes_hex": "0f3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d" + }, + { + "sequence": 20, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "truncated": false, + "key_characters_hex": "0f", + "resize_events": [] + }, + { + "sequence": 21, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 5, + "requested": 2048, + "returned_count": 5, + "truncated": false, + "key_characters_hex": "0f3a77710d", + "resize_events": [] + }, + { + "sequence": 22, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 5, + "requested": 5, + "returned_count": 5, + "truncated": false, + "key_characters_hex": "0f3a77710d", + "resize_events": [] + }, + { + "sequence": 23, + "type": "msys-read", + "thread": "T2", + "count": 5, + "requested": 4096, + "truncated": false, + "bytes_hex": "0f3a77710d" + } + ], + "private_artifact_sha256": { + "sample.json": "ff2fef363f302558772b9023862e77a5331b682768f214dfa8ab40655c6e1ab9", + "r52-writes.json": "4e4d6993b54463236bcba0e9beec30e58a65aa8718d7367f149127741ed5c532", + "candidate-input.bin": "4bd689a84f1eb7336afb3b607dec760d117caef3d83f3e8e1b6b1f83d70b4b68", + "candidate-insert-log.txt": "3d07108bcc44f0831b31530265fac711c1d1e69194aa9309897e4440c26de65a", + "candidate-resize-log.txt": "2d3db728e657a0e1ab99b23acb6b2d08c586c4eaba6e65a66ab65e7fb47693b7", + "candidate-output.bin": "fd4684c9af94212afbbc3d0274c03dfee4797125ec3c35a71f005794ff4d8235", + "case-2-identity.json": "625d8ec842d1024ea9b2bc35194fc0a2b8cf0667dcce5ae8a1c5a381ca351074", + "case-2-status-final.json": "96e4e0dec59e7b911b5a4cee13583fdf3ce49551261819a9b04616e99a69ff59", + "case-2-load.json": "2d19cccb2ff6833cf6dc1d2a903a2529ec89389594b2b6b3de478db3bd76ec55", + "case-2-detach.json": "b53d8b7832810f75d86584dbc495295037f01103e868dcf359d1be54012afdc5" + }, + "observed_file_sha256": { + "alpha_normal_smoke.exe": "55f76e0ef0a68a2d3ee2d047852551b86e63074b84604e59fe6d0893361ba3a6", + "candidate_core_test.exe": "4c73b58d7da111ab52b6edbbb59898cf660860fdedaa64c4f49b46fae856a02d", + "candidate_reply_close_test.exe": "7431b2d5a414703d85fb9425b07b7df125eb7b5668851cb5383cf575cb620a69", + "candidate_resize_replay.exe": "c4cf0d9f68bb5bd688e601b87025f3237c8659f4d80e96bd4f67fa463463a13f", + "candidate_title_test.exe": "359141b75c6eeb9a0cc9ef59f9f21ad0d07bcaefb51beb19f64e3288a059bec2", + "clipboard_policy_test.exe": "ef7c7d860bad3b458b7ac8e659c46acd0f768f70281e7d6797e489520d1d559e", + "conpty_backend_probe.exe": "39b52ad4acc4e432718d3cdd6dc6ee2ab80b1584de16c0edc3d775ccc7b03c0d", + "conpty_ctrl_c_probe.exe": "30ad460b54cfcc752e20ccd5f656c6769e292528408a4a68e7182ab3206d39b6", + "conpty_margin_probe.exe": "7aaef1da461b3b6d833aea79332f28d8f924e26de2f9332feeb1f1303a51e30f", + "conpty_resize_native_probe.exe": "a570b55f7ef0f65be01b827112905a223fb32f37a0f645ce121ead1ed6555f59", + "core_measure.exe": "dfe74cf8e6ec0fdb976911569c14e52709be5e880d9b36d2a108187bca9c165b", + "find_bar_test.exe": "632e5ff486b7ad5d29292b4af1206c196d09ca1c1c8a38a830a004ee9c21f1a1", + "history_test.exe": "3b3f6199ad4d345ef5cc759ddcf80667fdde4c7778658e99764342cc17949e2e", + "ime_context_test.exe": "8941d52ed7642b15c46da5a50927ba09ceab7078c5f31c649e4e3baa859e8ae1", + "ime_input_expectation_test.exe": "a960fbd62a7c0d6eec564a5a2bb1cc271582e7bb55ec07ddb63bc46044b9c438", + "keyboard_test.exe": "fe027bbcb21a09fac9411dd5766a37e8edd711d3ef547f37a080ded097a4de3e", + "layout_state_test.exe": "7b174db85ff75e8a8f5613c949c264a4dedbb8cfeb8a18581f016191bd036ddb", + "paste_test.exe": "1e6acc382a75fe18b50212cf6950d3d714f89939b1cf63000795348e4db22d54", + "presentation_probe.exe": "91aa34c2ac7b4f6610da419a04091d4391cb78e224e6b5f567437a5565d4e33a", + "raw_console_receiver_test.exe": "0731af92b2536b189d80894b5ca4243d814e07ab2c513fff7b4d3fd3654578f2", + "real_app_capture.exe": "fddd86a02d7c8ba13b7cd458373c8acd19d999199baefce77e8f237efce47189", + "receive.exe": "b5ea1d10bba964ec80f183d761b1c0ea4334f6963597ccd1bb16b9c769fc76d5", + "recovery_probe.exe": "72213828da26b5657915667faccd1d0aca83dbe6d9537f38dbd9d5464750313b", + "renderer_metrics_test.exe": "f08e88f6ff8bb6be87f724ff6a3c398df359a639f83d75b5970e69659f8a4a5c", + "replay.exe": "54298c3fa5020d3ebcaa55c76564b9dcbfec5b25d772343c428e2e36e1858ca1", + "resize_test.exe": "fd97c87127d4763320832d1d538af5755eece8a1ec1485435cab6b41e9e549cd", + "runtime_observation_test.exe": "0049a0d863724bf8bd181c85868bd68a409eb5e12c755a5538add5f85bf8b0bf", + "scenario_tick_gate_test.exe": "f7368d2d4c13a9eee4a210e857fd5d13479641328fa71a984582c69b57735ecf", + "search_test.exe": "6bf2a5fa47e1f0665462e6601e01253674c6662e5db730161bd7eb09c81d621d", + "selection_test.exe": "19eaf7ef3e6f1a35f67e1b17a60858bfb0f268a20c9f2686d141c847a68fbb3a", + "sender_fence_pipe_test.exe": "19bba0df9e37159cc70728f68ae8a28364127fac21ab72cb21cdb036f9380686", + "sender_fence_test.exe": "b3c396a7d8a306d0987ef149fd9d5e014ab90ac6d54d0915a48b6d261a6e21c1", + "sent_message_wait_test.exe": "b9bb4960dc470d5aac08fecb2c0775c16e2a7e75fdabe283b6c028d284679abb", + "shell_clipboard_reader.exe": "01aad3988dfc520ec6419f9747cb2baa04efc9c1409f4b50a4a65b2f385bd7be", + "shell_ime_client.exe": "f02ec529d90db13bf4c904bbee8bc77930fdcf51ba868b4a43a43ed783f61830", + "shell_input_client.exe": "0075a332e524071809a1fdbd5161d1f360fa8e89faaf2b45b24c19f1d94829cc", + "shell_launch_test.exe": "6e96e163b4adc40b8d53c022a23a206176bf558c73eb76d9790b61f2abb13baf", + "shell_paste_probe.exe": "dd49d693dc30372d6f44cce2b7a1dcfc64adea1e6638399da4d400784a14bf6f", + "shell_query_client.exe": "691b440e9c500c76c1c09c448aafbe2316793bf341ffe69bbc2bf70e41be64cc", + "shell_queue_probe.exe": "e030070a6f287421bc3b74350fd45c8cd762837dc1512a76f688d20d39aa8715", + "shell_selection_text_client.exe": "18b60279aed48a9d39b6f5c57371c60b3a2b59bb21d6e30f92bac7adf50a3ed2", + "shell_size_client.exe": "eeb0801f69cc8add0a8178a185dcedb78a9b33234abfe5c600fd9b20b0f5aab4", + "shell_test_launcher.exe": "7bd78cffd78ac66d651933c9614d6be937c99baa105ce04c1a533df5785c11e2", + "shell_text_client.exe": "9350e53de74c9a6b78495a3b59788e3a31e0067a9c5ec1b8685a729ff18244d3", + "termforge_conpty_probe.exe": "1dcf69f65e9dd2abca1a58c10df2be3a296a4e22cdd895ba457222fe9e27f021", + "termforge_ime_probe.exe": "ba59ec28909430669c187a644651588b2f1984b1308b97056f222f332e7de9c9", + "termforge_shell.exe": "73472864e5aa291704917812ff1848f7a59be6e5f30c41f6a613e3fc18c740d4", + "terminal_trace.exe": "d09f34702cbd2d8be6ecfe98ab56a2326be1fde6b1fde4d10ef85d0f62955d2f", + "text_action_policy_test.exe": "9988026742d9ff45f300a6fa336ceca052a502b568f32114be7fd5057e57f5a4", + "transport_completion_test.exe": "6952438843e8a7605bb6cf0eb7add56dd8574f4e5edfbc3a534f795030a3fcc8", + "workflow_checkpoint_test.exe": "056047580e8ddd77224908667297a0b704f97ef57d1eadeb382b52c7c7875b86", + "workflow_fixture_test.exe": "ce3f09d8b3bb97d92dd6c61531e2cb9ba36070d2222b7b4ad7b86de82021f208", + "workspace_state_test.exe": "18080df77a0b7a370aa1e2dc79f2986dd3a4eb01661663dd95c43a11b802ee11" + } + }, + { + "id": "symbol-red", + "outcome": "stage59", + "outer_exit_code": 2, + "outer_timed_out": false, + "owned_job_after": { + "active": 0, + "total": 7, + "terminated": 0 + }, + "owned_desktop_gone": true, + "writer": { + "records": 91, + "truncated": false, + "command_written_bytes": 93, + "command_error": 0 + }, + "frida": { + "evidence_id": "ev_d9ec8dd6c39ad99e42d4c2ada98b9546a47e9550b5c026eaf59ef80c35ccd485", + "event_count": 27, + "messages_truncated": false, + "provider": { + "id": "frida", + "name": "Frida", + "version": null + }, + "provider_limitations": [ + "Artifact identity is unavailable for this observation.", + "The target operating system and architecture were not reported by this observation." + ], + "script_limitations": [ + "calls already entered before attach are not observed", + "interception changes scheduling", + "timestamps are observer wall clock; no cross-process high resolution alignment" + ], + "script_sha256": "a33709df621e376ede656f88dd85d0c04dfb7c578c71a3ebee9dbd047dbd23bd" + }, + "events": [ + { + "sequence": 2, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "inside_process": false, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [], + "caller_symbol": "_ZL12peek_consoleP13select_recordb", + "caller_rva": "0x76ecb", + "caller_offset": 667 + }, + { + "sequence": 3, + "type": "process-enter", + "thread": "T1", + "inside_process": true, + "inside_winch": false + }, + { + "sequence": 4, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 2048, + "returned_count": 1, + "inside_process": true, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [], + "caller_symbol": "_ZN16fhandler_console21process_input_messageEv", + "caller_rva": "0xc7a50", + "caller_offset": 128 + }, + { + "sequence": 5, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "inside_process": true, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "69", + "resize_events": [], + "caller_symbol": "_ZN16fhandler_console21process_input_messageEv", + "caller_rva": "0xc7bfb", + "caller_offset": 555 + }, + { + "sequence": 6, + "type": "process-leave", + "thread": "T1", + "result": 1, + "inside_process": true, + "inside_winch": false + }, + { + "sequence": 7, + "type": "msys-read", + "thread": "T2", + "count": 1, + "requested": 4096, + "inside_process": false, + "inside_winch": false, + "truncated": false, + "bytes_hex": "69" + }, + { + "sequence": 8, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "inside_process": false, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "54", + "resize_events": [], + "caller_symbol": "_ZL12peek_consoleP13select_recordb", + "caller_rva": "0x76ecb", + "caller_offset": 667 + }, + { + "sequence": 9, + "type": "process-enter", + "thread": "T1", + "inside_process": true, + "inside_winch": false + }, + { + "sequence": 10, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 16, + "requested": 2048, + "returned_count": 16, + "inside_process": true, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "54465f43414e4449444154455f545549", + "resize_events": [], + "caller_symbol": "_ZN16fhandler_console21process_input_messageEv", + "caller_rva": "0xc7a50", + "caller_offset": 128 + }, + { + "sequence": 11, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 16, + "requested": 16, + "returned_count": 16, + "inside_process": true, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "54465f43414e4449444154455f545549", + "resize_events": [], + "caller_symbol": "_ZN16fhandler_console21process_input_messageEv", + "caller_rva": "0xc7bfb", + "caller_offset": 555 + }, + { + "sequence": 12, + "type": "process-leave", + "thread": "T1", + "result": 1, + "inside_process": true, + "inside_winch": false + }, + { + "sequence": 13, + "type": "msys-read", + "thread": "T2", + "count": 16, + "requested": 4096, + "inside_process": false, + "inside_winch": false, + "truncated": false, + "bytes_hex": "54465f43414e4449444154455f545549" + }, + { + "sequence": 14, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "inside_process": false, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + } + ], + "caller_symbol": "_ZL12peek_consoleP13select_recordb", + "caller_rva": "0x76ecb", + "caller_offset": 667 + }, + { + "sequence": 15, + "type": "process-enter", + "thread": "T1", + "inside_process": true, + "inside_winch": false + }, + { + "sequence": 16, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 2, + "requested": 2048, + "returned_count": 2, + "inside_process": true, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + }, + { + "position": 1, + "columns": 60, + "rows": 12 + } + ], + "caller_symbol": "_ZN16fhandler_console21process_input_messageEv", + "caller_rva": "0xc7a50", + "caller_offset": 128 + }, + { + "sequence": 17, + "type": "winch-enter", + "thread": "T1", + "inside_process": true, + "inside_winch": true + }, + { + "sequence": 18, + "type": "console", + "thread": "T3", + "name": "ReadConsoleInputW", + "success": true, + "count": 2, + "requested": 2176, + "returned_count": 2, + "inside_process": false, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "", + "resize_events": [ + { + "position": 0, + "columns": 60, + "rows": 24 + }, + { + "position": 1, + "columns": 60, + "rows": 12 + } + ], + "caller_symbol": "_ZN16fhandler_console18cons_master_threadEPN16fhandler_termios17cons_handle_set_tEP3tty", + "caller_rva": "0xc0520", + "caller_offset": 480 + }, + { + "sequence": 19, + "type": "winch-leave", + "thread": "T1", + "result": 1, + "inside_process": true, + "inside_winch": true + }, + { + "sequence": 20, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "inside_process": true, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "0f", + "resize_events": [], + "caller_symbol": "_ZN16fhandler_console21process_input_messageEv", + "caller_rva": "0xc7bfb", + "caller_offset": 555 + }, + { + "sequence": 21, + "type": "process-leave", + "thread": "T1", + "result": 3, + "inside_process": true, + "inside_winch": false + }, + { + "sequence": 22, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 1, + "requested": 1, + "returned_count": 1, + "inside_process": false, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "3a", + "resize_events": [], + "caller_symbol": "_ZL12peek_consoleP13select_recordb", + "caller_rva": "0x76ecb", + "caller_offset": 667 + }, + { + "sequence": 23, + "type": "process-enter", + "thread": "T1", + "inside_process": true, + "inside_winch": false + }, + { + "sequence": 24, + "type": "console", + "thread": "T1", + "name": "PeekConsoleInputW", + "success": true, + "count": 92, + "requested": 2048, + "returned_count": 92, + "inside_process": true, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [], + "caller_symbol": "_ZN16fhandler_console21process_input_messageEv", + "caller_rva": "0xc7a50", + "caller_offset": 128 + }, + { + "sequence": 25, + "type": "console", + "thread": "T1", + "name": "ReadConsoleInputW", + "success": true, + "count": 92, + "requested": 92, + "returned_count": 92, + "inside_process": true, + "inside_winch": false, + "truncated": false, + "key_characters_hex": "3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d", + "resize_events": [], + "caller_symbol": "_ZN16fhandler_console21process_input_messageEv", + "caller_rva": "0xc7bfb", + "caller_offset": 555 + }, + { + "sequence": 26, + "type": "process-leave", + "thread": "T1", + "result": 1, + "inside_process": true, + "inside_winch": false + }, + { + "sequence": 27, + "type": "msys-read", + "thread": "T2", + "count": 92, + "requested": 4096, + "inside_process": false, + "inside_winch": false, + "truncated": false, + "bytes_hex": "3a63616c6c20777269746566696c65285b737472696e672826636f6c756d6e7329202e20277827202e20737472696e6728266c696e6573295d2c202763616e6469646174652d726573697a652d6c6f672e747874272c20276227290d" + } + ], + "private_artifact_sha256": { + "sample.json": "323fd063cf25c12a79843b434d912070143b1b757fcdd4259c0c238764a56037", + "r52-writes.json": "da113f75b2f36563a7cf4ea3597afe800f15c6775707a7d3b9f7e4257fc29f90", + "candidate-input.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "candidate-insert-log.txt": "e6de4daeba1841783e7e22f81dbf87154f341c309dc5b54405e5fc2c2f3550a6", + "candidate-resize-log.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "candidate-output.bin": "fc43e5c356005f9c32847476d4bdba5fabaf51439083d8ac4e530d3e8bb5c883", + "case-0-identity.json": "35ca331419b51f084db61cb550010eb64bfa90679beaac15d5247945184f07ab", + "case-0-status-final.json": "4238c82e9cd6c94747b5b3b5faa4134dc320e63534ba889526ae466467adabbd", + "case-0-load.json": "97d63987cc45685444eb3be50d7e21c22fbbbec1a97096073bba325b9eb4a77f", + "case-0-detach.json": "b53d8b7832810f75d86584dbc495295037f01103e868dcf359d1be54012afdc5" + }, + "observed_file_sha256": { + "alpha_normal_smoke.exe": "55f76e0ef0a68a2d3ee2d047852551b86e63074b84604e59fe6d0893361ba3a6", + "candidate_core_test.exe": "4c73b58d7da111ab52b6edbbb59898cf660860fdedaa64c4f49b46fae856a02d", + "candidate_reply_close_test.exe": "7431b2d5a414703d85fb9425b07b7df125eb7b5668851cb5383cf575cb620a69", + "candidate_resize_replay.exe": "c4cf0d9f68bb5bd688e601b87025f3237c8659f4d80e96bd4f67fa463463a13f", + "candidate_title_test.exe": "359141b75c6eeb9a0cc9ef59f9f21ad0d07bcaefb51beb19f64e3288a059bec2", + "clipboard_policy_test.exe": "ef7c7d860bad3b458b7ac8e659c46acd0f768f70281e7d6797e489520d1d559e", + "conpty_backend_probe.exe": "39b52ad4acc4e432718d3cdd6dc6ee2ab80b1584de16c0edc3d775ccc7b03c0d", + "conpty_ctrl_c_probe.exe": "30ad460b54cfcc752e20ccd5f656c6769e292528408a4a68e7182ab3206d39b6", + "conpty_margin_probe.exe": "7aaef1da461b3b6d833aea79332f28d8f924e26de2f9332feeb1f1303a51e30f", + "conpty_resize_native_probe.exe": "a570b55f7ef0f65be01b827112905a223fb32f37a0f645ce121ead1ed6555f59", + "core_measure.exe": "dfe74cf8e6ec0fdb976911569c14e52709be5e880d9b36d2a108187bca9c165b", + "find_bar_test.exe": "632e5ff486b7ad5d29292b4af1206c196d09ca1c1c8a38a830a004ee9c21f1a1", + "history_test.exe": "3b3f6199ad4d345ef5cc759ddcf80667fdde4c7778658e99764342cc17949e2e", + "ime_context_test.exe": "8941d52ed7642b15c46da5a50927ba09ceab7078c5f31c649e4e3baa859e8ae1", + "ime_input_expectation_test.exe": "a960fbd62a7c0d6eec564a5a2bb1cc271582e7bb55ec07ddb63bc46044b9c438", + "keyboard_test.exe": "fe027bbcb21a09fac9411dd5766a37e8edd711d3ef547f37a080ded097a4de3e", + "layout_state_test.exe": "7b174db85ff75e8a8f5613c949c264a4dedbb8cfeb8a18581f016191bd036ddb", + "paste_test.exe": "1e6acc382a75fe18b50212cf6950d3d714f89939b1cf63000795348e4db22d54", + "presentation_probe.exe": "91aa34c2ac7b4f6610da419a04091d4391cb78e224e6b5f567437a5565d4e33a", + "raw_console_receiver_test.exe": "0731af92b2536b189d80894b5ca4243d814e07ab2c513fff7b4d3fd3654578f2", + "real_app_capture.exe": "fddd86a02d7c8ba13b7cd458373c8acd19d999199baefce77e8f237efce47189", + "receive.exe": "b5ea1d10bba964ec80f183d761b1c0ea4334f6963597ccd1bb16b9c769fc76d5", + "recovery_probe.exe": "72213828da26b5657915667faccd1d0aca83dbe6d9537f38dbd9d5464750313b", + "renderer_metrics_test.exe": "f08e88f6ff8bb6be87f724ff6a3c398df359a639f83d75b5970e69659f8a4a5c", + "replay.exe": "54298c3fa5020d3ebcaa55c76564b9dcbfec5b25d772343c428e2e36e1858ca1", + "resize_test.exe": "fd97c87127d4763320832d1d538af5755eece8a1ec1485435cab6b41e9e549cd", + "runtime_observation_test.exe": "0049a0d863724bf8bd181c85868bd68a409eb5e12c755a5538add5f85bf8b0bf", + "scenario_tick_gate_test.exe": "f7368d2d4c13a9eee4a210e857fd5d13479641328fa71a984582c69b57735ecf", + "search_test.exe": "6bf2a5fa47e1f0665462e6601e01253674c6662e5db730161bd7eb09c81d621d", + "selection_test.exe": "19eaf7ef3e6f1a35f67e1b17a60858bfb0f268a20c9f2686d141c847a68fbb3a", + "sender_fence_pipe_test.exe": "19bba0df9e37159cc70728f68ae8a28364127fac21ab72cb21cdb036f9380686", + "sender_fence_test.exe": "b3c396a7d8a306d0987ef149fd9d5e014ab90ac6d54d0915a48b6d261a6e21c1", + "sent_message_wait_test.exe": "b9bb4960dc470d5aac08fecb2c0775c16e2a7e75fdabe283b6c028d284679abb", + "shell_clipboard_reader.exe": "771da921ef4d30a7e710989ea0d4446254fc4e85c59199730704edf2256bb641", + "shell_ime_client.exe": "f02ec529d90db13bf4c904bbee8bc77930fdcf51ba868b4a43a43ed783f61830", + "shell_input_client.exe": "0075a332e524071809a1fdbd5161d1f360fa8e89faaf2b45b24c19f1d94829cc", + "shell_launch_test.exe": "6e96e163b4adc40b8d53c022a23a206176bf558c73eb76d9790b61f2abb13baf", + "shell_paste_probe.exe": "dd49d693dc30372d6f44cce2b7a1dcfc64adea1e6638399da4d400784a14bf6f", + "shell_query_client.exe": "691b440e9c500c76c1c09c448aafbe2316793bf341ffe69bbc2bf70e41be64cc", + "shell_queue_probe.exe": "e030070a6f287421bc3b74350fd45c8cd762837dc1512a76f688d20d39aa8715", + "shell_selection_text_client.exe": "18b60279aed48a9d39b6f5c57371c60b3a2b59bb21d6e30f92bac7adf50a3ed2", + "shell_size_client.exe": "eeb0801f69cc8add0a8178a185dcedb78a9b33234abfe5c600fd9b20b0f5aab4", + "shell_test_launcher.exe": "7bd78cffd78ac66d651933c9614d6be937c99baa105ce04c1a533df5785c11e2", + "shell_text_client.exe": "9350e53de74c9a6b78495a3b59788e3a31e0067a9c5ec1b8685a729ff18244d3", + "termforge_conpty_probe.exe": "1dcf69f65e9dd2abca1a58c10df2be3a296a4e22cdd895ba457222fe9e27f021", + "termforge_ime_probe.exe": "ba59ec28909430669c187a644651588b2f1984b1308b97056f222f332e7de9c9", + "termforge_shell.exe": "73472864e5aa291704917812ff1848f7a59be6e5f30c41f6a613e3fc18c740d4", + "terminal_trace.exe": "d09f34702cbd2d8be6ecfe98ab56a2326be1fde6b1fde4d10ef85d0f62955d2f", + "text_action_policy_test.exe": "9988026742d9ff45f300a6fa336ceca052a502b568f32114be7fd5057e57f5a4", + "transport_completion_test.exe": "6952438843e8a7605bb6cf0eb7add56dd8574f4e5edfbc3a534f795030a3fcc8", + "workflow_checkpoint_test.exe": "056047580e8ddd77224908667297a0b704f97ef57d1eadeb382b52c7c7875b86", + "workflow_fixture_test.exe": "ce3f09d8b3bb97d92dd6c61531e2cb9ba36070d2222b7b4ad7b86de82021f208", + "workspace_state_test.exe": "18080df77a0b7a370aa1e2dc79f2986dd3a4eb01661663dd95c43a11b802ee11" + } + } + ], + "restoration": { + "source_bytes_equal_baseline": true, + "rebuild_completed": true, + "rebuild_log_sha256": "1e9970789882be9fec43ca72b65f8b5329b0aa7e5a93dbe87627a2c2df7e415d", + "rebuilt_shell_sha256": "b061934e08561a7bc2e0dc2773412ef3d900e2728267ce1d5c54be5ca6ad8515", + "same_binary_as_pre_probe": false, + "new_regression_run_claimed": false + }, + "conclusions": { + "observed": "Original command reaches native input. On red runs process_input_message consumes Ctrl-O after another thread removes the earlier resize events; read(0) returns only the following 92 bytes. Diagnostic green returns all 93 bytes.", + "source_inference": "send_winch_maybe temporarily releases input_mutex; the saved PeekConsoleInput snapshot can become stale before discard. Function-boundary observation confirms the corresponding cross-thread order, not a tested patch.", + "hypotheses": { + "lost_before_native": "contradicted in these captured runs", + "lost_in_msys_console_to_read": "observed in three captured red runs", + "vim_ignores_received_control": "not the boundary of these captured failures" + }, + "product_fixed": false, + "fixed_target_replacement_or_runtime_upgrade_tested": false, + "unobserved_historical_runs_attributed": false + }, + "limitations": [ + "Frida installs code hooks; instrumentation and initial attachment gate alter scheduling; no performance conclusion.", + "No fixed application update, no production workaround, no controlled patch red-to-green; issue 52 remains open.", + "Provider did not supply artifact identity, OS/architecture or version; local file hashes and script-reported identity/function-prefix checks are separate evidence.", + "Calls already entered before attach are outside coverage; the original i and marker are captured before the failing command.", + "Threads are aliases within each run; observer wall-clock intervals are not cross-process timing measurements.", + "A fresh source rebuild has a different executable hash from the pre-probe binary; no new full regression is claimed.", + "No private raw captures, local absolute paths, PIDs, native addresses or binary prefixes are published." + ] +} diff --git a/experiments/shell/results/2026-10-27-vim-msys-runtime-prototype/validation.json b/experiments/shell/results/2026-10-27-vim-msys-runtime-prototype/validation.json new file mode 100644 index 00000000..697e6029 --- /dev/null +++ b/experiments/shell/results/2026-10-27-vim-msys-runtime-prototype/validation.json @@ -0,0 +1,655 @@ +{ + "schema_version": 1, + "purpose": "isolated source-rebuilt MSYS runtime prototype for issue 52", + "status": "rebuilt baseline reproduced stage59; patched runtime passed four original GUI cases; original fixed-runtime acceptance remains open", + "termforge": { + "source_commit": "ed55a8758423b3273fbd98f07e0bfd77d88e46ac", + "product_code_same_as": "c662011", + "product_and_test_changes": false, + "binary_sha256": "7f26395942f107297565f50402568650e1e17c5eb23924bee1bfb02c50c60d16", + "candidate": "0.26.1-dev+termforge.5", + "backend": "reviewed-side-by-side-1.25.260930003", + "conpty_flags": 24, + "source_files_sha256": { + "experiments/shell/shell.cpp": "b4f6fe98812d1d23fa5f5bbcc7376437404af6cdb67cd6cdcdf448b57cb31fe9", + "experiments/shell/test_candidate_tui.py": "a300380b97ad424c5af06219a021a256de6178c3af7fb7e933e24bb8142201ee", + "experiments/shell/run.py": "45976b828eecb316881d698dedaef09ad304f72d991dfa360f1c552bbcbe9f1d" + } + }, + "environment": { + "os_version_observed_after_batch": [ + "11", + "10.0.26200", + "SP0", + "Multiprocessor Free" + ], + "architecture": "x64", + "personal_installation_unchanged_hash_check": true, + "fixture_files_original_sha256": { + "vim.exe": "2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a", + "msys-ncursesw6.dll": "73ff8bc8b1f515e57b185e57d25d9ad29067057ff0819a8e588677c65ca61629", + "msys-2.0.dll": "3096d2ba9be20e90be1399edd391bac65d84bc387f5a419b502c9b326081930f", + "msys-intl-8.dll": "23d30f4bcbc0a258cf5ecfe29e707f9b05d51c32d5b16a910f1012b889136c12", + "msys-iconv-2.dll": "9cbf5613b946be7bad403ac0d7277efbd514a35faa644c6a0d6e7f6cc0b40780" + }, + "same_active_fixture_path_across_variants": true, + "fixture_runtime_files_not_copied": true, + "loaded_module_paths_observed": false, + "diagnostic_instrumentation": false + }, + "runtime": { + "source_commit": "2e2ef940151485490aff0c7b00c00965ef7a71a4", + "original_dll_sha256": "3096d2ba9be20e90be1399edd391bac65d84bc387f5a419b502c9b326081930f", + "sdk_commit": "36b102843d99c4993084b29d839dc6f5ef4db2f9", + "headers_commit": "eb069c08fe8ef4d2f19dc6b99c4816a4c51fd2ae", + "win32_headers": "msys2-w32api-headers 12.0.0.r0.g819a6ec2e-1; both w32api-prefixed and bare paths pinned", + "c_compiler": "gcc 16.2.0, GNU17, -Wno-error=old-style-definition", + "cxx_compiler": "g++ 16.2.0, GNU++17, -O2 -g -Wno-error -Wno-narrowing -Wno-use-after-free", + "build_script_sha256": "13d47fb56cec438c591861e996b2954214869c541d3b2540e623912c82844fa9", + "packages_sha256": "0c10cee128f4d02add7fd28c9e5d4df6035c3cddca2a80cdc8c15600eade5f67", + "package_inventory_path": "research/msys-runtime-window-prefix/build-packages.txt", + "selected_build_packages": { + "gcc": "16.2.0-1", + "binutils": "2.47-1", + "make": "4.4.1-3", + "cocom": "0.996-6", + "zlib-devel": "1.3.2-1" + }, + "build_object_count": 310, + "changed_build_object_count": 6, + "changed_build_objects": { + "fhandler/console.o": { + "base": "308e4d37447fd48dbb4b06b511abf5ffe16ccd0899bea8e08506fd765ef9867b", + "window-prefix": "06a2a4519d4f7fd74f240aae0fc91b262bbafceff36f2b4414928e8a59e47b27" + }, + "libdll.a": { + "base": "6c12fadc029325b2f683ccaa1a391a2ba50c385a2bd36fc0cba1e3065285d57c", + "window-prefix": "03c56b71231c3f8b224c10009531a94baad6c5ebd8a2bcdfb92efa03b61c7b80" + }, + "msysdll.a": { + "base": "e8e3b40bbcc8de7f7b266c57e7d64e9f147f71d1fcfcb9bff00f0126f859f14a", + "window-prefix": "f3768c0c931ba35c3050a23cb062c2a39a1ed93410e8e06ee6722076b3d142fc" + }, + "new-msys-2.0.dll": { + "base": "d9e490fdbe31c233eab6578168fb4f2bda84f53252be3898d0cdd0e8610db721", + "window-prefix": "dd792766fa976b031cbff0540744b6f3d2b3fc0d695ed764a01457b65eab6258" + }, + "version.o": { + "base": "3a669b9dac2aed0a7619052d974d5819e48846d1af3fa8de41bc1cda9da7efd5", + "window-prefix": "51bc7e867867b7eec6694f40618f13ebf66eb8317a8e7ff22b71342b18ef836a" + }, + "winver.o": { + "base": "b5cd6766287393c78274b5c16a85ac94009cbec3603096d94cf6533642ca584b", + "window-prefix": "c52d7f4fe56736b0a55f2b4f32676efd0a0f7786933731185f5bc0b60e45e24f" + } + }, + "variants": { + "base": { + "dll_sha256": "d9e490fdbe31c233eab6578168fb4f2bda84f53252be3898d0cdd0e8610db721", + "console_source_sha256": "00d73637398314b74b81f6fabf4bd32176056dd088ce825f4546b2c4b38726b8", + "source_status": "", + "private_identity_sha256": "c8f08c4544fa76a1355900000dbe34cdc5676c7f183f853a6c8aa55fcf6c15d3" + }, + "window-prefix": { + "dll_sha256": "dd792766fa976b031cbff0540744b6f3d2b3fc0d695ed764a01457b65eab6258", + "console_source_sha256": "5d2b1b4c1fecefa15518d8e3ff6a375a5a00f8c91fee0267a96a1c4e08eb3fc1", + "source_status": " M winsup/cygwin/fhandler/console.cc\n", + "private_identity_sha256": "be5d87b794b709ad4dd63bc9ea1a6cb594e99ffd74b92a2b5f531556072755d0" + } + } + }, + "patch": { + "path": "research/msys-runtime-window-prefix/window-prefix.patch", + "sha256": "e942c2d08b7cc5a294203bf0a52f7414b9b19f3cd675624644feadf907418c77", + "changed_source_file": "winsup/cygwin/fhandler/console.cc", + "insertions": 12, + "deletions": 6, + "apply_check_and_resulting_source_hash_verified": true, + "license": "LGPL-3.0-or-later with upstream CYGWIN_LICENSE linking exception", + "license_files_sha256": { + "CYGWIN_LICENSE": "794433752103cf4bbb4a84a1bdb8fbc150abb1762704bb35fecc9f7f820be984", + "COPYING.LIB": "da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768", + "COPYING": "8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903" + } + }, + "method": { + "name": "CandidateTuiTests.test_real_fullscreen_editor_and_cursor_reply", + "original_repetitions": 2, + "inner_timeout_seconds": 25, + "outer_timeout_seconds_per_case": 40, + "max_methods": { + "original": 1, + "base": 2, + "window-prefix": 2 + }, + "stops": [ + "Original relocated DLL: one method only.", + "Rebuilt base: stop on first stage59 or other failure.", + "Patched: run only after rebuilt stage59; stop on any failure or after two methods.", + "Do not switch runtime until all preceding owned Jobs are inactive and desktops gone." + ], + "actual_methods": 4, + "actual_cases": 7, + "passed_cases": 5, + "stage59_cases": 2, + "patched_passed_cases": 4, + "no_extra_gui_runs_during_export": true + }, + "methods": [ + { + "id": "original-method-0", + "variant": "original", + "started_utc": "2026-10-27T00:43:09.383669+00:00", + "runtime_sha256": "3096d2ba9be20e90be1399edd391bac65d84bc387f5a419b502c9b326081930f", + "outcome": "stage59", + "test_success": false, + "tests_run": 1, + "skips": 0, + "original_assertions_offline_rechecked_for_successful_cases": true, + "samples": [ + { + "index": 0, + "status": "passed", + "failure_stage": null, + "exit_code": 0, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "desktop_gone": true, + "result": { + "valid": true, + "candidate_tui_start": true, + "candidate_tui": true, + "candidate_resize": true, + "candidate_replies": true, + "command_verified": true, + "exit_code": 37, + "active_children_after": 0, + "cleanup_complete": true, + "input_rejected": 0, + "columns": 60, + "rows": 12, + "presented_done": null + }, + "files": { + "candidate-input.bin": { + "bytes": 115, + "sha256": "4bd689a84f1eb7336afb3b607dec760d117caef3d83f3e8e1b6b1f83d70b4b68" + }, + "candidate-insert-log.txt": { + "bytes": 58, + "sha256": "3d07108bcc44f0831b31530265fac711c1d1e69194aa9309897e4440c26de65a" + }, + "candidate-resize-log.txt": { + "bytes": 5, + "sha256": "2d3db728e657a0e1ab99b23acb6b2d08c586c4eaba6e65a66ab65e7fb47693b7" + }, + "candidate-startup-log.txt": { + "bytes": 6, + "sha256": "3dfa3fb239f56c778a1e9b33eb31328349edd155a95806dac4378904e88527e5" + }, + "candidate-vim.vim": { + "bytes": 334, + "sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797" + }, + "candidate-tui.txt": { + "bytes": 17, + "sha256": "d9d3b8d10b660a808ece2b2c46b3767713ba4e74631c56b376b492eadf511dec" + }, + "candidate-replies.bin": { + "bytes": 7, + "sha256": "39cb2fc06ace6ef92a7015a38ab2e7fe1f03a846af0313e27ec7cdceca6643ff" + }, + "sample.json": { + "bytes": 6004, + "sha256": "1da51ee58c0342cc6c35ece841fe5ceb2c53d34886cc58f142eb2ea3665b584d" + } + }, + "empty_input_file_is_not_a_complete_input_trace": false + }, + { + "index": 1, + "status": "failed", + "failure_stage": 59, + "exit_code": 2, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 7, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 7, + "terminated": 0 + }, + "desktop_gone": true, + "result": null, + "files": { + "candidate-input.bin": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "candidate-insert-log.txt": { + "bytes": 221, + "sha256": "e6de4daeba1841783e7e22f81dbf87154f341c309dc5b54405e5fc2c2f3550a6" + }, + "candidate-resize-log.txt": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "candidate-startup-log.txt": { + "bytes": 6, + "sha256": "3dfa3fb239f56c778a1e9b33eb31328349edd155a95806dac4378904e88527e5" + }, + "candidate-vim.vim": { + "bytes": 334, + "sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797" + }, + "sample.json": { + "bytes": 2315, + "sha256": "e756a2193be5abaf109f8f1560088a9a107581ec3fb18ca2201a4877c004169f" + } + }, + "empty_input_file_is_not_a_complete_input_trace": true + } + ], + "private_artifact_hashes": { + "identity.json": "fe45dbd34bb82fea0a9a401cdc8424bf7fab2ec04c112f8f59612953a621a4fd", + "outcome.json": "e4906807e67e3bd88cc49f9cd92e4304d17f8c839e91e76a6a48a6c677f0d569", + "unittest.log": "20433d14432af18e521d5419b02c90f33d485c2d279c6c0f61f79bb7dcfa6ca1" + } + }, + { + "id": "base-method-0", + "variant": "base", + "started_utc": "2026-10-27T00:44:15.818364+00:00", + "runtime_sha256": "d9e490fdbe31c233eab6578168fb4f2bda84f53252be3898d0cdd0e8610db721", + "outcome": "stage59", + "test_success": false, + "tests_run": 1, + "skips": 0, + "original_assertions_offline_rechecked_for_successful_cases": true, + "samples": [ + { + "index": 0, + "status": "failed", + "failure_stage": 59, + "exit_code": 2, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 7, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 7, + "terminated": 0 + }, + "desktop_gone": true, + "result": null, + "files": { + "candidate-input.bin": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "candidate-insert-log.txt": { + "bytes": 221, + "sha256": "e6de4daeba1841783e7e22f81dbf87154f341c309dc5b54405e5fc2c2f3550a6" + }, + "candidate-resize-log.txt": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "candidate-startup-log.txt": { + "bytes": 6, + "sha256": "3dfa3fb239f56c778a1e9b33eb31328349edd155a95806dac4378904e88527e5" + }, + "candidate-vim.vim": { + "bytes": 334, + "sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797" + }, + "sample.json": { + "bytes": 2315, + "sha256": "9bbb1c8b4112cb0bd4018fc1b84ae38ee6922f1eced471759e9504a0df3b0c62" + } + }, + "empty_input_file_is_not_a_complete_input_trace": true + } + ], + "private_artifact_hashes": { + "identity.json": "9a99e3bd48c3170adaf9c8740bc997c0411409311e4baf5677ebe131343e951f", + "outcome.json": "b2daaab684843847a1fbc02fb4c951684aefb65a5367a6d66336ff3af02ae326", + "unittest.log": "1f06d393a95d0ce3a57280bfea3196b1e3fd3c3d341da71f1d25a016dee8a34d" + } + }, + { + "id": "window-prefix-method-0", + "variant": "window-prefix", + "started_utc": "2026-10-27T00:48:45.063902+00:00", + "runtime_sha256": "dd792766fa976b031cbff0540744b6f3d2b3fc0d695ed764a01457b65eab6258", + "outcome": "green", + "test_success": true, + "tests_run": 1, + "skips": 0, + "original_assertions_offline_rechecked_for_successful_cases": true, + "samples": [ + { + "index": 0, + "status": "passed", + "failure_stage": null, + "exit_code": 0, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "desktop_gone": true, + "result": { + "valid": true, + "candidate_tui_start": true, + "candidate_tui": true, + "candidate_resize": true, + "candidate_replies": true, + "command_verified": true, + "exit_code": 37, + "active_children_after": 0, + "cleanup_complete": true, + "input_rejected": 0, + "columns": 60, + "rows": 12, + "presented_done": null + }, + "files": { + "candidate-input.bin": { + "bytes": 115, + "sha256": "4bd689a84f1eb7336afb3b607dec760d117caef3d83f3e8e1b6b1f83d70b4b68" + }, + "candidate-insert-log.txt": { + "bytes": 58, + "sha256": "3d07108bcc44f0831b31530265fac711c1d1e69194aa9309897e4440c26de65a" + }, + "candidate-resize-log.txt": { + "bytes": 5, + "sha256": "2d3db728e657a0e1ab99b23acb6b2d08c586c4eaba6e65a66ab65e7fb47693b7" + }, + "candidate-startup-log.txt": { + "bytes": 6, + "sha256": "3dfa3fb239f56c778a1e9b33eb31328349edd155a95806dac4378904e88527e5" + }, + "candidate-vim.vim": { + "bytes": 334, + "sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797" + }, + "candidate-tui.txt": { + "bytes": 17, + "sha256": "d9d3b8d10b660a808ece2b2c46b3767713ba4e74631c56b376b492eadf511dec" + }, + "candidate-replies.bin": { + "bytes": 7, + "sha256": "39cb2fc06ace6ef92a7015a38ab2e7fe1f03a846af0313e27ec7cdceca6643ff" + }, + "sample.json": { + "bytes": 6004, + "sha256": "34e6041be10d8d7fceb26fc8c20b2f5f4429787425d032a3ff01c31cda557c0d" + } + }, + "empty_input_file_is_not_a_complete_input_trace": false + }, + { + "index": 1, + "status": "passed", + "failure_stage": null, + "exit_code": 0, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "desktop_gone": true, + "result": { + "valid": true, + "candidate_tui_start": true, + "candidate_tui": true, + "candidate_resize": true, + "candidate_replies": true, + "command_verified": true, + "exit_code": 37, + "active_children_after": 0, + "cleanup_complete": true, + "input_rejected": 0, + "columns": 60, + "rows": 12, + "presented_done": null + }, + "files": { + "candidate-input.bin": { + "bytes": 115, + "sha256": "4bd689a84f1eb7336afb3b607dec760d117caef3d83f3e8e1b6b1f83d70b4b68" + }, + "candidate-insert-log.txt": { + "bytes": 58, + "sha256": "3d07108bcc44f0831b31530265fac711c1d1e69194aa9309897e4440c26de65a" + }, + "candidate-resize-log.txt": { + "bytes": 5, + "sha256": "2d3db728e657a0e1ab99b23acb6b2d08c586c4eaba6e65a66ab65e7fb47693b7" + }, + "candidate-startup-log.txt": { + "bytes": 6, + "sha256": "3dfa3fb239f56c778a1e9b33eb31328349edd155a95806dac4378904e88527e5" + }, + "candidate-vim.vim": { + "bytes": 334, + "sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797" + }, + "candidate-tui.txt": { + "bytes": 17, + "sha256": "d9d3b8d10b660a808ece2b2c46b3767713ba4e74631c56b376b492eadf511dec" + }, + "candidate-replies.bin": { + "bytes": 7, + "sha256": "39cb2fc06ace6ef92a7015a38ab2e7fe1f03a846af0313e27ec7cdceca6643ff" + }, + "sample.json": { + "bytes": 6004, + "sha256": "f85f7d92aa9f83a148d5d6fc21073deaf5e8dad217c2e3dcaeba15c19bff1810" + } + }, + "empty_input_file_is_not_a_complete_input_trace": false + } + ], + "private_artifact_hashes": { + "identity.json": "5fa7f66913bc8be1ce699e5bfa8eae126f2bc9d1cacea6e9c446b146fbd39550", + "outcome.json": "f444c8c30a9d9732aea35e120cbf6813205b65f90e7641ec9fcdc660b214ef37", + "unittest.log": "e40d466f8594611cc5a2653d807819bad8c30c9aba126cce1bd2a1b6a9818e12" + } + }, + { + "id": "window-prefix-method-1", + "variant": "window-prefix", + "started_utc": "2026-10-27T00:49:03.977836+00:00", + "runtime_sha256": "dd792766fa976b031cbff0540744b6f3d2b3fc0d695ed764a01457b65eab6258", + "outcome": "green", + "test_success": true, + "tests_run": 1, + "skips": 0, + "original_assertions_offline_rechecked_for_successful_cases": true, + "samples": [ + { + "index": 0, + "status": "passed", + "failure_stage": null, + "exit_code": 0, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "desktop_gone": true, + "result": { + "valid": true, + "candidate_tui_start": true, + "candidate_tui": true, + "candidate_resize": true, + "candidate_replies": true, + "command_verified": true, + "exit_code": 37, + "active_children_after": 0, + "cleanup_complete": true, + "input_rejected": 0, + "columns": 60, + "rows": 12, + "presented_done": null + }, + "files": { + "candidate-input.bin": { + "bytes": 115, + "sha256": "4bd689a84f1eb7336afb3b607dec760d117caef3d83f3e8e1b6b1f83d70b4b68" + }, + "candidate-insert-log.txt": { + "bytes": 58, + "sha256": "3d07108bcc44f0831b31530265fac711c1d1e69194aa9309897e4440c26de65a" + }, + "candidate-resize-log.txt": { + "bytes": 5, + "sha256": "2d3db728e657a0e1ab99b23acb6b2d08c586c4eaba6e65a66ab65e7fb47693b7" + }, + "candidate-startup-log.txt": { + "bytes": 6, + "sha256": "3dfa3fb239f56c778a1e9b33eb31328349edd155a95806dac4378904e88527e5" + }, + "candidate-vim.vim": { + "bytes": 334, + "sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797" + }, + "candidate-tui.txt": { + "bytes": 17, + "sha256": "d9d3b8d10b660a808ece2b2c46b3767713ba4e74631c56b376b492eadf511dec" + }, + "candidate-replies.bin": { + "bytes": 7, + "sha256": "39cb2fc06ace6ef92a7015a38ab2e7fe1f03a846af0313e27ec7cdceca6643ff" + }, + "sample.json": { + "bytes": 6004, + "sha256": "9ccfd04084e5417ca36cc66c03748580f58e5a9cd355ee6c96cfbc4f1bdf5b6f" + } + }, + "empty_input_file_is_not_a_complete_input_trace": false + }, + { + "index": 1, + "status": "passed", + "failure_stage": null, + "exit_code": 0, + "outer_timed_out": false, + "job_after": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "job_after_cleanup": { + "active": 0, + "total": 9, + "terminated": 0 + }, + "desktop_gone": true, + "result": { + "valid": true, + "candidate_tui_start": true, + "candidate_tui": true, + "candidate_resize": true, + "candidate_replies": true, + "command_verified": true, + "exit_code": 37, + "active_children_after": 0, + "cleanup_complete": true, + "input_rejected": 0, + "columns": 60, + "rows": 12, + "presented_done": null + }, + "files": { + "candidate-input.bin": { + "bytes": 115, + "sha256": "4bd689a84f1eb7336afb3b607dec760d117caef3d83f3e8e1b6b1f83d70b4b68" + }, + "candidate-insert-log.txt": { + "bytes": 58, + "sha256": "3d07108bcc44f0831b31530265fac711c1d1e69194aa9309897e4440c26de65a" + }, + "candidate-resize-log.txt": { + "bytes": 5, + "sha256": "2d3db728e657a0e1ab99b23acb6b2d08c586c4eaba6e65a66ab65e7fb47693b7" + }, + "candidate-startup-log.txt": { + "bytes": 6, + "sha256": "3dfa3fb239f56c778a1e9b33eb31328349edd155a95806dac4378904e88527e5" + }, + "candidate-vim.vim": { + "bytes": 334, + "sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797" + }, + "candidate-tui.txt": { + "bytes": 17, + "sha256": "d9d3b8d10b660a808ece2b2c46b3767713ba4e74631c56b376b492eadf511dec" + }, + "candidate-replies.bin": { + "bytes": 7, + "sha256": "39cb2fc06ace6ef92a7015a38ab2e7fe1f03a846af0313e27ec7cdceca6643ff" + }, + "sample.json": { + "bytes": 6006, + "sha256": "9a83660ad5eb603a378cf3db037dc92e78b98276c4159901b935e8d05803b76b" + } + }, + "empty_input_file_is_not_a_complete_input_trace": false + } + ], + "private_artifact_hashes": { + "identity.json": "bfda2110a737353912cafed36e6b3c401e1eca36b840e39fcc9ad3dfb2db7e36", + "outcome.json": "a23be95c07a043b02f3a869d0ca403b0cf17f2168652e3783258978c07490c97", + "unittest.log": "143f43a9096edec23651fa9c4f968d76e7ad6509ce7d9976da9e84b9cfd6bc49" + } + } + ], + "limitations": [ + "The toolchain differs from the distributed 2024 DLL; this is an independent source rebuild, not a byte-identical rebuild.", + "The sole intentional source change is the WINDOW_BUFFER_SIZE_EVENT branch; six build artifacts differ, including regenerated version metadata.", + "No API probe or loaded-module path observation was performed in this batch; input-boundary call evidence belongs to the earlier separate diagnostic.", + "Failed Vim input files are empty and unflushed; they do not prove absent input or a complete equal input trace.", + "Only the original Vim GUI method was run; MOUSE_EVENT, actual signal-handler longjmp, other applications and full CTest were not validated.", + "Signal delivery still unlocks/relocks structurally; that is not a longjmp regression test.", + "The existing ReadConsoleInputW error handling was not strengthened or fault-injected.", + "Four patched cases support the queue-prefix diagnosis; they do not establish universal reliability, performance equivalence or WindTerm parity.", + "No product runtime adoption, compatibility strategy or fixed-target acceptance change is made; issue 52 remains open." + ] +} diff --git a/experiments/shell/results/2026-10-27-workflow-record-checkpoint/validation.json b/experiments/shell/results/2026-10-27-workflow-record-checkpoint/validation.json new file mode 100644 index 00000000..02ba0d93 --- /dev/null +++ b/experiments/shell/results/2026-10-27-workflow-record-checkpoint/validation.json @@ -0,0 +1,1032 @@ +{ + "schema": 1, + "issue": 87, + "source_commit": "c662011616a0498e0fbd6af8019f5f3cc03fdcaa", + "base_commit": "6b365b3cae9fbbfbb25f19a716d4fe85bcb0c04b", + "configuration": "candidate termforge.5 / explicit official ConPTY 1.25.260930003 / flags24", + "windows": "10.0.26200", + "identity": { + "source_commit": "c662011616a0498e0fbd6af8019f5f3cc03fdcaa", + "after_successful_build_utc": "2026-10-26T22:29:38.710131+00:00", + "diagnostic_instrumentation": false, + "files_sha256": { + "CMakeLists.txt": "8a0e3f86981e91fd6482b590669ccc4adb571a359bd265b3dc98aee59a7b92f2", + "experiments/shell/shell.cpp": "b4f6fe98812d1d23fa5f5bbcc7376437404af6cdb67cd6cdcdf448b57cb31fe9", + "experiments/shell/output_record_checkpoint.hpp": "b4925aadf2e29d8bf44c1d0101143ead51dadf58fd1bb681ad4af8f3c008fa69", + "experiments/shell/workflow_checkpoint.hpp": "34ddd734ff6ab81ae39194d9231a162dbe2069eb2c7bad81a9f15d028be92369", + "experiments/shell/workflow_checkpoint_test.cpp": "f4d670707a251285be37546c7be1c8e6668bf5087414ae7e415cbb5b510bc8af", + "experiments/shell/runtime_observation_test.cpp": "3a262672b6e28d326d1765ba7488940aadd8edaffaee47314ec27368ba56f98b", + "experiments/shell/workspace_workflow_scenario.hpp": "d70ec033c24fc8763996181bb30da7acc7a069cba4f527440fb9356c21fb2d7b", + "experiments/shell/workflow_scenario_state.hpp": "2627160b91fb468616dd3ec1cee289bf021771b63c8708e1989b6a2964995e3f", + "experiments/shell/workflow_fixture.hpp": "332d73699320a6f503fc212417a4d3820b82cc2d3feb3d1fffe3930660d57453", + "experiments/shell/workflow_sessions_checks.py": "b976d3504837eef57ff13319daed254870727741f36f265412a6b14b4cb3faae", + "experiments/shell/test_workflow_sessions.py": "6c968a443c46b30e75a929f880228e6a23bf2b92d9221bbbf18816933babd6e7", + "experiments/shell/run.py": "45976b828eecb316881d698dedaef09ad304f72d991dfa360f1c552bbcbe9f1d", + "build/candidate/bin/Release/termforge_shell.exe": "941ef34db129282a26625d8bad4fd663c4284fe3307802907366299ab04f31c4", + "build/candidate/bin/Release/workflow_checkpoint_test.exe": "056047580e8ddd77224908667297a0b704f97ef57d1eadeb382b52c7c7875b86", + "build/candidate/bin/Release/runtime_observation_test.exe": "0049a0d863724bf8bd181c85868bd68a409eb5e12c755a5538add5f85bf8b0bf", + "build/candidate/bin/Release/shell_text_client.exe": "9350e53de74c9a6b78495a3b59788e3a31e0067a9c5ec1b8685a729ff18244d3", + "build/candidate/bin/Release/shell_test_launcher.exe": "7bd78cffd78ac66d651933c9614d6be937c99baa105ce04c1a533df5785c11e2", + "vim.exe": "2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a" + } + }, + "source_hash_policy": "SHA256 of on-disk compilation inputs; Windows checkout line endings retained.", + "candidate_dependency_sha256": { + "experiments/candidates/alacritty/Cargo.lock": "f7b8906cc63b6a5d66943f15c50a78c51f773face60229fcddf24b2d02911736", + "experiments/candidates/alacritty/target/release/termforge_alacritty_core.lib": "f2461f024d8b3002ca6bb872b409e1dadb34eff6fc92892108cfd18b3aece807" + }, + "backend": { + "version": "1.25.260930003", + "source_commit": "dc8ae365847d41f62d1ebca93815bb00959bc12f", + "package_sha256": "6d6f8b008c655d814c498d8205d4012dcd4d0b6dfc1096461d0a185d1e3caf03", + "files": { + "conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "configured_creation_flags": 24 + }, + "workload": { + "fixture": "r108-console-v1", + "records": 32000, + "source_bytes": 2048000, + "block_bytes": 4096, + "block_delay_ms": 20, + "replacement_cycles": 5, + "scenario_deadline_ms": 70000, + "runner_timeout_seconds": 90, + "ctest_timeout_seconds": 300, + "python_oracle_changed": false + }, + "original_failures": { + "prior_artifact": "experiments/conpty/results/2026-10-27-native-viewport-resize/validation.json", + "product_source": "57f24f5", + "shell_sha256": "4e23e277ea7984d85856b713b3af5b0545d68042c2bbd42a8422f8a6b422c28d", + "mismatches": [ + { + "run": "run-89580b0cae404944b12e03e031dab1bd", + "bad": [ + { + "cycle": 1, + "name": "F5", + "source_bytes": 16384, + "actual": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301............", + "expected": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301...................................", + "exact_prefix": true, + "output": { + "queued_bytes": 8217, + "high_water_bytes": 8217, + "stopped": false + } + }, + { + "cycle": 1, + "name": "F5", + "source_bytes": 16384, + "actual": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301............", + "expected": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301...................................", + "exact_prefix": true, + "output": { + "queued_bytes": 8217, + "high_water_bytes": 8217, + "stopped": false + } + } + ] + }, + { + "run": "run-8abb195e8f824858adbc0149ce1bbca6", + "bad": [ + { + "cycle": 2, + "name": "F5", + "source_bytes": 16384, + "actual": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301............", + "expected": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301...................................", + "exact_prefix": true, + "output": { + "queued_bytes": 8217, + "high_water_bytes": 8217, + "stopped": false + } + }, + { + "cycle": 2, + "name": "F5", + "source_bytes": 16384, + "actual": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301............", + "expected": "TF_R108_F5_00127 \u4e2d\u6587 e\u0301...................................", + "exact_prefix": true, + "output": { + "queued_bytes": 8217, + "high_water_bytes": 8217, + "stopped": false + } + } + ] + }, + { + "run": "run-9266bc270e244e05a0073d86f00ae8ae", + "bad": [] + } + ], + "offline_validator": [ + { + "run": "run-89580b0cae404944b12e03e031dab1bd", + "error": "replacement core payload/role mismatch", + "seconds": 0.6168144999537617 + }, + { + "run": "run-8abb195e8f824858adbc0149ce1bbca6", + "error": "replacement core payload/role mismatch", + "seconds": 0.5770988999865949 + } + ], + "original_native_continuation_available": false + }, + "initial_live_observation": { + "identity": { + "base_commit": "f2ea8d2f5851724bedeb13344ee4681c7b092691", + "diagnostic_only": true, + "build_completed_before_test_utc": "2026-10-26T21:36:40.942995+00:00", + "sha256": { + "experiments/shell/shell.cpp": "1154c7eeaa2ae32c36958ef3f04446778bb59ec3802c3fcfb9508ac9731fe0b4", + "experiments/shell/workspace_workflow_scenario.hpp": "7ec62dda236dbb189a6922d2c7d4ec1ba9eca379b2e76b816ac3d58731c252b5", + "build/candidate/bin/Release/termforge_shell.exe": "74efba3d16080fc74ae2a8793083d3612e445ebb91eab4006ee28d28b07cec0a" + } + }, + "runs": [ + { + "sample_sha256": "37dc6911b059f25c708e2c7beba6d37d9eb2a508e2dbd53e8fa69295f9c56884", + "sessions_sha256": "3846b6d9a1570dafd7cc13f302d6ce6a684765aa62a0685439c32b761b20da12", + "lifecycle": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + } + } + }, + { + "sample_sha256": "f0af6eef429ef1f4f00d606916ce3995cc1dd42004c57fcc79fe4c22b3edaaff", + "sessions_sha256": "6b631bad7a48dd82fa5e50004d5b066db1f6d5af0bb3a193ec286e27093cf245", + "lifecycle": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + } + } + }, + { + "sample_sha256": "a6d5d75585a618cfcd4e53cf034c744533f701689530f2f413844afa146a4640", + "sessions_sha256": "babe9f73ce179f11564225e9b06d9f564d14115f625e474628afc197ce8b7b9b", + "lifecycle": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + } + } + }, + { + "sample_sha256": "ff1b5ecd829ca68959c881806681af160513a17cb6ffeb2d7b09e518d82be1d0", + "sessions_sha256": "1c41e39aa93e60a8c75f7aa88cc5579daea96f8d6f479ca7cbafffa2e0ca8156", + "lifecycle": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + } + } + } + ], + "half_row_captured": false + }, + "repartition": { + "transport_sha256": "f7c5134e5779bd946460d01c0db43b4ee53819261da701b031bb9a17a901b725", + "same_real_bytes": true, + "partition_changed": true, + "gui_timing_reproduced": false, + "remaining_25_bytes_hex": "2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e0d0a", + "partial_dots": 12, + "final_dots": 35, + "prefix_state_offset": 11032, + "final_state_offset": 11057, + "raw_cell_lines": [ + "TF_R108_F5_00127 \u4e2d \u6587 e\u0301............", + "TF_R108_F5_00127 \u4e2d \u6587 e\u0301..................................." + ], + "note": "Screen JSON includes explicit width-0 spacer cells; these are not user text. GUI raw snapshots used canonical project_line." + }, + "core_regression": { + "red_test_source_sha256": "50b4c17d494695b50d65f3f52f0c2dfb458feb1509989579627f52225c2e0aeb", + "red_helper_sha256": "c5efe3d91748921292090f212e32f62a252053bb2ca7d5abe76be4c530e0e8f3", + "red_executable_sha256": "76a92dda8f6bfa025f3d50e1e43d65889c569c83688fc8be0d6b5124e47c546f", + "red_log_sha256": "df03de6cb3deec3b3df505c58e1f89347bddfcb9dda3b960e2fbf50af18438c3", + "red_error": "numbered prefix must not admit an unfinished consumer row", + "both_cores_failed_before": true, + "final_test_passed": true, + "note": "Original 8192/8217 trigger retained. Final test additionally covers active hold/release, readiness negatives and bounds; entire red/final test sources differ." + }, + "rejected_passive_wait": { + "identity": { + "source_commit": "51ad19dc5b4f829046b41f360b1428aa4ee0d37e", + "diagnostic_only": true, + "build_completed_before_test_utc": "2026-10-26T21:57:55.185445+00:00", + "files_sha256": { + "experiments/shell/shell.cpp": "b0c769769614fb56d91528a5cfdf96938f2557d4c1c591e43d971a151666e836", + "experiments/shell/workspace_workflow_scenario.hpp": "ecfa477b8b47e68f3c14782a885cb9f3ec217cae91bf33b0cca6a1d405674503", + "build/candidate/bin/Release/termforge_shell.exe": "6792f6eacb3100f2da98f8a6c29e9e2125becf29d0760a9e32a815ea02f89a8e" + } + }, + "results": [ + { + "policy": "old", + "error": "replacement core payload/role mismatch", + "checked": null, + "exit_code": 0, + "timed_out": false, + "desktop_gone": true, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + } + }, + { + "policy": "fixed", + "error": "replacement output not active", + "checked": null, + "exit_code": 0, + "timed_out": false, + "desktop_gone": true, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + } + } + ], + "log_sha256": "5a0f3c61bcdf00977bd26332e17758955282a96b34d6f4dd31145e14ba1d0102", + "error": "replacement output not active", + "usable_for_acceptance": false + }, + "controlled_gui": { + "identity": { + "source_commit": "51ad19dc5b4f829046b41f360b1428aa4ee0d37e", + "diagnostic_only": true, + "uncommitted_record_checkpoint": true, + "build_completed_before_test_utc": "2026-10-26T22:14:07.691106+00:00", + "files_sha256": { + "experiments/shell/shell.cpp": "eb8cd8a7f7548756fd529b8f6443b69151f605837760ca23e3d99198fe467438", + "experiments/shell/workspace_workflow_scenario.hpp": "757693dae0eff8eb093a16360136893bdfdce3b533d672eedc1de8f770ca2e7d", + "experiments/shell/output_record_checkpoint.hpp": "b4925aadf2e29d8bf44c1d0101143ead51dadf58fd1bb681ad4af8f3c008fa69", + "experiments/shell/workflow_checkpoint.hpp": "34ddd734ff6ab81ae39194d9231a162dbe2069eb2c7bad81a9f15d028be92369", + "experiments/shell/workflow_checkpoint_test.cpp": "f4d670707a251285be37546c7be1c8e6668bf5087414ae7e415cbb5b510bc8af", + "build/candidate/bin/Release/termforge_shell.exe": "8ca1957989d43941a67e38593f240a7bf651b145b78ca0918813d23de6c825bd" + } + }, + "same_diagnostic_executable": true, + "diagnostic_patch_sha256": "809c19056e30bc26dd810af81a65fe5220e5fc95ad8af96ddc156b20ec96d0de", + "cases": [ + { + "mode": "old", + "record": 117, + "partial": "TF_R108_F5_00117 \u4e2d\u6587 e", + "generation": 10, + "source_bytes_at_checkpoint": 32768, + "output_done": false, + "fixture_running": true, + "raw_core_cell_rows": [ + "TF_R108_F5_00117 \u4e2d \u6587 e", + "TF_R108_F5_00117 \u4e2d \u6587 e\u0301..................................." + ], + "same_session_continuation": true, + "native_prefix_preserved": true, + "actual_suffix_bytes": 39, + "held_cursor": [ + 6, + 23 + ], + "checkpoint_cursor": [ + 6, + 23 + ], + "held_transport_sha256": "49f4051e5f5f0c47fc955f2d0d94ac19a2224a2f5005dac34bed217a90374f7e", + "continued_transport_sha256": "d13c8002fabf72bccc837a892f546af898e924e7560f95c3d32ccc7e6f06425b", + "trace_overflow": { + "held": { + "events_overflow": false, + "transport_overflow": false + }, + "checkpoint": { + "events_overflow": false, + "transport_overflow": false + }, + "collected": { + "events_overflow": false, + "transport_overflow": false + } + }, + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "sample_error": "replacement core payload/role mismatch", + "source_sha256": "693dacfd941aefbb0b2379d44ec1d5492536611af9fd5b83c49642c65bcc56bb", + "sample_sha256": "faa3bea07e0092773dc66d925d85e644f36aefc1fc50eb1e9175885c3cb1568a", + "sessions_sha256": "b32e1e3d3ee3cb8164c124c9f42bbc635a25c8071ffd0b3fbb31068156a6e690", + "consumer_snapshots_sha256": { + "held": "7ddb00077095a97ae3950834fd4f432cd0fcd33d706b2b353a96a19e512dc04e", + "checkpoint": "1e979b605d3ef65ec7816409da7eb9fb2b80c2abda87047bcd77c45871d3a608", + "collected": "051f2a6058c23a03fe057a76f5078a87bd91ba74da2f918476f9621cfc321b31" + }, + "replay_sha256": "1b96eb77b7e7ec0c220349c7b4dc2496bd3bf2485d4610fa0cda04bccd929906" + }, + { + "mode": "new", + "record": 117, + "partial": "TF_R108_F5_00117 \u4e2d\u6587", + "generation": 10, + "source_bytes_at_checkpoint": 241664, + "output_done": false, + "fixture_running": true, + "raw_core_cell_rows": [ + "TF_R108_F5_00117 \u4e2d \u6587", + "TF_R108_F5_00117 \u4e2d \u6587 e\u0301..................................." + ], + "same_session_continuation": true, + "native_prefix_preserved": true, + "actual_suffix_bytes": 41, + "held_cursor": [ + 6, + 21 + ], + "checkpoint_cursor": [ + 6, + 0 + ], + "held_transport_sha256": "fe9c9fbb43fda939d2ea77e0c189dcc8ef6924aa0bf24b9ab8d733ccfb7bed99", + "continued_transport_sha256": "f31909f03efe242ab80365c59630cdcaf48612493a1e19ff0c64e600a43582ff", + "trace_overflow": { + "held": { + "events_overflow": false, + "transport_overflow": false + }, + "checkpoint": { + "events_overflow": false, + "transport_overflow": false + }, + "collected": { + "events_overflow": false, + "transport_overflow": true + } + }, + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "sample_error": null, + "source_sha256": "0c9ad5475733cff134f0372a4e9ef9348dec984b07d9e639741165750149cb90", + "sample_sha256": "7e0b9a8f32f40b64ac7d23d65f77757e759be53c053b65b29b6b860692adc9a7", + "sessions_sha256": "953c44c025631475b6cf8856fd632ec2d60f9409c4c9baf56bdc37e5c0b5ef9d", + "consumer_snapshots_sha256": { + "held": "f5806a2dd48560e4886b3dd7c8918259532781dd3ce19316c9a2d687aa273243", + "checkpoint": "e11551cb7501f13591f38a989f661e76b8feb69db9a8a9363797ba7b1d794d90", + "collected": "bf229d4ab212b4de45cc1082862705b3ce05fadb08889ea0a99b3f03540dbf63" + }, + "replay_sha256": "f97529bca6dbd1cbfd393ec92fa668e6bc06b7fdd88a4e73954c94a131cbbb72" + } + ], + "default_product_scheduling": false, + "schedule": "Pause F5 consumer before replacement output, wait source >=16384, consume one actual 8192B block, retain snapshot and resume. Producer input/rate/bytes and original oracle unchanged.", + "trace_limit_bytes": 131072, + "trace_limit_events": 1024, + "trace_limit_note": "New collected trace overflowed; needed suffix is present in its preserved prefix. No claim of complete subsequent transport." + }, + "close_guard": { + "red_log_sha256": "60504f0ee912974ade65cf8e573d774bcfe8370343f4da7ac96668f229fea49c", + "red_test_source_sha256": "3a262672b6e28d326d1765ba7488940aadd8edaffaee47314ec27368ba56f98b", + "red_product_source": "f89b0ac3a95f28e2b4ffa5bdfd368164848e8bde", + "red_executable_sha256": null, + "red_build_log_sha256": "e89d6ac2ad05e5807ee29cdcdf8b3a3d437b773407e560e70340f09426652d68", + "error": "closing window must reject a new output record checkpoint", + "green_log_sha256": "bbdc9e41c57357182dde0a239b4beaf2638e4bed38a656974ce7316b4fb442e4" + }, + "final_workflow_rounds": [ + { + "sample_sha256": "0e004559ca3b8bed704a3bf9cd4e6d54f92fc31db6576d2f2fc5cfc8090bfae2", + "sessions_sha256": "f437c524c63fa144d7389e7d38982d8f3b9568ff894dee08dd5e4609928fbe94", + "checked": { + "schema": "termforge-workflow-sessions-identity-validation-v1", + "live_sessions": 8, + "checkpoints": 26, + "rejected_ninth": true, + "load_foreground_verified": true, + "data_workflow_verified": true, + "complete_workflow_verified": false, + "system_clipboard_verified": false, + "ime_verified": false + }, + "lifecycle": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + } + }, + "replacement_cycles": [ + { + "cycle": 1, + "source_bytes": [ + 20480, + 20480 + ], + "generations": [ + 9, + 10 + ], + "all_output_active": true + }, + { + "cycle": 2, + "source_bytes": [ + 16384, + 16384 + ], + "generations": [ + 11, + 12 + ], + "all_output_active": true + }, + { + "cycle": 3, + "source_bytes": [ + 12288, + 12288 + ], + "generations": [ + 13, + 14 + ], + "all_output_active": true + }, + { + "cycle": 4, + "source_bytes": [ + 12288, + 12288 + ], + "generations": [ + 15, + 16 + ], + "all_output_active": true + }, + { + "cycle": 5, + "source_bytes": [ + 16384, + 16384 + ], + "generations": [ + 17, + 18 + ], + "all_output_active": true + } + ] + }, + { + "sample_sha256": "18ab9afea089669bb30b6e69a401e5a8e7d8082aa9d49e5c0d28d2b1544cf12a", + "sessions_sha256": "ae6443ec74669dabed594afffdb99c94af6a022bb64582468e6bb80abe35c7da", + "checked": { + "schema": "termforge-workflow-sessions-identity-validation-v1", + "live_sessions": 8, + "checkpoints": 26, + "rejected_ninth": true, + "load_foreground_verified": true, + "data_workflow_verified": true, + "complete_workflow_verified": false, + "system_clipboard_verified": false, + "ime_verified": false + }, + "lifecycle": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 77, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 77, + "terminated": 0 + } + }, + "replacement_cycles": [ + { + "cycle": 1, + "source_bytes": [ + 16384, + 16384 + ], + "generations": [ + 9, + 10 + ], + "all_output_active": true + }, + { + "cycle": 2, + "source_bytes": [ + 12288, + 12288 + ], + "generations": [ + 11, + 12 + ], + "all_output_active": true + }, + { + "cycle": 3, + "source_bytes": [ + 12288, + 12288 + ], + "generations": [ + 13, + 14 + ], + "all_output_active": true + }, + { + "cycle": 4, + "source_bytes": [ + 8192, + 12288 + ], + "generations": [ + 15, + 16 + ], + "all_output_active": true + }, + { + "cycle": 5, + "source_bytes": [ + 12288, + 12288 + ], + "generations": [ + 17, + 18 + ], + "all_output_active": true + } + ] + } + ], + "final_full_ctest": { + "log_sha256": "ea5283e3c04791877299e5e410d98fdbf695fd0c97ecc888e1e604dedc87f387", + "tests": [ + { + "name": "shell_launch", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_title", + "result": "passed", + "seconds": 0.75 + }, + { + "name": "candidate_reply_close", + "result": "passed", + "seconds": 0.37 + }, + { + "name": "runtime_observation", + "result": "passed", + "seconds": 1.45 + }, + { + "name": "ime_input_expectation", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "sent_message_wait", + "result": "passed", + "seconds": 0.28 + }, + { + "name": "find_bar", + "result": "passed", + "seconds": 0.36 + }, + { + "name": "renderer_metrics", + "result": "passed", + "seconds": 0.87 + }, + { + "name": "ime_context", + "result": "passed", + "seconds": 0.38 + }, + { + "name": "layout_state", + "result": "passed", + "seconds": 0.15 + }, + { + "name": "workspace_state", + "result": "passed", + "seconds": 0.37 + }, + { + "name": "transport_completion", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "workflow_checkpoint", + "result": "passed", + "seconds": 0.07 + }, + { + "name": "scenario_tick_gate", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_core", + "result": "passed", + "seconds": 1.23 + }, + { + "name": "resize_core", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "history_core", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "selection_core", + "result": "passed", + "seconds": 0.08 + }, + { + "name": "search_core", + "result": "passed", + "seconds": 0.12 + }, + { + "name": "paste", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "sender_fence", + "result": "passed", + "seconds": 1.02 + }, + { + "name": "sender_fence_pipe", + "result": "passed", + "seconds": 0.37 + }, + { + "name": "clipboard_policy", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "keyboard", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "text_action_policy", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_resize_replay", + "result": "passed", + "seconds": 0.66 + }, + { + "name": "candidate_shell_tui", + "result": "failed", + "seconds": 31.29 + }, + { + "name": "core", + "result": "passed", + "seconds": 6.43 + }, + { + "name": "recovery", + "result": "passed", + "seconds": 10.07 + }, + { + "name": "measure", + "result": "passed", + "seconds": 4.24 + }, + { + "name": "binary_paths", + "result": "passed", + "seconds": 0.18 + }, + { + "name": "conpty_margin_contract", + "result": "passed", + "seconds": 0.28 + }, + { + "name": "benchmark_tools", + "result": "passed", + "seconds": 5.37 + }, + { + "name": "differential", + "result": "passed", + "seconds": 20.33 + }, + { + "name": "ime_inventory", + "result": "passed", + "seconds": 49.88 + }, + { + "name": "text_actions", + "result": "passed", + "seconds": 5.43 + }, + { + "name": "workflow_fixture", + "result": "passed", + "seconds": 22.84 + }, + { + "name": "workflow_sessions", + "result": "passed", + "seconds": 81.61 + }, + { + "name": "workflow_resources", + "result": "passed", + "seconds": 0.47 + }, + { + "name": "workflow_resource_phases", + "result": "passed", + "seconds": 4.37 + }, + { + "name": "workflow_system_content", + "result": "passed", + "seconds": 0.18 + }, + { + "name": "workflow_system_runner", + "result": "passed", + "seconds": 0.68 + }, + { + "name": "copy_error_frame", + "result": "passed", + "seconds": 0.14 + }, + { + "name": "paste_fence_evidence", + "result": "passed", + "seconds": 0.11 + }, + { + "name": "resize_trace", + "result": "passed", + "seconds": 0.13 + }, + { + "name": "research_guards", + "result": "passed", + "seconds": 4.93 + }, + { + "name": "receive", + "result": "passed", + "seconds": 0.2 + }, + { + "name": "conpty", + "result": "passed", + "seconds": 22.94 + }, + { + "name": "conpty_ctrl_c", + "result": "passed", + "seconds": 4.33 + }, + { + "name": "conpty_margin", + "result": "passed", + "seconds": 0.39 + }, + { + "name": "conpty_backend", + "result": "passed", + "seconds": 1.16 + }, + { + "name": "presentation", + "result": "passed", + "seconds": 4.11 + }, + { + "name": "shell", + "result": "passed", + "seconds": 94.93 + }, + { + "name": "selection_bytes", + "result": "passed", + "seconds": 3.64 + }, + { + "name": "selection_context", + "result": "passed", + "seconds": 3.94 + }, + { + "name": "raw_console_receiver", + "result": "passed", + "seconds": 0.39 + }, + { + "name": "paste_system", + "result": "passed", + "seconds": 8.93 + } + ], + "total": 57, + "passed": 56, + "failed": [ + "candidate_shell_tui" + ], + "seconds": 402.66, + "failure_stages": [ + 59 + ], + "internal_skips": [ + { + "test": "test_actual_system_copy_paste_and_shortcuts_twice (experiments.shell.test_actions.ActionWindowTest.test_actual_system_copy_paste_and_shortcuts_twice)", + "reason": "actual system Copy/Paste requires a disposable hosted VM" + }, + { + "test": "test_suspended_target_is_reclaimed_if_job_assignment_fails (test_ui_r1.EvidenceBoundaryTests.test_suspended_target_is_reclaimed_if_job_assignment_fails)", + "reason": "opt-in pinned reference failure injection" + }, + { + "test": "test_mouse_selection_to_real_system_clipboard (experiments.shell.test_shell.ShellTests.test_mouse_selection_to_real_system_clipboard)", + "reason": "system copy UI gate requires a disposable hosted VM" + }, + { + "test": "test_system_clipboard_product_read_errors_cancel_and_close (experiments.shell.test_shell.ShellTests.test_system_clipboard_product_read_errors_cancel_and_close)", + "reason": "product clipboard read gate requires a disposable hosted VM" + }, + { + "test": "test_system_clipboard_shortcut_to_window_confirmation_and_receiver (experiments.shell.test_shell.ShellTests.test_system_clipboard_shortcut_to_window_confirmation_and_receiver)", + "reason": "real system clipboard UI gate requires a disposable hosted VM" + }, + { + "test": "test_real_system_copy_shortcuts_for_styled_fixture_twice (experiments.shell.test_selection_bytes.SelectionBytesWindowTest.test_real_system_copy_shortcuts_for_styled_fixture_twice)", + "reason": "system CF requires a disposable hosted VM" + }, + { + "test": "test_real_system_copy_and_edit_context_twice (experiments.shell.test_selection_context.SelectionContextWindowTest.test_real_system_copy_and_edit_context_twice)", + "reason": "real CF/EDIT Copy requires a disposable hosted VM" + }, + { + "test": "test_real_system_clipboard (experiments.shell.test_paste.PasteTests.test_real_system_clipboard)", + "reason": "Private window station OpenClipboard denied (5); system API gate remains unverified." + } + ], + "full_acceptance": false, + "last_test_log_sha256": "c7728e3c25e030fe12e7e39652b7e01409661a34f3f5aa1c23f16e78b332afa1" + }, + "other_failures": [ + { + "mode": "candidate-tui", + "stage": 59, + "lifecycle": { + "exit_code": 2, + "timed_out": false, + "job_after": { + "active": 0, + "total": 7, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 7, + "terminated": 0 + } + }, + "files_sha256": { + "candidate-input.bin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "candidate-insert-log.txt": "e6de4daeba1841783e7e22f81dbf87154f341c309dc5b54405e5fc2c2f3550a6", + "candidate-output.bin": "fc43e5c356005f9c32847476d4bdba5fabaf51439083d8ac4e530d3e8bb5c883", + "candidate-resize-log.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "candidate-startup-log.txt": "3dfa3fb239f56c778a1e9b33eb31328349edd155a95806dac4378904e88527e5", + "candidate-vim.vim": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797", + "sample.json": "115d07631f728fb3ed2cd0a0e0a6a183c39627c627b7c849a029bbeb6eb4b695" + } + } + ], + "earlier_pre_close_guard_ctest": { + "log_sha256": "c47eca6a71598128c07a98c65d9b975163177fe197d80a01a2720b120ca0f3ed", + "total": 57, + "passed": 57, + "failed": [], + "seconds": 382.56, + "failure_stages": [], + "full_acceptance": false, + "source_commit": "f89b0ac3a95f28e2b4ffa5bdfd368164848e8bde", + "usable_for_acceptance": false, + "internal_skip_count": 8 + }, + "limits": [ + "Original two historical failures had no native continuation capture; later controlled causal reproduction does not fabricate it.", + "Only synthetic sampling coordination changes; no demonstrated product text-loss fix, oracle weakening, performance or WindTerm-equivalence claim.", + "Four passive live probes missed the half-row; a passive readiness implementation later starved in a controlled run and is rejected.", + "An excluded generic cmd echo test assumed a literal LF that the transport need not emit; final live close test only claims close while armed.", + "Raw native bytes, personal paths and desktop identities remain local. Controlled diagnostic scheduling and final original uninstrumented runs are separate.", + "Real CF/IME, actual presentation, full official-backend acceptance, #52/#63 and R2 remain unverified." + ], + "presented_done": null, + "performance_acceptance": false, + "windterm_runtime_equivalence": false, + "full_r2_verified": false, + "excluded_cmd_lf_test_sha256": "7d2cafa5d70d57e69527f626f533995e8d8c71a77a6b4f55f7aae646af91be09" +} diff --git a/experiments/shell/results/2026-10-27-workspace-echo-cr/validation.json b/experiments/shell/results/2026-10-27-workspace-echo-cr/validation.json new file mode 100644 index 00000000..0fbc810e --- /dev/null +++ b/experiments/shell/results/2026-10-27-workspace-echo-cr/validation.json @@ -0,0 +1,1009 @@ +{ + "schema": 1, + "issue": 88, + "source_commit": "c93db58ede50ad1288ceeeb937403fa8db43b459", + "implementation_commit": "341b4c22e36ffb5a47c7c1d0ccd70b46402e93b6", + "base_commit": "259e03667f361fd00c6e678f3e86f6ee2dfdca1b", + "configuration": "candidate termforge.5 / explicit official ConPTY 1.25.260930003 / flags24", + "identity": { + "source_commit": "c93db58ede50ad1288ceeeb937403fa8db43b459", + "after_successful_build_utc": "2026-10-26T21:18:00.803994+00:00", + "files_sha256": { + "experiments/shell/transport_completion.hpp": "39dfeb0845e572ec842b7da09dc2b822ba221caa1414a6a386f066214eb4da15", + "experiments/shell/transport_completion_test.cpp": "3761c858c97e5975d51a5c552104ba8457a5183070b12c0f635a7da42647e80d", + "experiments/shell/workspace_persistence_scenario.hpp": "7f70d755549718d0fddb94b43cce12f3955727fcc51599a8bb124bf3e59ec263", + "experiments/shell/test_shell.py": "a6b63c1754b0e0dc1cc01863891f4c7c9d989f818d351838a8cfe295edaf811c", + "experiments/shell/run.py": "45976b828eecb316881d698dedaef09ad304f72d991dfa360f1c552bbcbe9f1d", + "experiments/candidates/alacritty/test_candidate.py": "80b19e6fcd9416d4a34c43a5e50525857e6504f1a485827045f209d4dae4f106", + "build/candidate/bin/Release/termforge_shell.exe": "6adcb6091cbe937f398eace55499042eebcd5c900bd0f36c6eef480a6eac0eb4", + "build/candidate/bin/Release/transport_completion_test.exe": "6952438843e8a7605bb6cf0eb7add56dd8574f4e5edfbc3a534f795030a3fcc8", + "experiments/candidates/alacritty/target/release/termforge-alacritty-trace.exe": "5941d4569d0ae146eb005f12ecfb15014bc06c18ee48d1c9460824ab65df93d3" + } + }, + "baseline": { + "source_commit": "ab360c7aebeb8e9afb5e61d386081abd8e3e8278", + "product_commit": "92eac12d5cd2868b469e8b9a10e68f5e20ee2cb0", + "files_sha256": { + "termforge_shell.exe": "15a149a3d7d47efaf866226559d4b60bbf83e0ff6004a85df41edcb5415ad206", + "transport_completion.hpp": "535ff47bfbdd1038dca22820b467d1ee0d1839a29be38cd750e4de49439b602f", + "transport_completion_test.cpp": "c9bb02bd739f916e78530590ee0f3b29bc952c58e445d31bc047ee69d301dcee", + "transport_completion_test.exe": "ecb414aa56e45cb6026154d2c5bf4c3e2c173c038d4f2641debfa452749b0233" + } + }, + "original_failure": { + "source_commit": "92eac12d5cd2868b469e8b9a10e68f5e20ee2cb0", + "mode": "ui-workspace-restore", + "stage": 1, + "repeat": 1, + "files_sha256": { + "persistence-failure.json": "7ccb0a90b526462a929cbebce42debccfd97b54676e54e0935fbf292826b5e5b", + "restore-geometry.json": "5cc777f65d580599f8bda2d3e7e3d246b63aba19dba55a27e65d358709402638", + "sample.json": "5e546fb36ec65e2d2eb20e9d1047216be33dc8b17eaaa611d995686a1be7d620", + "workspace.layout": "660f3a4064006db91261100c6fb1e1d2fb82f73210575910a29880489dd0cdda" + }, + "result": { + "exit_code": 2, + "timed_out": false, + "job_after": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 11, + "terminated": 0 + } + }, + "native_exit_code": null, + "reader_eof": null, + "native_forced_cleanup": null + }, + "original_replay": { + "product_source": "92eac12d5cd2868b469e8b9a10e68f5e20ee2cb0", + "failure_sha256": "7ccb0a90b526462a929cbebce42debccfd97b54676e54e0935fbf292826b5e5b", + "helper_sha256": "535ff47bfbdd1038dca22820b467d1ee0d1839a29be38cd750e4de49439b602f", + "probe_sha256": "eca81870a7f8228bab14f5d35900d27fc7a207a07c2a1e5b2e49c9faf0189698", + "cases": [ + { + "tab": 0, + "kind": "cmd", + "variant": "original", + "bytes": 230, + "sha256": "68fadc3fc45b9fbaab78b7e1a55987f5fdc11e9a2abdbe39fc65135556703017", + "exit_code": 0, + "stdout": "complete", + "stderr": "" + }, + { + "tab": 1, + "kind": "cmd", + "variant": "original", + "bytes": 262, + "sha256": "8db2595d8d8546bbb7bb7a6facf79ab72e8f88ee4ce6ec9cf255dbac8528013e", + "exit_code": 1, + "stdout": "incomplete", + "stderr": "" + }, + { + "tab": 1, + "kind": "cmd", + "variant": "remove-one-bare-cr", + "bytes": 261, + "sha256": "e2e797ab3c6434bb462b109f08f16e4966cf71df74558cc5ecf6c3906e4cf8ff", + "exit_code": 0, + "stdout": "complete", + "stderr": "" + }, + { + "tab": 1, + "kind": "cmd", + "variant": "independent-output-removed", + "bytes": 230, + "sha256": "e7e16d6f14705c58c00f64d0f4183cfd6efa3a0c1a0e104c4242a4de75ce0b6a", + "exit_code": 1, + "stdout": "incomplete", + "stderr": "" + }, + { + "tab": 2, + "kind": "powershell", + "variant": "original", + "bytes": 4373, + "sha256": "06d376c5709d01185a5696726e5ed2a412184b5e1df886ac948c1ac64b349f4c", + "exit_code": 0, + "stdout": "complete", + "stderr": "" + }, + { + "tab": 3, + "kind": "powershell", + "variant": "original", + "bytes": 4373, + "sha256": "06d376c5709d01185a5696726e5ed2a412184b5e1df886ac948c1ac64b349f4c", + "exit_code": 0, + "stdout": "complete", + "stderr": "" + } + ] + }, + "fixed_replay": { + "product_source": "92eac12d5cd2868b469e8b9a10e68f5e20ee2cb0", + "failure_sha256": "7ccb0a90b526462a929cbebce42debccfd97b54676e54e0935fbf292826b5e5b", + "helper_sha256": "39dfeb0845e572ec842b7da09dc2b822ba221caa1414a6a386f066214eb4da15", + "probe_sha256": "e8f1f3d93d9af701244792e4dfda6ac2813ac9a65299a3a56cb230d6fed503e3", + "cases": [ + { + "tab": 0, + "kind": "cmd", + "variant": "original", + "bytes": 230, + "sha256": "68fadc3fc45b9fbaab78b7e1a55987f5fdc11e9a2abdbe39fc65135556703017", + "exit_code": 0, + "stdout": "complete", + "stderr": "" + }, + { + "tab": 1, + "kind": "cmd", + "variant": "original", + "bytes": 262, + "sha256": "8db2595d8d8546bbb7bb7a6facf79ab72e8f88ee4ce6ec9cf255dbac8528013e", + "exit_code": 0, + "stdout": "complete", + "stderr": "" + }, + { + "tab": 1, + "kind": "cmd", + "variant": "remove-one-bare-cr", + "bytes": 261, + "sha256": "e2e797ab3c6434bb462b109f08f16e4966cf71df74558cc5ecf6c3906e4cf8ff", + "exit_code": 0, + "stdout": "complete", + "stderr": "" + }, + { + "tab": 1, + "kind": "cmd", + "variant": "independent-output-removed", + "bytes": 230, + "sha256": "e7e16d6f14705c58c00f64d0f4183cfd6efa3a0c1a0e104c4242a4de75ce0b6a", + "exit_code": 1, + "stdout": "incomplete", + "stderr": "" + }, + { + "tab": 2, + "kind": "powershell", + "variant": "original", + "bytes": 4373, + "sha256": "06d376c5709d01185a5696726e5ed2a412184b5e1df886ac948c1ac64b349f4c", + "exit_code": 0, + "stdout": "complete", + "stderr": "" + }, + { + "tab": 3, + "kind": "powershell", + "variant": "original", + "bytes": 4373, + "sha256": "06d376c5709d01185a5696726e5ed2a412184b5e1df886ac948c1ac64b349f4c", + "exit_code": 0, + "stdout": "complete", + "stderr": "" + } + ] + }, + "regression": { + "red": { + "base_commit": "ab360c7aebeb8e9afb5e61d386081abd8e3e8278", + "helper_changed": false, + "tests_changed": true, + "files_sha256": { + "experiments/shell/transport_completion.hpp": "535ff47bfbdd1038dca22820b467d1ee0d1839a29be38cd750e4de49439b602f", + "experiments/shell/transport_completion_test.cpp": "1df5bbaddc0bdf1d063bd94708939688d7c2f32a9ca23cb7979b5709002dde3c", + "build/candidate/bin/Release/transport_completion_test.exe": "4ebcad595f55474a3602f33a0720550aba4de10aed512875a437324ce2ae9352", + "local/r88-restore-oracle/red-test.log": "724e968e4f09d21069d2fa3b5ec9bfc79eed48ed561ff947f9f9d67e9bcb2482" + } + }, + "red_exit_code": 1, + "red_error": "wrapped command echo must not hide later independent output and prompt", + "final_test_source_sha256": "3761c858c97e5975d51a5c552104ba8457a5183070b12c0f635a7da42647e80d", + "green_log_sha256": "2cbd854c42e58401a37020b1dd40d4a3f06cd63668c3d942a61da4498c38fce9", + "green_passed": true, + "note": "Red and green retain the exact wrapped_cmd trigger and single-CR control. Final tests additionally include one fresh-LF positive and three negative cases; complete test sources are not identical." + }, + "targeted": { + "method": "ShellTests.test_workspace_v2_multiple_shells_split_and_geometry_restore", + "passed": true, + "seconds": 10.901, + "log_sha256": "c9a30d2427e825ca926fd9cf2f3ac30732f375c89c707f96acf30a776a07ce27", + "cases": [ + { + "repeat": 0, + "mode": "save", + "sample_sha256": "704a24d77efe914364b1942fd416e839a4f5cdd6788585d272ca1ec72584e293", + "geometry_sha256": "5cc777f65d580599f8bda2d3e7e3d246b63aba19dba55a27e65d358709402638", + "layout_sha256": "7dca24d3d78fbbdf53784c68f808add4ca4c976db31cf3d5b85f4b95a1564440", + "result": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 14, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 14, + "terminated": 0 + } + } + }, + { + "repeat": 0, + "mode": "restore", + "sample_sha256": "c7edac02b5de9f0945766ae59cc20688b07f500556e697e11a4fbcbc163f7c55", + "geometry_sha256": "5cc777f65d580599f8bda2d3e7e3d246b63aba19dba55a27e65d358709402638", + "layout_sha256": "7dca24d3d78fbbdf53784c68f808add4ca4c976db31cf3d5b85f4b95a1564440", + "result": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 14, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 14, + "terminated": 0 + } + } + }, + { + "repeat": 0, + "mode": "clamped", + "sample_sha256": "19744ab851d4905387d37d639fa6406d50d2d4929f805a5e63a8df896d889ff5", + "geometry_sha256": "e1b9fdfa4c0be1cf1901dfc4678c2952f5be23b95ca1d2a434c92b17f5069ce0", + "layout_sha256": "e3ac37c9350b6b0158f9b95c199fb2e1683663d5c89e1b2c70e9a11e70e6efd3", + "result": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 14, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 14, + "terminated": 0 + } + } + }, + { + "repeat": 1, + "mode": "save", + "sample_sha256": "231e67a9e06720c61da7f82a56794192d6a5124cc80d645d59b27e2bd80c007e", + "geometry_sha256": "5cc777f65d580599f8bda2d3e7e3d246b63aba19dba55a27e65d358709402638", + "layout_sha256": "5364bdd865f1b515f64b040d88d1e576a54116929472718fa0a43a6c31db5021", + "result": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 14, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 14, + "terminated": 0 + } + } + }, + { + "repeat": 1, + "mode": "restore", + "sample_sha256": "c834a7430334cce1714c6df8a916e745bba8031762cd7711de3b9e99e08be04d", + "geometry_sha256": "5cc777f65d580599f8bda2d3e7e3d246b63aba19dba55a27e65d358709402638", + "layout_sha256": "5364bdd865f1b515f64b040d88d1e576a54116929472718fa0a43a6c31db5021", + "result": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 14, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 14, + "terminated": 0 + } + } + }, + { + "repeat": 1, + "mode": "clamped", + "sample_sha256": "a3c5d95d9167cf40185cd6214b6f16a6e5a5d384a69d42d36d706d61df85b230", + "geometry_sha256": "e1b9fdfa4c0be1cf1901dfc4678c2952f5be23b95ca1d2a434c92b17f5069ce0", + "layout_sha256": "815480efcb4523f66552fc0afcc8724f075ff1f3db1214d2cb9a2e2d380593ae", + "result": { + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 14, + "terminated": 0 + }, + "desktop_gone": true, + "job_after_cleanup": { + "active": 0, + "total": 14, + "terminated": 0 + } + } + } + ], + "contract": "Original two rounds of save, ordinary restore, clamped restore; exact directories/version/membership/title/zoom/split/geometry/child dimensions and Job/desktop checks; original 30/40 second deadlines." + }, + "final_full_ctest": { + "log_sha256": "8fe637e73b7dbbc0aa5025ad8620933626ac80c42b09e715cd840bdff6a691fc", + "tests": [ + { + "name": "shell_launch", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_title", + "result": "passed", + "seconds": 0.7 + }, + { + "name": "candidate_reply_close", + "result": "passed", + "seconds": 0.35 + }, + { + "name": "runtime_observation", + "result": "passed", + "seconds": 1.52 + }, + { + "name": "ime_input_expectation", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "sent_message_wait", + "result": "passed", + "seconds": 0.27 + }, + { + "name": "find_bar", + "result": "passed", + "seconds": 0.36 + }, + { + "name": "renderer_metrics", + "result": "passed", + "seconds": 0.86 + }, + { + "name": "ime_context", + "result": "passed", + "seconds": 0.37 + }, + { + "name": "layout_state", + "result": "passed", + "seconds": 0.16 + }, + { + "name": "workspace_state", + "result": "passed", + "seconds": 0.36 + }, + { + "name": "transport_completion", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "scenario_tick_gate", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_core", + "result": "passed", + "seconds": 1.22 + }, + { + "name": "resize_core", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "history_core", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "selection_core", + "result": "passed", + "seconds": 0.09 + }, + { + "name": "search_core", + "result": "passed", + "seconds": 0.13 + }, + { + "name": "paste", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "sender_fence", + "result": "passed", + "seconds": 1.03 + }, + { + "name": "sender_fence_pipe", + "result": "passed", + "seconds": 0.38 + }, + { + "name": "clipboard_policy", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "keyboard", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "text_action_policy", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_resize_replay", + "result": "passed", + "seconds": 0.67 + }, + { + "name": "candidate_shell_tui", + "result": "failed", + "seconds": 31.3 + }, + { + "name": "core", + "result": "passed", + "seconds": 6.1 + }, + { + "name": "recovery", + "result": "passed", + "seconds": 9.92 + }, + { + "name": "measure", + "result": "passed", + "seconds": 3.93 + }, + { + "name": "binary_paths", + "result": "passed", + "seconds": 0.18 + }, + { + "name": "conpty_margin_contract", + "result": "passed", + "seconds": 0.28 + }, + { + "name": "benchmark_tools", + "result": "passed", + "seconds": 5.35 + }, + { + "name": "differential", + "result": "passed", + "seconds": 19.61 + }, + { + "name": "ime_inventory", + "result": "passed", + "seconds": 49.71 + }, + { + "name": "text_actions", + "result": "passed", + "seconds": 5.51 + }, + { + "name": "workflow_fixture", + "result": "passed", + "seconds": 22.78 + }, + { + "name": "workflow_sessions", + "result": "passed", + "seconds": 80.64 + }, + { + "name": "workflow_resources", + "result": "passed", + "seconds": 0.58 + }, + { + "name": "workflow_resource_phases", + "result": "passed", + "seconds": 4.34 + }, + { + "name": "workflow_system_content", + "result": "passed", + "seconds": 0.16 + }, + { + "name": "workflow_system_runner", + "result": "passed", + "seconds": 0.64 + }, + { + "name": "copy_error_frame", + "result": "passed", + "seconds": 0.14 + }, + { + "name": "paste_fence_evidence", + "result": "passed", + "seconds": 0.1 + }, + { + "name": "resize_trace", + "result": "passed", + "seconds": 0.11 + }, + { + "name": "research_guards", + "result": "passed", + "seconds": 5.01 + }, + { + "name": "receive", + "result": "passed", + "seconds": 0.22 + }, + { + "name": "conpty", + "result": "passed", + "seconds": 22.88 + }, + { + "name": "conpty_ctrl_c", + "result": "passed", + "seconds": 4.33 + }, + { + "name": "conpty_margin", + "result": "passed", + "seconds": 0.4 + }, + { + "name": "conpty_backend", + "result": "passed", + "seconds": 1.29 + }, + { + "name": "presentation", + "result": "passed", + "seconds": 4.11 + }, + { + "name": "shell", + "result": "passed", + "seconds": 93.71 + }, + { + "name": "selection_bytes", + "result": "passed", + "seconds": 3.66 + }, + { + "name": "selection_context", + "result": "passed", + "seconds": 3.76 + }, + { + "name": "raw_console_receiver", + "result": "passed", + "seconds": 0.38 + }, + { + "name": "paste_system", + "result": "passed", + "seconds": 8.31 + } + ], + "total": 56, + "passed": 55, + "failed": [ + "candidate_shell_tui" + ], + "seconds": 398.08, + "failure_stages": [ + 59 + ], + "full_acceptance": false, + "last_test_log_sha256": "35d684a3b3ec9d593cccc3243ea8a8d2e39a76fc0746c137e942f2d65ff2d75b", + "internal_skips": [ + { + "test": "test_actual_system_copy_paste_and_shortcuts_twice (experiments.shell.test_actions.ActionWindowTest.test_actual_system_copy_paste_and_shortcuts_twice)", + "reason": "actual system Copy/Paste requires a disposable hosted VM" + }, + { + "test": "test_suspended_target_is_reclaimed_if_job_assignment_fails (test_ui_r1.EvidenceBoundaryTests.test_suspended_target_is_reclaimed_if_job_assignment_fails)", + "reason": "opt-in pinned reference failure injection" + }, + { + "test": "test_mouse_selection_to_real_system_clipboard (experiments.shell.test_shell.ShellTests.test_mouse_selection_to_real_system_clipboard)", + "reason": "system copy UI gate requires a disposable hosted VM" + }, + { + "test": "test_system_clipboard_product_read_errors_cancel_and_close (experiments.shell.test_shell.ShellTests.test_system_clipboard_product_read_errors_cancel_and_close)", + "reason": "product clipboard read gate requires a disposable hosted VM" + }, + { + "test": "test_system_clipboard_shortcut_to_window_confirmation_and_receiver (experiments.shell.test_shell.ShellTests.test_system_clipboard_shortcut_to_window_confirmation_and_receiver)", + "reason": "real system clipboard UI gate requires a disposable hosted VM" + }, + { + "test": "test_real_system_copy_shortcuts_for_styled_fixture_twice (experiments.shell.test_selection_bytes.SelectionBytesWindowTest.test_real_system_copy_shortcuts_for_styled_fixture_twice)", + "reason": "system CF requires a disposable hosted VM" + }, + { + "test": "test_real_system_copy_and_edit_context_twice (experiments.shell.test_selection_context.SelectionContextWindowTest.test_real_system_copy_and_edit_context_twice)", + "reason": "real CF/EDIT Copy requires a disposable hosted VM" + }, + { + "test": "test_real_system_clipboard (experiments.shell.test_paste.PasteTests.test_real_system_clipboard)", + "reason": "Private window station OpenClipboard denied (5); system API gate remains unverified." + } + ], + "log_encoding_note": "Localized CTest date header is not UTF-8; only ASCII skip fields are extracted.", + "shell_unittest": { + "run": 40, + "passed": 37, + "errors": 0, + "skipped": 3, + "seconds": 93.494 + }, + "optional_trace_note": "The .5 trace executable is now built; four previously skipped differential classes executed. Eight remaining internal skips are listed separately." + }, + "excluded_overlapping_build": { + "reason": "Targeted method started before the changed shell finished linking. Full CTest also started before overall build completion; retain both only as diagnostics and repeat after completed build.", + "targeted_log_sha256": "410952fb9bc506d798b53102a9c96c97e50f79fe10a8baaebf4bf524537bb8fb", + "diagnostic_full_ctest": { + "log_sha256": "7f5b1cd6692cd76112c71f7bb906684d25a495d24b3252c1481c07b9eba454c4", + "tests": [ + { + "name": "shell_launch", + "result": "passed", + "seconds": 0.06 + }, + { + "name": "candidate_title", + "result": "passed", + "seconds": 1.03 + }, + { + "name": "candidate_reply_close", + "result": "passed", + "seconds": 0.37 + }, + { + "name": "runtime_observation", + "result": "passed", + "seconds": 1.54 + }, + { + "name": "ime_input_expectation", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "sent_message_wait", + "result": "passed", + "seconds": 0.29 + }, + { + "name": "find_bar", + "result": "passed", + "seconds": 0.41 + }, + { + "name": "renderer_metrics", + "result": "passed", + "seconds": 1.24 + }, + { + "name": "ime_context", + "result": "passed", + "seconds": 0.33 + }, + { + "name": "layout_state", + "result": "passed", + "seconds": 0.15 + }, + { + "name": "workspace_state", + "result": "passed", + "seconds": 0.43 + }, + { + "name": "transport_completion", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "scenario_tick_gate", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_core", + "result": "passed", + "seconds": 1.21 + }, + { + "name": "resize_core", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "history_core", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "selection_core", + "result": "passed", + "seconds": 0.09 + }, + { + "name": "search_core", + "result": "passed", + "seconds": 0.13 + }, + { + "name": "paste", + "result": "passed", + "seconds": 0.02 + }, + { + "name": "sender_fence", + "result": "passed", + "seconds": 1.03 + }, + { + "name": "sender_fence_pipe", + "result": "passed", + "seconds": 0.36 + }, + { + "name": "clipboard_policy", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "keyboard", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "text_action_policy", + "result": "passed", + "seconds": 0.01 + }, + { + "name": "candidate_resize_replay", + "result": "passed", + "seconds": 0.79 + }, + { + "name": "candidate_shell_tui", + "result": "failed", + "seconds": 30.49 + }, + { + "name": "core", + "result": "passed", + "seconds": 6.25 + }, + { + "name": "recovery", + "result": "passed", + "seconds": 9.96 + }, + { + "name": "measure", + "result": "passed", + "seconds": 4.3 + }, + { + "name": "binary_paths", + "result": "passed", + "seconds": 0.2 + }, + { + "name": "conpty_margin_contract", + "result": "passed", + "seconds": 0.28 + }, + { + "name": "benchmark_tools", + "result": "passed", + "seconds": 5.33 + }, + { + "name": "differential", + "result": "passed", + "seconds": 3.35 + }, + { + "name": "ime_inventory", + "result": "passed", + "seconds": 51.23 + }, + { + "name": "text_actions", + "result": "passed", + "seconds": 5.57 + }, + { + "name": "workflow_fixture", + "result": "passed", + "seconds": 22.66 + }, + { + "name": "workflow_sessions", + "result": "passed", + "seconds": 82.77 + }, + { + "name": "workflow_resources", + "result": "passed", + "seconds": 0.53 + }, + { + "name": "workflow_resource_phases", + "result": "passed", + "seconds": 4.31 + }, + { + "name": "workflow_system_content", + "result": "passed", + "seconds": 0.16 + }, + { + "name": "workflow_system_runner", + "result": "passed", + "seconds": 0.64 + }, + { + "name": "copy_error_frame", + "result": "passed", + "seconds": 0.14 + }, + { + "name": "paste_fence_evidence", + "result": "passed", + "seconds": 0.11 + }, + { + "name": "resize_trace", + "result": "passed", + "seconds": 0.12 + }, + { + "name": "research_guards", + "result": "passed", + "seconds": 4.97 + }, + { + "name": "receive", + "result": "passed", + "seconds": 0.21 + }, + { + "name": "conpty", + "result": "passed", + "seconds": 23.52 + }, + { + "name": "conpty_ctrl_c", + "result": "passed", + "seconds": 4.36 + }, + { + "name": "conpty_margin", + "result": "passed", + "seconds": 0.4 + }, + { + "name": "conpty_backend", + "result": "passed", + "seconds": 1.23 + }, + { + "name": "presentation", + "result": "passed", + "seconds": 4.08 + }, + { + "name": "shell", + "result": "passed", + "seconds": 94.42 + }, + { + "name": "selection_bytes", + "result": "passed", + "seconds": 3.59 + }, + { + "name": "selection_context", + "result": "passed", + "seconds": 3.86 + }, + { + "name": "raw_console_receiver", + "result": "passed", + "seconds": 0.42 + }, + { + "name": "paste_system", + "result": "passed", + "seconds": 10.02 + } + ], + "total": 56, + "passed": 55, + "failed": [ + "candidate_shell_tui" + ], + "seconds": 389.17, + "failure_stages": [ + 59 + ], + "full_acceptance": false, + "usable_for_acceptance": false + }, + "usable_for_acceptance": false + }, + "limits": [ + "Raw original transports and workspace files remain local; public regression source contains only fixed synthetic commands and no machine path.", + "This corrects a test completion oracle, not a demonstrated product output-loss defect.", + "Separate configuration results and unresolved #52/#63/#87 remain independent; later green runs do not explain earlier failures.", + "Real CF/IME, actual presentation, performance, WindTerm equivalence and full R2 acceptance are not supplied by this fix." + ], + "presented_done": null, + "performance_acceptance": false, + "windterm_runtime_equivalence": false, + "full_r2_verified": false +} diff --git a/experiments/shell/results/2026-10-27-workspace-native-viewport/validation.json b/experiments/shell/results/2026-10-27-workspace-native-viewport/validation.json new file mode 100644 index 00000000..70f3c24a --- /dev/null +++ b/experiments/shell/results/2026-10-27-workspace-native-viewport/validation.json @@ -0,0 +1,1100 @@ +{ + "schema": 1, + "issue": 63, + "source_commit": "dd533878538490c2464673218ea0000c6467a495", + "product_source_equivalent_to": "c662011616a0498e0fbd6af8019f5f3cc03fdcaa", + "configuration": "candidate termforge.5 / explicit official ConPTY 1.25.260930003 / flags24", + "windows_version": "10.0.26200", + "presented_done": null, + "performance_claim": false, + "finding": "Existing #51 native_viewport policy also resolves captured ui stage52 and ui-main stage7 stale-tail failures; no new product change.", + "hypotheses_ranked_before_instrumentation": [ + "candidate/native viewport layout divergence", + "child size query before real resize applied", + "incomplete command or output delivery" + ], + "original_reproduction": [ + { + "mode": "ui", + "source_commit": "188228ebe1a4e6cd3779fc7c6b150624514886fb", + "candidate_version": "termforge.4", + "shell_sha256": "e81d92a8c7d380d4c33639861180b04935e021bc7c1a5179197c8a9e3c83454a", + "unchanged_binary_verified_after": true, + "cases": [ + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "stderr": "", + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "5749ce08975d166621625e1fc756108ce2ff05b17d348fe3795c56ced1f189ec" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "stderr": "", + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "5f47ee907b86e2bc1c6df13d4bd9bfe83b9e79a22081f084acd1947acf037ca8" + }, + { + "status": "failed", + "exit_code": 2, + "timed_out": false, + "stderr": "workspace scenario timeout: stage=52 client=2048x1120", + "job_after": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "7ff419167b1039def1ff3eddabd9d1d9694d91cb9eebe9c5b24ccd90ecbbc229" + } + ], + "test_log_sha256": "d6ac3fa071ba5f551a4ad7951ddd0a620044ed05c13f78e6584dc90036b2e888", + "original_repetitions": 3, + "inner_seconds": 20, + "outer_seconds": 40 + }, + { + "mode": "main", + "source_commit": "188228ebe1a4e6cd3779fc7c6b150624514886fb", + "candidate_version": "termforge.4", + "shell_sha256": "e81d92a8c7d380d4c33639861180b04935e021bc7c1a5179197c8a9e3c83454a", + "unchanged_binary_verified_after": true, + "cases": [ + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "stderr": "", + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "b7c48f3af87b79247157f445d6ba05173dbbb241e0c5e9c901107177d04a1081" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "stderr": "", + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "a79b445bb25b00cd9e42b38b1c3202ae20c8e71df3c9d382b530fb3e5fd2973d" + }, + { + "status": "failed", + "exit_code": 2, + "timed_out": false, + "stderr": "workspace main scenario timeout: stage=7", + "job_after": { + "active": 0, + "total": 16, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "e86c1d45ad8d26597883877bfac564278eff3ecfb0e4d5a9fb5fa46da13c3f0d" + } + ], + "test_log_sha256": "b458b5b63498b19b70ae8edc85413a9bfe25a3a9005b61dfde6922f5fd5cd9c3", + "original_repetitions": 3, + "inner_seconds": 30, + "outer_seconds": 40 + } + ], + "diagnostics": [ + { + "mode": "ui", + "protocol": { + "source": "d6b3f798c82fd07cd0c88d989bfce3876c9692fa", + "baseline": { + "experiments/shell/shell.cpp": "b4f6fe98812d1d23fa5f5bbcc7376437404af6cdb67cd6cdcdf448b57cb31fe9", + "experiments/shell/workspace_scenarios.hpp": "c9a40dc370bf538c24b62b6177795975b4fac84ff78b0055117f7203b58a7b7d", + "experiments/shell/size_client.cpp": "cb11661bec9551053eec0dbb474bce2ac899a06ee2e50830a370af4816df39f4" + }, + "instrumented": { + "experiments/shell/shell.cpp": "d89c38f28c5f1a1a44aa72b73d825e01a4040ab0d194154b7a575f05408c8a3c", + "experiments/shell/workspace_scenarios.hpp": "a8fb5b8386c745520b7c1debc10ef3a00cb16751058966ba211aa7ddb4ab5145", + "experiments/shell/size_client.cpp": "2b15ce2e75f6e02e48d5d87efca1f50df67e9f39c1229fa0af8978fe3bf8f79e" + }, + "policy": "same binary; only TERMFORGE_R63_LEGACY_REFLOW switches native_viewport/reflow_history", + "max_runs": 2, + "order": [ + "legacy-reflow", + "native-viewport" + ], + "stop": "no retries; do not continue if first result differs from original stage52; stop after both cases", + "limits": { + "resize_events_per_snapshot": 1024, + "transport_bytes_per_snapshot": 131072, + "native_cells_per_helper": 100000 + }, + "original_deadlines": { + "inner_seconds": 20, + "outer_seconds": 40 + } + }, + "cases": [ + { + "policy": "reflow", + "shell_sha256": "f207f8a0fe1c8093e478e406d4ab84890dd7e6f1fff16b5be92399808d5b5da9", + "size_helper_sha256": "27285fc361b911a2e7892681846933d729d77e1b4e46d30310a64ed9c1624ce9", + "backend_files": { + "conpty-backend/conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "conpty-backend/LICENSE": "ad0cf28f3381ca9bb0bf101d127402d44c17bfa0991e1a00bff7ae6679e9dada", + "conpty-backend/manifest.json": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439", + "conpty-backend/OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "outcome": { + "status": "failed", + "exit_code": 2, + "timed_out": false, + "stderr": "workspace scenario timeout: stage=52 client=2048x1120", + "job_after": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "5795c43f744207c9deaa8e30917fd70fff0848be8ca7e50a457cc9cbec65b691" + }, + "bottom": { + "grid": [ + 169, + 11 + ], + "marker": "TF_SIZE_169x11", + "marker_row": 6, + "core_exact_marker": false, + "visible_matches_core": true, + "unexpected_suffix_bytes": 69, + "core_marker_line_sha256": "e5dc9dab268f0d43dde76e1b40639dbf5cf3a05e79b2ecb2d6f48e3a76f3f7c8", + "native": { + "query_size": [ + 169, + 11 + ], + "after_size": [ + 169, + 11 + ], + "exact_marker": "TF_SIZE_169x11", + "marker_row": 6, + "written_bytes": 18, + "write_ok": true, + "read_ok": true, + "metadata_sha256": "9c34c4b6bdb02956a3a4f6d8d189bf74493a7fd0cc8351071cd1fd72d9b70bd6", + "native_cells_sha256": "40d85ffb0dd8b154c96792e1c0aab7ef0ba8dd24247daf70d1d239f9a25632ea" + }, + "resize": { + "requested": 6, + "completed": 6, + "working": 0 + }, + "input_rejected": 0, + "transport_bytes": 2814, + "event_count": 50, + "truncated": false, + "native_viewport": false, + "parser_resize_grids": [ + [ + 82, + 5 + ], + [ + 82, + 15 + ], + [ + 82, + 5 + ], + [ + 82, + 20 + ], + [ + 82, + 5 + ], + [ + 169, + 11 + ] + ], + "state_sha256": "a715b12b40b79d420ce18ce7b8efb9a55277c6d8f343e3399e32041b3f62578c", + "trace_sha256": "9189923f9d741911aa0c3f466ec17db370abaa91afd2278061232c75a9df81d1", + "transport_sha256": "fd5df6523d1cc87c996e8d83e7b4d7c16a42da31487b60846750e39df30bd07a" + }, + "input_layout_sha256": "ba784527a981f5b90525d971197f57d9f25485e9856feb377ad45ea34eb370e4", + "runner_sha256": "4deb18d076a2aaca4571dc2f1ac2e6a3d67c28c95de6fd8f559e120265c60c04", + "case_identity_sha256": "696dd1c1e371c753b187a55e98c4080a2e9404fa40e94386bad737be1489d407" + }, + { + "policy": "native", + "shell_sha256": "f207f8a0fe1c8093e478e406d4ab84890dd7e6f1fff16b5be92399808d5b5da9", + "size_helper_sha256": "27285fc361b911a2e7892681846933d729d77e1b4e46d30310a64ed9c1624ce9", + "backend_files": { + "conpty-backend/conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "conpty-backend/LICENSE": "ad0cf28f3381ca9bb0bf101d127402d44c17bfa0991e1a00bff7ae6679e9dada", + "conpty-backend/manifest.json": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439", + "conpty-backend/OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "outcome": { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "stderr": "", + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "1ed1047ba01a534a612d0b38d8e4389268494ec04230f6b59949600c1aedd0cb" + }, + "bottom": { + "grid": [ + 169, + 11 + ], + "marker": "TF_SIZE_169x11", + "marker_row": 6, + "core_exact_marker": true, + "visible_matches_core": true, + "unexpected_suffix_bytes": 0, + "core_marker_line_sha256": "f68f745acd26a08bd159d31b4517873821bb08a81589ea33419412f3ed8553b4", + "native": { + "query_size": [ + 169, + 11 + ], + "after_size": [ + 169, + 11 + ], + "exact_marker": "TF_SIZE_169x11", + "marker_row": 6, + "written_bytes": 18, + "write_ok": true, + "read_ok": true, + "metadata_sha256": "9c34c4b6bdb02956a3a4f6d8d189bf74493a7fd0cc8351071cd1fd72d9b70bd6", + "native_cells_sha256": "40d85ffb0dd8b154c96792e1c0aab7ef0ba8dd24247daf70d1d239f9a25632ea" + }, + "resize": { + "requested": 6, + "completed": 6, + "working": 0 + }, + "input_rejected": 0, + "transport_bytes": 2744, + "event_count": 48, + "truncated": false, + "native_viewport": true, + "parser_resize_grids": [ + [ + 82, + 5 + ], + [ + 82, + 15 + ], + [ + 82, + 5 + ], + [ + 82, + 20 + ], + [ + 82, + 5 + ], + [ + 169, + 11 + ] + ], + "state_sha256": "7bb36d8515d70e97c644470c49226a572ff9fa8bd9ec8de93f9e0d53c7b1e757", + "trace_sha256": "0012049e554648b8dd4f94074563a4d0e6c9d9700fcd48ce51bf9d679f5a0585", + "transport_sha256": "f449a77d40db369d69a8fb03bfcf632a53325fa10fa12b1e05ed43d077b7c763" + }, + "input_layout_sha256": "ba784527a981f5b90525d971197f57d9f25485e9856feb377ad45ea34eb370e4", + "runner_sha256": "4deb18d076a2aaca4571dc2f1ac2e6a3d67c28c95de6fd8f559e120265c60c04", + "case_identity_sha256": "99c9c1f3244081bca5fb8f8de8d62056dcd745700ab1e4861c91209cb87b99b2" + } + ], + "captured_replay": { + "replay_sha256": "c4cf0d9f68bb5bd688e601b87025f3237c8659f4d80e96bd4f67fa463463a13f", + "cases": [ + { + "policy": "reflow", + "returncode": 0, + "exact_marker": false, + "matches_live_core": true, + "marker_line_sha256": [ + "e5dc9dab268f0d43dde76e1b40639dbf5cf3a05e79b2ecb2d6f48e3a76f3f7c8" + ] + }, + { + "policy": "native", + "returncode": 0, + "exact_marker": true, + "matches_live_core": false, + "marker_line_sha256": [ + "f68f745acd26a08bd159d31b4517873821bb08a81589ea33419412f3ed8553b4" + ] + } + ] + }, + "replay_report_sha256": "2577bc1c45aeaa99774881a311676f8ee102c1344f69d47bed4a84f6a30ea823", + "instrumentation_patch_sha256": "c836d8b8c0c8350990e63e42960287e5a186c5679da24e0e94b394de73f4daa7" + }, + { + "mode": "ui-main", + "protocol": { + "source": "d6b3f798c82fd07cd0c88d989bfce3876c9692fa", + "instrumented_sha256": { + "experiments/shell/shell.cpp": "d89c38f28c5f1a1a44aa72b73d825e01a4040ab0d194154b7a575f05408c8a3c", + "experiments/shell/workspace_scenarios.hpp": "a8fb5b8386c745520b7c1debc10ef3a00cb16751058966ba211aa7ddb4ab5145", + "experiments/shell/workspace_main_scenario.hpp": "3a747624e063f094d7c3a60f87029637a704bc2a41081e9f1dbb84bad6390802", + "experiments/shell/size_client.cpp": "2b15ce2e75f6e02e48d5d87efca1f50df67e9f39c1229fa0af8978fe3bf8f79e" + }, + "policy": "same binary, only TERMFORGE_R63_LEGACY_REFLOW switch", + "max_runs": 2, + "order": [ + "legacy-reflow", + "native-viewport" + ], + "stop": "no retries; stop if first differs from original stage7; stop after both cases", + "inner_seconds": 30, + "outer_seconds": 40, + "scope": "original ui-main with third-run narrow settings" + }, + "cases": [ + { + "policy": "reflow", + "shell_sha256": "97c9f0234101a9414b8355e2f167695802458f7c43b33d06cf667571014fdc73", + "size_helper_sha256": "27285fc361b911a2e7892681846933d729d77e1b4e46d30310a64ed9c1624ce9", + "backend_files": { + "conpty-backend/conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "conpty-backend/LICENSE": "ad0cf28f3381ca9bb0bf101d127402d44c17bfa0991e1a00bff7ae6679e9dada", + "conpty-backend/manifest.json": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439", + "conpty-backend/OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "outcome": { + "status": "failed", + "exit_code": 2, + "timed_out": false, + "stderr": "workspace main scenario timeout: stage=7", + "job_after": { + "active": 0, + "total": 16, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "c38a8e52005f17ed0324e40eb25d6d818366ffac73d11458c3d5a007eb320a1d" + }, + "bottom": { + "grid": [ + 169, + 11 + ], + "marker": "TF_SIZE_169x11", + "marker_row": 6, + "core_exact_marker": false, + "visible_matches_core": true, + "unexpected_suffix_bytes": 69, + "core_marker_line_sha256": "e5dc9dab268f0d43dde76e1b40639dbf5cf3a05e79b2ecb2d6f48e3a76f3f7c8", + "native": { + "query_size": [ + 169, + 11 + ], + "after_size": [ + 169, + 11 + ], + "exact_marker": "TF_SIZE_169x11", + "marker_row": 6, + "written_bytes": 18, + "write_ok": true, + "read_ok": true, + "metadata_sha256": "9c34c4b6bdb02956a3a4f6d8d189bf74493a7fd0cc8351071cd1fd72d9b70bd6", + "native_cells_sha256": "40d85ffb0dd8b154c96792e1c0aab7ef0ba8dd24247daf70d1d239f9a25632ea" + }, + "resize": { + "requested": 4, + "completed": 4, + "working": 0 + }, + "input_rejected": 0, + "transport_bytes": 3091, + "event_count": 36, + "truncated": false, + "native_viewport": false, + "parser_resize_grids": [ + [ + 82, + 5 + ], + [ + 82, + 20 + ], + [ + 82, + 5 + ], + [ + 169, + 11 + ] + ], + "state_sha256": "4eeac0ebae0fc836fc1c0a717189d8c0b500552ba6351d2f905141b157b6d994", + "trace_sha256": "2737573c91fa603900513e1dc4de8c4d9ec1daf9fc68494213d1f4ffd4180cdb", + "transport_sha256": "594ed5e2996878a07a29a74d33ebe1191e389934dfb0dcaa717630974c1531b6" + }, + "input_layout_sha256": "ba784527a981f5b90525d971197f57d9f25485e9856feb377ad45ea34eb370e4", + "runner_sha256": "ff9079dc9957d2d12a141d96637e98ac19a639fed94a848012db478043efce78", + "case_identity_sha256": "bceaf6fba5f700ba8def685296e543e41e3ea71396aadd9e890f4cf8ad04416c", + "main": { + "grid": [ + 112, + 24 + ], + "marker": "TF_SIZE_112x24", + "marker_row": 10, + "core_exact_marker": true, + "visible_matches_core": true, + "unexpected_suffix_bytes": 0, + "core_marker_line_sha256": "808e8570040f670407f7cc3842ca9dfc6bd0acd2e46ac8885f79bea32a559d4c", + "native": { + "query_size": [ + 112, + 24 + ], + "after_size": [ + 112, + 24 + ], + "exact_marker": "TF_SIZE_112x24", + "marker_row": 10, + "written_bytes": 18, + "write_ok": true, + "read_ok": true, + "metadata_sha256": "cf821e7760d9e30d50d3c1486e05910cbc218711275dc9ea28ca4ae3bc84003f", + "native_cells_sha256": "baed700dba2d4d4fdf239e01d0de08aa15ce95739c0037445f9a08603c416ee0" + }, + "resize": { + "requested": 2, + "completed": 2, + "working": 0 + }, + "input_rejected": 0, + "transport_bytes": 2857, + "event_count": 23, + "truncated": false, + "native_viewport": false, + "parser_resize_grids": [ + [ + 54, + 12 + ], + [ + 112, + 24 + ] + ], + "state_sha256": "1b0c3589f967d5277982588d3eefb6e1e9c32d946da66f5c5203f2b964a584d2", + "trace_sha256": "436c2eebe465ddbb65c13e67f6b5ecf21e38372b85efa0a6b074e8ef8996a459", + "transport_sha256": "d3290f1e27b493fe8d4cfafb989de7e21d6b0be24caffc1173a247015788bd83" + } + }, + { + "policy": "native", + "shell_sha256": "97c9f0234101a9414b8355e2f167695802458f7c43b33d06cf667571014fdc73", + "size_helper_sha256": "27285fc361b911a2e7892681846933d729d77e1b4e46d30310a64ed9c1624ce9", + "backend_files": { + "conpty-backend/conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "conpty-backend/LICENSE": "ad0cf28f3381ca9bb0bf101d127402d44c17bfa0991e1a00bff7ae6679e9dada", + "conpty-backend/manifest.json": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439", + "conpty-backend/OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "outcome": { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "stderr": "", + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "b05be1041e2cdadc96ddfeabf3dba8b2594688f4147ea2e8994f51f586112f72" + }, + "bottom": { + "grid": [ + 169, + 11 + ], + "marker": "TF_SIZE_169x11", + "marker_row": 6, + "core_exact_marker": true, + "visible_matches_core": true, + "unexpected_suffix_bytes": 0, + "core_marker_line_sha256": "f68f745acd26a08bd159d31b4517873821bb08a81589ea33419412f3ed8553b4", + "native": { + "query_size": [ + 169, + 11 + ], + "after_size": [ + 169, + 11 + ], + "exact_marker": "TF_SIZE_169x11", + "marker_row": 6, + "written_bytes": 18, + "write_ok": true, + "read_ok": true, + "metadata_sha256": "9c34c4b6bdb02956a3a4f6d8d189bf74493a7fd0cc8351071cd1fd72d9b70bd6", + "native_cells_sha256": "40d85ffb0dd8b154c96792e1c0aab7ef0ba8dd24247daf70d1d239f9a25632ea" + }, + "resize": { + "requested": 4, + "completed": 4, + "working": 0 + }, + "input_rejected": 0, + "transport_bytes": 2971, + "event_count": 35, + "truncated": false, + "native_viewport": true, + "parser_resize_grids": [ + [ + 82, + 5 + ], + [ + 82, + 20 + ], + [ + 82, + 5 + ], + [ + 169, + 11 + ] + ], + "state_sha256": "62579ab4a1f75bcd7e469f39b27a87e3ab0b76571479a4b1be9f19f357449006", + "trace_sha256": "5c4faccbff43baf50474c8a2a74533ea75157cec1b437a37400e511c0efd88c4", + "transport_sha256": "7a6c36a62d5506eb13523b203016f196f7b0745e1247f73b95aa256402e861c6" + }, + "input_layout_sha256": "ba784527a981f5b90525d971197f57d9f25485e9856feb377ad45ea34eb370e4", + "runner_sha256": "ff9079dc9957d2d12a141d96637e98ac19a639fed94a848012db478043efce78", + "case_identity_sha256": "1f7a258244363c026d991e4fba6d40cf51a016bd5dc1c8bdcd2478c99953b253", + "main": { + "grid": [ + 112, + 24 + ], + "marker": "TF_SIZE_112x24", + "marker_row": 10, + "core_exact_marker": true, + "visible_matches_core": true, + "unexpected_suffix_bytes": 0, + "core_marker_line_sha256": "808e8570040f670407f7cc3842ca9dfc6bd0acd2e46ac8885f79bea32a559d4c", + "native": { + "query_size": [ + 112, + 24 + ], + "after_size": [ + 112, + 24 + ], + "exact_marker": "TF_SIZE_112x24", + "marker_row": 10, + "written_bytes": 18, + "write_ok": true, + "read_ok": true, + "metadata_sha256": "cf821e7760d9e30d50d3c1486e05910cbc218711275dc9ea28ca4ae3bc84003f", + "native_cells_sha256": "baed700dba2d4d4fdf239e01d0de08aa15ce95739c0037445f9a08603c416ee0" + }, + "resize": { + "requested": 2, + "completed": 2, + "working": 0 + }, + "input_rejected": 0, + "transport_bytes": 3027, + "event_count": 21, + "truncated": false, + "native_viewport": true, + "parser_resize_grids": [ + [ + 54, + 12 + ], + [ + 112, + 24 + ] + ], + "state_sha256": "70b84496873334a34c9cc220478f24795162ad6a39c05ad549cc8104c82f89a0", + "trace_sha256": "89a8bb0999e90db6b499da940908aa3f30470f27fe3a00411cbb6d3d0bd4ca2a", + "transport_sha256": "524967350ac9ca7898c4ca434895b814b43970a9567dd12f35d2d97ccca1a3ba" + } + } + ], + "captured_replay": { + "replay_sha256": "c4cf0d9f68bb5bd688e601b87025f3237c8659f4d80e96bd4f67fa463463a13f", + "cases": [ + { + "session": 1, + "policy": "reflow", + "returncode": 0, + "exact_marker": false, + "matches_live_core": true, + "marker_line_sha256": [ + "e5dc9dab268f0d43dde76e1b40639dbf5cf3a05e79b2ecb2d6f48e3a76f3f7c8" + ] + }, + { + "session": 1, + "policy": "native", + "returncode": 0, + "exact_marker": true, + "matches_live_core": false, + "marker_line_sha256": [ + "f68f745acd26a08bd159d31b4517873821bb08a81589ea33419412f3ed8553b4" + ] + }, + { + "session": 3, + "policy": "reflow", + "returncode": 0, + "exact_marker": true, + "matches_live_core": true, + "marker_line_sha256": [ + "808e8570040f670407f7cc3842ca9dfc6bd0acd2e46ac8885f79bea32a559d4c" + ] + }, + { + "session": 3, + "policy": "native", + "returncode": 0, + "exact_marker": true, + "matches_live_core": true, + "marker_line_sha256": [ + "808e8570040f670407f7cc3842ca9dfc6bd0acd2e46ac8885f79bea32a559d4c" + ] + } + ] + }, + "replay_report_sha256": "6bf3f6d315eebe1fe575ca5b4e1c1fcc4564816effac9cc9b6952a8b604d95f7", + "instrumentation_patch_sha256": "4f73cb8d27da05741cbc880fda306938eaadd77b709169637e12cf47abdbda49" + } + ], + "minimal_ui_original": { + "status": "failed", + "exit_code": 2, + "timed_out": false, + "stderr": "workspace scenario timeout: stage=52 client=2048x1120", + "job_after": { + "active": 0, + "total": 12, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "e8580998bb507198486a37766027f6d45495b5712d6d038ec69f498c2750c679" + }, + "restored_source_sha256": { + "shell.cpp": "b4f6fe98812d1d23fa5f5bbcc7376437404af6cdb67cd6cdcdf448b57cb31fe9", + "size_client.cpp": "cb11661bec9551053eec0dbb474bce2ac899a06ee2e50830a370af4816df39f4", + "workspace_scenarios.hpp": "c9a40dc370bf538c24b62b6177795975b4fac84ff78b0055117f7203b58a7b7d", + "workspace_main_scenario.hpp": "c3994cc60041cd1e7a8599e5c9037473634412bcb6cfd349850ff8cd2808a47e" + }, + "acceptance": { + "identity": { + "source_commit": "dd533878538490c2464673218ea0000c6467a495", + "started_utc": "2026-10-26T23:30:34.047090+00:00", + "source_clean": true, + "diagnostic_instrumentation": false, + "configuration": "candidate termforge.5 / official ConPTY 1.25.260930003 / flags24", + "files_sha256": { + "alpha_normal_smoke.exe": "55f76e0ef0a68a2d3ee2d047852551b86e63074b84604e59fe6d0893361ba3a6", + "candidate_core_test.exe": "4c73b58d7da111ab52b6edbbb59898cf660860fdedaa64c4f49b46fae856a02d", + "candidate_reply_close_test.exe": "7431b2d5a414703d85fb9425b07b7df125eb7b5668851cb5383cf575cb620a69", + "candidate_resize_replay.exe": "c4cf0d9f68bb5bd688e601b87025f3237c8659f4d80e96bd4f67fa463463a13f", + "candidate_title_test.exe": "359141b75c6eeb9a0cc9ef59f9f21ad0d07bcaefb51beb19f64e3288a059bec2", + "clipboard_policy_test.exe": "ef7c7d860bad3b458b7ac8e659c46acd0f768f70281e7d6797e489520d1d559e", + "conpty_backend_probe.exe": "39b52ad4acc4e432718d3cdd6dc6ee2ab80b1584de16c0edc3d775ccc7b03c0d", + "conpty_ctrl_c_probe.exe": "30ad460b54cfcc752e20ccd5f656c6769e292528408a4a68e7182ab3206d39b6", + "conpty_margin_probe.exe": "7aaef1da461b3b6d833aea79332f28d8f924e26de2f9332feeb1f1303a51e30f", + "conpty_resize_native_probe.exe": "a570b55f7ef0f65be01b827112905a223fb32f37a0f645ce121ead1ed6555f59", + "core_measure.exe": "dfe74cf8e6ec0fdb976911569c14e52709be5e880d9b36d2a108187bca9c165b", + "find_bar_test.exe": "632e5ff486b7ad5d29292b4af1206c196d09ca1c1c8a38a830a004ee9c21f1a1", + "history_test.exe": "3b3f6199ad4d345ef5cc759ddcf80667fdde4c7778658e99764342cc17949e2e", + "ime_context_test.exe": "8941d52ed7642b15c46da5a50927ba09ceab7078c5f31c649e4e3baa859e8ae1", + "ime_input_expectation_test.exe": "a960fbd62a7c0d6eec564a5a2bb1cc271582e7bb55ec07ddb63bc46044b9c438", + "keyboard_test.exe": "fe027bbcb21a09fac9411dd5766a37e8edd711d3ef547f37a080ded097a4de3e", + "layout_state_test.exe": "7b174db85ff75e8a8f5613c949c264a4dedbb8cfeb8a18581f016191bd036ddb", + "paste_test.exe": "1e6acc382a75fe18b50212cf6950d3d714f89939b1cf63000795348e4db22d54", + "presentation_probe.exe": "91aa34c2ac7b4f6610da419a04091d4391cb78e224e6b5f567437a5565d4e33a", + "raw_console_receiver_test.exe": "0731af92b2536b189d80894b5ca4243d814e07ab2c513fff7b4d3fd3654578f2", + "real_app_capture.exe": "fddd86a02d7c8ba13b7cd458373c8acd19d999199baefce77e8f237efce47189", + "receive.exe": "b5ea1d10bba964ec80f183d761b1c0ea4334f6963597ccd1bb16b9c769fc76d5", + "recovery_probe.exe": "72213828da26b5657915667faccd1d0aca83dbe6d9537f38dbd9d5464750313b", + "renderer_metrics_test.exe": "f08e88f6ff8bb6be87f724ff6a3c398df359a639f83d75b5970e69659f8a4a5c", + "replay.exe": "54298c3fa5020d3ebcaa55c76564b9dcbfec5b25d772343c428e2e36e1858ca1", + "resize_test.exe": "fd97c87127d4763320832d1d538af5755eece8a1ec1485435cab6b41e9e549cd", + "runtime_observation_test.exe": "0049a0d863724bf8bd181c85868bd68a409eb5e12c755a5538add5f85bf8b0bf", + "scenario_tick_gate_test.exe": "f7368d2d4c13a9eee4a210e857fd5d13479641328fa71a984582c69b57735ecf", + "search_test.exe": "6bf2a5fa47e1f0665462e6601e01253674c6662e5db730161bd7eb09c81d621d", + "selection_test.exe": "19eaf7ef3e6f1a35f67e1b17a60858bfb0f268a20c9f2686d141c847a68fbb3a", + "sender_fence_pipe_test.exe": "19bba0df9e37159cc70728f68ae8a28364127fac21ab72cb21cdb036f9380686", + "sender_fence_test.exe": "b3c396a7d8a306d0987ef149fd9d5e014ab90ac6d54d0915a48b6d261a6e21c1", + "sent_message_wait_test.exe": "b9bb4960dc470d5aac08fecb2c0775c16e2a7e75fdabe283b6c028d284679abb", + "shell_clipboard_reader.exe": "771da921ef4d30a7e710989ea0d4446254fc4e85c59199730704edf2256bb641", + "shell_ime_client.exe": "f02ec529d90db13bf4c904bbee8bc77930fdcf51ba868b4a43a43ed783f61830", + "shell_input_client.exe": "0075a332e524071809a1fdbd5161d1f360fa8e89faaf2b45b24c19f1d94829cc", + "shell_launch_test.exe": "6e96e163b4adc40b8d53c022a23a206176bf558c73eb76d9790b61f2abb13baf", + "shell_paste_probe.exe": "dd49d693dc30372d6f44cce2b7a1dcfc64adea1e6638399da4d400784a14bf6f", + "shell_query_client.exe": "691b440e9c500c76c1c09c448aafbe2316793bf341ffe69bbc2bf70e41be64cc", + "shell_queue_probe.exe": "e030070a6f287421bc3b74350fd45c8cd762837dc1512a76f688d20d39aa8715", + "shell_selection_text_client.exe": "18b60279aed48a9d39b6f5c57371c60b3a2b59bb21d6e30f92bac7adf50a3ed2", + "shell_size_client.exe": "a7a45db0976dd1e157871b6a9b50b1362ceb8cb8ea604470e58791920805d408", + "shell_test_launcher.exe": "7bd78cffd78ac66d651933c9614d6be937c99baa105ce04c1a533df5785c11e2", + "shell_text_client.exe": "9350e53de74c9a6b78495a3b59788e3a31e0067a9c5ec1b8685a729ff18244d3", + "termforge_conpty_probe.exe": "1dcf69f65e9dd2abca1a58c10df2be3a296a4e22cdd895ba457222fe9e27f021", + "termforge_ime_probe.exe": "ba59ec28909430669c187a644651588b2f1984b1308b97056f222f332e7de9c9", + "termforge_shell.exe": "7f26395942f107297565f50402568650e1e17c5eb23924bee1bfb02c50c60d16", + "terminal_trace.exe": "d09f34702cbd2d8be6ecfe98ab56a2326be1fde6b1fde4d10ef85d0f62955d2f", + "text_action_policy_test.exe": "9988026742d9ff45f300a6fa336ceca052a502b568f32114be7fd5057e57f5a4", + "transport_completion_test.exe": "6952438843e8a7605bb6cf0eb7add56dd8574f4e5edfbc3a534f795030a3fcc8", + "workflow_checkpoint_test.exe": "056047580e8ddd77224908667297a0b704f97ef57d1eadeb382b52c7c7875b86", + "workflow_fixture_test.exe": "ce3f09d8b3bb97d92dd6c61531e2cb9ba36070d2222b7b4ad7b86de82021f208", + "workspace_state_test.exe": "18080df77a0b7a370aa1e2dc79f2986dd3a4eb01661663dd95c43a11b802ee11", + "conpty-backend/conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "conpty-backend/LICENSE": "ad0cf28f3381ca9bb0bf101d127402d44c17bfa0991e1a00bff7ae6679e9dada", + "conpty-backend/manifest.json": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439", + "conpty-backend/OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586", + "assets/fonts/OFL.txt": "50ab8dd54680d3473f649c9db86fece88434d097c7834475c1c72d2f8c429215", + "assets/fonts/README.md": "a278deeec4b6240acc5398fe4271ebe8cc0ef26502ac3a1cfb950d06ddaf43e6", + "assets/fonts/RobotoMono-Regular.ttf": "af0bff7599c3df3831755c16e39b3c496df74b8c8d8a1161b14dc8461be17cb4" + }, + "source_sha256": { + "CMakeLists.txt": "8a0e3f86981e91fd6482b590669ccc4adb571a359bd265b3dc98aee59a7b92f2", + "experiments/shell/shell.cpp": "b4f6fe98812d1d23fa5f5bbcc7376437404af6cdb67cd6cdcdf448b57cb31fe9", + "experiments/shell/size_client.cpp": "cb11661bec9551053eec0dbb474bce2ac899a06ee2e50830a370af4816df39f4", + "experiments/shell/workspace_scenarios.hpp": "c9a40dc370bf538c24b62b6177795975b4fac84ff78b0055117f7203b58a7b7d", + "experiments/shell/workspace_main_scenario.hpp": "c3994cc60041cd1e7a8599e5c9037473634412bcb6cfd349850ff8cd2808a47e", + "experiments/shell/test_shell.py": "a6b63c1754b0e0dc1cc01863891f4c7c9d989f818d351838a8cfe295edaf811c", + "experiments/shell/run.py": "45976b828eecb316881d698dedaef09ad304f72d991dfa360f1c552bbcbe9f1d" + }, + "max_focused_batches": 2, + "original_repetitions_per_method": 3, + "full_shell_batches": 1, + "full_shell_ctest_timeout": 180 + }, + "runs": [ + { + "kind": "focused-0", + "returncode": 0, + "supervisor_seconds_rounded": 8.375, + "log_sha256": "9eff816b554e80f0214b9fd5f798c0c600e22b488889bfaef5948ef7d34c36d8" + }, + { + "kind": "focused-1", + "returncode": 0, + "supervisor_seconds_rounded": 7.797, + "log_sha256": "f7421a6c60cb5edfc6736469357a83113332949c007eb013f8c5cdf5d382ceec" + }, + { + "kind": "full-shell", + "returncode": 0, + "supervisor_seconds_rounded": 93.734, + "log_sha256": "0d7cfae3fb2e9d2eaa426cade9f0301e388e880d9f749a97b1361f62b9f33f92", + "ctest_timeout_seconds": 180, + "summary_lines": [ + "53: test_mouse_selection_to_real_system_clipboard (experiments.shell.test_shell.ShellTests.test_mouse_selection_to_real_system_clipboard) ... skipped 'system copy UI gate requires a disposable hosted VM'", + "53: test_system_clipboard_product_read_errors_cancel_and_close (experiments.shell.test_shell.ShellTests.test_system_clipboard_product_read_errors_cancel_and_close) ... skipped 'product clipboard read gate requires a disposable hosted VM'", + "53: test_system_clipboard_shortcut_to_window_confirmation_and_receiver (experiments.shell.test_shell.ShellTests.test_system_clipboard_shortcut_to_window_confirmation_and_receiver) ... skipped 'real system clipboard UI gate requires a disposable hosted VM'", + "53: Ran 40 tests in 93.403s", + "53: OK (skipped=3)", + "Total Test time (real) = 93.62 sec" + ] + } + ], + "samples": [ + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "ac8d45f5390e69786383cebd14f6c89f5e7ee464d14287ee18d140fcfd33d85d", + "case": "focused-0/main-0" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "8ba795e82717e0ecff5bad5f255048b9e028e6277490c2c31f3ff2a2c6aa6b8d", + "case": "focused-0/main-1" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "04f90e5763d5e3f9d066785efa5c6c85adfc2e94a6a38d9b1f8b47fb579c1ce2", + "case": "focused-0/main-2" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "7feccb4f0160565751c36e7f2c9d65f8d3f593ee3bfa9d414585442130061835", + "case": "focused-0/ui-0" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "1a15dfc7d7f848c466838e25b6bdb50d69cd0389bfb5d59ec70e69414b57695e", + "case": "focused-0/ui-1" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "33dcb261b49a07847dcf17f0accfdd1d51ff08cd2bb8f93e8c8602eb2745fb0c", + "case": "focused-0/ui-2" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "14450dc6b7587d56213d6ebac638dcfc489248babb1d35e759f4eee8402187cb", + "case": "focused-1/main-0" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "f0faea737dc6cc7518723446cf0f901b0aedcbc16e942490e31c87e25e41d8a7", + "case": "focused-1/main-1" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "0b706f2012bd51398f62c642870ea1fb2caae6584352ce7f0a053f43f5bc4448", + "case": "focused-1/main-2" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "df654941e0290caf0ce97ccd58fe05e721acee4337757d777466348fa31a0cf4", + "case": "focused-1/ui-0" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "f7eb090e4c2a6131557dc68f4f795176f12bc765e54cb9ca52c6bda2fd2cb26a", + "case": "focused-1/ui-1" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "34d40e087c3e8d0baa071e740d75d5c043dfdb6cdd14d228758cfd340052a1f6", + "case": "focused-1/ui-2" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "e07d8d1561af320604d4f6f415dce42f07203905011d80f2470708674084229e", + "case": "full-shell/main-0" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "73990fe243ef403da72cb66265a007fa150dfc8ef38da982e82fafeefdc0da81", + "case": "full-shell/main-1" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 22, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "bab0fdbbbc12ab7dd73c8b0cee2c6292dea941349b11010b9514d00b03fe4135", + "case": "full-shell/main-2" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "fb6832554596c8ba0d6cecb33a41df390f811d98b8320fa229638219efb86d4b", + "case": "full-shell/ui-0" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "e096621b2e713b45a6ead7774b39fc0ad22977e444442a31fc94cefddcf13157", + "case": "full-shell/ui-1" + }, + { + "status": "passed", + "exit_code": 0, + "timed_out": false, + "job_after": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "desktop_gone": true, + "sample_sha256": "236dd3b4c21679097ac5e930073961f466a1c152660ec9667bf1f1f96fa03d61", + "case": "full-shell/ui-2" + } + ] + }, + "limitations": [ + "Temporary state/native capture and policy switch perturb scheduling; no timing/performance claim.", + "Native snapshots occur immediately after the size helper writes; they are separate from later terminal rendering and actual presentation.", + "Offline replay uses captured feed/resize ordering; exact old live core match checked, not a live host or timing equivalence claim.", + "The historical 3e5b96d failure without matching transport is not retroactively assigned a cause; 188228e reproduces the original symptoms; detailed native/transport attribution comes from controlled current-source failures.", + "Full shell suite retains original hosted clipboard skips; no personal clipboard or display settings changed.", + "Per-run public acceptance samples cover the ui/main scenarios; other full-suite negative fixtures retain their original assertions in the complete test log.", + "Vim #52 and complete official configuration/R2 remain open; system configurations and WindTerm are not inferred.", + "Original raw traces, native cells and helper paths stay local; public rows retain marker, shape, state and identity hashes only." + ] +} diff --git a/research/ui/results/2026-10-27-styled-native-reference/validation.json b/research/ui/results/2026-10-27-styled-native-reference/validation.json new file mode 100644 index 00000000..b4db673d --- /dev/null +++ b/research/ui/results/2026-10-27-styled-native-reference/validation.json @@ -0,0 +1,1339 @@ +{ + "schema": "termforge-windterm-styled-native-reference-v1", + "scope": "One original local-shell observation; no product behavior approval or terminal-style equivalence.", + "source_commit": "dc5c631ffdf83dfbdfcb8b359137e0d87212ac6d", + "declared_maximum_runs": 1, + "actual_runs": 1, + "native_executions": 1, + "reference_identity": { + "exe_sha256": "7b10531dccc7cd614ae559f36f1ef518e0c96335637431b4646354823b2804d0", + "files_manifest_sha256": "e459adf2f12adb6a1b7f55e66a9da1c22794185e66e848057d21e0c60d669203", + "files_count": 4047 + }, + "environment": { + "os_observed_in_cmd_banner": "10.0.26200.9711", + "platform": "Windows x64", + "viewport": [ + 80, + 24 + ], + "native_main_buffer": [ + 80, + 3000 + ] + }, + "native_probe_sha256": "ca19645b65aea8ac74b56d1e59837cb7514c3acf5932d24112411725b92206d7", + "python_exe_sha256": "0b471133e110cfb53a061cad528ce8e517d7b9ac41a0a396c39ad795a487fc14", + "rea_cli_sha256": "ed06cee49505b95a3cc5fceb1b4b279167e26df86227c644bb366ffffdbaf738", + "source_files_sha256": { + "research/ui/r1_launch.py": "54fb41872c6abcc48242a0938044184854b016785cc13659c66b1bf404da0d8a", + "research/ui/launch.py": "6970e0d4f2fe5e7ec4827df7aa1026cd0e74aeb828cdc9b7a0b42b3c887eb4e6", + "research/ui/qt_r1_text.js": "f5820d413fdd72c13dffcefbf4d0ade615abfe15754c6b0b52e1e098814eea6f", + "experiments/conpty/margin_controls_probe.cpp": "5095dd3a113b799d417e522cbbe30aa0217a539dd46e1c096a8b707ab709b4c7" + }, + "probe_files_sha256": { + "prepare.py": "a37ec9364b34504959d4b73288bc7830cfb70f0352291a0b6e59fe0ef36cd76d", + "launch.py": "6bb19424171dade4a20faa4ea3067209c77d39fcde79dca93c631ff6bcf3b832", + "launcher.patch": "40f4d4c2c921f46e2a64cf68feb546ba362645150032e439db8863f13156b2e9", + "styled_probe.py": "2fabe0ce19967d3885cb04920fddd57a5c644dcbf41797eda0bb3d22772d6326", + "driver.js": "6f2fb7987186570a1761bddff3738539f622ccf1794991f3560c91a3e3ad73b9", + "stages.js": "a2439d58be27794b1b4f82cadf4044422ae74c9e44f44f8d4572198dd8ac90d1", + "qt_r1_text.js": "c182d9758f2c0dacf04cd755d24ffbb2076b53ae9fe3f617d7ad5d886e9d0288" + }, + "script_sha256": "20d41d7663711bf76f4dc2412e1a6ea41bf3add815d3c61793998d5436aae76d", + "template_sha256": "c182d9758f2c0dacf04cd755d24ffbb2076b53ae9fe3f617d7ad5d886e9d0288", + "fixture_sha256": "2fabe0ce19967d3885cb04920fddd57a5c644dcbf41797eda0bb3d22772d6326", + "source": { + "bytes": 211, + "sha256": "51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62", + "hex": "1b5b306d1b5b324a1b5b48544f505f46495845440d0a524547494f4e5f410d0a524547494f4e5f420d0a424f54544f4d5f46495845440d0a1b5b323b33721b5b33313b34346d1b5b333b36481b5b3f31303439681b5b306d1b5b324a1b5b48414c545f4f5554534944450d0a1b5b343b3148414c545f410d0a414c545f421b5b343b35721b5b33323b34356d1b5b353b31480a414c545f430a414c545f441b5b353b38481b5b3f313034396c4d1b5b333b31480a524547494f4e5f430a524547494f4e5f441b5b363b31485347525f444f4e45" + }, + "status": "observed-styled-reference", + "scenario_error": null, + "backend_calls": [ + { + "function": "winpty_open", + "success": true, + "size": null + }, + { + "function": "winpty_spawn", + "success": true, + "size": null + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 91, + 23 + ] + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 80, + 24 + ] + } + ], + "native_wrapper": { + "before": { + "buffer": [ + 80, + 3000 + ], + "window": [ + 0, + 0, + 79, + 23 + ], + "viewport": [ + 80, + 24 + ], + "cursor": [ + 4, + 0 + ], + "attributes": 7 + }, + "output_mode_before": 3, + "output_codepage_before": 936, + "native_executions": 1, + "timed_out": false, + "exit_code": 37, + "after": { + "buffer": [ + 80, + 3000 + ], + "window": [ + 0, + 4, + 79, + 27 + ], + "viewport": [ + 80, + 24 + ], + "cursor": [ + 9, + 8 + ], + "attributes": 20 + }, + "output_mode_after": 7, + "mode_restore_ok": true, + "codepage_restore_ok": true + }, + "native_raw_contract": { + "stages": { + "before": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": false, + "viewport": false, + "passed": false + }, + "alt": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": true, + "viewport": true, + "passed": true + }, + "restored": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": false, + "viewport": false, + "passed": false + }, + "after-write": { + "text": true, + "cell_text": true, + "cells_and_attributes": true, + "cursor": false, + "viewport": false, + "passed": false + }, + "final": { + "text": false, + "cell_text": false, + "cells_and_attributes": false, + "cursor": false, + "viewport": false, + "passed": false + } + }, + "passed": false, + "initial_native_attribute": 7, + "full_r2_contract_verified": false + }, + "raw_baseline_prediction_matches": false, + "viewport_relative_diagnostic": { + "only_changes": [ + "cursor_row minus viewport top", + "viewport top projected to zero" + ], + "matches_fixed_source_baseline_prediction": true, + "product_contract_changed": false, + "raw_contract_passed": false + }, + "native_stages": { + "before": { + "top": 4, + "cursor": [ + 6, + 5 + ], + "relative_cursor": [ + 2, + 5 + ], + "lines": [ + "TOP_FIXED", + "REGION_A", + "REGION_B", + "BOTTOM_FIXED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "attribute_runs": [ + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ] + ] + }, + "alt": { + "top": 0, + "cursor": [ + 4, + 7 + ], + "relative_cursor": [ + 4, + 7 + ], + "lines": [ + "ALT_OUTSIDE", + "", + "", + "ALT_C", + "ALT_D", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "attribute_runs": [ + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 82, + 80 + ] + ], + [ + [ + 82, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ] + ] + }, + "restored": { + "top": 4, + "cursor": [ + 6, + 5 + ], + "relative_cursor": [ + 2, + 5 + ], + "lines": [ + "TOP_FIXED", + "REGION_A", + "REGION_B", + "BOTTOM_FIXED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "attribute_runs": [ + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ] + ] + }, + "after-write": { + "top": 4, + "cursor": [ + 6, + 6 + ], + "relative_cursor": [ + 2, + 6 + ], + "lines": [ + "TOP_FIXED", + "REGION_A", + "REGIOM_B", + "BOTTOM_FIXED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "attribute_runs": [ + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 5 + ], + [ + 20, + 1 + ], + [ + 7, + 74 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ] + ] + }, + "final": { + "top": 4, + "cursor": [ + 9, + 8 + ], + "relative_cursor": [ + 5, + 8 + ], + "lines": [ + "TOP_FIXED", + "REGION_A", + "REGIOM_B", + "REGION_CIXED", + "REGION_D", + "SGR_DONE", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "attribute_runs": [ + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 5 + ], + [ + 20, + 1 + ], + [ + 7, + 74 + ] + ], + [ + [ + 20, + 8 + ], + [ + 7, + 72 + ] + ], + [ + [ + 20, + 8 + ], + [ + 7, + 72 + ] + ], + [ + [ + 20, + 8 + ], + [ + 7, + 72 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ], + [ + [ + 7, + 80 + ] + ] + ] + } + }, + "terminal_observation": { + "synthetic_final_tail": [ + "TOP_FIXED", + "REGION_A", + "REGIOM_B", + "REGION_CIXED", + "REGION_D", + "SGR_DONE" + ], + "observed_via": "activeText.lineText after SGR_DONE, before releasing the wrapper hold", + "screen_capacity": 24, + "cell_styles": null, + "terminal_cursor": null, + "current_style": null, + "history_isolation": null, + "api_names_observed": [ + "cursor", + "styleSheet", + "caretColumn", + "caretLine", + "caretLineOffset", + "caretPosition", + "setStyleSheet", + "caretPositionChanged", + "marginStyleChanged", + "schemeAnsiStyleChanged", + "exchangeCaretAnchor", + "gotoPosition", + "lineFromPosition", + "movePosition", + "movePositionOutsideChar", + "positionFromLine", + "positionFromPoint", + "selectionCaretP", + "setUseTabPosition", + "useTabPosition", + "visibleLineFromPosition", + "visibleRectFromPosition", + "caretVirtualSpace", + "promptPosition", + "setTimestampFormat", + "setTimestampLongFormat" + ], + "api_names_are_not_style_values": true + }, + "lifecycle": { + "native_exit_code": 37, + "shell_exit_code": 37, + "native_timeout": false, + "outer_job": { + "active": 0, + "total": 11, + "terminated": 0 + }, + "deliberate_outer_termination_requested": true, + "outer_counter_is_not_natural_exit_proof": true + }, + "budgets": { + "rea_seconds": 30, + "scenario_timeout_ms": 25000, + "client_wait_seconds": 5, + "client_cleanup_seconds": 5, + "final_screen_hold_seconds": 8 + }, + "provider": { + "evidence_id": "ev_8fbd9aead9aa5d60f49e05112c31eb542febf65084643c025eb8a52ffd590048", + "name": "Frida", + "version": null, + "confidence": "observed", + "subject": null, + "environment": null, + "captured_state": "running", + "messages_truncated": false, + "cleanup_error": null, + "limitations": [ + "Artifact identity is unavailable for this observation.", + "The target operating system and architecture were not reported by this observation." + ] + }, + "profile_check": { + "only_synthetic_session": true, + "session_count": 1 + }, + "raw_files": { + "run.json": { + "bytes": 614, + "sha256": "e5d885cbb7080c9464f4a00e4174dae3cd1660f892af4852a39b24cb1ac7eb5f" + }, + "probe.js": { + "bytes": 21561, + "sha256": "20d41d7663711bf76f4dc2412e1a6ea41bf3add815d3c61793998d5436aae76d" + }, + "probe-result.json": { + "bytes": 1619, + "sha256": "5d04c971e73dad049e011facfaa0c5d47a7b35f40ebeaf1c414f43cf9142e3d0" + }, + "profile-check.json": { + "bytes": 52, + "sha256": "5e522a64e98197722ccd084639b1ce50258b238e03be2f016e81c8af023b5ee1" + }, + "cleanup.json": { + "bytes": 43, + "sha256": "7e28113f11ad26f81fa0a314d86f1204a46e2a32ee92399b0c854315b9178b03" + }, + "evidence.json": { + "bytes": 53100, + "sha256": "be349abb34cf28f42b634ccf65bd0749e1e9940856059156b794e7968b7ef83c" + }, + "stderr.txt": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "files.json": { + "bytes": 637666, + "sha256": "a25c87cba935294d5bfd3bbc76c650d31a8473809564d798ad5a889e4aea00e8" + } + }, + "native_capture_files": { + "after-write.cells.bin": { + "bytes": 7680, + "sha256": "84708a877d836570697978465b4c2b788652b2de0a20a09d8a117111d3c82dc0" + }, + "after-write.console.bin": { + "bytes": 3840, + "sha256": "0463eaeda9c44a38ad9003ca14df549dcfc74ceb364308432aceadb7491fa007" + }, + "after-write.console.json": { + "bytes": 442, + "sha256": "1d69f86911a76f30c9201dd07ca4cbdaa8376a9113d5622a8d55d0b2b4798fb7" + }, + "alt.cells.bin": { + "bytes": 7680, + "sha256": "d2e9a140a7b7a3c537b4cb25ea306c0b26fdf9694fc8c9d44218be173a99108e" + }, + "alt.console.bin": { + "bytes": 3840, + "sha256": "f6492387ed4760be9851cccd504ac8f6f21624d55dce9671b3be4560ada0b5ac" + }, + "alt.console.json": { + "bytes": 434, + "sha256": "81304f5e1cd83bbf0039f4880b7fd44913ef877911075a69268f761f6589a29b" + }, + "before.cells.bin": { + "bytes": 7680, + "sha256": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "before.console.bin": { + "bytes": 3840, + "sha256": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b" + }, + "before.console.json": { + "bytes": 437, + "sha256": "3ea492ce7337f590ab35d6a5731e558d1013de1c0ea6f259b9f8c11596e257ca" + }, + "final.cells.bin": { + "bytes": 7680, + "sha256": "68ea1c55640dde6862f56fc015df6821072a72d589d315aff42776d5b5f46938" + }, + "final.console.bin": { + "bytes": 3840, + "sha256": "acea12c6e10ea9ad409f7c9df8015dd47ac1c4f22fbb3dfbae99fe064424807d" + }, + "final.console.json": { + "bytes": 436, + "sha256": "84ebe18c07afd3e0d4c16a0cfdc9bf558e7380c55dc51697c860dac053f2d6ee" + }, + "restored.cells.bin": { + "bytes": 7680, + "sha256": "fe9016196e03b264cce22f628f67b778fe1e6a3aeb160ed53effc153b1ff6651" + }, + "restored.console.bin": { + "bytes": 3840, + "sha256": "4279b6605b0fb08728ce75e50e7b24eaf2d75e39e3d44b12b0f41d2e6ba8343b" + }, + "restored.console.json": { + "bytes": 439, + "sha256": "bd670464add79b692c325cd9d3029ee77dc83101a54decf558b4be0e038a6097" + }, + "source.bin": { + "bytes": 211, + "sha256": "51d0f55717ff8fbe5e82040967edf2f9399a9b893fd8e8cb282f94c143919b62" + } + }, + "wrapper_result": { + "bytes": 429, + "sha256": "2b96cddfb31969f8dc33078668d7db944feeb1c3ef9e912a640ee095eac61519" + }, + "full_margin_contract_verified": false, + "product_backend_selected": false, + "presented_done": null, + "limitations": [ + "Native buffer height may differ from viewport; record both without changing buffer size.", + "Only native fields and final UI text are initially observable; terminal cell colors/cursor may remain unknown.", + "API names are availability observations, not returned style values.", + "No actual transport tap or intermediate terminal-state capture in this slice.", + "No physical display, latency, clipboard, user configuration or performance measurement.", + "Do not merge this sample with ConPTY batch as one complete backend/product acceptance.", + "Raw absolute native cursor/top are different because the original uses a taller buffer; relative-coordinate projection is diagnostic only and does not change the original gate.", + "REGION_CIXED is observed in native cells and the UI text projection. Cause attribution to a specific original component is unproven.", + "The patched source behavior differs from this observed original behavior; important original-bug fixes require user confirmation before product adoption.", + "Color/codepage restore fields report API success, without a second GetConsoleMode/GetConsoleOutputCP verification.", + "Provider subject/environment are null; pinned package identity is supplied separately by the local preparation guard.", + "The private driver and raw instrumentation are not published; this summary is not a public one-command reproduction package." + ] +} diff --git a/research/ui/results/2026-10-27-vim-native-reference/validation.json b/research/ui/results/2026-10-27-vim-native-reference/validation.json new file mode 100644 index 00000000..e02b6d9c --- /dev/null +++ b/research/ui/results/2026-10-27-vim-native-reference/validation.json @@ -0,0 +1,808 @@ +{ + "schema_version": 1, + "purpose": "bounded original WindTerm behavior observation, not product acceptance", + "source_commit": "b60cd65b9fa6af724279780faa8d78847eb5cef0", + "reference_version": "WindTerm 2.7.0 Windows x64", + "environment": { + "observed_cmd_banner_windows_version": "10.0.26200.9457", + "rea_cli_version": "6.7.0", + "window_station": "per-run-owned-non-input", + "profile": "one-synthetic-local-shell" + }, + "observations": [ + { + "id": "entry", + "declared_maximum_runs": 1, + "actual_runs": 1, + "source_commit_recorded_in_plan": null, + "rea_duration_seconds": 30, + "scenario_timeout_ms": 28000, + "status": "observed", + "stage": 5, + "scenario_elapsed_ms_diagnostic_only": 2010, + "scenario_error": null, + "script_sha256": "e8774e12a08eedf872ae87aa045057b76fb2c91b125a289e43fbf6c555834b3f", + "template_sha256": "30c93bba80eff6881dca333fdbcda21838475ea0eb44aed7664dff434967e1a7", + "fixture_sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797", + "probe_files_sha256": { + "launch.py": "8b5ffe020fd3c92f23b188e5673b32396c882d9e6d1cdfc8b57fd14cc2ffee2d", + "qt_r1_text.js": "30c93bba80eff6881dca333fdbcda21838475ea0eb44aed7664dff434967e1a7", + "driver.js": "cf445845d21860f3102f8f546dfe3f452e2908badc0b62ad8d6dde634fa034fa", + "candidate-vim.vim": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797", + "launcher.patch": "a3c3163fde217b5198fae8b1c80f45e9fb4f843df83ad6cc8de347eac1e0a411" + }, + "source_files_sha256": { + "research/ui/r1_launch.py": "54fb41872c6abcc48242a0938044184854b016785cc13659c66b1bf404da0d8a", + "research/ui/launch.py": "6970e0d4f2fe5e7ec4827df7aa1026cd0e74aeb828cdc9b7a0b42b3c887eb4e6", + "research/ui/qt_r1_text.js": "f5820d413fdd72c13dffcefbf4d0ade615abfe15754c6b0b52e1e098814eea6f" + }, + "helper_exe_sha256": {}, + "reference_identity": { + "exe_sha256": "7b10531dccc7cd614ae559f36f1ef518e0c96335637431b4646354823b2804d0", + "files_manifest_sha256": "e459adf2f12adb6a1b7f55e66a9da1c22794185e66e848057d21e0c60d669203" + }, + "provider": { + "evidence_id": "ev_8e744c8ba99a794f4c59caeade8fc5fb62bdea0169cfc89c21cd2981660f06f1", + "name": "Frida", + "version": null, + "confidence": "observed", + "subject": null, + "environment": null, + "captured_state": "running", + "messages_truncated": false, + "cleanup_error": null, + "limitations": [ + "Artifact identity is unavailable for this observation.", + "The target operating system and architecture were not reported by this observation." + ] + }, + "backend_calls": [ + { + "function": "winpty_open", + "success": true, + "size": null + }, + { + "function": "winpty_spawn", + "success": true, + "size": null + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 91, + 23 + ] + } + ], + "probe_error": { + "count": 0, + "kind": null + }, + "profile_check": { + "only_synthetic_session": true, + "session_count": 1 + }, + "outer_cleanup": { + "job_accounting": { + "active": 0, + "total": 13, + "terminated": 0 + }, + "deliberate_termination_requested": true, + "termination_counter_is_not_natural_exit_proof": true + }, + "raw_files": { + "run.json": { + "bytes": 615, + "sha256": "df015ba174dc04e60906175a9205f996d629d8ae29c7d07b696ca407dfe8eb6f" + }, + "probe.js": { + "bytes": 17645, + "sha256": "e8774e12a08eedf872ae87aa045057b76fb2c91b125a289e43fbf6c555834b3f" + }, + "probe-result.json": { + "bytes": 137, + "sha256": "0f9b75e9023dfa3b034e8b69d3fa75e732274233dd87f0307cfc9ae29f50c267" + }, + "profile-check.json": { + "bytes": 52, + "sha256": "5e522a64e98197722ccd084639b1ce50258b238e03be2f016e81c8af023b5ee1" + }, + "cleanup.json": { + "bytes": 43, + "sha256": "43174a2e069f646c7d5370c56c5b4aedae68af7b4735434b0aba110f7442a969" + }, + "evidence.json": { + "bytes": 35278, + "sha256": "78edce088914731eb60d070c4695463cb2d9c1fd491fa4d35ad86d4fe5f210f1" + }, + "stderr.txt": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "files.json": { + "bytes": 637666, + "sha256": "a25c87cba935294d5bfd3bbc76c650d31a8473809564d798ad5a889e4aea00e8" + } + }, + "synthetic_artifacts": { + "candidate-input.bin": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "candidate-insert-log.txt": { + "bytes": 39, + "sha256": "dd1833a26b6aa08e7d20b2e6731bb15db71a01c24705592ef26670f4d3639665" + }, + "candidate-startup-log.txt": { + "bytes": 6, + "sha256": "3dfa3fb239f56c778a1e9b33eb31328349edd155a95806dac4378904e88527e5" + }, + "candidate-vim.vim": { + "bytes": 334, + "sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797" + } + }, + "limitations": [ + "Vim is started by cmd /k instead of a typed launch command in this entry feasibility probe.", + "No resize/Ctrl-O/write/exit/CPR or full original method is claimed.", + "Qt/Frida observation perturbs scheduling; not physical input or performance.", + "The Vim input log may remain unflushed because this pilot deliberately ends by owned cleanup." + ], + "full_vim_contract_verified": false, + "presented_done": null, + "coverage": { + "direct_cmd_start": true, + "ready": true, + "insert_marker": true, + "resize": false, + "save": false, + "normal_shell_exit": false + }, + "runtime_files_sha256": { + "msys-2.0.dll": "3096d2ba9be20e90be1399edd391bac65d84bc387f5a419b502c9b326081930f", + "msys-iconv-2.dll": "9cbf5613b946be7bad403ac0d7277efbd514a35faa644c6a0d6e7f6cc0b40780", + "msys-intl-8.dll": "23d30f4bcbc0a258cf5ecfe29e707f9b05d51c32d5b16a910f1012b889136c12", + "msys-ncursesw6.dll": "73ff8bc8b1f515e57b185e57d25d9ad29067057ff0819a8e588677c65ca61629", + "vim.exe": "2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a" + } + }, + { + "id": "vim", + "declared_maximum_runs": 1, + "actual_runs": 1, + "source_commit_recorded_in_plan": "b60cd65b9fa6af724279780faa8d78847eb5cef0", + "rea_duration_seconds": 30, + "scenario_timeout_ms": 25000, + "status": "failed", + "stage": 56, + "scenario_elapsed_ms_diagnostic_only": 25088, + "scenario_error": "Error: scenario timeout", + "script_sha256": "9ec842a01202da3e4a25207a3aa368074b2662443052612d120fd6a8add3f4df", + "template_sha256": "144caee2c053240eca713a5d4b42f12bb6324400f3c5c6eafe5ead618bad8a4c", + "fixture_sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797", + "probe_files_sha256": { + "launch.py": "c24a82e3f0e546ae176b2ba3f463c5a1f576bf6e226110567208703b4738203c", + "launcher.patch": "1e440626b2bc20a9b2a6a5ea5263c4437ab06fe5285ce931cfb8b153bc475f9a", + "candidate-vim.vim": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797", + "driver.js": "95177a635e6c5bfca11eb17c394957d8aa5e0dcb6dcec96d77809b2331bc490f", + "qt_r1_text.js": "144caee2c053240eca713a5d4b42f12bb6324400f3c5c6eafe5ead618bad8a4c" + }, + "source_files_sha256": { + "research/ui/r1_launch.py": "54fb41872c6abcc48242a0938044184854b016785cc13659c66b1bf404da0d8a", + "research/ui/launch.py": "6970e0d4f2fe5e7ec4827df7aa1026cd0e74aeb828cdc9b7a0b42b3c887eb4e6", + "research/ui/qt_r1_text.js": "f5820d413fdd72c13dffcefbf4d0ade615abfe15754c6b0b52e1e098814eea6f", + "experiments/shell/shell.cpp": "b4f6fe98812d1d23fa5f5bbcc7376437404af6cdb67cd6cdcdf448b57cb31fe9", + "experiments/shell/test_candidate_tui.py": "a300380b97ad424c5af06219a021a256de6178c3af7fb7e933e24bb8142201ee", + "experiments/shell/query_client.cpp": "10d982efc87fa6a832fb674a43b515e2d993dcf8b40bcfa845aae5a2e7ae0545", + "experiments/shell/size_client.cpp": "cb11661bec9551053eec0dbb474bce2ac899a06ee2e50830a370af4816df39f4" + }, + "helper_exe_sha256": { + "shell_query_client.exe": "691b440e9c500c76c1c09c448aafbe2316793bf341ffe69bbc2bf70e41be64cc", + "shell_size_client.exe": "a7a45db0976dd1e157871b6a9b50b1362ceb8cb8ea604470e58791920805d408" + }, + "reference_identity": { + "exe_sha256": "7b10531dccc7cd614ae559f36f1ef518e0c96335637431b4646354823b2804d0", + "files_manifest_sha256": "e459adf2f12adb6a1b7f55e66a9da1c22794185e66e848057d21e0c60d669203" + }, + "provider": { + "evidence_id": "ev_1958f096bb4e6fe83d95cadf88cd600433cd9f39ec5172e577cbde3a1e8bc21b", + "name": "Frida", + "version": null, + "confidence": "observed", + "subject": null, + "environment": null, + "captured_state": "running", + "messages_truncated": false, + "cleanup_error": null, + "limitations": [ + "Artifact identity is unavailable for this observation.", + "The target operating system and architecture were not reported by this observation." + ] + }, + "backend_calls": [ + { + "function": "winpty_open", + "success": true, + "size": null + }, + { + "function": "winpty_conin_name", + "success": true, + "size": null + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 91, + 23 + ] + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 52, + 12 + ] + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 60, + 12 + ] + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 91, + 23 + ] + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 60, + 12 + ] + } + ], + "probe_error": { + "count": 1, + "kind": "shell-handle-argument-type" + }, + "profile_check": { + "only_synthetic_session": true, + "session_count": 1 + }, + "outer_cleanup": { + "job_accounting": { + "active": 0, + "total": 14, + "terminated": 0 + }, + "deliberate_termination_requested": true, + "termination_counter_is_not_natural_exit_proof": true + }, + "raw_files": { + "run.json": { + "bytes": 614, + "sha256": "4008e44a44e3d601afae3fb6d08e77f5e88715281ba4d01eb49bac54bc4ecc23" + }, + "probe.js": { + "bytes": 23964, + "sha256": "9ec842a01202da3e4a25207a3aa368074b2662443052612d120fd6a8add3f4df" + }, + "probe-result.json": { + "bytes": 378, + "sha256": "d33a9b0c3348921efeeee60187254405066026aa1af20ef60931fd67fdc1c4f1" + }, + "profile-check.json": { + "bytes": 52, + "sha256": "5e522a64e98197722ccd084639b1ce50258b238e03be2f016e81c8af023b5ee1" + }, + "cleanup.json": { + "bytes": 43, + "sha256": "b77999aca40acf28442897d9e5eea89029418b73111973255ec0d654bba760c8" + }, + "evidence.json": { + "bytes": 101735, + "sha256": "99e68d373210e3dc735d2b434e0db3f5dd88317531ba191c82ecd7cee847d978" + }, + "stderr.txt": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "files.json": { + "bytes": 637666, + "sha256": "a25c87cba935294d5bfd3bbc76c650d31a8473809564d798ad5a889e4aea00e8" + } + }, + "synthetic_artifacts": { + "candidate-input.bin": { + "bytes": 115, + "sha256": "4bd689a84f1eb7336afb3b607dec760d117caef3d83f3e8e1b6b1f83d70b4b68" + }, + "candidate-insert-log.txt": { + "bytes": 58, + "sha256": "3d07108bcc44f0831b31530265fac711c1d1e69194aa9309897e4440c26de65a" + }, + "candidate-resize-log.txt": { + "bytes": 5, + "sha256": "2d3db728e657a0e1ab99b23acb6b2d08c586c4eaba6e65a66ab65e7fb47693b7" + }, + "candidate-startup-log.txt": { + "bytes": 6, + "sha256": "3dfa3fb239f56c778a1e9b33eb31328349edd155a95806dac4378904e88527e5" + }, + "candidate-tui.txt": { + "bytes": 17, + "sha256": "d9d3b8d10b660a808ece2b2c46b3767713ba4e74631c56b376b492eadf511dec" + }, + "candidate-vim.vim": { + "bytes": 334, + "sha256": "386d475e5297169cf7fcc425dcc0f6b0174c237ff86be03564b2d505c5d79797" + } + }, + "limitations": [ + "Qt/Frida hooks perturb scheduling; reference geometry and event-loop timing differ from TermForge.", + "The reference uses its observed WinPTY backend; there is no ConPTY flags24 equivalence.", + "Input is Qt synthetic key delivery, not physical input.", + "Original runtime files are pinned but actual Vim loaded-module paths are not observed.", + "WinPTY input-pipe WriteFile calls are observed only after matching its named pipe; asynchronous completions may be incomplete.", + "Whole WindTerm process is deliberately reclaimed after observation; only the shell exit handle may prove shell natural exit.", + "No full57 regression, repeatability or presentation/performance acceptance." + ], + "full_vim_contract_verified": false, + "presented_done": null, + "coverage": { + "typed_original_launch": true, + "ready_and_new": true, + "insert_marker": true, + "vim_resize_60x12": true, + "exact_input_115_bytes": true, + "exact_event_file": true, + "exact_saved_file": true, + "restored_main_prompt": true, + "original_native_size_gate_passed": false, + "cpr_ran": false, + "normal_shell_exit_observed": false + }, + "prelaunch_geometry_calibration": [ + { + "pixels": [ + 1360, + 860 + ], + "size": [ + 91, + 23 + ] + }, + { + "pixels": [ + 895, + 563 + ], + "size": [ + 52, + 12 + ] + }, + { + "pixels": [ + 990, + 563 + ], + "size": [ + 60, + 12 + ] + } + ], + "target_pixels": [ + 990, + 563 + ], + "input_capture": { + "named_pipe_matched": true, + "write_records": 0, + "zero_records_is_not_zero_input": true, + "actual_vim_input_log_exact": true, + "expected_input_sha256": "4bd689a84f1eb7336afb3b607dec760d117caef3d83f3e8e1b6b1f83d70b4b68" + }, + "runtime_files_sha256": { + "msys-2.0.dll": "3096d2ba9be20e90be1399edd391bac65d84bc387f5a419b502c9b326081930f", + "msys-iconv-2.dll": "9cbf5613b946be7bad403ac0d7277efbd514a35faa644c6a0d6e7f6cc0b40780", + "msys-intl-8.dll": "23d30f4bcbc0a258cf5ecfe29e707f9b05d51c32d5b16a910f1012b889136c12", + "msys-ncursesw6.dll": "73ff8bc8b1f515e57b185e57d25d9ad29067057ff0819a8e588677c65ca61629", + "vim.exe": "2e0fda63a89171adfc46c9417d5105cc39ed778cc69a890b83a4eabc34e7646a" + } + }, + { + "id": "native", + "declared_maximum_runs": 1, + "actual_runs": 1, + "source_commit_recorded_in_plan": "b60cd65b9fa6af724279780faa8d78847eb5cef0", + "rea_duration_seconds": 30, + "scenario_timeout_ms": 25000, + "status": "failed", + "stage": 52, + "scenario_elapsed_ms_diagnostic_only": 25049, + "scenario_error": "Error: scenario timeout", + "script_sha256": "6fdf5b858f28053425b91db6120650b6fecfb04501865c9bd347c585451d36a0", + "template_sha256": "50372e7df493445fec62ed9a93b37725f2bc5e1805173c8126e9b15d4d2513eb", + "fixture_sha256": "e3712da5d12d088868de039835041d634dbefe6714077292ad9d97b484913939", + "probe_files_sha256": { + "native_size.py": "e3712da5d12d088868de039835041d634dbefe6714077292ad9d97b484913939", + "launch.py": "1fe09af15a7f21eae90e2750e9ddd8fb6660ac6a50dc3029f3f96b4336b6f390", + "launcher.patch": "b8248a3db99e6bf9e0c57f2e2bfaf955f0d79eb13c66113b75c2df6341b5ee47", + "driver.js": "4ba8d4a737e1b07785028189bf1e7c375e08e049bef9e358d920a3e7277a609c", + "qt_r1_text.js": "50372e7df493445fec62ed9a93b37725f2bc5e1805173c8126e9b15d4d2513eb" + }, + "source_files_sha256": { + "research/ui/r1_launch.py": "54fb41872c6abcc48242a0938044184854b016785cc13659c66b1bf404da0d8a", + "research/ui/launch.py": "6970e0d4f2fe5e7ec4827df7aa1026cd0e74aeb828cdc9b7a0b42b3c887eb4e6", + "research/ui/qt_r1_text.js": "f5820d413fdd72c13dffcefbf4d0ade615abfe15754c6b0b52e1e098814eea6f", + "experiments/shell/size_client.cpp": "cb11661bec9551053eec0dbb474bce2ac899a06ee2e50830a370af4816df39f4", + "experiments/shell/query_client.cpp": "10d982efc87fa6a832fb674a43b515e2d993dcf8b40bcfa845aae5a2e7ae0545" + }, + "helper_exe_sha256": { + "shell_size_client.exe": "a7a45db0976dd1e157871b6a9b50b1362ceb8cb8ea604470e58791920805d408", + "shell_query_client.exe": "691b440e9c500c76c1c09c448aafbe2316793bf341ffe69bbc2bf70e41be64cc" + }, + "reference_identity": { + "exe_sha256": "7b10531dccc7cd614ae559f36f1ef518e0c96335637431b4646354823b2804d0", + "files_manifest_sha256": "e459adf2f12adb6a1b7f55e66a9da1c22794185e66e848057d21e0c60d669203" + }, + "provider": { + "evidence_id": "ev_a30c2cddfec137471e5583ee699123e5472cfca1e56d70c4191e92355c7a175a", + "name": "Frida", + "version": null, + "confidence": "observed", + "subject": null, + "environment": null, + "captured_state": "running", + "messages_truncated": false, + "cleanup_error": null, + "limitations": [ + "Artifact identity is unavailable for this observation.", + "The target operating system and architecture were not reported by this observation." + ] + }, + "backend_calls": [ + { + "function": "winpty_open", + "success": true, + "size": null + }, + { + "function": "winpty_spawn", + "success": true, + "size": null + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 91, + 23 + ] + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 60, + 12 + ] + } + ], + "probe_error": { + "count": 0, + "kind": null + }, + "profile_check": { + "only_synthetic_session": true, + "session_count": 1 + }, + "outer_cleanup": { + "job_accounting": { + "active": 0, + "total": 15, + "terminated": 0 + }, + "deliberate_termination_requested": true, + "termination_counter_is_not_natural_exit_proof": true + }, + "raw_files": { + "run.json": { + "bytes": 615, + "sha256": "11ffb4a721570976ddfee849b6bfa144035cc0b07bbdae772d33c922ddeac4c3" + }, + "probe.js": { + "bytes": 20813, + "sha256": "6fdf5b858f28053425b91db6120650b6fecfb04501865c9bd347c585451d36a0" + }, + "probe-result.json": { + "bytes": 413, + "sha256": "ad10920cb07300b7ee2d1eaac0722a44718f3c1573803a063b09596e3f627c14" + }, + "profile-check.json": { + "bytes": 52, + "sha256": "5e522a64e98197722ccd084639b1ce50258b238e03be2f016e81c8af023b5ee1" + }, + "cleanup.json": { + "bytes": 43, + "sha256": "61cfd944477da214d7cdeb0ea35df03f50b15c61527b13979bbc78ee05c1b3a6" + }, + "evidence.json": { + "bytes": 36505, + "sha256": "55001f84f47c90b633300697747a7b5ac16dc51a8ea9e943d538f9bd9ca44f33" + }, + "stderr.txt": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "files.json": { + "bytes": 637666, + "sha256": "a25c87cba935294d5bfd3bbc76c650d31a8473809564d798ad5a889e4aea00e8" + } + }, + "synthetic_artifacts": { + "candidate-replies.bin": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "native-size.json": { + "bytes": 127, + "sha256": "665c0ee3dd9ecb263e8773262c403cf64bacfd909ace63c8c70216519a7e06db" + }, + "native_size.py": { + "bytes": 1386, + "sha256": "e3712da5d12d088868de039835041d634dbefe6714077292ad9d97b484913939" + } + }, + "limitations": [ + "No Vim in this independent sample; never combine it with the prior sample as one full scenario.", + "Qt/Frida scheduling and synthetic input; not physical input or performance.", + "Original dwSize60x12 assertion remains unchanged even if viewport is60x12.", + "The earlier shell-handle hook passed a Boolean where Frida required an integer; this sample corrects only that probe argument.", + "No input-pipe WriteFile tracking; prior unmatched writes are not a zero-input claim.", + "CPR origin may be the native console rather than WindTerm itself; this sample does not trace the producer.", + "Outer WindTerm cleanup deliberately terminates its owned process tree; only recorded shell exit can be natural." + ], + "full_vim_contract_verified": false, + "presented_done": null, + "native": { + "buffer": [ + 60, + 3000 + ], + "window": [ + 0, + 0, + 59, + 11 + ], + "viewport": [ + 60, + 12 + ], + "cursor": [ + 0, + 9 + ], + "attributes": 7, + "maximum": [ + 60, + 172 + ] + }, + "size_helper": "TF_SIZE_60x3000", + "original_buffer_60x12_matches": false, + "cpr": { + "response_bytes": 0, + "observed": false, + "producer": null, + "query_exit_code": null, + "shell_exit_command_sent": false + } + }, + { + "id": "mode", + "declared_maximum_runs": 1, + "actual_runs": 1, + "source_commit_recorded_in_plan": "b60cd65b9fa6af724279780faa8d78847eb5cef0", + "rea_duration_seconds": 30, + "scenario_timeout_ms": 25000, + "status": "observed-mode-variant", + "stage": 6, + "scenario_elapsed_ms_diagnostic_only": 2072, + "scenario_error": null, + "script_sha256": "d4d7eb7e8cddc0f247ab5fdd6699c172d10828d38bf0de7c0e349335c33c008a", + "template_sha256": "3eaf2aaa122bc95424e84316e8b2c0f010122a750d6ddcdd0d1fb2a1d9167d50", + "fixture_sha256": "4c2022640afe72e8811c80beadb580fa7237e0710373666b7399735078931e80", + "probe_files_sha256": { + "launch.py": "f173292c0407d2032173dd40ef8e250cd1fee268ab8adc9f3c89ca17b342d92d", + "launcher.patch": "f94ebb59f80b43d75b60a11457da110685be325c394fc20e92d189d0932672a3", + "cpr_mode.py": "4c2022640afe72e8811c80beadb580fa7237e0710373666b7399735078931e80", + "driver.js": "34bb3f4ded92d2bc254cf232e92a17c0f2c89c539037939759706915ddcca240", + "stages.js": "599d0fa733e680551752a359f0b1721d9b0251b9cca9e3171f6d7e99555a0bb1", + "qt_r1_text.js": "3eaf2aaa122bc95424e84316e8b2c0f010122a750d6ddcdd0d1fb2a1d9167d50" + }, + "source_files_sha256": {}, + "helper_exe_sha256": { + "shell_query_client.exe": "691b440e9c500c76c1c09c448aafbe2316793bf341ffe69bbc2bf70e41be64cc", + "shell_size_client.exe": "a7a45db0976dd1e157871b6a9b50b1362ceb8cb8ea604470e58791920805d408" + }, + "reference_identity": { + "exe_sha256": "7b10531dccc7cd614ae559f36f1ef518e0c96335637431b4646354823b2804d0", + "files_manifest_sha256": "e459adf2f12adb6a1b7f55e66a9da1c22794185e66e848057d21e0c60d669203" + }, + "provider": { + "evidence_id": "ev_bd0edb379354ad528be42fae8d14ff68867cd44937736efc85d25ce6d9814369", + "name": "Frida", + "version": null, + "confidence": "observed", + "subject": null, + "environment": null, + "captured_state": "running", + "messages_truncated": false, + "cleanup_error": null, + "limitations": [ + "Artifact identity is unavailable for this observation.", + "The target operating system and architecture were not reported by this observation." + ] + }, + "backend_calls": [ + { + "function": "winpty_open", + "success": true, + "size": null + }, + { + "function": "winpty_spawn", + "success": true, + "size": null + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 91, + 23 + ] + }, + { + "function": "winpty_set_size", + "success": true, + "size": [ + 60, + 12 + ] + } + ], + "probe_error": { + "count": 0, + "kind": null + }, + "profile_check": { + "only_synthetic_session": true, + "session_count": 1 + }, + "outer_cleanup": { + "job_accounting": { + "active": 0, + "total": 10, + "terminated": 0 + }, + "deliberate_termination_requested": true, + "termination_counter_is_not_natural_exit_proof": true + }, + "raw_files": { + "run.json": { + "bytes": 615, + "sha256": "237437dbba6364c627abe4070ee6ace480899e30ffa1e4bd4af70ad7e2846703" + }, + "probe.js": { + "bytes": 20385, + "sha256": "d4d7eb7e8cddc0f247ab5fdd6699c172d10828d38bf0de7c0e349335c33c008a" + }, + "probe-result.json": { + "bytes": 599, + "sha256": "0403786252a7645516ce01828290c2da87fe24c783aaa364e7fd5442eda5c55c" + }, + "profile-check.json": { + "bytes": 52, + "sha256": "5e522a64e98197722ccd084639b1ce50258b238e03be2f016e81c8af023b5ee1" + }, + "cleanup.json": { + "bytes": 43, + "sha256": "4eb92b3fbbccaaafadac2890d56ca14e7f057cc9be16207dd90f81ec823c5ef6" + }, + "evidence.json": { + "bytes": 51939, + "sha256": "01686e0703da3a1d0fb4183a702e76b03bd15f352e44ede465c3d4c81489d4af" + }, + "stderr.txt": { + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "files.json": { + "bytes": 637666, + "sha256": "a25c87cba935294d5bfd3bbc76c650d31a8473809564d798ad5a889e4aea00e8" + } + }, + "synthetic_artifacts": { + "candidate-replies.bin": { + "bytes": 6, + "sha256": "492cbb9f988cb4c7cd28d78fa972aff059026fcca9efb775699dda04999ceea4" + }, + "cpr-mode.json": { + "bytes": 383, + "sha256": "0d5c4d3c47895a73217abac0330a895fb479bfb29dc4130880c6e204c460e6ca" + }, + "cpr_mode.py": { + "bytes": 1975, + "sha256": "4c2022640afe72e8811c80beadb580fa7237e0710373666b7399735078931e80" + } + }, + "limitations": [ + "The added mode-setting wrapper is a different fixture configuration, not a pass of the original unmodified entry.", + "No input flush, no external application/runtime changes, no product/test source change.", + "This is one new sample, not a controlled same-process replay of the earlier failure.", + "CPR producer is not traced; native console may answer rather than WindTerm.", + "Parent supervision bounds a possible blocking ReadConsoleW beyond the original client WaitForSingleObject; it is not a product deadline change.", + "No Vim or native-size acceptance in this sample; do not combine runs as one complete workflow.", + "Qt/Frida synthetic input and deliberate outer cleanup; no performance or presentation claim." + ], + "full_vim_contract_verified": false, + "presented_done": null, + "mode_observation": { + "output_mode_before": 3, + "input_mode_before": 503, + "requested_output_mode": 7, + "query_client_unchanged": true, + "query_supervision_seconds": 7, + "timed_out": false, + "exit_code": 0, + "output_mode_active": 7, + "input_mode_after_query": 512, + "output_restore_ok": true, + "input_restore_ok": true, + "output_mode_restored": 3, + "input_mode_restored": 503 + }, + "cpr": { + "response_bytes": 6, + "response_hex": "1b5b373b3152", + "producer": null, + "query_exit_code": 0 + }, + "natural_shell_exit_code": 37, + "original_unmodified_entry_passed": false + } + ], + "all_owned_jobs_empty_after_cleanup": true, + "same_run_complete_vim_size_cpr_exit": false, + "termforge_tests_changed": false, + "runtime_patch_adopted": false, + "product_backend_selected": false, + "original_fixed_runtime_official_ctest_latest": { + "passed": 56, + "total": 57, + "seconds": 402.66, + "internal_skips": 8, + "rerun_in_this_batch": false + }, + "performance_acceptance": false, + "presented_done": null +} From 00da4692e24cd90aac775709ddbd3c5b1f2b814d Mon Sep 17 00:00:00 2001 From: JavaZeroo <71128095+JavaZeroo@users.noreply.github.com> Date: Sat, 31 Oct 2026 10:43:07 +0800 Subject: [PATCH 2/2] =?UTF-8?q?docs(research):=20=E4=B8=80=E5=B9=B6?= =?UTF-8?q?=E6=91=98=E5=8F=96=20#165=20=E7=9A=84=20Qt=20IME=20=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #165 的实现已被 #205/#230 取代(main 上已有组合/提交/取消),但两份计划文档在 main 缺失: qt-ime-integration-plan.md、qt-ime-native-observation-plan.md。 仍为纯新增,不修改 main 已有文件。 --- docs/research/qt-ime-integration-plan.md | 50 ++++++++++++++++ .../qt-ime-native-observation-plan.md | 60 +++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 docs/research/qt-ime-integration-plan.md create mode 100644 docs/research/qt-ime-native-observation-plan.md diff --git a/docs/research/qt-ime-integration-plan.md b/docs/research/qt-ime-integration-plan.md new file mode 100644 index 00000000..bdc745cb --- /dev/null +++ b/docs/research/qt-ime-integration-plan.md @@ -0,0 +1,50 @@ +# Qt IME 基础接线计划(#155) + +状态:**初始计划历史记录**,描述源761bb2c执行前的test-only准备;下文“当前”仅指当时基线,不是最新实现状态。实施/实测由 [#155](https://github.com/JavaZeroo/termforge/issues/155)维护,后续原生计划见 [N1](qt-ime-native-observation-plan.md)。依据 [ADR-0008](../adr/0008-cpp-core-qt-widgets.md) 和 [R2 合同](../milestones/R2-local-terminal.md)。初始基点 main a0aed8a643a0a99b09e16c7836e5a4e3ad26daed 已包含 #147 的 Qt 键盘文本;旧原件保持不变。本页不宣告最新能力或验收通过。 + +## 已知事实与首个反例 + +当前 TerminalWidget 明确关闭 WA_InputMethodEnabled,没有重写 inputMethodEvent / inputMethodQuery。Qt 6.10 的 [QWidget 合同](https://doc.qt.io/qt-6.10/qwidget.html#inputMethodEvent)说明默认事件处理拒绝输入法事件;这只是源码和接口依据,**尚不是本切片的运行观察**。 + +test-only 源 58ad294aea7d01388e83720b70e467b4b55d82f5 注册 qt_ime_input,使用现有固定 ConPTY、run_smoke.py OwnedJob/GO 和独立 shell_input_client: + +1. 等接收端独立输出 TF_KEY_READY,以公开 Qt 按键发送 L。 +2. 发送带 TextFormat / Cursor 属性的公开 preedit zhongwen,保存前后实际自有 QImage、哈希、差异像素数和 query 值;这些诊断尚不作为首个失败前置。 +3. 发送一次 IME commit:中文、NFD、U+1F600、字面 U+0008 和 U+0000,再用公开按键发送 R。 +4. 接收端通过自己的 ReadConsoleW / Windows UTF-8 转换导出文件。完整字面预期为 **4ce4b8ade6968765cc81f09f9880080052(17B)**;preedit 不属于该字节流。只由 Session 发送该夹具的 EOT,待接收端自然结束及回收后,先保存观察再断言全文。 +5. 当前实现会丢失 commit 是**待验证假设**;不提前把 WA_InputMethodEnabled 或图像检查失败写成“已取得独立接收红例”。 + +未延长原合同:阶段 gate5秒,既有监督器 communicate25秒、超时后5秒等待,CTest35秒;后续 drain 和 finally 清理各有原实现边界。它们不组成已证明的整程硬时限,更不是性能门槛。原件写入独立自有目录;图像仅属本项目控件离屏绘制,不是原版资源或物理呈现。 + +## 最小实现形状 + +只修改 Qt widget 的输入法与绘制接线,必要时复用 Model 的错误呈现通道增加单一 reject_input(reason) 领域入口。Parser/Screen 不保存 preedit,也不把终端屏幕当成可编辑输入行;ConPTY 和有界 InputQueue 的职责不变,不引入新组件、字体或测试钩子。 + +- **字面提交。** preedit 和 commit 各沿旧 ImeContext 的256个UTF-16单位工程上限,先严格校验完整 UTF-16,再按字面 UTF-8 编码。复用旧 ime.hpp 的 WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS) 语义,不调用会将 Backspace 转成 DEL 的 KeyboardEncoder.character。整个结果只调用一次有界 send,拒绝不发送前缀。该上限和非法输入策略属于当前 TermForge 工程政策,尚无 WindTerm 对照。 +- **独立状态。** IME 不把自己的代理项交给 #147 的键盘编码器;无效或被拒绝的 IME 事件不改变已经持有的键盘半个标量。焦点/隐藏/关闭/不可用目标继续清理两种状态。旧 Win32 接线也是将 ImeMessage.committed 独立发送,不能因共享入口而套键盘控制码政策。 +- **组合显示。** widget 只持有有界 preedit、格式范围和组合光标。按 [QInputMethodEvent 合同](https://doc.qt.io/qt-6.10/qinputmethodevent.html)至少实现 TextFormat 的前景/背景/下划线及 Cursor 位置/可见性/颜色,用 Qt 自有文字布局绘制,裁剪于终端可用区域。错误 UTF-16、越界/冲突属性明确拒绝并取消,不静默截断。 +- **周边编辑请求。** 当前没有应用输入行/重转换合同,replacementStart或replacementLength非零明确拒绝,不向 child 注入猜测的退格/光标序列。周边文本和选择 query 不暴露屏幕正文作可编辑文本;计划返回空内容/索引或不支持值,并在验证中保留实际返回。 +- **候选锚点。** ImEnabled 按实际目标可用性、焦点和可见性回答。ImCursorRectangle / ImAnchorRectangle、ImFont 使用当前 widget 逻辑坐标、模型光标和实际文字布局;output、resize、字体/DPR及焦点变化调用 [QInputMethod.update](https://doc.qt.io/qt-6.10/qinputmethod.html#update) 通知。Qt 逻辑矩形与 native 物理矩形分列,不将原 Win32 的12×26网格认定为 Qt 已等价。 +- **取消与重入。** empty preedit 更新可取消组合但不发送文本。焦点转移先清理本地状态并依赖 Qt 自动重置输入上下文;若因本目标错误主动 reset,只在它仍是当前焦点时调用并先清理本地状态,不取消新目标或操作共享 OS 输入服务。 +- **一次性发送。** 每次 commit 事件只在本 handler 发送一次,不再交给默认编辑处理或同时从 key text 重发。相同内容的另一次输入事件仍是新输入,不能用“内容去重”吞掉用户有意重复;真实 Windows 提交/字符事件是否重复由 native 证据核对。组合期间普通按键文本不能绕过 IME 进入 child。 + +Qt 接口要求是实现依据,未知 WindTerm 行为仍未知;没有因为文档或测试通过而批准重要行为差异。 + +## 后续红绿与停止条件 + +按 tracer bullet 接续,不先写完整假想测试矩阵: + +| 顺序 | 公开动作和独立预期 | +|---|---| +| 首片 | 先编译/冻结/执行上面的17B接收红例一次,再实现字面提交使其通过;源、EXE、SDK/ConPTY/CRT、stdin GO、stdout/stderr、receiver和Job独立保留 | +| 组合 | 实际 QImage 的 preedit/格式/光标与取消后恢复,原始接收端证明 preedit 未发送;普通文本属性和 Cursor 显隐用可判读颜色/区域反例 | +| 拒绝 | 256/257单位、非法 UTF-16、replacement、无目标和实际发送失败;不通过改变等待或加生产队列钩子取绿。现容量 guard 的独立测试与 Qt 真实拒绝现场分列 | +| 上下文 | focus/hide/两标签/关闭/自然结束/失败目标;前后接收文件、查询、组合图像和回收均可核对,不根据空文件声称自然退出 | +| 几何 | output、resize、字体变化后的公开 query 和自有渲染;记录逻辑矩形/网格关系,不冒充跨DPI或实际上屏 | +| 完整配置 | 合入最新 main,复验原Qt键盘/cmd/resize,冻结源码/依赖/运行目录,运行一次必要完整矩阵并分开Qt和其他诊断、实际skip与旧失败 | +| 原生 | 源码和包/计划审查后,仅root在隔离Win11固定Microsoft拼音执行真实输入→Qt组合/结果→child字节,记录候选/焦点/清理;未满足则#155不能按完整原生条件结项 | + +本次准备阶段只提交源码和计划,**编译/Qt执行/full/native均为0**。先等 root 的互斥负载租约;不改个人输入布局/桌面/剪贴板,不直接接管 Qt HWND 的 IMM,不终止 ctfmon 等共享服务,不执行未审核的 guest 写入。后续实际失败保留,不自动重试取绿或扩大原期限。 + +完整 Find/rename、同次八会话、CF、真实跨DPI、所有字素/glyph/fallback、物理呈现及性能仍由 #30/#31/R2 接续;只观察到合成 Qt 事件不能关闭真实固定拼音条件。 + diff --git a/docs/research/qt-ime-native-observation-plan.md b/docs/research/qt-ime-native-observation-plan.md new file mode 100644 index 00000000..719dced7 --- /dev/null +++ b/docs/research/qt-ime-native-observation-plan.md @@ -0,0 +1,60 @@ +# Qt IME 原生观察协议(#155) + +本页维护观察协议、资源上限与执行前置;各次尝试的源码/运行包、失败和验收状态由 [#155](https://github.com/JavaZeroo/termforge/issues/155)维护,N1等名称仅标识历史尝试。本文不构成执行授权或原生通过结论,也不改变 [R2](../milestones/R2-local-terminal.md)、原版优先规则或性能容差。公开事件与原生观察各自留证;每次由 root 在源码、运行包和协议经审查后冻结独立租约,独占隔离 Windows 11 VM 执行。 + +## 固定入口与来源 + +入口为 qt_ime_input_test.exe --native-ime-observer 。从既有 stdin 精确 GO+LF、OwnedJob 检查之后创建 QApplication;native分支立即进入观察器,不调用默认测试数组的 QInputMethodEvent/QKeyEvent/QTest 注入函数。它只接受 windows 平台插件,拒绝 offscreen。显式 --offscreen-ime-observer-lifecycle 复用同一个观察器、实际SessionTabs/ConPTY与两个接收端,仅检查正常/取消应用生命周期,绝不替代原生IME。两个独立lifecycle CTest各保留25秒supervisor、5秒共享清理及35秒CTest上限;旧focused的25/35秒和20秒controlled-child默认保持不变。 + +N1 使用现有正式 SessionTabs 预建两个目标,各有自己的固定ConPTY和独立 ReadConsoleW 接收端,分别保存 native-a.bin / native-b.bin。child由同一EXE的 --ime-output-child 分支运行;先检查已有Job归属,不创建Qt GUI或接管输入法。输入文字与控制事件独立,停止前须由root确认预期原始字节已落盘。 + +N1 源码配置单独固定为 observer45秒、controlled child50秒;建议root自有监督55秒、清理5秒、交互请求70秒。上述均是本次原生诊断的待审核执行预算,不是性能门槛或旧合同的延长。root须把实际外层脚本、期限、stdin、源/EXE/完整运行时清单/ZIP哈希与唯一输出路径绑定后才启动。最大实际原生运行 **1次**,失败/超时不自动重试、不替换原件。编译失败、尚未启动和真正执行失败分别计数。 + +运行目录的manifest列40个非清单文件;加runtime-manifest.json为41文件包,以实际清单为准,不为了凑“40”删文件。Qt6.10.3、固定ConPTY1.25.260930003、app-local CRT14.51保持已有身份。最终完整回归须在原生观察及必要修正之后,对最终源码只执行必要一次。 + +## root执行前预检 + +- 只使用自有VM/交互session及新建空结果子目录,不改个人Windows的显示、布局、输入法或剪贴板;不终止ctfmon等共享服务,不直接接管Qt HWND的IMM context。连接、账户、PID/HWND与原始图像仅私有保存。 +- 在实际目标输入线程核对HKL、语言0804、启用的Microsoft拼音provider/profile及系统版本。既有 HostedPinyin 的身份为 provider 81D4E9C9-1D3B-41BC-9E6C-4B40BF79E35E / profile FA550B04-5AD7-411F-A5AC-CA038EC515D7;只能复用身份和已有OS驱动方法,不能伪造hosted环境绕过旧runner守卫。实际VM身份和版本仍须独立记录。 +- 原生窗口标题固定 TermForge Qt IME native observer。ready.json 仅在两个child控制ready与两个模型真正读到TF_QT_IME_READY后产生;包含Qt平台、locale、实际焦点、DPR、逻辑tab矩形和查询。locale/HKL本身不证明转换模式或IME已工作。 +- root保留根句柄,核对它属于精确自有Job并在GO前验证;锁定实际窗口PID/线程/前台/焦点后才SendInput。外部驱动仅使用虚拟键或scan code(含实际鼠标tab点击),**禁止KEYEVENTF_UNICODE、WM_IME_COMPOSITION伪造或手造Qt输入事件**。这是synthetic OS input,不是物理键盘。 +- native-state.json每次50ms观察器poll在实际Qt GUI线程只读采样GetActiveProfile(GUID_TFCAT_TIP_KEYBOARD)、该线程HKL、Win32焦点及两个Qt目标状态。记录HRESULT、profile type/language/CLSID/GUID/flags和tick;S_FALSE/失败/过期采样不作已激活证明。只借用并Release该线程实际焦点窗口的HIMC读取open/conversion/requested candidate form,不创建、关联、更换或设置context。固定拼音、语言0804、active flag、实际焦点/当前tab、HKL及中文open/native转换状态须同时匹配,缺项fail-before-input,不用controller profile或已安装名单补齐。 +- 只读诊断在测试EXE新增Windows SDK imm32/ole32/uuid链接,正式产品入口依赖不变。CoInitializeEx仅S_OK/S_FALSE持有并配对释放自身引用;RPC_E_CHANGED_MODE沿当前已初始化apartment查询但不CoUninitialize Qt的引用;不创建/激活ThreadMgr或ActivateProfile。 +- root驱动脚本、实际provider选择与Chinese转换状态、每步发出的Win32输入和观测条件先冻结。本文件不猜测未知provider状态,也不把“看起来启用了中文”当成已取证。 + +## 预声明动作与判据 + +| 动作 | 原生证据和预期 | +|---|---| +| A组合开始,尚不提交 | 实际OS虚拟键进入固定拼音,a-events.json取得非空preedit和TextFormat/Cursor;A/B raw保持空。root必须关联真实候选窗口、当前目标/焦点和Qt锚点,不能由自有QImage冒充候选窗或实际上屏 | +| OS Escape取消 | Qt组合清理、候选/焦点变化可追溯;未提交文字不出现在raw中。至少保留一个只组合/取消而自然结束的B空文件,区别于强制取消进程 | +| A用固定拼音输入nihao并确认 | 观察真实provider产生的commit UTF16,独立A接收精确“你好”UTF8 e4bda0e5a5bd一次;B不增加。两个相同的独立commit仍应各自发送一次,不按内容或时间去重 | +| A再组合,真实Ctrl-C与随后Escape | 记录ShortcutOverride/KeyPress/KeyRelease的真实键、modifiers、scan/virtual key以及IME取消/结果。若Ctrl-C确实到达widget,沿已有中断合同只产生一次03;若provider未交给widget,只记录实际链与未知,不虚构已测试03或原版一致。Escape作为单独取消动作保留,不据它回填Ctrl-C效果 | +| 实际tab切换到B/返回A | 使用ready中逻辑tab矩形和实际DPI/Win32客户区变换定位,核对真实Qt焦点与每目标事件/raw,不把未完成组合串入另一个目标。B可仅做组合+Escape而不commit,以保留取消空文件 | +| 组合期间输出/窗口尺寸/字体 | 可用output.request触发独立child输出、root对自有native窗口的实际resize、font.request触发明确诊断字体API动作;记录Qt query/公开cursor信号、实际候选窗与焦点。字体API不是OS按键,不声称原Win32的12×26或目标glyph已等价 | +| 收尾 | root先核对已声明raw及事件,再创建finish.request;两个child通过独立控制事件结束,SessionTabs实际完成回调结束Qt事件循环,再生成complete.json。正常要求natural exit0、EOF、inner Job0和cleanup verified;root核对根正常退出、外Job0、空请求队列及实际回收。cancel.request只代表诊断取消,close/cleanup完成后CLI1/observer_complete=false;45秒绝对期限在finish后仍有效,期限先于证据I/O检查,达到后退出失败,不无界等callback。强杀/超时/缺失证据不能称通过 | + +候选窗口可能属于OS输入服务,不以“PID等于产品进程”代替关联;root应保存实际类/owner或UIA关系、provider身份、焦点和几何变化。Qt逻辑矩形与Win32物理矩形分列,不自行设未经确认的像素容差或从相同DPI推导不同DPI验收。无法可靠识别候选或真实输入来源就保留缺口,不用模拟补齐。 + +## 观察器能证明和不能证明的事 + +a-events.json / b-events.json 是widget处理前的公开事件观察,不把进入时accepted标志解释为处理成功;commit由独立raw校验。spontaneous标志不是OS来源证明,需外部Win32驱动与native分支无合成输入的来源链。queued-frame记录input sequence、后续事件数和coalesced_input_updates,合并帧不冒充该事件精确瞬时状态。 + +原始IME文本最多256单位、属性最多258、每目标事件最多128;超过会显式标evidence_gap并失败收尾,不截断后称完整。自有QImage只表示产品控件渲染,presented_done保持null。observer_complete/CLI0仅表示观察器与两接收端正常完成;native_os_ime_acceptance保持null,真正IME功能结论由root对来源、candidate/焦点、事件、原始接收及回收独立审核。 + +留证失败仍立即停止,不重试或忽略。首个失败的 `evidence_write_failure` 保留 target、JSON open/write/commit 或 PNG save 操作、仅本地 basename、Qt FileError/errorString、JSON 预期/实际 bytes 或 PNG writer error;后续成功或失败不覆盖首错。JSON 必须一次写入完整序列化长度。最终 state 在两个目标 snapshot 后读取该上下文,成功写出的 about-to-quit/complete 带首错;complete 文件自身写失败时,结构化 stdout 保留同一上下文并返回失败,不能声称该文件存在。错误字符串删除私有目录,不公开原生截图或路径。 + +`qt_ime_evidence_write` 为独立 console seam:实际 QSaveFile 正常/open/无 DELETE sharing 的目标句柄造成的 commit 失败,受控短写/-1 不重试不 commit,PNG writer 失败,以及 sticky/final JSON 传播。它不创建 GUI、receiver、IME 输入或 VM。共享锁用例只证明该失败能被诊断;PS reader 的共享模式与原生观察失败之间的因果仍是待验证 hypothesis,不据本地合成反例认定。 + +native 每次 50ms poll 成功采样并保存原 legacy state 后,另发布 `observer/snapshots/state-00000001.json` 起的不可变 packet,不维护 mutable latest。固定六字段为 schema=`termforge-qt-ime-snapshot-v1`、generation(文件名整数)、process_id(实际进程)、state、a_events_json、b_events_json;后两项是当次实际 Observation 事件对象的 UTF-8 JSON 文本,不声称等于异步 legacy 文件。所有原 JSON/PNG、ready/complete、输入与 45s 期限保留,正式核心和 IME 控件不改。 + +每代目标必须新:QSaveFile 先提交到独占临时目录,再以同卷非覆盖 move 发布最终名,失败即停止且首错 sticky,不重试、不覆盖既有代。工程上限为单 packet 1MiB、1024 代、累计 16MiB(按最终编码 bytes);越界显式失败,不截断或改判通过。这些是诊断资源上限,不是产品性能/验收门槛。console focused 覆盖持上一代 R/W/Delete reader 时发布新代、原字节不变、六字段及文本精确绑定、既有目标与三个边界拒绝和首错保留;原四项 focused CTest 继续执行。 + +app.exec 返回后的原终态采样另发布一次 final packet,同样计入上述预算;complete 的 `immutable_snapshot_generation` 精确绑定该代,reader 在退出后用该代复核原事件 oracle。若已有 queued-frame 回调未结束或原事件证据无效,不补捕获/输入或延长期限,final packet 拒绝发布;发布失败令 generation 为 null、整体 CLI 失败并保留首错,不能用旧 last-timer 代冒充完整终态。原 complete/raw 条件继续保留。 + +当前258属性guard由256单位最多256个非空格式范围+Cursor+Selection推导;零length格式不占格式存储,过量no-op提前拒绝。它与256单位/非法UTF16拒绝都是TermForge工程边界,非WindTerm已对照。Ctrl-C显式分支不被composition普通文本guard吞掉,provider实际取消政策仍待这次原生观察。 + +只读API语义依据:[GetActiveProfile](https://learn.microsoft.com/en-us/windows/win32/api/msctf/nf-msctf-itfinputprocessorprofilemgr-getactiveprofile)、[TF_INPUTPROCESSORPROFILE](https://learn.microsoft.com/en-us/windows/win32/api/msctf/ns-msctf-tf_inputprocessorprofile)、[CoInitializeEx](https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-coinitializeex)、[CoUninitialize](https://learn.microsoft.com/en-us/windows/win32/api/combaseapi/nf-combaseapi-couninitialize)。API查询不等于真实候选可见或物理键盘来源,仍须外部链证据。 + +若本次发现OS时序/焦点/commit差异,先保留失败、定位并明确修正,再对新最终源做完整回归;不得先full再默认为不同源码仍已验收。原版未知、完整Find/rename/同次八会话、CF、所有字素/glyph/fallback、真实跨DPI和性能仍由#30/#31/R2接续。 +