diff --git a/.gitattributes b/.gitattributes index 96560ee7..a2e8de8c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7,4 +7,5 @@ research/ui/*.js text eol=lf research/ui/reference_sources/*.py.txt text eol=lf *.ps1 text eol=crlf third_party/conpty/LICENSE text eol=lf +third_party/msvc_runtime/NOTICE.txt text eol=lf experiments/core/fixtures/*.bin binary diff --git a/.github/workflows/qt-cpp.yml b/.github/workflows/qt-cpp.yml index 1030a2e6..97e813f7 100644 --- a/.github/workflows/qt-cpp.yml +++ b/.github/workflows/qt-cpp.yml @@ -20,8 +20,8 @@ jobs: with: python-version: '3.12' - name: Verify preparation failure contracts - run: python -m unittest tools.test_prepare_qt_build -v - - name: Prepare manifest-pinned Qt qtbase and Microsoft ConPTY + run: python -m unittest tools.test_prepare_qt_build tools.test_prepare_msvc_runtime tools.test_msvc_runtime -v + - name: Prepare manifest-pinned Qt qtbase, Microsoft ConPTY and CRT run: python -m tools.prepare_qt_build - name: Preserve path-free dependency preparation identity if: always() @@ -39,9 +39,26 @@ jobs: -DTERMFORGE_BUILD_CANDIDATE_ADAPTER=OFF ` "-DPython3_EXECUTABLE=$((Get-Command python).Source)" ` "-DQt6_DIR=$dependencyRoot/qt/lib/cmake/Qt6" ` - "-DTERMFORGE_CONPTY_BACKEND_DIR=$dependencyRoot/conpty" + "-DTERMFORGE_CONPTY_BACKEND_DIR=$dependencyRoot/conpty" ` + "-DTERMFORGE_MSVC_RUNTIME_DIR=$dependencyRoot/crt" - name: Build Qt product and independent smoke run: cmake --build build/qt-cpp --config Release --target termforge_qt_shell qt_cpp_shell_smoke --parallel 2 + - name: Record complete path-free runtime manifests + run: | + python tools/msvc_runtime.py manifest --directory build/qt-cpp/qt-bin/Release --executable termforge_qt_shell.exe + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + python tools/msvc_runtime.py manifest --directory build/qt-cpp/qt-smoke-bin/Release --executable qt_cpp_shell_smoke.exe + if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } + - name: Preserve runtime file identities without binaries + if: always() + uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 + with: + name: qt-cpp-runtime-manifests + retention-days: 14 + if-no-files-found: warn + path: | + build/qt-cpp/qt-bin/Release/runtime-manifest.json + build/qt-cpp/qt-smoke-bin/Release/runtime-manifest.json - name: Run Qt offscreen smoke in its owned Job run: ctest --test-dir build/qt-cpp -C Release -R '^qt_cpp_shell$' --no-tests=error --verbose # Keep this configuration independent from the default/system-backend and diff --git a/CMakeLists.txt b/CMakeLists.txt index ce9dae4d..1fe65efe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -343,8 +343,10 @@ if(TERMFORGE_BUILD_QT_SHELL) if(NOT WIN32) message(FATAL_ERROR "The first Qt local-shell migration entry requires Windows x64") endif() + find_package(Python3 3.10 REQUIRED COMPONENTS Interpreter) find_package(Qt6 6.10.3 EXACT REQUIRED COMPONENTS Widgets) include(cmake/ConptyBackend.cmake) + include(cmake/MsvcRuntime.cmake) get_target_property(qt_core_dll Qt6::Core IMPORTED_LOCATION_RELEASE) get_filename_component(qt_binary_directory "${qt_core_dll}" DIRECTORY) find_program(qt_deploy_tool windeployqt HINTS "${qt_binary_directory}" NO_DEFAULT_PATH REQUIRED) @@ -355,6 +357,7 @@ if(TERMFORGE_BUILD_QT_SHELL) _WIN32_WINNT=0x0A00 QT_NO_KEYWORDS) termforge_warnings(${target}) termforge_use_bundled_conpty(${target}) + termforge_use_msvc_runtime(${target}) add_custom_target(${target}_font_bundle COMMAND "${CMAKE_COMMAND}" -E make_directory "$/assets/fonts" COMMAND "${CMAKE_COMMAND}" -E copy_if_different diff --git a/cmake/MsvcRuntime.cmake b/cmake/MsvcRuntime.cmake new file mode 100644 index 00000000..2afaf84c --- /dev/null +++ b/cmake/MsvcRuntime.cmake @@ -0,0 +1,54 @@ +# App-local deployment of the manifest-pinned Microsoft desktop CRT. +include_guard(GLOBAL) + +function(termforge_use_msvc_runtime target) + if(NOT WIN32 OR NOT MSVC OR NOT CMAKE_SIZEOF_VOID_P EQUAL 8) + message(FATAL_ERROR "The fixed Microsoft CRT requires an MSVC Windows x64 build") + endif() + if(NOT TARGET ${target}) + message(FATAL_ERROR "CRT target does not exist: ${target}") + endif() + if(NOT TERMFORGE_MSVC_RUNTIME_DIR OR NOT IS_ABSOLUTE "${TERMFORGE_MSVC_RUNTIME_DIR}") + message(FATAL_ERROR "TERMFORGE_MSVC_RUNTIME_DIR must name the absolute fixed-runtime directory") + endif() + + # The compiler's 19.x self-version is not the installed VC Tools 14.x + # directory version. Use the selected toolset metadata, then the actual + # selected compiler path when CMake leaves its default toolset unset. + if(CMAKE_VS_PLATFORM_TOOLSET_VERSION) + set(toolset_version "${CMAKE_VS_PLATFORM_TOOLSET_VERSION}") + else() + file(TO_CMAKE_PATH "${CMAKE_CXX_COMPILER}" compiler_path) + if(compiler_path MATCHES "/VC/Tools/MSVC/(14[.][0-9]+[.][0-9]+)/bin/[^/]+/[^/]+/cl[.]exe$") + set(toolset_version "${CMAKE_MATCH_1}") + else() + message(FATAL_ERROR "Cannot identify the selected VC Tools directory version") + endif() + endif() + if(NOT toolset_version MATCHES "^14[.][0-9]+[.][0-9]+$") + message(FATAL_ERROR "The selected VC Tools version must have the form 14.minor.build") + endif() + + get_filename_component(repository "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/.." ABSOLUTE) + set(deploy_tool "${repository}/tools/msvc_runtime.py") + set(manifest "${repository}/third_party/msvc_runtime/manifest.json") + execute_process( + COMMAND "${Python3_EXECUTABLE}" "${deploy_tool}" verify + --source "${TERMFORGE_MSVC_RUNTIME_DIR}" --toolset-version "${toolset_version}" + RESULT_VARIABLE runtime_verification + OUTPUT_QUIET ERROR_QUIET TIMEOUT 30) + if(NOT runtime_verification STREQUAL "0") + message(FATAL_ERROR "Fixed CRT input identity or VC Tools compatibility validation failed") + endif() + + # Always validate and repair app-local files, including builds that do not + # relink. No installer or network operation belongs in this build step. + add_custom_target(${target}_msvc_runtime + COMMAND "${Python3_EXECUTABLE}" "${deploy_tool}" deploy + --source "${TERMFORGE_MSVC_RUNTIME_DIR}" + --destination "$" + --toolset-version "${toolset_version}" + DEPENDS "${deploy_tool}" "${manifest}" + VERBATIM) + add_dependencies(${target} ${target}_msvc_runtime) +endfunction() diff --git a/docs/EVIDENCE.md b/docs/EVIDENCE.md index 84f74250..3997983e 100644 --- a/docs/EVIDENCE.md +++ b/docs/EVIDENCE.md @@ -10,6 +10,7 @@ |---|---| | 自主 C++ 双缓冲存储与文档 epoch 基础 | [固定结果](../experiments/core/results/2026-10-29-buffer-state-r2/README.md)、[验证身份](../experiments/core/results/2026-10-29-buffer-state-r2/validation.json):拥有状态、共享 ID、隐藏帧 resize 回滚与跨缓冲句柄失效;Qt/candidate 关闭配置的完整 50 项及 12 条内部 skip 分列。未接 private CSI,不是原版模式、Qt 产品路线或完整 #27 验收 | | Qt cmd 标签与退出前回收 | [固定结果](../experiments/shell/results/2026-10-28-qt-tabs/README.md)、[验证身份](../experiments/shell/results/2026-10-28-qt-tabs/validation.json):双 cmd 隔离、失败页、关闭与四个实际事件循环边界;Qt 1 项和其他 49 项诊断及内部跳过分列,旧中断轮不拼接 | +| Qt app-local 固定微软 CRT 与隔离 Windows 加载 | [固定结果](../experiments/shell/results/2026-10-29-qt-crt-deploy/README.md)、[完整运行时与验证身份](../experiments/shell/results/2026-10-29-qt-crt-deploy/validation.json):原 `cf8` 52 文件首次加载失败与仅追加 CRT/原许可后的成功分列;新源码构建、原生窗口、有限 cmd/关闭、offscreen 及 Job 清理独立记录。不是完整发行、跨 DPI/IME 或物理呈现验收 | | Qt 正式入口的独立 hosted 构建 | [固定结果](../experiments/shell/results/2026-10-28-qt-cpp-ci/README.md)、[验证身份](../experiments/shell/results/2026-10-28-qt-cpp-ci/validation.json):固定 SDK、VS 2026 hosted 与真实 cmd 的 offscreen / OwnedJob 检查;原依赖换行和 generator 失败保留。没有原生上屏、完整部署哈希或产品包验收 | | 自主 C++ + Qt Widgets + 固定微软 ConPTY 正式目标 | [ADR-0007](adr/0007-bundled-microsoft-conpty.md) / [ADR-0008](adr/0008-cpp-core-qt-widgets.md) 记录用户确认;新组合的实现与验证另行留证,不引用旧默认或 Alacritty 通过结果代替 | | 既有默认/Alpha:自主 C++ + 系统 ConPTY + Win32 | R1 限定总验收和有限 VT/Unicode 子集;与当前 Qt/固定后端目标组合分列 | diff --git a/docs/FEATURES.md b/docs/FEATURES.md index ce6fa6b1..39dd0633 100644 --- a/docs/FEATURES.md +++ b/docs/FEATURES.md @@ -27,6 +27,8 @@ 自主 C++ 核心的 [#130 双缓冲存储基础](../experiments/core/results/2026-10-29-buffer-state-r2/README.md)已在独立模块边界实现拥有状态、交换激活、共享行 ID、双帧物理 resize 与文档 epoch 隔离,旧位置、选择、搜索及 viewport 不会在切换返回后复活。该基础尚未接入 private CSI;1049 的样式、重复进入清空及历史文档策略与完整 [#27](https://github.com/JavaZeroo/termforge/issues/27)另行验收,不表示产品已支持备用屏或 Qt 交互已迁移。 +Qt 构建显式准备并部署[固定微软 CRT 14.51.36247.0](../third_party/msvc_runtime/README.md),不安装到 System32。隔离 Windows 的[限定加载与 cmd 验证](../experiments/shell/results/2026-10-29-qt-crt-deploy/README.md)保留原包失败、原 52 文件不变且仅追加 CRT/原许可后的成功,以及新源码包的独立验证;它不解除完整产品打包、Qt/第三方分发审计、实际 DPI/IME 或物理呈现的验收缺口。 + 官方参考的基础文字行为已按 [R1-01 合同](research/windterm-r1-text-contract.md)完成两组各两轮的自动取证;这为独立实现提供行为依据,产品能力仍按下表分别验收。 | 能力 | 当前状态与边界 | 目标差距 | 路标 | diff --git a/experiments/shell/results/2026-10-29-qt-crt-deploy/README.md b/experiments/shell/results/2026-10-29-qt-crt-deploy/README.md new file mode 100644 index 00000000..22ed5258 --- /dev/null +++ b/experiments/shell/results/2026-10-29-qt-crt-deploy/README.md @@ -0,0 +1,33 @@ +# Qt / 固定 CRT 的隔离 Windows 运行验证 + +本结果只覆盖 [#138](https://github.com/JavaZeroo/termforge/issues/138) 的 Windows x64 app-local 运行库依赖,父项为 [#35](https://github.com/JavaZeroo/termforge/issues/35)。微软 CRT 固定为 **14.51.36247.0**,来源、逐层提取身份、十个 DLL 和原许可见 [依赖说明](../../../../third_party/msvc_runtime/README.md)。完整记录为 [validation.json](validation.json),不包含远程地址、VM UUID、账户、XML、口令、截图、DLL 或原始日志。 + +## 原包失败与纯 CRT 修订 + +第一次实际 Qt 加载前,隔离 Windows 11 Enterprise Evaluation 26H2 x64(26300.9457,2 vCPU / 6 GiB)的五个 System32 `vcruntime/msvcp140` 文件不存在,VC++ runtime uninstall 产品列表为空。guest 已安装 QGA/QXL/SPICE 测试控制工具,不能称为未经工具安装的裸系统。 + +原始输入固定在 `cf8b40b2e44f9e475cfc42b5008d46c670ff1756`:产品 25 个运行时文件、smoke 27 个;原 ZIP SHA-256 为 `967a98e24b1ff56165d46064096ad90804660b8eb99dfac59bfd3dc6b1012a37`。首次在真实交互 Session 2 创建产品进程,resume 前确认继承自有请求 Job,产品立即以 **`0xC0000135`** 退出,没有可见窗口。观测脚本 exit 0 只表示成功取得结果;不表示产品通过,也未确定 loader 最先缺少的单个 DLL 名称。 + +修订目录保持原 52 个文件逐一哈希不变,只在每个运行时目录添加十个固定 CRT DLL、微软原许可及 NOTICE。修订产品在 `windows` 平台下 5 秒后仍运行,WinAPI 枚举到一个可见 Qt 窗口,向自有窗口发送 WM_CLOSE 后产品 exit 0,无强制终止。System32 五个文件前后仍不存在,VC++ 安装记录前后仍为空。[完整文件映射](causal-runtime-files.json)同时列出原 52 个文件和新增 24 个文件,避免用重编译后的成功解释这组纯 CRT 因果比较。 + +同一 `cf8` 修订 smoke 使用 `QT_QPA_PLATFORM=windows`,测试进程通过有界 GO gate 后调用实际 cmd:独立预期 `750`、双标签 `750/427`、关闭后 `778`、失败页后的 `147`、退出 37/41、错误文字、正文墨迹、输入隔离和真实 `app.exec()` 的关闭前回收均通过,smoke exit 0。它是进程内 Qt 测试输入与图像检查,没有物理键盘或用户呈现端点验收。 + +三个请求的 Job 分别记录 active/total/after-active 为 **0/5/0、0/7/0、0/28/0**,根句柄已回收、清理验证通过,没有超时或请求强制终止。观测脚本、产品原生退出、限定 smoke、Job 清理和 `presented_done=null` 在 JSON 中分列。 + +## 新源码的独立集成 + +随后从干净提交 **`c5a47adc42db592c4c1966062cbd06b12f0f88ed`** 使用全新离线准备目录和全新 CMake 构建目录验证接入,与上面的 `cf8` 因果对照分开。Qt 6.10.3 官方 MSVC 2022 x64 qtbase 的 4,358 文件树哈希仍为 `a35ab6fe76b62e4d9bd6d3c6b0d476c63583070cea5c9118ef5bb02042ffe266`;固定 ConPTY 为 1.25.260930003。实际构建工具目录为 VC Tools **14.42.34433**,编译器自报 19.42.34433.0,CMake 3.31.0 / Python 3.12.10 / Release x64,candidate adapter 关闭。 + +自动准备、配置、两个 Qt 显式 target 构建及 offscreen CTest **1/1** 通过,外层 Job active 0 / total 26 / terminated 0。配置缺少显式 CRT 目录时 exit 1;每次构建重新校验并部署 CRT,单独删除自有输出中的一个已核对 DLL 后,无须 EXE 重链接即可恢复相同哈希。实际工具集无法识别或新于固定 CRT 时拒绝构建,不从编译器 `19.x` 推测 `14.x`,不下载或回退系统 CRT。 + +[产品清单](product-runtime.json)包含 37 个文件,[smoke 清单](smoke-runtime.json)包含 39 个文件;清单排除自身。独立传入 guest 的包另外保留两份清单,因此冻结核对 78 个文件。新源码包也独立完成 Session 2 的原生窗口加载/WM_CLOSE 以及 `windows` 插件下的有限 cmd smoke,退出和清理检查同样分列;最终对原包、纯 CRT 修订包和新源码包全部重新核对哈希。 + +新增 CRT 的 21 项公共 CLI 子进程测试覆盖离线准备、CAB 切片/内部成员、DLL/许可/NOTICE、工具集上限、部署失败前不改变目标、完整清单和重复生成稳定性,另保留 6 项既有 main CLI 边界测试。普通与 `-O` 均 **27/27** 通过,其中五项在真实 NTFS junction 上检查包外文件、输入/输出根及祖先路径均被拒绝。内部审查的两组红例保留了旧实现错误接受 junction、甚至枚举到包外合成文件的事实;修复后在解引用或下降目录前拒绝 reparse point。 + +修订包准备脚本另有一次独立失败:PowerShell 5.1 的 `PSObject.Properties.Count` 不产生所需数组计数,在复制和启动前退出;改用 `@(...).Count` 后才生成修订包。最早新增 CLI 测试也曾因工具文件尚不存在而出现 setup error,该记录不冒充行为红例;之后的显式 `unimplemented` 行为红例与通过记录独立保存。私有原始记录的大小、哈希和请求脚本原文/实际 staged 字节身份均在 validation 中保留。 + +## 来源与限制 + +[原包 PE imports](original-pe-imports.json)核对 42 个 PE 文件;新源码的 [产品 imports](integrated-product-pe-imports.json)和 [smoke imports](integrated-smoke-pe-imports.json)分别核对 30/32 个 PE 文件。EXE、Qt Core/Gui/Widgets 的 MSVCP/VCRUNTIME 依赖与固定 CRT 文件集对应;固定 ConPTY 文件对的直接依赖另列。这里只记录静态导入,不把它当作动态行为或全部许可的证明。 + +此项不交付完整 R2 发行版、Qt/第三方完整分发审计、实际跨 DPI 产品工作流、IME/Find/rename、全应用矩阵或性能等价。没有数值性能验收,测试耗时不作性能指标;`presented_done` 保持 null。CI 与双轴审查的实时结果由 PR 维护,不回填为本地已验证事实。 diff --git a/experiments/shell/results/2026-10-29-qt-crt-deploy/causal-runtime-files.json b/experiments/shell/results/2026-10-29-qt-crt-deploy/causal-runtime-files.json new file mode 100644 index 00000000..94630c65 --- /dev/null +++ b/experiments/shell/results/2026-10-29-qt-crt-deploy/causal-runtime-files.json @@ -0,0 +1,392 @@ +{ + "schema": "termforge-crt-causal-runtime-v1", + "source_commit": "cf8b40b2e44f9e475cfc42b5008d46c670ff1756", + "original_zip_bytes": 45771225, + "original_zip_sha256": "967a98e24b1ff56165d46064096ad90804660b8eb99dfac59bfd3dc6b1012a37", + "original_files": [ + { + "path": "product_runtime/assets/fonts/OFL.txt", + "bytes": 4395, + "sha256": "50ab8dd54680d3473f649c9db86fece88434d097c7834475c1c72d2f8c429215" + }, + { + "path": "product_runtime/assets/fonts/README.md", + "bytes": 3091, + "sha256": "760a714ad011733e0b93f3c25298190ff5fa493a9e40ad38d347922a355d538f" + }, + { + "path": "product_runtime/assets/fonts/RobotoMono-Regular.ttf", + "bytes": 125748, + "sha256": "af0bff7599c3df3831755c16e39b3c496df74b8c8d8a1161b14dc8461be17cb4" + }, + { + "path": "product_runtime/conpty-backend/conpty.dll", + "bytes": 119608, + "sha256": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a" + }, + { + "path": "product_runtime/conpty-backend/LICENSE", + "bytes": 1095, + "sha256": "ad0cf28f3381ca9bb0bf101d127402d44c17bfa0991e1a00bff7ae6679e9dada" + }, + { + "path": "product_runtime/conpty-backend/manifest.json", + "bytes": 1467, + "sha256": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439" + }, + { + "path": "product_runtime/conpty-backend/OpenConsole.exe", + "bytes": 1089376, + "sha256": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + { + "path": "product_runtime/D3Dcompiler_47.dll", + "bytes": 4669440, + "sha256": "0f89c19165fd83a05e39bea601a06007e6a8814d55e2adf913902926231f843e" + }, + { + "path": "product_runtime/dxcompiler.dll", + "bytes": 14019128, + "sha256": "2bc16dc5ec85315f89e2f10a482d46dde94a65d6b2d7077f4c49c77e10222acc" + }, + { + "path": "product_runtime/dxil.dll", + "bytes": 1502760, + "sha256": "0e90c12c1c6aa1e09d025322a815f9dd80da7d1e331f1df585c7fcbbf44b40d3" + }, + { + "path": "product_runtime/generic/qtuiotouchplugin.dll", + "bytes": 102712, + "sha256": "69498d05870aa583c31159f9350e3d8a598b895f6525de7b6fa382395ad27b9d" + }, + { + "path": "product_runtime/icuuc.dll", + "bytes": 36864, + "sha256": "59d134ddc15ae0594f0a328979f8201662fc82634ddb7c537b156e7cf871f5eb" + }, + { + "path": "product_runtime/imageformats/qgif.dll", + "bytes": 47928, + "sha256": "ded464ef782f41862f391bc5b21c54d58f6aee670fc9f10a2d909ae5b0ba09a7" + }, + { + "path": "product_runtime/imageformats/qico.dll", + "bytes": 45880, + "sha256": "0c2abdf95d778bfed9863b8be817dc6cffe2dacdd1a85b2117b4b4ccb1a08e66" + }, + { + "path": "product_runtime/imageformats/qjpeg.dll", + "bytes": 577848, + "sha256": "cd965015cce4638361d7bc01193d92a041a227d46d0759ec25d2a1a8608a6b40" + }, + { + "path": "product_runtime/networkinformation/qnetworklistmanager.dll", + "bytes": 70968, + "sha256": "4bc26d5b613c507634fd10f07fe031fcbd4f02157d23b9eb1407de4dd6da8278" + }, + { + "path": "product_runtime/platforms/qwindows.dll", + "bytes": 997688, + "sha256": "cafd5bfdef3d89d176ee26725c8d4759fd6cb007645b645a4cbf6386364a3f36" + }, + { + "path": "product_runtime/Qt6Core.dll", + "bytes": 10250040, + "sha256": "b712b4754588e89f855dc0aa087d6304b2fd21b0e0639d1cdeb9cb969bd5fb72" + }, + { + "path": "product_runtime/Qt6Gui.dll", + "bytes": 9514296, + "sha256": "03ba47a2025036a04f5548bce242788ac21edf551e78d5b42e1b87beb799904f" + }, + { + "path": "product_runtime/Qt6Network.dll", + "bytes": 1773880, + "sha256": "203f8ddf83c015ce56752ebe7a1986472be7dbb95c20e13ac8e1d741d9ac93d1" + }, + { + "path": "product_runtime/Qt6Widgets.dll", + "bytes": 6577464, + "sha256": "61ddd0316a731b8dbabaf2924cd0d47b756461e37329b4f535902cf450416127" + }, + { + "path": "product_runtime/styles/qmodernwindowsstyle.dll", + "bytes": 221496, + "sha256": "c279e7a97b21fcd7acdfde88cacb8baa119f563282e09c241acb3edee2bc9bbf" + }, + { + "path": "product_runtime/termforge_qt_shell.exe", + "bytes": 145920, + "sha256": "0bfe1f63a6e12bba8bc4a092b897ef0c341825d0be408ac818a09c7d6033f7bc" + }, + { + "path": "product_runtime/tls/qcertonlybackend.dll", + "bytes": 103224, + "sha256": "99d00b37bb2835c539366e4018a58e0ddad21e1c648a3f44f56335a0c1d34765" + }, + { + "path": "product_runtime/tls/qschannelbackend.dll", + "bytes": 262968, + "sha256": "b7035c3689b93f55b48112c3e85cf4b8550fefde3f7a044df2784c29330e6940" + }, + { + "path": "smoke_runtime/assets/fonts/OFL.txt", + "bytes": 4395, + "sha256": "50ab8dd54680d3473f649c9db86fece88434d097c7834475c1c72d2f8c429215" + }, + { + "path": "smoke_runtime/assets/fonts/README.md", + "bytes": 3091, + "sha256": "760a714ad011733e0b93f3c25298190ff5fa493a9e40ad38d347922a355d538f" + }, + { + "path": "smoke_runtime/assets/fonts/RobotoMono-Regular.ttf", + "bytes": 125748, + "sha256": "af0bff7599c3df3831755c16e39b3c496df74b8c8d8a1161b14dc8461be17cb4" + }, + { + "path": "smoke_runtime/conpty-backend/conpty.dll", + "bytes": 119608, + "sha256": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a" + }, + { + "path": "smoke_runtime/conpty-backend/LICENSE", + "bytes": 1095, + "sha256": "ad0cf28f3381ca9bb0bf101d127402d44c17bfa0991e1a00bff7ae6679e9dada" + }, + { + "path": "smoke_runtime/conpty-backend/manifest.json", + "bytes": 1467, + "sha256": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439" + }, + { + "path": "smoke_runtime/conpty-backend/OpenConsole.exe", + "bytes": 1089376, + "sha256": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + { + "path": "smoke_runtime/D3Dcompiler_47.dll", + "bytes": 4669440, + "sha256": "0f89c19165fd83a05e39bea601a06007e6a8814d55e2adf913902926231f843e" + }, + { + "path": "smoke_runtime/dxcompiler.dll", + "bytes": 14019128, + "sha256": "2bc16dc5ec85315f89e2f10a482d46dde94a65d6b2d7077f4c49c77e10222acc" + }, + { + "path": "smoke_runtime/dxil.dll", + "bytes": 1502760, + "sha256": "0e90c12c1c6aa1e09d025322a815f9dd80da7d1e331f1df585c7fcbbf44b40d3" + }, + { + "path": "smoke_runtime/generic/qtuiotouchplugin.dll", + "bytes": 102712, + "sha256": "69498d05870aa583c31159f9350e3d8a598b895f6525de7b6fa382395ad27b9d" + }, + { + "path": "smoke_runtime/icuuc.dll", + "bytes": 36864, + "sha256": "59d134ddc15ae0594f0a328979f8201662fc82634ddb7c537b156e7cf871f5eb" + }, + { + "path": "smoke_runtime/imageformats/qgif.dll", + "bytes": 47928, + "sha256": "ded464ef782f41862f391bc5b21c54d58f6aee670fc9f10a2d909ae5b0ba09a7" + }, + { + "path": "smoke_runtime/imageformats/qico.dll", + "bytes": 45880, + "sha256": "0c2abdf95d778bfed9863b8be817dc6cffe2dacdd1a85b2117b4b4ccb1a08e66" + }, + { + "path": "smoke_runtime/imageformats/qjpeg.dll", + "bytes": 577848, + "sha256": "cd965015cce4638361d7bc01193d92a041a227d46d0759ec25d2a1a8608a6b40" + }, + { + "path": "smoke_runtime/networkinformation/qnetworklistmanager.dll", + "bytes": 70968, + "sha256": "4bc26d5b613c507634fd10f07fe031fcbd4f02157d23b9eb1407de4dd6da8278" + }, + { + "path": "smoke_runtime/platforms/qoffscreen.dll", + "bytes": 113976, + "sha256": "a35f87f597b91121cfc0ef39dcb0a5e7ad2876850fbfaf6377edf80eaa067bfd" + }, + { + "path": "smoke_runtime/platforms/qwindows.dll", + "bytes": 997688, + "sha256": "cafd5bfdef3d89d176ee26725c8d4759fd6cb007645b645a4cbf6386364a3f36" + }, + { + "path": "smoke_runtime/Qt6Core.dll", + "bytes": 10250040, + "sha256": "b712b4754588e89f855dc0aa087d6304b2fd21b0e0639d1cdeb9cb969bd5fb72" + }, + { + "path": "smoke_runtime/Qt6Gui.dll", + "bytes": 9514296, + "sha256": "03ba47a2025036a04f5548bce242788ac21edf551e78d5b42e1b87beb799904f" + }, + { + "path": "smoke_runtime/Qt6Network.dll", + "bytes": 1773880, + "sha256": "203f8ddf83c015ce56752ebe7a1986472be7dbb95c20e13ac8e1d741d9ac93d1" + }, + { + "path": "smoke_runtime/Qt6Test.dll", + "bytes": 380216, + "sha256": "9d0473552b332aa378c60da05af97d741fcce06b0fc4dd68e36d885015eb5187" + }, + { + "path": "smoke_runtime/Qt6Widgets.dll", + "bytes": 6577464, + "sha256": "61ddd0316a731b8dbabaf2924cd0d47b756461e37329b4f535902cf450416127" + }, + { + "path": "smoke_runtime/qt_cpp_shell_smoke.exe", + "bytes": 202240, + "sha256": "80201411b9bb8b0dc073c133d8039b7468f87098fc36df3051d7ea5044a781eb" + }, + { + "path": "smoke_runtime/styles/qmodernwindowsstyle.dll", + "bytes": 221496, + "sha256": "c279e7a97b21fcd7acdfde88cacb8baa119f563282e09c241acb3edee2bc9bbf" + }, + { + "path": "smoke_runtime/tls/qcertonlybackend.dll", + "bytes": 103224, + "sha256": "99d00b37bb2835c539366e4018a58e0ddad21e1c648a3f44f56335a0c1d34765" + }, + { + "path": "smoke_runtime/tls/qschannelbackend.dll", + "bytes": 262968, + "sha256": "b7035c3689b93f55b48112c3e85cf4b8550fefde3f7a044df2784c29330e6940" + } + ], + "appended_files": [ + { + "path": "product_runtime/LICENSE-MICROSOFT-VC-REDIST.docx", + "bytes": 39553, + "sha256": "08651651a7602fc7c0e2763de0fde1ff9f868df2780597cd1775ee9d6441c783" + }, + { + "path": "product_runtime/NOTICE.txt", + "bytes": 563, + "sha256": "510781c94971ea19adae55d2c42207d942b0646deee29d5c401f189cc25d415f" + }, + { + "path": "product_runtime/concrt140.dll", + "bytes": 374200, + "sha256": "54716f0738af891f283d213b5c8d11b25896bb8ee3097d301eae718560cf974e" + }, + { + "path": "product_runtime/msvcp140.dll", + "bytes": 643512, + "sha256": "7c26614e1d733892c2deac7e245ce115504b1d80592dd0a01b08e3e5a55f89ca" + }, + { + "path": "product_runtime/msvcp140_1.dll", + "bytes": 35768, + "sha256": "206c931bf90fdad8816de3b5e2ef80b2bcaa9406c89ecc05fe6fddffe251e982" + }, + { + "path": "product_runtime/msvcp140_2.dll", + "bytes": 274872, + "sha256": "d50d7883f20d1dc6191768d3746f52dd9cac89c346ffaed5be1f110c2f34a838" + }, + { + "path": "product_runtime/msvcp140_atomic_wait.dll", + "bytes": 57792, + "sha256": "3d0cbfaa1bf3eecf5a3f4491d2960ee803cb994f30292c6adc4a07c498f60e2b" + }, + { + "path": "product_runtime/msvcp140_codecvt_ids.dll", + "bytes": 31160, + "sha256": "8a65c7596ef2e6938731f5a1058e7e40145b6d97967cc649231a076b9a608d78" + }, + { + "path": "product_runtime/vccorlib140.dll", + "bytes": 350648, + "sha256": "09f93d5ff96ae09767f3e1af3cdd43a5a58f2598654fc63089429bb6f9f4737f" + }, + { + "path": "product_runtime/vcruntime140.dll", + "bytes": 178616, + "sha256": "d1f4225df2cd877dbf130d5668a021dce3f94118455ff5ec952061c30afc9ce7" + }, + { + "path": "product_runtime/vcruntime140_1.dll", + "bytes": 50112, + "sha256": "a7146c08f89fe5b04541ab507cdb59ff7b44534d4ba3c668a426c6450a03434e" + }, + { + "path": "product_runtime/vcruntime140_threads.dll", + "bytes": 38840, + "sha256": "40f39e8cee5f5a531b4010e18b807e8fe265b908dc58f959ecb7ebc6ea6cb11a" + }, + { + "path": "smoke_runtime/LICENSE-MICROSOFT-VC-REDIST.docx", + "bytes": 39553, + "sha256": "08651651a7602fc7c0e2763de0fde1ff9f868df2780597cd1775ee9d6441c783" + }, + { + "path": "smoke_runtime/NOTICE.txt", + "bytes": 563, + "sha256": "510781c94971ea19adae55d2c42207d942b0646deee29d5c401f189cc25d415f" + }, + { + "path": "smoke_runtime/concrt140.dll", + "bytes": 374200, + "sha256": "54716f0738af891f283d213b5c8d11b25896bb8ee3097d301eae718560cf974e" + }, + { + "path": "smoke_runtime/msvcp140.dll", + "bytes": 643512, + "sha256": "7c26614e1d733892c2deac7e245ce115504b1d80592dd0a01b08e3e5a55f89ca" + }, + { + "path": "smoke_runtime/msvcp140_1.dll", + "bytes": 35768, + "sha256": "206c931bf90fdad8816de3b5e2ef80b2bcaa9406c89ecc05fe6fddffe251e982" + }, + { + "path": "smoke_runtime/msvcp140_2.dll", + "bytes": 274872, + "sha256": "d50d7883f20d1dc6191768d3746f52dd9cac89c346ffaed5be1f110c2f34a838" + }, + { + "path": "smoke_runtime/msvcp140_atomic_wait.dll", + "bytes": 57792, + "sha256": "3d0cbfaa1bf3eecf5a3f4491d2960ee803cb994f30292c6adc4a07c498f60e2b" + }, + { + "path": "smoke_runtime/msvcp140_codecvt_ids.dll", + "bytes": 31160, + "sha256": "8a65c7596ef2e6938731f5a1058e7e40145b6d97967cc649231a076b9a608d78" + }, + { + "path": "smoke_runtime/vccorlib140.dll", + "bytes": 350648, + "sha256": "09f93d5ff96ae09767f3e1af3cdd43a5a58f2598654fc63089429bb6f9f4737f" + }, + { + "path": "smoke_runtime/vcruntime140.dll", + "bytes": 178616, + "sha256": "d1f4225df2cd877dbf130d5668a021dce3f94118455ff5ec952061c30afc9ce7" + }, + { + "path": "smoke_runtime/vcruntime140_1.dll", + "bytes": 50112, + "sha256": "a7146c08f89fe5b04541ab507cdb59ff7b44534d4ba3c668a426c6450a03434e" + }, + { + "path": "smoke_runtime/vcruntime140_threads.dll", + "bytes": 38840, + "sha256": "40f39e8cee5f5a531b4010e18b807e8fe265b908dc58f959ecb7ebc6ea6cb11a" + } + ], + "original_files_verified_unchanged_in_guest": 52, + "scope": "Complete original 25+27 runtime files, then only ten CRT DLLs, original license and NOTICE per runtime; no original byte changes" +} diff --git a/experiments/shell/results/2026-10-29-qt-crt-deploy/integrated-product-pe-imports.json b/experiments/shell/results/2026-10-29-qt-crt-deploy/integrated-product-pe-imports.json new file mode 100644 index 00000000..e93f65aa --- /dev/null +++ b/experiments/shell/results/2026-10-29-qt-crt-deploy/integrated-product-pe-imports.json @@ -0,0 +1,580 @@ +{ + "schema": "termforge-static-pe-imports-v1", + "scope": "Static import dependencies only; not a runtime or behavior proof", + "files": { + "concrt140.dll": { + "sha256": "54716f0738af891f283d213b5c8d11b25896bb8ee3097d301eae718560cf974e", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "conpty-backend/conpty.dll": { + "sha256": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "imports": [ + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-fibers-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-file-l1-2-2.dll", + "api-ms-win-core-file-l2-1-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-namedpipe-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-psapi-l1-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-core-util-l1-1-0.dll", + "api-ms-win-core-wow64-l1-1-1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "conpty-backend/OpenConsole.exe": { + "sha256": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586", + "imports": [ + "D3DCOMPILER_47.dll", + "DWrite.dll", + "GDI32.dll", + "IMM32.dll", + "OLEAUT32.dll", + "PROPSYS.dll", + "SHELL32.dll", + "USER32.dll", + "USP10.dll", + "WINMM.dll", + "api-ms-win-core-com-l1-1-0.dll", + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-fibers-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-file-l1-2-2.dll", + "api-ms-win-core-file-l2-1-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-heap-obsolete-l1-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-io-l1-1-0.dll", + "api-ms-win-core-largeinteger-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-libraryloader-l1-2-1.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-memory-l1-1-0.dll", + "api-ms-win-core-namedpipe-l1-1-0.dll", + "api-ms-win-core-path-l1-1-0.dll", + "api-ms-win-core-processenvironment-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-1.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-psapi-l1-1-0.dll", + "api-ms-win-core-realtime-l1-1-0.dll", + "api-ms-win-core-registry-l1-1-0.dll", + "api-ms-win-core-registry-l2-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-shlwapi-legacy-l1-1-0.dll", + "api-ms-win-core-sidebyside-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-synch-l1-2-1.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-core-threadpool-l1-2-0.dll", + "api-ms-win-core-util-l1-1-0.dll", + "api-ms-win-core-version-l1-1-0.dll", + "api-ms-win-core-winrt-error-l1-1-0.dll", + "api-ms-win-core-winrt-l1-1-0.dll", + "api-ms-win-core-winrt-string-l1-1-0.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-eventing-provider-l1-1-0.dll", + "api-ms-win-ntuser-sysparams-l1-1-0.dll", + "api-ms-win-shcore-obsolete-l1-1-0.dll", + "api-ms-win-shcore-scaling-l1-1-1.dll", + "api-ms-win-shell-namespace-l1-1-0.dll", + "d2d1.dll", + "d3d11.dll", + "dxgi.dll", + "ext-ms-win-uiacore-l1-1-0.dll", + "ext-ms-win-uiacore-l1-1-1.dll", + "icu.dll", + "ntdll.dll" + ] + }, + "D3Dcompiler_47.dll": { + "sha256": "0f89c19165fd83a05e39bea601a06007e6a8814d55e2adf913902926231f843e", + "imports": [ + "RPCRT4.dll", + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-io-l1-1-0.dll", + "api-ms-win-core-kernel32-legacy-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-memory-l1-1-0.dll", + "api-ms-win-core-processenvironment-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-1.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-registry-l1-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-string-obsolete-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-private-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll", + "api-ms-win-security-cryptoapi-l1-1-0.dll", + "msvcp_win.dll" + ] + }, + "dxcompiler.dll": { + "sha256": "2bc16dc5ec85315f89e2f10a482d46dde94a65d6b2d7077f4c49c77e10222acc", + "imports": [ + "ADVAPI32.dll", + "KERNEL32.dll", + "OLEAUT32.dll", + "ole32.dll" + ] + }, + "dxil.dll": { + "sha256": "0e90c12c1c6aa1e09d025322a815f9dd80da7d1e331f1df585c7fcbbf44b40d3", + "imports": [ + "ADVAPI32.dll", + "KERNEL32.dll", + "ole32.dll" + ] + }, + "generic/qtuiotouchplugin.dll": { + "sha256": "69498d05870aa583c31159f9350e3d8a598b895f6525de7b6fa382395ad27b9d", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "icuuc.dll": { + "sha256": "59d134ddc15ae0594f0a328979f8201662fc82634ddb7c537b156e7cf871f5eb", + "imports": [] + }, + "imageformats/qgif.dll": { + "sha256": "ded464ef782f41862f391bc5b21c54d58f6aee670fc9f10a2d909ae5b0ba09a7", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "imageformats/qico.dll": { + "sha256": "0c2abdf95d778bfed9863b8be817dc6cffe2dacdd1a85b2117b4b4ccb1a08e66", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "imageformats/qjpeg.dll": { + "sha256": "cd965015cce4638361d7bc01193d92a041a227d46d0759ec25d2a1a8608a6b40", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "msvcp140.dll": { + "sha256": "7c26614e1d733892c2deac7e245ce115504b1d80592dd0a01b08e3e5a55f89ca", + "imports": [ + "KERNEL32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-filesystem-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll", + "api-ms-win-crt-utility-l1-1-0.dll" + ] + }, + "msvcp140_1.dll": { + "sha256": "206c931bf90fdad8816de3b5e2ef80b2bcaa9406c89ecc05fe6fddffe251e982", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "msvcp140_2.dll": { + "sha256": "d50d7883f20d1dc6191768d3746f52dd9cac89c346ffaed5be1f110c2f34a838", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "msvcp140_atomic_wait.dll": { + "sha256": "3d0cbfaa1bf3eecf5a3f4491d2960ee803cb994f30292c6adc4a07c498f60e2b", + "imports": [ + "ADVAPI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "msvcp140_codecvt_ids.dll": { + "sha256": "8a65c7596ef2e6938731f5a1058e7e40145b6d97967cc649231a076b9a608d78", + "imports": [ + "KERNEL32.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "networkinformation/qnetworklistmanager.dll": { + "sha256": "4bc26d5b613c507634fd10f07fe031fcbd4f02157d23b9eb1407de4dd6da8278", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "OLEAUT32.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "ole32.dll" + ] + }, + "platforms/qwindows.dll": { + "sha256": "cafd5bfdef3d89d176ee26725c8d4759fd6cb007645b645a4cbf6386364a3f36", + "imports": [ + "ADVAPI32.dll", + "COMDLG32.dll", + "GDI32.dll", + "IMM32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "OLEAUT32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "SETUPAPI.dll", + "SHELL32.dll", + "SHLWAPI.dll", + "UIAutomationCore.DLL", + "USER32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "WINMM.dll", + "WTSAPI32.dll", + "api-ms-win-core-winrt-l1-1-0.dll", + "api-ms-win-core-winrt-string-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-shcore-scaling-l1-1-1.dll", + "d3d9.dll", + "dwmapi.dll", + "ole32.dll" + ] + }, + "Qt6Core.dll": { + "sha256": "b712b4754588e89f855dc0aa087d6304b2fd21b0e0639d1cdeb9cb969bd5fb72", + "imports": [ + "ADVAPI32.dll", + "AUTHZ.dll", + "KERNEL32.dll", + "MPR.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "NETAPI32.dll", + "OLEAUT32.dll", + "SHELL32.dll", + "USER32.dll", + "USERENV.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "VERSION.dll", + "WINMM.dll", + "WS2_32.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-filesystem-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll", + "api-ms-win-crt-utility-l1-1-0.dll", + "icuuc.dll", + "ntdll.dll", + "ole32.dll" + ] + }, + "Qt6Gui.dll": { + "sha256": "03ba47a2025036a04f5548bce242788ac21edf551e78d5b42e1b87beb799904f", + "imports": [ + "DWrite.dll", + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "MSVCP140_2.dll", + "Qt6Core.dll", + "SHELL32.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-utility-l1-1-0.dll", + "d3d11.dll", + "d3d12.dll", + "dxgi.dll", + "ole32.dll" + ] + }, + "Qt6Network.dll": { + "sha256": "203f8ddf83c015ce56752ebe7a1986472be7dbb95c20e13ac8e1d741d9ac93d1", + "imports": [ + "ADVAPI32.dll", + "DNSAPI.dll", + "IPHLPAPI.DLL", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "Qt6Core.dll", + "Secur32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "WINHTTP.dll", + "WS2_32.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "ole32.dll" + ] + }, + "Qt6Widgets.dll": { + "sha256": "61ddd0316a731b8dbabaf2924cd0d47b756461e37329b4f535902cf450416127", + "imports": [ + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "dwmapi.dll" + ] + }, + "styles/qmodernwindowsstyle.dll": { + "sha256": "c279e7a97b21fcd7acdfde88cacb8baa119f563282e09c241acb3edee2bc9bbf", + "imports": [ + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Widgets.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "termforge_qt_shell.exe": { + "sha256": "155a05d1a90b9498ee190b08e4b5d02c54772753a81aab30fa6c8cf6faaf5d41", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Widgets.dll", + "SHELL32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "bcrypt.dll" + ] + }, + "tls/qcertonlybackend.dll": { + "sha256": "99d00b37bb2835c539366e4018a58e0ddad21e1c648a3f44f56335a0c1d34765", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "tls/qschannelbackend.dll": { + "sha256": "b7035c3689b93f55b48112c3e85cf4b8550fefde3f7a044df2784c29330e6940", + "imports": [ + "CRYPT32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "Secur32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "bcrypt.dll", + "ncrypt.dll" + ] + }, + "vccorlib140.dll": { + "sha256": "09f93d5ff96ae09767f3e1af3cdd43a5a58f2598654fc63089429bb6f9f4737f", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "OLEAUT32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-core-winrt-error-l1-1-0.dll", + "api-ms-win-core-winrt-l1-1-0.dll", + "api-ms-win-core-winrt-string-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "ole32.dll" + ] + }, + "vcruntime140.dll": { + "sha256": "d1f4225df2cd877dbf130d5668a021dce3f94118455ff5ec952061c30afc9ce7", + "imports": [ + "KERNEL32.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "vcruntime140_1.dll": { + "sha256": "a7146c08f89fe5b04541ab507cdb59ff7b44534d4ba3c668a426c6450a03434e", + "imports": [ + "KERNEL32.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "vcruntime140_threads.dll": { + "sha256": "40f39e8cee5f5a531b4010e18b807e8fe265b908dc58f959ecb7ebc6ea6cb11a", + "imports": [ + "KERNEL32.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll" + ] + } + } +} diff --git a/experiments/shell/results/2026-10-29-qt-crt-deploy/integrated-smoke-pe-imports.json b/experiments/shell/results/2026-10-29-qt-crt-deploy/integrated-smoke-pe-imports.json new file mode 100644 index 00000000..c078eaed --- /dev/null +++ b/experiments/shell/results/2026-10-29-qt-crt-deploy/integrated-smoke-pe-imports.json @@ -0,0 +1,609 @@ +{ + "schema": "termforge-static-pe-imports-v1", + "scope": "Static import dependencies only; not a runtime or behavior proof", + "files": { + "concrt140.dll": { + "sha256": "54716f0738af891f283d213b5c8d11b25896bb8ee3097d301eae718560cf974e", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "conpty-backend/conpty.dll": { + "sha256": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "imports": [ + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-fibers-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-file-l1-2-2.dll", + "api-ms-win-core-file-l2-1-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-namedpipe-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-psapi-l1-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-core-util-l1-1-0.dll", + "api-ms-win-core-wow64-l1-1-1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "conpty-backend/OpenConsole.exe": { + "sha256": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586", + "imports": [ + "D3DCOMPILER_47.dll", + "DWrite.dll", + "GDI32.dll", + "IMM32.dll", + "OLEAUT32.dll", + "PROPSYS.dll", + "SHELL32.dll", + "USER32.dll", + "USP10.dll", + "WINMM.dll", + "api-ms-win-core-com-l1-1-0.dll", + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-fibers-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-file-l1-2-2.dll", + "api-ms-win-core-file-l2-1-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-heap-obsolete-l1-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-io-l1-1-0.dll", + "api-ms-win-core-largeinteger-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-libraryloader-l1-2-1.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-memory-l1-1-0.dll", + "api-ms-win-core-namedpipe-l1-1-0.dll", + "api-ms-win-core-path-l1-1-0.dll", + "api-ms-win-core-processenvironment-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-1.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-psapi-l1-1-0.dll", + "api-ms-win-core-realtime-l1-1-0.dll", + "api-ms-win-core-registry-l1-1-0.dll", + "api-ms-win-core-registry-l2-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-shlwapi-legacy-l1-1-0.dll", + "api-ms-win-core-sidebyside-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-synch-l1-2-1.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-core-threadpool-l1-2-0.dll", + "api-ms-win-core-util-l1-1-0.dll", + "api-ms-win-core-version-l1-1-0.dll", + "api-ms-win-core-winrt-error-l1-1-0.dll", + "api-ms-win-core-winrt-l1-1-0.dll", + "api-ms-win-core-winrt-string-l1-1-0.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-eventing-provider-l1-1-0.dll", + "api-ms-win-ntuser-sysparams-l1-1-0.dll", + "api-ms-win-shcore-obsolete-l1-1-0.dll", + "api-ms-win-shcore-scaling-l1-1-1.dll", + "api-ms-win-shell-namespace-l1-1-0.dll", + "d2d1.dll", + "d3d11.dll", + "dxgi.dll", + "ext-ms-win-uiacore-l1-1-0.dll", + "ext-ms-win-uiacore-l1-1-1.dll", + "icu.dll", + "ntdll.dll" + ] + }, + "D3Dcompiler_47.dll": { + "sha256": "0f89c19165fd83a05e39bea601a06007e6a8814d55e2adf913902926231f843e", + "imports": [ + "RPCRT4.dll", + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-io-l1-1-0.dll", + "api-ms-win-core-kernel32-legacy-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-memory-l1-1-0.dll", + "api-ms-win-core-processenvironment-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-1.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-registry-l1-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-string-obsolete-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-private-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll", + "api-ms-win-security-cryptoapi-l1-1-0.dll", + "msvcp_win.dll" + ] + }, + "dxcompiler.dll": { + "sha256": "2bc16dc5ec85315f89e2f10a482d46dde94a65d6b2d7077f4c49c77e10222acc", + "imports": [ + "ADVAPI32.dll", + "KERNEL32.dll", + "OLEAUT32.dll", + "ole32.dll" + ] + }, + "dxil.dll": { + "sha256": "0e90c12c1c6aa1e09d025322a815f9dd80da7d1e331f1df585c7fcbbf44b40d3", + "imports": [ + "ADVAPI32.dll", + "KERNEL32.dll", + "ole32.dll" + ] + }, + "generic/qtuiotouchplugin.dll": { + "sha256": "69498d05870aa583c31159f9350e3d8a598b895f6525de7b6fa382395ad27b9d", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "icuuc.dll": { + "sha256": "59d134ddc15ae0594f0a328979f8201662fc82634ddb7c537b156e7cf871f5eb", + "imports": [] + }, + "imageformats/qgif.dll": { + "sha256": "ded464ef782f41862f391bc5b21c54d58f6aee670fc9f10a2d909ae5b0ba09a7", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "imageformats/qico.dll": { + "sha256": "0c2abdf95d778bfed9863b8be817dc6cffe2dacdd1a85b2117b4b4ccb1a08e66", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "imageformats/qjpeg.dll": { + "sha256": "cd965015cce4638361d7bc01193d92a041a227d46d0759ec25d2a1a8608a6b40", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "msvcp140.dll": { + "sha256": "7c26614e1d733892c2deac7e245ce115504b1d80592dd0a01b08e3e5a55f89ca", + "imports": [ + "KERNEL32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-filesystem-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll", + "api-ms-win-crt-utility-l1-1-0.dll" + ] + }, + "msvcp140_1.dll": { + "sha256": "206c931bf90fdad8816de3b5e2ef80b2bcaa9406c89ecc05fe6fddffe251e982", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "msvcp140_2.dll": { + "sha256": "d50d7883f20d1dc6191768d3746f52dd9cac89c346ffaed5be1f110c2f34a838", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "msvcp140_atomic_wait.dll": { + "sha256": "3d0cbfaa1bf3eecf5a3f4491d2960ee803cb994f30292c6adc4a07c498f60e2b", + "imports": [ + "ADVAPI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "msvcp140_codecvt_ids.dll": { + "sha256": "8a65c7596ef2e6938731f5a1058e7e40145b6d97967cc649231a076b9a608d78", + "imports": [ + "KERNEL32.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "networkinformation/qnetworklistmanager.dll": { + "sha256": "4bc26d5b613c507634fd10f07fe031fcbd4f02157d23b9eb1407de4dd6da8278", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "OLEAUT32.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "ole32.dll" + ] + }, + "platforms/qoffscreen.dll": { + "sha256": "a35f87f597b91121cfc0ef39dcb0a5e7ad2876850fbfaf6377edf80eaa067bfd", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "platforms/qwindows.dll": { + "sha256": "cafd5bfdef3d89d176ee26725c8d4759fd6cb007645b645a4cbf6386364a3f36", + "imports": [ + "ADVAPI32.dll", + "COMDLG32.dll", + "GDI32.dll", + "IMM32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "OLEAUT32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "SETUPAPI.dll", + "SHELL32.dll", + "SHLWAPI.dll", + "UIAutomationCore.DLL", + "USER32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "WINMM.dll", + "WTSAPI32.dll", + "api-ms-win-core-winrt-l1-1-0.dll", + "api-ms-win-core-winrt-string-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-shcore-scaling-l1-1-1.dll", + "d3d9.dll", + "dwmapi.dll", + "ole32.dll" + ] + }, + "Qt6Core.dll": { + "sha256": "b712b4754588e89f855dc0aa087d6304b2fd21b0e0639d1cdeb9cb969bd5fb72", + "imports": [ + "ADVAPI32.dll", + "AUTHZ.dll", + "KERNEL32.dll", + "MPR.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "NETAPI32.dll", + "OLEAUT32.dll", + "SHELL32.dll", + "USER32.dll", + "USERENV.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "VERSION.dll", + "WINMM.dll", + "WS2_32.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-filesystem-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll", + "api-ms-win-crt-utility-l1-1-0.dll", + "icuuc.dll", + "ntdll.dll", + "ole32.dll" + ] + }, + "Qt6Gui.dll": { + "sha256": "03ba47a2025036a04f5548bce242788ac21edf551e78d5b42e1b87beb799904f", + "imports": [ + "DWrite.dll", + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "MSVCP140_2.dll", + "Qt6Core.dll", + "SHELL32.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-utility-l1-1-0.dll", + "d3d11.dll", + "d3d12.dll", + "dxgi.dll", + "ole32.dll" + ] + }, + "Qt6Network.dll": { + "sha256": "203f8ddf83c015ce56752ebe7a1986472be7dbb95c20e13ac8e1d741d9ac93d1", + "imports": [ + "ADVAPI32.dll", + "DNSAPI.dll", + "IPHLPAPI.DLL", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "Qt6Core.dll", + "Secur32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "WINHTTP.dll", + "WS2_32.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "ole32.dll" + ] + }, + "Qt6Test.dll": { + "sha256": "9d0473552b332aa378c60da05af97d741fcce06b0fc4dd68e36d885015eb5187", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "Qt6Core.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "Qt6Widgets.dll": { + "sha256": "61ddd0316a731b8dbabaf2924cd0d47b756461e37329b4f535902cf450416127", + "imports": [ + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "dwmapi.dll" + ] + }, + "qt_cpp_shell_smoke.exe": { + "sha256": "932a7cc195463462b85237e2b0b7077e43cf0166b7358c1f012f24d9fe7a0062", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Test.dll", + "Qt6Widgets.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "bcrypt.dll" + ] + }, + "styles/qmodernwindowsstyle.dll": { + "sha256": "c279e7a97b21fcd7acdfde88cacb8baa119f563282e09c241acb3edee2bc9bbf", + "imports": [ + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Widgets.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "tls/qcertonlybackend.dll": { + "sha256": "99d00b37bb2835c539366e4018a58e0ddad21e1c648a3f44f56335a0c1d34765", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "tls/qschannelbackend.dll": { + "sha256": "b7035c3689b93f55b48112c3e85cf4b8550fefde3f7a044df2784c29330e6940", + "imports": [ + "CRYPT32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "Secur32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "bcrypt.dll", + "ncrypt.dll" + ] + }, + "vccorlib140.dll": { + "sha256": "09f93d5ff96ae09767f3e1af3cdd43a5a58f2598654fc63089429bb6f9f4737f", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "OLEAUT32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-core-winrt-error-l1-1-0.dll", + "api-ms-win-core-winrt-l1-1-0.dll", + "api-ms-win-core-winrt-string-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "ole32.dll" + ] + }, + "vcruntime140.dll": { + "sha256": "d1f4225df2cd877dbf130d5668a021dce3f94118455ff5ec952061c30afc9ce7", + "imports": [ + "KERNEL32.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "vcruntime140_1.dll": { + "sha256": "a7146c08f89fe5b04541ab507cdb59ff7b44534d4ba3c668a426c6450a03434e", + "imports": [ + "KERNEL32.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "vcruntime140_threads.dll": { + "sha256": "40f39e8cee5f5a531b4010e18b807e8fe265b908dc58f959ecb7ebc6ea6cb11a", + "imports": [ + "KERNEL32.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll" + ] + } + } +} diff --git a/experiments/shell/results/2026-10-29-qt-crt-deploy/original-pe-imports.json b/experiments/shell/results/2026-10-29-qt-crt-deploy/original-pe-imports.json new file mode 100644 index 00000000..b0792889 --- /dev/null +++ b/experiments/shell/results/2026-10-29-qt-crt-deploy/original-pe-imports.json @@ -0,0 +1,923 @@ +{ + "schema": "termforge-static-pe-imports-v1", + "scope": "Static import dependencies only; not a runtime or behavior proof", + "files": { + "product_runtime/conpty-backend/conpty.dll": { + "sha256": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "imports": [ + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-fibers-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-file-l1-2-2.dll", + "api-ms-win-core-file-l2-1-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-namedpipe-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-psapi-l1-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-core-util-l1-1-0.dll", + "api-ms-win-core-wow64-l1-1-1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "product_runtime/conpty-backend/OpenConsole.exe": { + "sha256": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586", + "imports": [ + "D3DCOMPILER_47.dll", + "DWrite.dll", + "GDI32.dll", + "IMM32.dll", + "OLEAUT32.dll", + "PROPSYS.dll", + "SHELL32.dll", + "USER32.dll", + "USP10.dll", + "WINMM.dll", + "api-ms-win-core-com-l1-1-0.dll", + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-fibers-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-file-l1-2-2.dll", + "api-ms-win-core-file-l2-1-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-heap-obsolete-l1-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-io-l1-1-0.dll", + "api-ms-win-core-largeinteger-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-libraryloader-l1-2-1.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-memory-l1-1-0.dll", + "api-ms-win-core-namedpipe-l1-1-0.dll", + "api-ms-win-core-path-l1-1-0.dll", + "api-ms-win-core-processenvironment-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-1.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-psapi-l1-1-0.dll", + "api-ms-win-core-realtime-l1-1-0.dll", + "api-ms-win-core-registry-l1-1-0.dll", + "api-ms-win-core-registry-l2-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-shlwapi-legacy-l1-1-0.dll", + "api-ms-win-core-sidebyside-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-synch-l1-2-1.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-core-threadpool-l1-2-0.dll", + "api-ms-win-core-util-l1-1-0.dll", + "api-ms-win-core-version-l1-1-0.dll", + "api-ms-win-core-winrt-error-l1-1-0.dll", + "api-ms-win-core-winrt-l1-1-0.dll", + "api-ms-win-core-winrt-string-l1-1-0.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-eventing-provider-l1-1-0.dll", + "api-ms-win-ntuser-sysparams-l1-1-0.dll", + "api-ms-win-shcore-obsolete-l1-1-0.dll", + "api-ms-win-shcore-scaling-l1-1-1.dll", + "api-ms-win-shell-namespace-l1-1-0.dll", + "d2d1.dll", + "d3d11.dll", + "dxgi.dll", + "ext-ms-win-uiacore-l1-1-0.dll", + "ext-ms-win-uiacore-l1-1-1.dll", + "icu.dll", + "ntdll.dll" + ] + }, + "product_runtime/D3Dcompiler_47.dll": { + "sha256": "0f89c19165fd83a05e39bea601a06007e6a8814d55e2adf913902926231f843e", + "imports": [ + "RPCRT4.dll", + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-io-l1-1-0.dll", + "api-ms-win-core-kernel32-legacy-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-memory-l1-1-0.dll", + "api-ms-win-core-processenvironment-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-1.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-registry-l1-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-string-obsolete-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-private-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll", + "api-ms-win-security-cryptoapi-l1-1-0.dll", + "msvcp_win.dll" + ] + }, + "product_runtime/dxcompiler.dll": { + "sha256": "2bc16dc5ec85315f89e2f10a482d46dde94a65d6b2d7077f4c49c77e10222acc", + "imports": [ + "ADVAPI32.dll", + "KERNEL32.dll", + "OLEAUT32.dll", + "ole32.dll" + ] + }, + "product_runtime/dxil.dll": { + "sha256": "0e90c12c1c6aa1e09d025322a815f9dd80da7d1e331f1df585c7fcbbf44b40d3", + "imports": [ + "ADVAPI32.dll", + "KERNEL32.dll", + "ole32.dll" + ] + }, + "product_runtime/generic/qtuiotouchplugin.dll": { + "sha256": "69498d05870aa583c31159f9350e3d8a598b895f6525de7b6fa382395ad27b9d", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "product_runtime/icuuc.dll": { + "sha256": "59d134ddc15ae0594f0a328979f8201662fc82634ddb7c537b156e7cf871f5eb", + "imports": [] + }, + "product_runtime/imageformats/qgif.dll": { + "sha256": "ded464ef782f41862f391bc5b21c54d58f6aee670fc9f10a2d909ae5b0ba09a7", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "product_runtime/imageformats/qico.dll": { + "sha256": "0c2abdf95d778bfed9863b8be817dc6cffe2dacdd1a85b2117b4b4ccb1a08e66", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "product_runtime/imageformats/qjpeg.dll": { + "sha256": "cd965015cce4638361d7bc01193d92a041a227d46d0759ec25d2a1a8608a6b40", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "product_runtime/networkinformation/qnetworklistmanager.dll": { + "sha256": "4bc26d5b613c507634fd10f07fe031fcbd4f02157d23b9eb1407de4dd6da8278", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "OLEAUT32.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "ole32.dll" + ] + }, + "product_runtime/platforms/qwindows.dll": { + "sha256": "cafd5bfdef3d89d176ee26725c8d4759fd6cb007645b645a4cbf6386364a3f36", + "imports": [ + "ADVAPI32.dll", + "COMDLG32.dll", + "GDI32.dll", + "IMM32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "OLEAUT32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "SETUPAPI.dll", + "SHELL32.dll", + "SHLWAPI.dll", + "UIAutomationCore.DLL", + "USER32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "WINMM.dll", + "WTSAPI32.dll", + "api-ms-win-core-winrt-l1-1-0.dll", + "api-ms-win-core-winrt-string-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-shcore-scaling-l1-1-1.dll", + "d3d9.dll", + "dwmapi.dll", + "ole32.dll" + ] + }, + "product_runtime/Qt6Core.dll": { + "sha256": "b712b4754588e89f855dc0aa087d6304b2fd21b0e0639d1cdeb9cb969bd5fb72", + "imports": [ + "ADVAPI32.dll", + "AUTHZ.dll", + "KERNEL32.dll", + "MPR.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "NETAPI32.dll", + "OLEAUT32.dll", + "SHELL32.dll", + "USER32.dll", + "USERENV.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "VERSION.dll", + "WINMM.dll", + "WS2_32.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-filesystem-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll", + "api-ms-win-crt-utility-l1-1-0.dll", + "icuuc.dll", + "ntdll.dll", + "ole32.dll" + ] + }, + "product_runtime/Qt6Gui.dll": { + "sha256": "03ba47a2025036a04f5548bce242788ac21edf551e78d5b42e1b87beb799904f", + "imports": [ + "DWrite.dll", + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "MSVCP140_2.dll", + "Qt6Core.dll", + "SHELL32.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-utility-l1-1-0.dll", + "d3d11.dll", + "d3d12.dll", + "dxgi.dll", + "ole32.dll" + ] + }, + "product_runtime/Qt6Network.dll": { + "sha256": "203f8ddf83c015ce56752ebe7a1986472be7dbb95c20e13ac8e1d741d9ac93d1", + "imports": [ + "ADVAPI32.dll", + "DNSAPI.dll", + "IPHLPAPI.DLL", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "Qt6Core.dll", + "Secur32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "WINHTTP.dll", + "WS2_32.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "ole32.dll" + ] + }, + "product_runtime/Qt6Widgets.dll": { + "sha256": "61ddd0316a731b8dbabaf2924cd0d47b756461e37329b4f535902cf450416127", + "imports": [ + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "dwmapi.dll" + ] + }, + "product_runtime/styles/qmodernwindowsstyle.dll": { + "sha256": "c279e7a97b21fcd7acdfde88cacb8baa119f563282e09c241acb3edee2bc9bbf", + "imports": [ + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Widgets.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "product_runtime/termforge_qt_shell.exe": { + "sha256": "0bfe1f63a6e12bba8bc4a092b897ef0c341825d0be408ac818a09c7d6033f7bc", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Widgets.dll", + "SHELL32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "bcrypt.dll" + ] + }, + "product_runtime/tls/qcertonlybackend.dll": { + "sha256": "99d00b37bb2835c539366e4018a58e0ddad21e1c648a3f44f56335a0c1d34765", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "product_runtime/tls/qschannelbackend.dll": { + "sha256": "b7035c3689b93f55b48112c3e85cf4b8550fefde3f7a044df2784c29330e6940", + "imports": [ + "CRYPT32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "Secur32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "bcrypt.dll", + "ncrypt.dll" + ] + }, + "smoke_runtime/conpty-backend/conpty.dll": { + "sha256": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "imports": [ + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-fibers-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-file-l1-2-2.dll", + "api-ms-win-core-file-l2-1-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-namedpipe-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-psapi-l1-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-core-util-l1-1-0.dll", + "api-ms-win-core-wow64-l1-1-1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "smoke_runtime/conpty-backend/OpenConsole.exe": { + "sha256": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586", + "imports": [ + "D3DCOMPILER_47.dll", + "DWrite.dll", + "GDI32.dll", + "IMM32.dll", + "OLEAUT32.dll", + "PROPSYS.dll", + "SHELL32.dll", + "USER32.dll", + "USP10.dll", + "WINMM.dll", + "api-ms-win-core-com-l1-1-0.dll", + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-fibers-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-file-l1-2-2.dll", + "api-ms-win-core-file-l2-1-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-heap-obsolete-l1-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-io-l1-1-0.dll", + "api-ms-win-core-largeinteger-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-libraryloader-l1-2-1.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-memory-l1-1-0.dll", + "api-ms-win-core-namedpipe-l1-1-0.dll", + "api-ms-win-core-path-l1-1-0.dll", + "api-ms-win-core-processenvironment-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-1.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-psapi-l1-1-0.dll", + "api-ms-win-core-realtime-l1-1-0.dll", + "api-ms-win-core-registry-l1-1-0.dll", + "api-ms-win-core-registry-l2-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-shlwapi-legacy-l1-1-0.dll", + "api-ms-win-core-sidebyside-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-synch-l1-2-1.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-core-threadpool-l1-2-0.dll", + "api-ms-win-core-util-l1-1-0.dll", + "api-ms-win-core-version-l1-1-0.dll", + "api-ms-win-core-winrt-error-l1-1-0.dll", + "api-ms-win-core-winrt-l1-1-0.dll", + "api-ms-win-core-winrt-string-l1-1-0.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-eventing-provider-l1-1-0.dll", + "api-ms-win-ntuser-sysparams-l1-1-0.dll", + "api-ms-win-shcore-obsolete-l1-1-0.dll", + "api-ms-win-shcore-scaling-l1-1-1.dll", + "api-ms-win-shell-namespace-l1-1-0.dll", + "d2d1.dll", + "d3d11.dll", + "dxgi.dll", + "ext-ms-win-uiacore-l1-1-0.dll", + "ext-ms-win-uiacore-l1-1-1.dll", + "icu.dll", + "ntdll.dll" + ] + }, + "smoke_runtime/D3Dcompiler_47.dll": { + "sha256": "0f89c19165fd83a05e39bea601a06007e6a8814d55e2adf913902926231f843e", + "imports": [ + "RPCRT4.dll", + "api-ms-win-core-debug-l1-1-0.dll", + "api-ms-win-core-errorhandling-l1-1-0.dll", + "api-ms-win-core-file-l1-1-0.dll", + "api-ms-win-core-file-l1-2-0.dll", + "api-ms-win-core-handle-l1-1-0.dll", + "api-ms-win-core-heap-l1-1-0.dll", + "api-ms-win-core-heap-l2-1-0.dll", + "api-ms-win-core-interlocked-l1-1-0.dll", + "api-ms-win-core-io-l1-1-0.dll", + "api-ms-win-core-kernel32-legacy-l1-1-0.dll", + "api-ms-win-core-libraryloader-l1-2-0.dll", + "api-ms-win-core-localization-l1-2-0.dll", + "api-ms-win-core-memory-l1-1-0.dll", + "api-ms-win-core-processenvironment-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-0.dll", + "api-ms-win-core-processthreads-l1-1-1.dll", + "api-ms-win-core-profile-l1-1-0.dll", + "api-ms-win-core-registry-l1-1-0.dll", + "api-ms-win-core-rtlsupport-l1-1-0.dll", + "api-ms-win-core-string-l1-1-0.dll", + "api-ms-win-core-string-obsolete-l1-1-0.dll", + "api-ms-win-core-synch-l1-1-0.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-core-sysinfo-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-private-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll", + "api-ms-win-security-cryptoapi-l1-1-0.dll", + "msvcp_win.dll" + ] + }, + "smoke_runtime/dxcompiler.dll": { + "sha256": "2bc16dc5ec85315f89e2f10a482d46dde94a65d6b2d7077f4c49c77e10222acc", + "imports": [ + "ADVAPI32.dll", + "KERNEL32.dll", + "OLEAUT32.dll", + "ole32.dll" + ] + }, + "smoke_runtime/dxil.dll": { + "sha256": "0e90c12c1c6aa1e09d025322a815f9dd80da7d1e331f1df585c7fcbbf44b40d3", + "imports": [ + "ADVAPI32.dll", + "KERNEL32.dll", + "ole32.dll" + ] + }, + "smoke_runtime/generic/qtuiotouchplugin.dll": { + "sha256": "69498d05870aa583c31159f9350e3d8a598b895f6525de7b6fa382395ad27b9d", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "smoke_runtime/icuuc.dll": { + "sha256": "59d134ddc15ae0594f0a328979f8201662fc82634ddb7c537b156e7cf871f5eb", + "imports": [] + }, + "smoke_runtime/imageformats/qgif.dll": { + "sha256": "ded464ef782f41862f391bc5b21c54d58f6aee670fc9f10a2d909ae5b0ba09a7", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "smoke_runtime/imageformats/qico.dll": { + "sha256": "0c2abdf95d778bfed9863b8be817dc6cffe2dacdd1a85b2117b4b4ccb1a08e66", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "smoke_runtime/imageformats/qjpeg.dll": { + "sha256": "cd965015cce4638361d7bc01193d92a041a227d46d0759ec25d2a1a8608a6b40", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "smoke_runtime/networkinformation/qnetworklistmanager.dll": { + "sha256": "4bc26d5b613c507634fd10f07fe031fcbd4f02157d23b9eb1407de4dd6da8278", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "OLEAUT32.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "ole32.dll" + ] + }, + "smoke_runtime/platforms/qoffscreen.dll": { + "sha256": "a35f87f597b91121cfc0ef39dcb0a5e7ad2876850fbfaf6377edf80eaa067bfd", + "imports": [ + "KERNEL32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "smoke_runtime/platforms/qwindows.dll": { + "sha256": "cafd5bfdef3d89d176ee26725c8d4759fd6cb007645b645a4cbf6386364a3f36", + "imports": [ + "ADVAPI32.dll", + "COMDLG32.dll", + "GDI32.dll", + "IMM32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "OLEAUT32.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "SETUPAPI.dll", + "SHELL32.dll", + "SHLWAPI.dll", + "UIAutomationCore.DLL", + "USER32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "WINMM.dll", + "WTSAPI32.dll", + "api-ms-win-core-winrt-l1-1-0.dll", + "api-ms-win-core-winrt-string-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-shcore-scaling-l1-1-1.dll", + "d3d9.dll", + "dwmapi.dll", + "ole32.dll" + ] + }, + "smoke_runtime/Qt6Core.dll": { + "sha256": "b712b4754588e89f855dc0aa087d6304b2fd21b0e0639d1cdeb9cb969bd5fb72", + "imports": [ + "ADVAPI32.dll", + "AUTHZ.dll", + "KERNEL32.dll", + "MPR.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "NETAPI32.dll", + "OLEAUT32.dll", + "SHELL32.dll", + "USER32.dll", + "USERENV.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "VERSION.dll", + "WINMM.dll", + "WS2_32.dll", + "api-ms-win-core-synch-l1-2-0.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-filesystem-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-time-l1-1-0.dll", + "api-ms-win-crt-utility-l1-1-0.dll", + "icuuc.dll", + "ntdll.dll", + "ole32.dll" + ] + }, + "smoke_runtime/Qt6Gui.dll": { + "sha256": "03ba47a2025036a04f5548bce242788ac21edf551e78d5b42e1b87beb799904f", + "imports": [ + "DWrite.dll", + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "MSVCP140_2.dll", + "Qt6Core.dll", + "SHELL32.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "api-ms-win-crt-utility-l1-1-0.dll", + "d3d11.dll", + "d3d12.dll", + "dxgi.dll", + "ole32.dll" + ] + }, + "smoke_runtime/Qt6Network.dll": { + "sha256": "203f8ddf83c015ce56752ebe7a1986472be7dbb95c20e13ac8e1d741d9ac93d1", + "imports": [ + "ADVAPI32.dll", + "DNSAPI.dll", + "IPHLPAPI.DLL", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "Qt6Core.dll", + "Secur32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "WINHTTP.dll", + "WS2_32.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "ole32.dll" + ] + }, + "smoke_runtime/Qt6Test.dll": { + "sha256": "9d0473552b332aa378c60da05af97d741fcce06b0fc4dd68e36d885015eb5187", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "Qt6Core.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-convert-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "smoke_runtime/Qt6Widgets.dll": { + "sha256": "61ddd0316a731b8dbabaf2924cd0d47b756461e37329b4f535902cf450416127", + "imports": [ + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "MSVCP140_1.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "dwmapi.dll" + ] + }, + "smoke_runtime/qt_cpp_shell_smoke.exe": { + "sha256": "80201411b9bb8b0dc073c133d8039b7468f87098fc36df3051d7ea5044a781eb", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Test.dll", + "Qt6Widgets.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-environment-l1-1-0.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-locale-l1-1-0.dll", + "api-ms-win-crt-math-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-stdio-l1-1-0.dll", + "bcrypt.dll" + ] + }, + "smoke_runtime/styles/qmodernwindowsstyle.dll": { + "sha256": "c279e7a97b21fcd7acdfde88cacb8baa119f563282e09c241acb3edee2bc9bbf", + "imports": [ + "GDI32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Gui.dll", + "Qt6Widgets.dll", + "USER32.dll", + "UxTheme.dll", + "VCRUNTIME140.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll" + ] + }, + "smoke_runtime/tls/qcertonlybackend.dll": { + "sha256": "99d00b37bb2835c539366e4018a58e0ddad21e1c648a3f44f56335a0c1d34765", + "imports": [ + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll" + ] + }, + "smoke_runtime/tls/qschannelbackend.dll": { + "sha256": "b7035c3689b93f55b48112c3e85cf4b8550fefde3f7a044df2784c29330e6940", + "imports": [ + "CRYPT32.dll", + "KERNEL32.dll", + "MSVCP140.dll", + "Qt6Core.dll", + "Qt6Network.dll", + "Secur32.dll", + "VCRUNTIME140.dll", + "VCRUNTIME140_1.dll", + "api-ms-win-crt-heap-l1-1-0.dll", + "api-ms-win-crt-runtime-l1-1-0.dll", + "api-ms-win-crt-string-l1-1-0.dll", + "bcrypt.dll", + "ncrypt.dll" + ] + } + } +} diff --git a/experiments/shell/results/2026-10-29-qt-crt-deploy/product-runtime.json b/experiments/shell/results/2026-10-29-qt-crt-deploy/product-runtime.json new file mode 100644 index 00000000..ee731dcb --- /dev/null +++ b/experiments/shell/results/2026-10-29-qt-crt-deploy/product-runtime.json @@ -0,0 +1,157 @@ +{ + "schema": "termforge-windows-runtime-v1", + "executable": "termforge_qt_shell.exe", + "architecture": "windows-x64", + "msvc_runtime_version": "14.51.36247.0", + "msvc_runtime_manifest_sha256": "154176c8b4ae6dd57fce453e2c2002ff484344b39451fa9880b07db4794f3758", + "files": { + "D3Dcompiler_47.dll": { + "bytes": 4669440, + "sha256": "0f89c19165fd83a05e39bea601a06007e6a8814d55e2adf913902926231f843e" + }, + "LICENSE-MICROSOFT-VC-REDIST.docx": { + "bytes": 39553, + "sha256": "08651651a7602fc7c0e2763de0fde1ff9f868df2780597cd1775ee9d6441c783" + }, + "NOTICE.txt": { + "bytes": 563, + "sha256": "510781c94971ea19adae55d2c42207d942b0646deee29d5c401f189cc25d415f" + }, + "Qt6Core.dll": { + "bytes": 10250040, + "sha256": "b712b4754588e89f855dc0aa087d6304b2fd21b0e0639d1cdeb9cb969bd5fb72" + }, + "Qt6Gui.dll": { + "bytes": 9514296, + "sha256": "03ba47a2025036a04f5548bce242788ac21edf551e78d5b42e1b87beb799904f" + }, + "Qt6Network.dll": { + "bytes": 1773880, + "sha256": "203f8ddf83c015ce56752ebe7a1986472be7dbb95c20e13ac8e1d741d9ac93d1" + }, + "Qt6Widgets.dll": { + "bytes": 6577464, + "sha256": "61ddd0316a731b8dbabaf2924cd0d47b756461e37329b4f535902cf450416127" + }, + "assets/fonts/OFL.txt": { + "bytes": 4395, + "sha256": "50ab8dd54680d3473f649c9db86fece88434d097c7834475c1c72d2f8c429215" + }, + "assets/fonts/README.md": { + "bytes": 3091, + "sha256": "760a714ad011733e0b93f3c25298190ff5fa493a9e40ad38d347922a355d538f" + }, + "assets/fonts/RobotoMono-Regular.ttf": { + "bytes": 125748, + "sha256": "af0bff7599c3df3831755c16e39b3c496df74b8c8d8a1161b14dc8461be17cb4" + }, + "concrt140.dll": { + "bytes": 374200, + "sha256": "54716f0738af891f283d213b5c8d11b25896bb8ee3097d301eae718560cf974e" + }, + "conpty-backend/LICENSE": { + "bytes": 1095, + "sha256": "ad0cf28f3381ca9bb0bf101d127402d44c17bfa0991e1a00bff7ae6679e9dada" + }, + "conpty-backend/OpenConsole.exe": { + "bytes": 1089376, + "sha256": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "conpty-backend/conpty.dll": { + "bytes": 119608, + "sha256": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a" + }, + "conpty-backend/manifest.json": { + "bytes": 1467, + "sha256": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439" + }, + "dxcompiler.dll": { + "bytes": 14019128, + "sha256": "2bc16dc5ec85315f89e2f10a482d46dde94a65d6b2d7077f4c49c77e10222acc" + }, + "dxil.dll": { + "bytes": 1502760, + "sha256": "0e90c12c1c6aa1e09d025322a815f9dd80da7d1e331f1df585c7fcbbf44b40d3" + }, + "generic/qtuiotouchplugin.dll": { + "bytes": 102712, + "sha256": "69498d05870aa583c31159f9350e3d8a598b895f6525de7b6fa382395ad27b9d" + }, + "icuuc.dll": { + "bytes": 36864, + "sha256": "59d134ddc15ae0594f0a328979f8201662fc82634ddb7c537b156e7cf871f5eb" + }, + "imageformats/qgif.dll": { + "bytes": 47928, + "sha256": "ded464ef782f41862f391bc5b21c54d58f6aee670fc9f10a2d909ae5b0ba09a7" + }, + "imageformats/qico.dll": { + "bytes": 45880, + "sha256": "0c2abdf95d778bfed9863b8be817dc6cffe2dacdd1a85b2117b4b4ccb1a08e66" + }, + "imageformats/qjpeg.dll": { + "bytes": 577848, + "sha256": "cd965015cce4638361d7bc01193d92a041a227d46d0759ec25d2a1a8608a6b40" + }, + "msvcp140.dll": { + "bytes": 643512, + "sha256": "7c26614e1d733892c2deac7e245ce115504b1d80592dd0a01b08e3e5a55f89ca" + }, + "msvcp140_1.dll": { + "bytes": 35768, + "sha256": "206c931bf90fdad8816de3b5e2ef80b2bcaa9406c89ecc05fe6fddffe251e982" + }, + "msvcp140_2.dll": { + "bytes": 274872, + "sha256": "d50d7883f20d1dc6191768d3746f52dd9cac89c346ffaed5be1f110c2f34a838" + }, + "msvcp140_atomic_wait.dll": { + "bytes": 57792, + "sha256": "3d0cbfaa1bf3eecf5a3f4491d2960ee803cb994f30292c6adc4a07c498f60e2b" + }, + "msvcp140_codecvt_ids.dll": { + "bytes": 31160, + "sha256": "8a65c7596ef2e6938731f5a1058e7e40145b6d97967cc649231a076b9a608d78" + }, + "networkinformation/qnetworklistmanager.dll": { + "bytes": 70968, + "sha256": "4bc26d5b613c507634fd10f07fe031fcbd4f02157d23b9eb1407de4dd6da8278" + }, + "platforms/qwindows.dll": { + "bytes": 997688, + "sha256": "cafd5bfdef3d89d176ee26725c8d4759fd6cb007645b645a4cbf6386364a3f36" + }, + "styles/qmodernwindowsstyle.dll": { + "bytes": 221496, + "sha256": "c279e7a97b21fcd7acdfde88cacb8baa119f563282e09c241acb3edee2bc9bbf" + }, + "termforge_qt_shell.exe": { + "bytes": 146432, + "sha256": "155a05d1a90b9498ee190b08e4b5d02c54772753a81aab30fa6c8cf6faaf5d41" + }, + "tls/qcertonlybackend.dll": { + "bytes": 103224, + "sha256": "99d00b37bb2835c539366e4018a58e0ddad21e1c648a3f44f56335a0c1d34765" + }, + "tls/qschannelbackend.dll": { + "bytes": 262968, + "sha256": "b7035c3689b93f55b48112c3e85cf4b8550fefde3f7a044df2784c29330e6940" + }, + "vccorlib140.dll": { + "bytes": 350648, + "sha256": "09f93d5ff96ae09767f3e1af3cdd43a5a58f2598654fc63089429bb6f9f4737f" + }, + "vcruntime140.dll": { + "bytes": 178616, + "sha256": "d1f4225df2cd877dbf130d5668a021dce3f94118455ff5ec952061c30afc9ce7" + }, + "vcruntime140_1.dll": { + "bytes": 50112, + "sha256": "a7146c08f89fe5b04541ab507cdb59ff7b44534d4ba3c668a426c6450a03434e" + }, + "vcruntime140_threads.dll": { + "bytes": 38840, + "sha256": "40f39e8cee5f5a531b4010e18b807e8fe265b908dc58f959ecb7ebc6ea6cb11a" + } + } +} diff --git a/experiments/shell/results/2026-10-29-qt-crt-deploy/smoke-runtime.json b/experiments/shell/results/2026-10-29-qt-crt-deploy/smoke-runtime.json new file mode 100644 index 00000000..51e61a3f --- /dev/null +++ b/experiments/shell/results/2026-10-29-qt-crt-deploy/smoke-runtime.json @@ -0,0 +1,165 @@ +{ + "schema": "termforge-windows-runtime-v1", + "executable": "qt_cpp_shell_smoke.exe", + "architecture": "windows-x64", + "msvc_runtime_version": "14.51.36247.0", + "msvc_runtime_manifest_sha256": "154176c8b4ae6dd57fce453e2c2002ff484344b39451fa9880b07db4794f3758", + "files": { + "D3Dcompiler_47.dll": { + "bytes": 4669440, + "sha256": "0f89c19165fd83a05e39bea601a06007e6a8814d55e2adf913902926231f843e" + }, + "LICENSE-MICROSOFT-VC-REDIST.docx": { + "bytes": 39553, + "sha256": "08651651a7602fc7c0e2763de0fde1ff9f868df2780597cd1775ee9d6441c783" + }, + "NOTICE.txt": { + "bytes": 563, + "sha256": "510781c94971ea19adae55d2c42207d942b0646deee29d5c401f189cc25d415f" + }, + "Qt6Core.dll": { + "bytes": 10250040, + "sha256": "b712b4754588e89f855dc0aa087d6304b2fd21b0e0639d1cdeb9cb969bd5fb72" + }, + "Qt6Gui.dll": { + "bytes": 9514296, + "sha256": "03ba47a2025036a04f5548bce242788ac21edf551e78d5b42e1b87beb799904f" + }, + "Qt6Network.dll": { + "bytes": 1773880, + "sha256": "203f8ddf83c015ce56752ebe7a1986472be7dbb95c20e13ac8e1d741d9ac93d1" + }, + "Qt6Test.dll": { + "bytes": 380216, + "sha256": "9d0473552b332aa378c60da05af97d741fcce06b0fc4dd68e36d885015eb5187" + }, + "Qt6Widgets.dll": { + "bytes": 6577464, + "sha256": "61ddd0316a731b8dbabaf2924cd0d47b756461e37329b4f535902cf450416127" + }, + "assets/fonts/OFL.txt": { + "bytes": 4395, + "sha256": "50ab8dd54680d3473f649c9db86fece88434d097c7834475c1c72d2f8c429215" + }, + "assets/fonts/README.md": { + "bytes": 3091, + "sha256": "760a714ad011733e0b93f3c25298190ff5fa493a9e40ad38d347922a355d538f" + }, + "assets/fonts/RobotoMono-Regular.ttf": { + "bytes": 125748, + "sha256": "af0bff7599c3df3831755c16e39b3c496df74b8c8d8a1161b14dc8461be17cb4" + }, + "concrt140.dll": { + "bytes": 374200, + "sha256": "54716f0738af891f283d213b5c8d11b25896bb8ee3097d301eae718560cf974e" + }, + "conpty-backend/LICENSE": { + "bytes": 1095, + "sha256": "ad0cf28f3381ca9bb0bf101d127402d44c17bfa0991e1a00bff7ae6679e9dada" + }, + "conpty-backend/OpenConsole.exe": { + "bytes": 1089376, + "sha256": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "conpty-backend/conpty.dll": { + "bytes": 119608, + "sha256": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a" + }, + "conpty-backend/manifest.json": { + "bytes": 1467, + "sha256": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439" + }, + "dxcompiler.dll": { + "bytes": 14019128, + "sha256": "2bc16dc5ec85315f89e2f10a482d46dde94a65d6b2d7077f4c49c77e10222acc" + }, + "dxil.dll": { + "bytes": 1502760, + "sha256": "0e90c12c1c6aa1e09d025322a815f9dd80da7d1e331f1df585c7fcbbf44b40d3" + }, + "generic/qtuiotouchplugin.dll": { + "bytes": 102712, + "sha256": "69498d05870aa583c31159f9350e3d8a598b895f6525de7b6fa382395ad27b9d" + }, + "icuuc.dll": { + "bytes": 36864, + "sha256": "59d134ddc15ae0594f0a328979f8201662fc82634ddb7c537b156e7cf871f5eb" + }, + "imageformats/qgif.dll": { + "bytes": 47928, + "sha256": "ded464ef782f41862f391bc5b21c54d58f6aee670fc9f10a2d909ae5b0ba09a7" + }, + "imageformats/qico.dll": { + "bytes": 45880, + "sha256": "0c2abdf95d778bfed9863b8be817dc6cffe2dacdd1a85b2117b4b4ccb1a08e66" + }, + "imageformats/qjpeg.dll": { + "bytes": 577848, + "sha256": "cd965015cce4638361d7bc01193d92a041a227d46d0759ec25d2a1a8608a6b40" + }, + "msvcp140.dll": { + "bytes": 643512, + "sha256": "7c26614e1d733892c2deac7e245ce115504b1d80592dd0a01b08e3e5a55f89ca" + }, + "msvcp140_1.dll": { + "bytes": 35768, + "sha256": "206c931bf90fdad8816de3b5e2ef80b2bcaa9406c89ecc05fe6fddffe251e982" + }, + "msvcp140_2.dll": { + "bytes": 274872, + "sha256": "d50d7883f20d1dc6191768d3746f52dd9cac89c346ffaed5be1f110c2f34a838" + }, + "msvcp140_atomic_wait.dll": { + "bytes": 57792, + "sha256": "3d0cbfaa1bf3eecf5a3f4491d2960ee803cb994f30292c6adc4a07c498f60e2b" + }, + "msvcp140_codecvt_ids.dll": { + "bytes": 31160, + "sha256": "8a65c7596ef2e6938731f5a1058e7e40145b6d97967cc649231a076b9a608d78" + }, + "networkinformation/qnetworklistmanager.dll": { + "bytes": 70968, + "sha256": "4bc26d5b613c507634fd10f07fe031fcbd4f02157d23b9eb1407de4dd6da8278" + }, + "platforms/qoffscreen.dll": { + "bytes": 113976, + "sha256": "a35f87f597b91121cfc0ef39dcb0a5e7ad2876850fbfaf6377edf80eaa067bfd" + }, + "platforms/qwindows.dll": { + "bytes": 997688, + "sha256": "cafd5bfdef3d89d176ee26725c8d4759fd6cb007645b645a4cbf6386364a3f36" + }, + "qt_cpp_shell_smoke.exe": { + "bytes": 202240, + "sha256": "932a7cc195463462b85237e2b0b7077e43cf0166b7358c1f012f24d9fe7a0062" + }, + "styles/qmodernwindowsstyle.dll": { + "bytes": 221496, + "sha256": "c279e7a97b21fcd7acdfde88cacb8baa119f563282e09c241acb3edee2bc9bbf" + }, + "tls/qcertonlybackend.dll": { + "bytes": 103224, + "sha256": "99d00b37bb2835c539366e4018a58e0ddad21e1c648a3f44f56335a0c1d34765" + }, + "tls/qschannelbackend.dll": { + "bytes": 262968, + "sha256": "b7035c3689b93f55b48112c3e85cf4b8550fefde3f7a044df2784c29330e6940" + }, + "vccorlib140.dll": { + "bytes": 350648, + "sha256": "09f93d5ff96ae09767f3e1af3cdd43a5a58f2598654fc63089429bb6f9f4737f" + }, + "vcruntime140.dll": { + "bytes": 178616, + "sha256": "d1f4225df2cd877dbf130d5668a021dce3f94118455ff5ec952061c30afc9ce7" + }, + "vcruntime140_1.dll": { + "bytes": 50112, + "sha256": "a7146c08f89fe5b04541ab507cdb59ff7b44534d4ba3c668a426c6450a03434e" + }, + "vcruntime140_threads.dll": { + "bytes": 38840, + "sha256": "40f39e8cee5f5a531b4010e18b807e8fe265b908dc58f959ecb7ebc6ea6cb11a" + } + } +} diff --git a/experiments/shell/results/2026-10-29-qt-crt-deploy/validation.json b/experiments/shell/results/2026-10-29-qt-crt-deploy/validation.json new file mode 100644 index 00000000..1b45a74c --- /dev/null +++ b/experiments/shell/results/2026-10-29-qt-crt-deploy/validation.json @@ -0,0 +1,1065 @@ +{ + "schema": "termforge-qt-crt-deployment-validation-v1", + "status": "limited_clean_guest_loader_and_cmd_verified_full_R2_incomplete", + "issue": 138, + "parent_issue": 35, + "environment": { + "os": "Windows 11 Enterprise Evaluation 26H2 x64", + "build": "26300.9457", + "vcpus": 2, + "memory_gib": 6, + "interactive_session": 2, + "guest_tools": "QGA/QXL/SPICE already installed; not bare OS", + "pre_qt": { + "qt_executed": false, + "system_crt_files": [ + { + "present": false, + "name": "vcruntime140.dll" + }, + { + "present": false, + "name": "vcruntime140_1.dll" + }, + { + "present": false, + "name": "msvcp140.dll" + }, + { + "present": false, + "name": "msvcp140_1.dll" + }, + { + "present": false, + "name": "msvcp140_2.dll" + } + ], + "vc_products": [] + }, + "physical_presentation_accepted": false + }, + "fixed_runtime": { + "schema": "termforge-msvc-runtime-input-v1", + "name": "Microsoft Visual C++ v14 Runtime", + "version": "14.51.36247.0", + "architecture": "windows-x64", + "pe_machine": "0x8664", + "maximum_toolset_version": "14.51.36247", + "package": { + "archive": "vc_redist-14.51.36247-x64.exe", + "url": "https://download.visualstudio.microsoft.com/download/pr/ebdab8e5-1d7b-4d9f-a11b-cbb1720c3b12/843068991DAAA1F73AD9F6239BCE4D0F6A07A51F18C37EA2A867E9BECA71295C/VC_redist.x64.exe", + "bytes": 18731856, + "sha256": "843068991daaa1f73ad9f6239bce4d0f6a07a51f18c37ea2a867e9beca71295c" + }, + "attached_container": { + "offset": 630000, + "bytes": 18091661, + "sha256": "8b1595b5d0001e0747371ecfc2dccb604dc836fba0a778566e97a6bdb0816bb8" + }, + "runtime_cabinet": { + "member": "a4", + "bytes": 1065893, + "sha256": "6e8ee73933678c55973e83366e48e948b394c7a36743a36b7224c95de979b13f" + }, + "files": { + "concrt140.dll": { + "member": "concrt140.dll_amd64", + "bytes": 374200, + "sha256": "54716f0738af891f283d213b5c8d11b25896bb8ee3097d301eae718560cf974e" + }, + "msvcp140_1.dll": { + "member": "msvcp140_1.dll_amd64", + "bytes": 35768, + "sha256": "206c931bf90fdad8816de3b5e2ef80b2bcaa9406c89ecc05fe6fddffe251e982" + }, + "msvcp140_2.dll": { + "member": "msvcp140_2.dll_amd64", + "bytes": 274872, + "sha256": "d50d7883f20d1dc6191768d3746f52dd9cac89c346ffaed5be1f110c2f34a838" + }, + "msvcp140_atomic_wait.dll": { + "member": "msvcp140_atomic_wait.dll_amd64", + "bytes": 57792, + "sha256": "3d0cbfaa1bf3eecf5a3f4491d2960ee803cb994f30292c6adc4a07c498f60e2b" + }, + "msvcp140_codecvt_ids.dll": { + "member": "msvcp140_codecvt_ids.dll_amd64", + "bytes": 31160, + "sha256": "8a65c7596ef2e6938731f5a1058e7e40145b6d97967cc649231a076b9a608d78" + }, + "msvcp140.dll": { + "member": "msvcp140.dll_amd64", + "bytes": 643512, + "sha256": "7c26614e1d733892c2deac7e245ce115504b1d80592dd0a01b08e3e5a55f89ca" + }, + "vccorlib140.dll": { + "member": "vccorlib140.dll_amd64", + "bytes": 350648, + "sha256": "09f93d5ff96ae09767f3e1af3cdd43a5a58f2598654fc63089429bb6f9f4737f" + }, + "vcruntime140_1.dll": { + "member": "vcruntime140_1.dll_amd64", + "bytes": 50112, + "sha256": "a7146c08f89fe5b04541ab507cdb59ff7b44534d4ba3c668a426c6450a03434e" + }, + "vcruntime140_threads.dll": { + "member": "vcruntime140_threads.dll_amd64", + "bytes": 38840, + "sha256": "40f39e8cee5f5a531b4010e18b807e8fe265b908dc58f959ecb7ebc6ea6cb11a" + }, + "vcruntime140.dll": { + "member": "vcruntime140.dll_amd64", + "bytes": 178616, + "sha256": "d1f4225df2cd877dbf130d5668a021dce3f94118455ff5ec952061c30afc9ce7" + } + }, + "license": { + "archive": "Visual-C-V14-License-Redistributable_and_Runtime_ENU.docx", + "url": "https://visualstudio.microsoft.com/wp-content/uploads/2025/10/Visual-C-V14-License-Redistributable_and_Runtime_ENU.docx", + "bytes": 39553, + "sha256": "08651651a7602fc7c0e2763de0fde1ff9f868df2780597cd1775ee9d6441c783", + "deployed_name": "LICENSE-MICROSOFT-VC-REDIST.docx", + "terms_url": "https://aka.ms/VCRedistLicense", + "redistribution_url": "https://learn.microsoft.com/en-us/cpp/windows/redistributing-visual-cpp-files?view=msvc-170", + "distributable_list_url": "https://learn.microsoft.com/en-us/visualstudio/releases/2022/redistribution" + }, + "notice_sha256": "510781c94971ea19adae55d2c42207d942b0646deee29d5c401f189cc25d415f", + "acquisition_evidence": { + "authenticode_status": "Valid", + "package_signer_subject": "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US", + "package_signer_thumbprint": "1D77A9B9E8FE2075D9AD15123257FB90DB0DA4A1", + "runtime_file_versions": "14.51.36247.0", + "runtime_signer_subject": "CN=Microsoft Windows Software Compatibility Publisher, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" + }, + "scope": "Unmodified app-local desktop CRT files, extracted without running the installer; no OpenMP/MFC/debug/ARM64 runtime, global installation or startup download" + }, + "causal_original": { + "observation_script_exit": 0, + "request_status": "passed", + "session_id": 2, + "job_supervision": { + "Schema": "termforge-owned-vm-request-v2", + "Status": "passed", + "Error": null, + "RootWait": 0, + "RootExitCode": 0, + "JobBeforeActive": 0, + "JobBeforeTotal": 5, + "JobAfterActive": 0, + "ExecutionTimeoutMilliseconds": 25000, + "CreatedSuspended": true, + "RootHandleIdentityVerified": true, + "RootAssignedBeforeResume": true, + "KillOnCloseVerified": true, + "BreakawayDenied": true, + "TimedOut": false, + "TerminationRequested": false, + "RootReaped": true, + "MembersStable": true, + "CleanupVerified": true + }, + "product_observation": { + "schema": "termforge-qt-native-load-v1", + "case_id": "crt-original-load-0", + "source_commit": "cf8b40b2e44f9e475cfc42b5008d46c670ff1756", + "runtime_file_count": 52, + "session_id": 2, + "system_crt_before": { + "msvcp140_2.dll": false, + "msvcp140_1.dll": false, + "vcruntime140.dll": false, + "vcruntime140_1.dll": false, + "msvcp140.dll": false + }, + "created": true, + "contained_before_resume": true, + "initial_wait": 0, + "initial_exit_code": 3221225781, + "initial_exit_hex": "0xC0000135", + "window_classes": [], + "visible_window_count": 0, + "final_wait": 0, + "final_exit_code": 3221225781, + "forced_termination": false, + "handles_closed": true, + "presented_done": null + }, + "request_stderr_empty": true + }, + "causal_corrected": { + "observation_script_exit": 0, + "request_status": "passed", + "session_id": 2, + "job_supervision": { + "Schema": "termforge-owned-vm-request-v2", + "Status": "passed", + "Error": null, + "RootWait": 0, + "RootExitCode": 0, + "JobBeforeActive": 0, + "JobBeforeTotal": 7, + "JobAfterActive": 0, + "ExecutionTimeoutMilliseconds": 25000, + "CreatedSuspended": true, + "RootHandleIdentityVerified": true, + "RootAssignedBeforeResume": true, + "KillOnCloseVerified": true, + "BreakawayDenied": true, + "TimedOut": false, + "TerminationRequested": false, + "RootReaped": true, + "MembersStable": true, + "CleanupVerified": true + }, + "product_observation": { + "schema": "termforge-qt-native-load-v1", + "case_id": "crt-corrected-load-0", + "source_commit": "cf8b40b2e44f9e475cfc42b5008d46c670ff1756", + "runtime_file_count": 52, + "session_id": 2, + "system_crt_before": { + "msvcp140_2.dll": false, + "msvcp140_1.dll": false, + "vcruntime140.dll": false, + "vcruntime140_1.dll": false, + "msvcp140.dll": false + }, + "vc_redist_before": [], + "vc_redist_after": [], + "system_crt_after": { + "msvcp140_2.dll": false, + "msvcp140_1.dll": false, + "vcruntime140.dll": false, + "vcruntime140_1.dll": false, + "msvcp140.dll": false + }, + "created": true, + "contained_before_resume": true, + "initial_wait": 258, + "initial_exit_code": 259, + "initial_exit_hex": "0x00000103", + "window_classes": [ + "_q_titlebar", + "Qt6103QWindowIcon", + "Qt6103ThemeChangeObserverWindow", + "Qt6103ScreenChangeObserverWindow", + "MSCTFIME UI", + "IME" + ], + "visible_window_count": 1, + "final_wait": 0, + "final_exit_code": 0, + "forced_termination": false, + "handles_closed": true, + "presented_done": null + }, + "request_stderr_empty": true + }, + "causal_corrected_cmd": { + "observation_script_exit": 0, + "request_status": "passed", + "session_id": 2, + "job_supervision": { + "Schema": "termforge-owned-vm-request-v2", + "Status": "passed", + "Error": null, + "RootWait": 0, + "RootExitCode": 0, + "JobBeforeActive": 0, + "JobBeforeTotal": 28, + "JobAfterActive": 0, + "ExecutionTimeoutMilliseconds": 30000, + "CreatedSuspended": true, + "RootHandleIdentityVerified": true, + "RootAssignedBeforeResume": true, + "KillOnCloseVerified": true, + "BreakawayDenied": true, + "TimedOut": false, + "TerminationRequested": false, + "RootReaped": true, + "MembersStable": true, + "CleanupVerified": true + }, + "product_observation": { + "schema": "termforge-qt-clean-runtime-smoke-v1", + "case_id": "crt-corrected-smoke-0", + "source_commit": "cf8b40b2e44f9e475cfc42b5008d46c670ff1756", + "session_id": 2, + "qt_platform": "windows", + "started": true, + "exited": true, + "product_exit": 0, + "forced_root_termination": false, + "sample": { + "schema": "termforge-qt-cpp-smoke-v1", + "qt": "6.10.3", + "core": "cpp", + "backend": "fixed-microsoft-conpty", + "arithmetic": 750, + "child_exit": 37, + "cleanup_verified": true, + "image_changed": true, + "startup_error_visible": true, + "manual_close_reclaimed": true, + "tabs": { + "arithmetic": [ + 750, + 427 + ], + "survivor_after_close": 778, + "survivor_after_startup_failure": 147, + "natural_exit": 41, + "input_isolation": true, + "answer_ink_visible": true, + "independent_close": true, + "startup_error_visible": true, + "window_close_reclaimed": true, + "all_exited_status": 41, + "failed_only_kept_visible": true + }, + "app_exec": { + "window_close": true, + "last_tab_close": true, + "failed_only_close": true, + "completed_tab_close": true, + "cleanup_before_quit": true, + "manual_status": 0 + }, + "presented_done": null + }, + "stderr": "Qt application startup\r\ncmd started\r\n", + "presented_done": null + }, + "request_stderr_empty": true + }, + "first_missing_dll_name": null, + "integration": { + "source_commit": "c5a47adc42db592c4c1966062cbd06b12f0f88ed", + "source_tree": "018ed28bf1c92410806f83aceb3212139679ef75", + "base_commit": "4f34146ab81f5b156537b080df2156f484793cc4", + "source_clean_at_packaging": true, + "package": { + "runtime_files": 78, + "zip_bytes": 47421747, + "zip_sha256": "e1333a5128607539a0601b0b46e950a233411a4243ab1b8a71dd930a7bf9c5d6", + "source_commit": "c5a47adc42db592c4c1966062cbd06b12f0f88ed" + }, + "configuration": { + "generator": "Visual Studio 17 2022", + "compiler_self_version": "19.42.34433.0", + "vc_tools_directory_version": "14.42.34433", + "windows_sdk": "10.0.26100.0", + "cmake": "3.31.0", + "python": "3.12.10", + "build": "Release", + "architecture": "x64", + "qt_sdk_target": "win64_msvc2022_64", + "qt_shell": true, + "candidate_adapter": false + }, + "preparation": { + "schema": "termforge-qt-build-preparation-v1", + "status": "passed", + "qt_version": "6.10.3", + "qt_architecture": "win64_msvc2022_64", + "qt_archive_sha256": "4db84dee7fe3c558f242bef0a88852613af76580dc6d2b24596479f47004dad7", + "input_manifests": { + "qt": "2796294f254f7fe0370be99d2de8f7745734c7352ac2648b1f8d9a8fab5ad2cd", + "conpty": "e75e522a3355c0a66c6d60cafa02413a83d8757262747f650b77c959c09ed439", + "msvc_runtime": "154176c8b4ae6dd57fce453e2c2002ff484344b39451fa9880b07db4794f3758" + }, + "preparation_script_sha256": "1e89ff4340cfbab5edd7d45e9637fcd34ab98f0bac19061d053efa0f23ef37b3", + "sdk_transformation": "bin/qt.conf contains [Paths] and Prefix=..; no binary or .prl patch", + "sdk": { + "files": 4358, + "tree_sha256": "a35ab6fe76b62e4d9bd6d3c6b0d476c63583070cea5c9118ef5bb02042ffe266" + }, + "conpty_version": "1.25.260930003", + "conpty_package_sha256": "6d6f8b008c655d814c498d8205d4012dcd4d0b6dfc1096461d0a185d1e3caf03", + "conpty_files": { + "conpty.dll": "feeef341d891643c62d30b6b07800bc70f0bc148f44cb8c3bee84aa557ae805a", + "OpenConsole.exe": "3d66b23d0a71bb8eed2b77edc8b9df9bf54ce6c8fb74c863a30e760997f80586" + }, + "msvc_runtime": { + "version": "14.51.36247.0", + "architecture": "windows-x64", + "package_sha256": "843068991daaa1f73ad9f6239bce4d0f6a07a51f18c37ea2a867e9beca71295c", + "files": { + "concrt140.dll": "54716f0738af891f283d213b5c8d11b25896bb8ee3097d301eae718560cf974e", + "msvcp140_1.dll": "206c931bf90fdad8816de3b5e2ef80b2bcaa9406c89ecc05fe6fddffe251e982", + "msvcp140_2.dll": "d50d7883f20d1dc6191768d3746f52dd9cac89c346ffaed5be1f110c2f34a838", + "msvcp140_atomic_wait.dll": "3d0cbfaa1bf3eecf5a3f4491d2960ee803cb994f30292c6adc4a07c498f60e2b", + "msvcp140_codecvt_ids.dll": "8a65c7596ef2e6938731f5a1058e7e40145b6d97967cc649231a076b9a608d78", + "msvcp140.dll": "7c26614e1d733892c2deac7e245ce115504b1d80592dd0a01b08e3e5a55f89ca", + "vccorlib140.dll": "09f93d5ff96ae09767f3e1af3cdd43a5a58f2598654fc63089429bb6f9f4737f", + "vcruntime140_1.dll": "a7146c08f89fe5b04541ab507cdb59ff7b44534d4ba3c668a426c6450a03434e", + "vcruntime140_threads.dll": "40f39e8cee5f5a531b4010e18b807e8fe265b908dc58f959ecb7ebc6ea6cb11a", + "vcruntime140.dll": "d1f4225df2cd877dbf130d5668a021dce3f94118455ff5ec952061c30afc9ce7" + }, + "license_sha256": "08651651a7602fc7c0e2763de0fde1ff9f868df2780597cd1775ee9d6441c783", + "notice_sha256": "510781c94971ea19adae55d2c42207d942b0646deee29d5c401f189cc25d415f" + }, + "scope": "Windows local/CI build inputs only; no product package or platform acceptance" + }, + "cmake_required_input": { + "schema": "termforge-crt-cmake-required-input-v1", + "source_commit": "c5a47adc42db592c4c1966062cbd06b12f0f88ed", + "configure_exit": 1, + "expected_rejection": true + }, + "no_relink_repair": { + "source_commit": "c5a47adc42db592c4c1966062cbd06b12f0f88ed", + "exe_sha256_before": "155a05d1a90b9498ee190b08e4b5d02c54772753a81aab30fa6c8cf6faaf5d41", + "exe_sha256_after": "155a05d1a90b9498ee190b08e4b5d02c54772753a81aab30fa6c8cf6faaf5d41", + "exe_unchanged": true, + "restored_crt_sha256": "d1f4225df2cd877dbf130d5668a021dce3f94118455ff5ec952061c30afc9ce7", + "missing_before_build": true, + "build_exit": 0, + "restored_expected": true, + "schema": "termforge-crt-no-relink-repair-v1" + }, + "tool_tests": { + "normal": { + "passed": 27, + "total": 27 + }, + "optimized": { + "passed": 27, + "total": 27 + }, + "windows_junction_negative_tests": 5, + "new_crt_public_cli_subprocess_tests": 21, + "existing_main_cli_boundary_tests": 6 + }, + "local_offscreen_ctest": { + "passed": 1, + "total": 1, + "exit": 0, + "job": { + "active": 0, + "total": 26, + "terminated": 0 + }, + "presented_done": null + }, + "guest_native_load": { + "observation_script_exit": 0, + "request_status": "passed", + "session_id": 2, + "job_supervision": { + "Schema": "termforge-owned-vm-request-v2", + "Status": "passed", + "Error": null, + "RootWait": 0, + "RootExitCode": 0, + "JobBeforeActive": 0, + "JobBeforeTotal": 7, + "JobAfterActive": 0, + "ExecutionTimeoutMilliseconds": 25000, + "CreatedSuspended": true, + "RootHandleIdentityVerified": true, + "RootAssignedBeforeResume": true, + "KillOnCloseVerified": true, + "BreakawayDenied": true, + "TimedOut": false, + "TerminationRequested": false, + "RootReaped": true, + "MembersStable": true, + "CleanupVerified": true + }, + "product_observation": { + "schema": "termforge-qt-native-load-v1", + "case_id": "crt-integrated-load-0", + "source_commit": "c5a47adc42db592c4c1966062cbd06b12f0f88ed", + "runtime_file_count": 78, + "session_id": 2, + "system_crt_before": { + "msvcp140_2.dll": false, + "msvcp140_1.dll": false, + "vcruntime140.dll": false, + "vcruntime140_1.dll": false, + "msvcp140.dll": false + }, + "vc_redist_before": [], + "vc_redist_after": [], + "system_crt_after": { + "msvcp140_2.dll": false, + "msvcp140_1.dll": false, + "vcruntime140.dll": false, + "vcruntime140_1.dll": false, + "msvcp140.dll": false + }, + "created": true, + "contained_before_resume": true, + "initial_wait": 258, + "initial_exit_code": 259, + "initial_exit_hex": "0x00000103", + "window_classes": [ + "_q_titlebar", + "Qt6103QWindowIcon", + "Qt6103ThemeChangeObserverWindow", + "Qt6103ScreenChangeObserverWindow", + "MSCTFIME UI", + "IME" + ], + "visible_window_count": 1, + "final_wait": 0, + "final_exit_code": 0, + "forced_termination": false, + "handles_closed": true, + "presented_done": null + }, + "request_stderr_empty": true + }, + "guest_windows_cmd": { + "observation_script_exit": 0, + "request_status": "passed", + "session_id": 2, + "job_supervision": { + "Schema": "termforge-owned-vm-request-v2", + "Status": "passed", + "Error": null, + "RootWait": 0, + "RootExitCode": 0, + "JobBeforeActive": 0, + "JobBeforeTotal": 28, + "JobAfterActive": 0, + "ExecutionTimeoutMilliseconds": 30000, + "CreatedSuspended": true, + "RootHandleIdentityVerified": true, + "RootAssignedBeforeResume": true, + "KillOnCloseVerified": true, + "BreakawayDenied": true, + "TimedOut": false, + "TerminationRequested": false, + "RootReaped": true, + "MembersStable": true, + "CleanupVerified": true + }, + "product_observation": { + "schema": "termforge-qt-clean-runtime-smoke-v1", + "case_id": "crt-integrated-smoke-0", + "source_commit": "c5a47adc42db592c4c1966062cbd06b12f0f88ed", + "session_id": 2, + "qt_platform": "windows", + "started": true, + "exited": true, + "product_exit": 0, + "forced_root_termination": false, + "sample": { + "schema": "termforge-qt-cpp-smoke-v1", + "qt": "6.10.3", + "core": "cpp", + "backend": "fixed-microsoft-conpty", + "arithmetic": 750, + "child_exit": 37, + "cleanup_verified": true, + "image_changed": true, + "startup_error_visible": true, + "manual_close_reclaimed": true, + "tabs": { + "arithmetic": [ + 750, + 427 + ], + "survivor_after_close": 778, + "survivor_after_startup_failure": 147, + "natural_exit": 41, + "input_isolation": true, + "answer_ink_visible": true, + "independent_close": true, + "startup_error_visible": true, + "window_close_reclaimed": true, + "all_exited_status": 41, + "failed_only_kept_visible": true + }, + "app_exec": { + "window_close": true, + "last_tab_close": true, + "failed_only_close": true, + "completed_tab_close": true, + "cleanup_before_quit": true, + "manual_status": 0 + }, + "presented_done": null + }, + "stderr": "Qt application startup\r\ncmd started\r\n", + "presented_done": null + }, + "request_stderr_empty": true + }, + "post_run": { + "vc_redist_products_after": [], + "status": "passed", + "system_crt_after": { + "msvcp140_2.dll": false, + "msvcp140_1.dll": false, + "vcruntime140.dll": false, + "vcruntime140_1.dll": false, + "msvcp140.dll": false + }, + "completed_requests": [ + { + "id": "crt-original-load-0", + "script_sha256": "99880de239d4e33da59273f32409a80276d9e351bd1d29a32e2177524149d7a7", + "job_after_active": 0, + "root_reaped": true, + "cleanup_verified": true, + "protocol": "termforge-owned-vm-request-v2" + }, + { + "id": "crt-corrected-load-0", + "script_sha256": "b618fb0bc9e03fdf8b328a437b3fe1287cdf3461ac68e3f513d08d4adb8f1a33", + "job_after_active": 0, + "root_reaped": true, + "cleanup_verified": true, + "protocol": "termforge-owned-vm-request-v2" + }, + { + "id": "crt-corrected-smoke-0", + "script_sha256": "ef94c5ed8d930d4821e759f0d7b34c2965dac4af334ede84a149a06b4f9b7436", + "job_after_active": 0, + "root_reaped": true, + "cleanup_verified": true, + "protocol": "termforge-owned-vm-request-v2" + }, + { + "id": "crt-integrated-load-0", + "script_sha256": "f23e7b3220739ad1f3fda9374ada3f2a54999a860733ad18561918ebef0a4dde", + "job_after_active": 0, + "root_reaped": true, + "cleanup_verified": true, + "protocol": "termforge-owned-vm-request-v2" + }, + { + "id": "crt-integrated-smoke-0", + "script_sha256": "44b1cea2c3c83481616f34637f436277137f6dc050075a7217ba47e3149f4f6b", + "job_after_active": 0, + "root_reaped": true, + "cleanup_verified": true, + "protocol": "termforge-owned-vm-request-v2" + } + ], + "schema": "termforge-crt-guest-final-audit-v1", + "own_incomplete_requests": 0, + "frozen_packages": [ + { + "source_commit": "cf8b40b2e44f9e475cfc42b5008d46c670ff1756", + "case": "original", + "manifest_files_verified": 52, + "additional_crt_license_notice_verified": 0 + }, + { + "source_commit": "cf8b40b2e44f9e475cfc42b5008d46c670ff1756", + "case": "corrected", + "manifest_files_verified": 52, + "additional_crt_license_notice_verified": 24 + }, + { + "source_commit": "c5a47adc42db592c4c1966062cbd06b12f0f88ed", + "case": "integration", + "manifest_files_verified": 78, + "additional_crt_license_notice_verified": 0 + } + ], + "pending_script_count": 0 + } + }, + "observed_failure_boundaries": [ + { + "case": "original frozen product", + "product_exit_hex": "0xC0000135", + "visible_windows": 0 + }, + { + "case": "first corrected-package preparation helper", + "script_exit": 1, + "reason": "PowerShell 5.1 PSObject.Properties.Count does not yield the required array count; fixed using @(...).Count before copying or launching" + }, + { + "case": "initial deployment test setup", + "test_errors": 1, + "reason": "New tool file did not exist; not counted as a product or behavior red" + }, + { + "case": "deployment CLI behavior red", + "failed": 1, + "reason": "Stub explicitly returned unimplemented instead of deployment success" + }, + { + "case": "junction inventory red", + "failed": 1, + "reason": "Old CLI wrongly inventoried sibling directory through NTFS junction" + }, + { + "case": "junction source red", + "failed": 2, + "reason": "Old verify/deploy resolved source junction before identity checks" + }, + { + "case": "CMake missing explicit CRT directory", + "configure_exit": 1, + "reason": "Required input rejected" + } + ], + "request_script_identities": { + "native-load-original.ps1": { + "source_sha256": "48f9d7a0784c2cbddace53ac2c1fbf14fa57a9532e3ddb13c47b08ac9b31205d", + "staged_request_script_sha256": "99880de239d4e33da59273f32409a80276d9e351bd1d29a32e2177524149d7a7" + }, + "native-load-corrected.ps1": { + "source_sha256": "0964aff7520fa12d0103ce0367f77eb170358440d03ea31c97b305b96da096b4", + "staged_request_script_sha256": "b618fb0bc9e03fdf8b328a437b3fe1287cdf3461ac68e3f513d08d4adb8f1a33" + }, + "native-smoke-corrected.ps1": { + "source_sha256": "61a356b1d13ea48f3d1262d46fa44c739308a5de4bb093042ba1fb7de3fc189f", + "staged_request_script_sha256": "ef94c5ed8d930d4821e759f0d7b34c2965dac4af334ede84a149a06b4f9b7436" + }, + "native-load-integrated.ps1": { + "source_sha256": "1de970780aea397cb9ebafafbc709bd007e7a89e22838cef9ac7f52f300814b5", + "staged_request_script_sha256": "f23e7b3220739ad1f3fda9374ada3f2a54999a860733ad18561918ebef0a4dde" + }, + "native-smoke-integrated.ps1": { + "source_sha256": "592b370c807ca94b8ae187ed748818fe904301aca4b070ac439743e33a428aae", + "staged_request_script_sha256": "44b1cea2c3c83481616f34637f436277137f6dc050075a7217ba47e3149f4f6b" + } + }, + "private_raw_records": [ + { + "name": "01-cli-red.log", + "bytes": 1168, + "sha256": "658355c75996559ee166a013cb02c490acd86284309aeea66381323f093cf079", + "published": false + }, + { + "name": "02-cli-green.log", + "bytes": 316, + "sha256": "5eb737e89bdea1eb350fb331a4bc604f802e0bf9c58e969da3ef600dd85a38aa", + "published": false + }, + { + "name": "03-cli-optimized-tests.log", + "bytes": 2368, + "sha256": "ffe071b3ccccc49f128cc7d75dc136c7e1bcc9bcabe5d5f80894989e943529ae", + "published": false + }, + { + "name": "03-cli-tests.log", + "bytes": 2368, + "sha256": "09cbd6171036704f56b98a251729eb11da55e50647685529fc7eb6033f9bb8a5", + "published": false + }, + { + "name": "04-real-preparation.json", + "bytes": 1711, + "sha256": "887f480a116efa1f08ecc84ba12c5722d0afeb69fb12e9914f91d1bdc40b0161", + "published": false + }, + { + "name": "04-real-preparation.log", + "bytes": 1739, + "sha256": "d419ce15793947ace1d3a8e935b2514773661f5c5324a285ea503a5b050aa635", + "published": false + }, + { + "name": "05-deploy-red.log", + "bytes": 1129, + "sha256": "7fb752e78e62d6d997bdaebf9b72797e9ae3a9e5e8e01feab9bb09aa82e44ae9", + "published": false + }, + { + "name": "06-deploy-behavior-red.log", + "bytes": 979, + "sha256": "20d7b7577ed8c21da208c64b7c72e46afcb76fa789c4ebe17e778b4708d98a8d", + "published": false + }, + { + "name": "07-deploy-green.log", + "bytes": 1594, + "sha256": "fabbcc1ced959d858ac84ab6a2a38331525eb21e2d4f5680afa8602c579e8b65", + "published": false + }, + { + "name": "08-original-guest-request.json", + "bytes": 2466, + "sha256": "936ec96edb7e7fc83fe390313071a4e5bc3d14e410bbe27e1d0bec877f3c2a88", + "published": false + }, + { + "name": "09-integrated-build.log", + "bytes": 8237, + "sha256": "31aba2115a2e4a4a4a18837747709769b67b16494481180e4b91112ae10b3d63", + "published": false + }, + { + "name": "10-corrected-package-guest.json", + "bytes": 801, + "sha256": "9ed471447e12ad0663a3c93e169787919c80f44f623c103d9f6e7aec325c20b8", + "published": false + }, + { + "name": "11-corrected-package-guest.json", + "bytes": 267, + "sha256": "71e134f27bb80cd221b45f00b95b937f7e336a59dbc330638113bcc81163f3a0", + "published": false + }, + { + "name": "12-corrected-guest-request.json", + "bytes": 3268, + "sha256": "fac7515b476ca244dbc26422a54c71217e8c0cf5bd5f18b674c4d53c99cfa657", + "published": false + }, + { + "name": "13-integrated-ctest.log", + "bytes": 2413, + "sha256": "159b31310a50d2986ea96f4074371679667729fa9f2bb32b97b49ca7b31c0281", + "published": false + }, + { + "name": "14-corrected-smoke-guest.json", + "bytes": 3952, + "sha256": "a2d8ef93eb09c48e1cf52fcac5044d711214ceff1b40a1bf64711651e16ae278", + "published": false + }, + { + "name": "15-cli-tests.log", + "bytes": 3859, + "sha256": "2f17bb4fe7d456deb1506d79346605a1b26bca649ddc1c6f515671864314ca35", + "published": false + }, + { + "name": "16-cmake-missing-red.log", + "bytes": 1399, + "sha256": "1587d2be423421e0d4ffc70b2d2c23b1bacb05e814c797559cc5fa6eb72e69c3", + "published": false + }, + { + "name": "17-full-preparation.json", + "bytes": 2584, + "sha256": "187428835c2d200a8b5a94ee341b6a0476bae19a13f8442caad3347cf1a12215", + "published": false + }, + { + "name": "17-full-preparation.log", + "bytes": 2628, + "sha256": "6b0085f58fbb5cb7e63b0b616b4c7cd6226d5b9015799fad58c52bc11cb7c1f0", + "published": false + }, + { + "name": "18-original-pe-imports.json", + "bytes": 32794, + "sha256": "68c00d3f371181df4e632a886b103ae656cff67b4c12f94eb17c775b3675a1bc", + "published": false + }, + { + "name": "19-final-configure.log", + "bytes": 1225, + "sha256": "a6d573b479de86796d8441d80e6bee61d42badf7d8bbfbdcacf87b25c3d5486c", + "published": false + }, + { + "name": "20-final-build.log", + "bytes": 8101, + "sha256": "e61d5d0e0c3fb148306bf0c4b5df1cb5d537fa98c8a0d60f4e10973f8a68f511", + "published": false + }, + { + "name": "21-final-ctest.log", + "bytes": 2325, + "sha256": "735ba4fff0192f5050a48bdced1f5121d685bfb7e557a9d445de47bd5f4628b6", + "published": false + }, + { + "name": "22-integration-package-identity.json", + "bytes": 204, + "sha256": "50b656dfbfbe371d25bf34413681ec871c987074c999b1e006a1cf6daab85d29", + "published": false + }, + { + "name": "23-integrated-product-pe-imports.json", + "bytes": 20192, + "sha256": "9a33d1140ec6cab6083023c192c4d2f95caddb0edac8e8136b53aa0a1fcaa6e6", + "published": false + }, + { + "name": "24-integrated-smoke-pe-imports.json", + "bytes": 21159, + "sha256": "93acb1283a0fb15cf93d2800ec40c796a2bf62667bc7c53ad0118f0f34482dac", + "published": false + }, + { + "name": "25-before-qt-environment.json", + "bytes": 3868, + "sha256": "95531110635f3c2291b4a7a88068516a7e594ef1b89e6c4eea64eb8ddb98c264", + "published": false + }, + { + "name": "26-integrated-load-guest.json", + "bytes": 3270, + "sha256": "9add442426452a37e77ab4b65831c6b5f5fa5d24ef6fd93221b177f78a15d39d", + "published": false + }, + { + "name": "26a-integrated-transfer-unpack.json", + "bytes": 408, + "sha256": "6f34895b90ef88e9ddaa9cda85eec9c9f8c48f62ec0147c36635294223f56328", + "published": false + }, + { + "name": "27-integrated-smoke-guest.json", + "bytes": 3954, + "sha256": "c005b9ad14a9cc9e6841f90c03f2801581db639754de745feb534edadedc9528", + "published": false + }, + { + "name": "28-guest-final-audit-envelope.json", + "bytes": 4750, + "sha256": "7ed6f9ec6249d6f03b9deaa5f6a172c4ff7f5fb66bfe9cd7094a50167439be79", + "published": false + }, + { + "name": "28-guest-final-audit.json", + "bytes": 4356, + "sha256": "28741c93c8c951ef95d2a0d36f6a8b8721f0a17bb005b0f6000634d6fd97f59a", + "published": false + }, + { + "name": "29-cmake-missing-final.json", + "bytes": 178, + "sha256": "cd777219c1d202e1d23adf292cf26e5f875314e1d7bedc25ea84702f6d3dd40b", + "published": false + }, + { + "name": "29-cmake-missing-final.log", + "bytes": 457, + "sha256": "965371b9238e8f6a0146e248b0a4baf55179906a37ed1808d8a840e7c20807bf", + "published": false + }, + { + "name": "30-no-relink-repair.json", + "bytes": 505, + "sha256": "3f5478d5d39667d654628b252ca3a2bb3a1b8ef99a4f7fdf5d6d6748f7073d63", + "published": false + }, + { + "name": "30-no-relink-repair.log", + "bytes": 267, + "sha256": "ad4c017785056706285ac06e6d8bc9d90940d32f2c2383414aed7fdcf895752d", + "published": false + }, + { + "name": "31-public-evidence-check.json", + "bytes": 244, + "sha256": "96f71def838e027fd94d6d22485b509589a8fc96937bb302f8509553e880022e", + "published": false + }, + { + "name": "final-audit.ps1", + "bytes": 3413, + "sha256": "a3c46ff0148d1e08abbaa0b4444b7c027e2875aad19491dc2086cb7a8542688e", + "published": false + }, + { + "name": "junction-green.log", + "bytes": 293, + "sha256": "467fbbfbf4d4b67794f25289fdcebeebc4a83bf9dc78e2b61cb9dba5790a18ad", + "published": false + }, + { + "name": "junction-red.log", + "bytes": 1194, + "sha256": "50cfabe6278cf1406f3ae29d334b9590dafc96b536fbfa30f09fe1049137f267", + "published": false + }, + { + "name": "junction-root-green.log", + "bytes": 293, + "sha256": "cf76763934107814b4e2ca01267a56783c68bdc0a2a8a6bf9d2ab824ba325d30", + "published": false + }, + { + "name": "junction-root-red.log", + "bytes": 2412, + "sha256": "db642dab0365ca8be704aff989089a5e5e2ababa2c74d1470111b21dd56b0a75", + "published": false + }, + { + "name": "junction-suite-green.log", + "bytes": 4822, + "sha256": "5875a898439cdd78630abf1681bfeae6352c78f8c8d50528179ebd2e85b81cae", + "published": false + }, + { + "name": "junction-suite-optimized-green.log", + "bytes": 4822, + "sha256": "2d2856790b46bb39287623146dacc83375d5372a6c41023ff0646cb879c0fa0a", + "published": false + }, + { + "name": "native-load-corrected.ps1", + "bytes": 7267, + "sha256": "0964aff7520fa12d0103ce0367f77eb170358440d03ea31c97b305b96da096b4", + "published": false + }, + { + "name": "native-load-integrated.ps1", + "bytes": 7275, + "sha256": "1de970780aea397cb9ebafafbc709bd007e7a89e22838cef9ac7f52f300814b5", + "published": false + }, + { + "name": "native-load-original.ps1", + "bytes": 6578, + "sha256": "48f9d7a0784c2cbddace53ac2c1fbf14fa57a9532e3ddb13c47b08ac9b31205d", + "published": false + }, + { + "name": "native-smoke-corrected.ps1", + "bytes": 2247, + "sha256": "61a356b1d13ea48f3d1262d46fa44c739308a5de4bb093042ba1fb7de3fc189f", + "published": false + }, + { + "name": "native-smoke-integrated.ps1", + "bytes": 2255, + "sha256": "592b370c807ca94b8ae187ed748818fe904301aca4b070ac439743e33a428aae", + "published": false + }, + { + "name": "prepare-corrected.ps1", + "bytes": 1629, + "sha256": "f75aecacabafb61ce5ab556154928b0cdfff9e33dcc9522933f7a56150f7f62f", + "published": false + }, + { + "name": "unpack-integrated.ps1", + "bytes": 1375, + "sha256": "091804fbceaf6e452c5d0e759c3a41de0af1a30d458ac69a10f7ca101782acf9", + "published": false + }, + { + "name": "unpack-original.ps1", + "bytes": 1375, + "sha256": "5aa964bfe6be201ec7abd36422ec67aefb4722a9c59b4b19f36832b8db5cf54e", + "published": false + } + ], + "public_evidence_check": { + "schema": "termforge-crt-public-evidence-check-v1", + "status": "passed", + "public_files": 8, + "staged_script_hashes_checked": 5, + "runtime_files_checked": 76, + "pe_files_checked": 104, + "original_runtime_files_checked": 52 + }, + "limitations": [ + "No complete R2 release or Qt/third-party redistribution audit", + "No physical keyboard, IME, Find, rename, real cross-DPI product workflow or presented_done acceptance", + "No numeric performance tolerance or performance-equivalence claim", + "Static imports are an inventory, not proof of dynamic behavior", + "Original loader status does not identify which CRT DLL the loader encountered first", + "New-source integration success is separate from the unchanged-cf8 CRT-only causal comparison", + "CI and two-axis review tracked in the PR, not retroactively claimed by this local record" + ] +} diff --git a/src/qt/README.md b/src/qt/README.md index 34fc56fe..b7f860d1 100644 --- a/src/qt/README.md +++ b/src/qt/README.md @@ -10,20 +10,21 @@ ## 构建与运行 -按 [Qt 依赖说明](../../third_party/qt/README.md)准备 Qt 6.10.3 / MSVC 2022 x64 qtbase 和固定 ConPTY 文件对: +按 [Qt 依赖说明](../../third_party/qt/README.md)准备 Qt 6.10.3 / MSVC 2022 x64 qtbase、固定 ConPTY 文件对和 [app-local 微软 CRT](../../third_party/msvc_runtime/README.md): ```powershell cmake -S . -B build/qt-cpp -G "Visual Studio 17 2022" -A x64 ` -DTERMFORGE_BUILD_QT_SHELL=ON ` -DTERMFORGE_BUILD_CANDIDATE_ADAPTER=OFF ` -DQt6_DIR="/lib/cmake/Qt6" ` - -DTERMFORGE_CONPTY_BACKEND_DIR="" + -DTERMFORGE_CONPTY_BACKEND_DIR="" ` + -DTERMFORGE_MSVC_RUNTIME_DIR="" cmake --build build/qt-cpp --config Release --target termforge_qt_shell qt_cpp_shell_smoke build/qt-cpp/qt-bin/Release/termforge_qt_shell.exe ctest --test-dir build/qt-cpp -C Release -R '^qt_cpp_shell$' --output-on-failure ``` -产品入口缺少固定包时明确报错;启动失败保留可关闭的错误窗口。随目录保留 Qt 动态运行库、平台插件、`conpty-backend/` 与 `assets/fonts/`。当前只是本地构建输出,Qt/第三方与运行库的完整分发审计、干净机器验证及产品打包尚未完成。 +固定 ConPTY/CRT 输入缺失或篡改时构建明确失败;实际工具集更新到固定 CRT 之外时须重新审查依赖。产品中的 shell 启动失败保留可关闭的错误窗口。随目录保留 Qt 动态运行库、平台插件、`conpty-backend/`、`assets/fonts/`、十个固定 CRT DLL 及其原许可/NOTICE;每次构建重新校验并部署 CRT,不运行安装器、不修改 System32。最终目录用 `tools/msvc_runtime.py manifest` 记录全部文件。当前只是本地构建输出,Qt/第三方的完整分发审计及产品打包尚未完成。 ## 独立验证面 diff --git a/third_party/msvc_runtime/NOTICE.txt b/third_party/msvc_runtime/NOTICE.txt new file mode 100644 index 00000000..27dc42cc --- /dev/null +++ b/third_party/msvc_runtime/NOTICE.txt @@ -0,0 +1,10 @@ +Microsoft Visual C++ v14 Runtime 14.51.36247.0, Windows x64 +Copyright Microsoft Corporation. All rights reserved. + +These unmodified runtime files retain Microsoft's license terms and are not +covered by TermForge's MIT license. The accompanying +LICENSE-MICROSOFT-VC-REDIST.docx is the original Microsoft license document. + +License terms: https://aka.ms/VCRedistLicense +Redistribution: https://learn.microsoft.com/en-us/cpp/windows/redistributing-visual-cpp-files +Distributable code list: https://learn.microsoft.com/en-us/visualstudio/releases/2022/redistribution diff --git a/third_party/msvc_runtime/README.md b/third_party/msvc_runtime/README.md new file mode 100644 index 00000000..e99418ff --- /dev/null +++ b/third_party/msvc_runtime/README.md @@ -0,0 +1,38 @@ +# 固定的 Microsoft Visual C++ Runtime + +Qt/C++ Windows x64 入口随应用目录部署固定的 **14.51.36247.0** 桌面 CRT。它不安装到 System32,不修改宿主的运行库,也不在用户启动时下载或回退系统 CRT。本目录仅提交来源、原始内容哈希、提取协议和自有 NOTICE;不提交微软安装包、DLL 或许可原件。 + +## 官方来源与许可 + +[manifest.json](manifest.json) 固定微软官方 `VC_redist.x64.exe` 的具体 download.visualstudio.microsoft.com 地址、大小和 SHA-256,不把会变化的 aka.ms 地址当作版本身份。取得的安装包 Authenticode 状态为 Valid,签名者 Microsoft Corporation;所选 DLL 为 AMD64、文件版本 14.51.36247.0,微软签名有效。准备工具通过固定包的完整哈希绑定这批已核对字节,不把本机动态证书验证当作离线准备的额外网络依赖。 + +原始许可从 [Microsoft Visual C++ v14 Runtime 许可页面](https://aka.ms/VCRedistLicense)所链接的官方 DOCX 获取,按大小和 SHA-256 核对后原样复制为 `LICENSE-MICROSOFT-VC-REDIST.docx`,同时附带 [NOTICE.txt](NOTICE.txt)。微软文件保留其原许可,不归 TermForge 的 MIT 许可所有。[微软分发说明](https://learn.microsoft.com/en-us/cpp/windows/redistributing-visual-cpp-files?view=msvc-170)及 [Visual Studio 2022 可分发代码清单](https://learn.microsoft.com/en-us/visualstudio/releases/2022/redistribution)规定了许可用户及可分发文件范围;最终分发者仍须符合自己的 Visual Studio 许可条件。此项依赖准备不是完整产品分发条件的验收。 + +## 无安装提取与固定文件集 + +`python -m tools.prepare_qt_build` 在准备 Qt 和 ConPTY 的同时准备 `local/qt-build-deps/crt/`。已有 SDK 时可使用: + +```powershell +python -m tools.prepare_qt_build --crt-only --out local/crt-dependencies +``` + +`--offline` 仅接受缓存中身份正确的固定安装包及许可文档;缺失或篡改明确失败,不覆盖坏缓存。输出目录必须不存在。工具按 manifest 验证安装包、附加 CAB 的固定偏移/长度/哈希、内部 `a4` CAB、每个指定成员的大小/哈希及 AMD64 PE 标识,然后原样提取。使用已有 CMake/libarchive 的 CAB 读取器,不执行 EXE/MSI,也不要求新增 7-Zip 或安装工具。 + +固定文件集为 `concrt140.dll`、`msvcp140.dll`、`msvcp140_1.dll`、`msvcp140_2.dll`、`msvcp140_atomic_wait.dll`、`msvcp140_codecvt_ids.dll`、`vccorlib140.dll`、`vcruntime140.dll`、`vcruntime140_1.dll`、`vcruntime140_threads.dll`。同一 CAB 中的 OpenMP `vcamp140.dll` 和 `vcomp140.dll` 不部署;不携带 MFC、debug、ARM64 或 Windows 自带 UCRT。 + +## 构建与完整运行时身份 + +Qt 入口要求绝对路径 `-DTERMFORGE_MSVC_RUNTIME_DIR=/crt`。配置及每次目标构建均重新检查固定的十个 DLL、原许可和 NOTICE,任何缺失/篡改均失败;目标无须重新链接也会修复输出目录中的 CRT。原 Qt 和应用文件不被替换,仍使用 `windeployqt --no-compiler-runtime` 部署 Qt。 + +[微软的兼容合同](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170)要求 runtime 至少与构建工具同新。CMake 使用实际选中的 VC Tools 目录版本(例如本机 `14.42.34433`、已观察的 hosted `14.51.36231`)与固定上限 `14.51.36247` 比较;无法识别或工具集更新时失败。编译器自己的 `19.x` 版本不能转换推测成 `14.x`。Qt 另保持已固定的官方 MSVC 2022 x64 二进制来源,其兼容性由独立构建和运行证据验证。 + +构建成功后,为两个入口各生成完整运行时清单: + +```powershell +python tools/msvc_runtime.py manifest --directory build/qt-cpp/qt-bin/Release --executable termforge_qt_shell.exe +python tools/msvc_runtime.py manifest --directory build/qt-cpp/qt-smoke-bin/Release --executable qt_cpp_shell_smoke.exe +``` + +`runtime-manifest.json` 记录目录内全部文件的相对路径、大小和 SHA-256,以及固定 CRT manifest 身份;不包含本地绝对路径或凭据。清单排除自身,必须在最终构建/部署完成后生成,后续改动须重新生成;它不替代对 EXE 源码、构建配置或其他第三方许可的记录。单文件部署使用原子替换,整目录不承诺事务性;未成功完成部署的目录不得作为包使用。 + +app-local 方式不会通过系统的运行库安装自动获得更新,固定版本的升级、重新验证与重新发包由项目维护。当前只闭合这批固定 Qt/C++ 入口的运行库依赖,不表示正式发布包、完整 R2、跨 DPI 或物理呈现验收。 diff --git a/third_party/msvc_runtime/manifest.json b/third_party/msvc_runtime/manifest.json new file mode 100644 index 00000000..d579ce65 --- /dev/null +++ b/third_party/msvc_runtime/manifest.json @@ -0,0 +1,95 @@ +{ + "schema": "termforge-msvc-runtime-input-v1", + "name": "Microsoft Visual C++ v14 Runtime", + "version": "14.51.36247.0", + "architecture": "windows-x64", + "pe_machine": "0x8664", + "maximum_toolset_version": "14.51.36247", + "package": { + "archive": "vc_redist-14.51.36247-x64.exe", + "url": "https://download.visualstudio.microsoft.com/download/pr/ebdab8e5-1d7b-4d9f-a11b-cbb1720c3b12/843068991DAAA1F73AD9F6239BCE4D0F6A07A51F18C37EA2A867E9BECA71295C/VC_redist.x64.exe", + "bytes": 18731856, + "sha256": "843068991daaa1f73ad9f6239bce4d0f6a07a51f18c37ea2a867e9beca71295c" + }, + "attached_container": { + "offset": 630000, + "bytes": 18091661, + "sha256": "8b1595b5d0001e0747371ecfc2dccb604dc836fba0a778566e97a6bdb0816bb8" + }, + "runtime_cabinet": { + "member": "a4", + "bytes": 1065893, + "sha256": "6e8ee73933678c55973e83366e48e948b394c7a36743a36b7224c95de979b13f" + }, + "files": { + "concrt140.dll": { + "member": "concrt140.dll_amd64", + "bytes": 374200, + "sha256": "54716f0738af891f283d213b5c8d11b25896bb8ee3097d301eae718560cf974e" + }, + "msvcp140_1.dll": { + "member": "msvcp140_1.dll_amd64", + "bytes": 35768, + "sha256": "206c931bf90fdad8816de3b5e2ef80b2bcaa9406c89ecc05fe6fddffe251e982" + }, + "msvcp140_2.dll": { + "member": "msvcp140_2.dll_amd64", + "bytes": 274872, + "sha256": "d50d7883f20d1dc6191768d3746f52dd9cac89c346ffaed5be1f110c2f34a838" + }, + "msvcp140_atomic_wait.dll": { + "member": "msvcp140_atomic_wait.dll_amd64", + "bytes": 57792, + "sha256": "3d0cbfaa1bf3eecf5a3f4491d2960ee803cb994f30292c6adc4a07c498f60e2b" + }, + "msvcp140_codecvt_ids.dll": { + "member": "msvcp140_codecvt_ids.dll_amd64", + "bytes": 31160, + "sha256": "8a65c7596ef2e6938731f5a1058e7e40145b6d97967cc649231a076b9a608d78" + }, + "msvcp140.dll": { + "member": "msvcp140.dll_amd64", + "bytes": 643512, + "sha256": "7c26614e1d733892c2deac7e245ce115504b1d80592dd0a01b08e3e5a55f89ca" + }, + "vccorlib140.dll": { + "member": "vccorlib140.dll_amd64", + "bytes": 350648, + "sha256": "09f93d5ff96ae09767f3e1af3cdd43a5a58f2598654fc63089429bb6f9f4737f" + }, + "vcruntime140_1.dll": { + "member": "vcruntime140_1.dll_amd64", + "bytes": 50112, + "sha256": "a7146c08f89fe5b04541ab507cdb59ff7b44534d4ba3c668a426c6450a03434e" + }, + "vcruntime140_threads.dll": { + "member": "vcruntime140_threads.dll_amd64", + "bytes": 38840, + "sha256": "40f39e8cee5f5a531b4010e18b807e8fe265b908dc58f959ecb7ebc6ea6cb11a" + }, + "vcruntime140.dll": { + "member": "vcruntime140.dll_amd64", + "bytes": 178616, + "sha256": "d1f4225df2cd877dbf130d5668a021dce3f94118455ff5ec952061c30afc9ce7" + } + }, + "license": { + "archive": "Visual-C-V14-License-Redistributable_and_Runtime_ENU.docx", + "url": "https://visualstudio.microsoft.com/wp-content/uploads/2025/10/Visual-C-V14-License-Redistributable_and_Runtime_ENU.docx", + "bytes": 39553, + "sha256": "08651651a7602fc7c0e2763de0fde1ff9f868df2780597cd1775ee9d6441c783", + "deployed_name": "LICENSE-MICROSOFT-VC-REDIST.docx", + "terms_url": "https://aka.ms/VCRedistLicense", + "redistribution_url": "https://learn.microsoft.com/en-us/cpp/windows/redistributing-visual-cpp-files?view=msvc-170", + "distributable_list_url": "https://learn.microsoft.com/en-us/visualstudio/releases/2022/redistribution" + }, + "notice_sha256": "510781c94971ea19adae55d2c42207d942b0646deee29d5c401f189cc25d415f", + "acquisition_evidence": { + "authenticode_status": "Valid", + "package_signer_subject": "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US", + "package_signer_thumbprint": "1D77A9B9E8FE2075D9AD15123257FB90DB0DA4A1", + "runtime_file_versions": "14.51.36247.0", + "runtime_signer_subject": "CN=Microsoft Windows Software Compatibility Publisher, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" + }, + "scope": "Unmodified app-local desktop CRT files, extracted without running the installer; no OpenMP/MFC/debug/ARM64 runtime, global installation or startup download" +} diff --git a/third_party/qt/README.md b/third_party/qt/README.md index 7b2eddc1..afe73074 100644 --- a/third_party/qt/README.md +++ b/third_party/qt/README.md @@ -18,9 +18,9 @@ manifest 固定了 Qt 官方 Updates.xml 和原始 qtbase 7z 的 URL、大小与 python -m tools.prepare_qt_build ``` -命令读取本目录和 ConPTY 的 manifest,下载固定官方归档至忽略的 `local/qt-downloads/`,核对每个归档的大小及 SHA-256,再用 CMake 的归档读取器生成全新的 `local/qt-build-deps/qt/` SDK 与 `local/qt-build-deps/conpty/` 文件对。它核对 Qt 构建/部署工具、四个模块、两个平台插件、SDK SBOM 和实际 qmake 版本;ConPTY 只提取 manifest 命名成员并再次核对双文件。SDK 只用于构建,没有全局注册或环境修改。 +命令读取本目录、ConPTY 和 [Microsoft CRT](../msvc_runtime/README.md) 的 manifest,下载固定官方输入至忽略的 `local/qt-downloads/`,核对每项大小及 SHA-256,再用 CMake 的归档读取器生成全新的 `local/qt-build-deps/qt/` SDK、`local/qt-build-deps/conpty/` 文件对和 `local/qt-build-deps/crt/`。它核对 Qt 构建/部署工具、四个模块、两个平台插件、SDK SBOM 和实际 qmake 版本;ConPTY 只提取命名成员并再次核对双文件;CRT 安装包仅作归档读取,固定十个 AMD64 DLL,并保留原许可和 NOTICE。没有全局注册、运行安装程序或环境修改。 -`--cache ` 可复用已经取得的原始归档;`--offline` 要求两个归档均已缓存,不允许下载。缓存身份不符直接失败,不覆盖坏文件;`--out ` 必须尚不存在,避免覆盖或混用已有 SDK。准备失败不发布半成 SDK;原始下载和临时提取目录不会进入源码。命令输出及 `local/qt-build-preparation.json` 仅包含公开版本、内容哈希、文件数和固定错误码,不含本地路径或原始日志。SDK 的树哈希绑定写入相对配置后的所有文件,不等于归档哈希。 +`--cache ` 可复用已取得的原始输入;`--offline` 要求 Qt、ConPTY、CRT 固定归档及 CRT 原许可文档四项均已缓存,不允许下载。缓存身份不符直接失败,不覆盖坏文件;`--out ` 必须尚不存在,避免覆盖或混用已有 SDK。准备失败不发布半成依赖;原始下载和临时提取目录不会进入源码。命令输出及 `local/qt-build-preparation.json` 仅包含公开版本、内容哈希、文件数和固定错误码,不含本地路径或原始日志。SDK 的树哈希绑定写入相对配置后的所有文件,不等于归档哈希。 使用已核对的 Qt SDK 和[固定微软 ConPTY 文件对](../conpty/README.md),只设置本次构建参数,无须修改全局 PATH: @@ -30,14 +30,17 @@ cmake -S . -B build/qt-cpp -G "Visual Studio 17 2022" -A x64 ` -DTERMFORGE_BUILD_CANDIDATE_ADAPTER=OFF ` -DBUILD_TESTING=ON ` -DQt6_DIR="$PWD/local/qt-build-deps/qt/lib/cmake/Qt6" ` - -DTERMFORGE_CONPTY_BACKEND_DIR="$PWD/local/qt-build-deps/conpty" + -DTERMFORGE_CONPTY_BACKEND_DIR="$PWD/local/qt-build-deps/conpty" ` + -DTERMFORGE_MSVC_RUNTIME_DIR="$PWD/local/qt-build-deps/crt" cmake --build build/qt-cpp --config Release --target termforge_qt_shell qt_cpp_shell_smoke +python tools/msvc_runtime.py manifest --directory build/qt-cpp/qt-bin/Release --executable termforge_qt_shell.exe +python tools/msvc_runtime.py manifest --directory build/qt-cpp/qt-smoke-bin/Release --executable qt_cpp_shell_smoke.exe ctest --test-dir build/qt-cpp -C Release -R '^qt_cpp_shell$' --no-tests=error --verbose ``` -`Qt6_DIR` 应包含该版本的 `Qt6Config.cmake`;正式入口缺少或不匹配固定 ConPTY 时明确失败,不回退系统版本。最小 SDK 未安装翻译,当前构建使用 `windeployqt --no-translations --no-compiler-runtime`,只形成本地构建目录,尚不是可发布的独立产品包。 +`Qt6_DIR` 应包含该版本的 `Qt6Config.cmake`;正式入口缺少或不匹配固定 ConPTY/CRT 时明确失败,不回退系统版本。CRT 按实际 VC Tools 目录版本检查兼容上限。最小 SDK 未安装翻译,当前构建使用 `windeployqt --no-translations --no-compiler-runtime` 部署 Qt,另显式复制固定 app-local CRT;Qt 默认 compiler-runtime 部署会携带待执行的安装包,不能代替这批便携目录的 DLL。完整运行时清单绑定最终目录,不代表所有许可和产品打包已验收。 -专用 [Qt C++ CI](../../.github/workflows/qt-cpp.yml) 在 `windows-2025` 中执行同一准备、两个显式 Qt target 构建,以及 `qt_cpp_shell` 的 offscreen / OwnedJob smoke。它不继承默认/系统后端或 Alacritty 作业的通过结果;runner 验证不扩大 Windows 11 x64 或其他平台的产品支持声明。自动产物仅保留路径无关的准备摘要,不上传 SDK、部署目录或原始日志;Qt 原生窗口、真实输入/DPI 和干净机器运行仍须另验。 +专用 [Qt C++ CI](../../.github/workflows/qt-cpp.yml) 在 `windows-2025` 中执行同一准备、两个显式 Qt target 构建,以及 `qt_cpp_shell` 的 offscreen / OwnedJob smoke。它不继承默认/系统后端或 Alacritty 作业的通过结果;runner 验证不扩大 Windows 11 x64 或其他平台的产品支持声明。自动产物仅保留路径无关的准备摘要和两份完整运行时清单,不上传 SDK、部署目录或原始日志;runner 的 offscreen 成功不替代隔离 Windows 的原生加载与交互验证。 CI 的 `windows-2025` 已实际解析到 `windows-2025-vs2026`,该映像没有 VS 2022 实例;因此工作流显式使用 [CMake 的 VS 2026 generator](https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2018%202026.html),要求 CMake 4.2 或更新。Qt SDK 仍是固定的 MSVC 2022 x64 包,不把 SDK 名称改称 VS 2026。[微软的二进制兼容说明](https://learn.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017?view=msvc-170)允许较新链接器消费较早工具链构建的动态库,但实际兼容性仍由这次独立构建和会话检查证明;本地 VS 2022 验证与 hosted VS 2026 验证分别记录。 diff --git a/tools/msvc_runtime.py b/tools/msvc_runtime.py new file mode 100644 index 00000000..3c37316d --- /dev/null +++ b/tools/msvc_runtime.py @@ -0,0 +1,176 @@ +"""Verify, deploy and inventory the manifest-pinned app-local Microsoft CRT. + +This build/packaging tool never downloads or installs software. Every source +file is checked before deployment; unrelated Qt and product files are retained. +""" +from __future__ import annotations + +import argparse +import hashlib +import json +import os +from pathlib import Path +import re +import stat +import tempfile + +ROOT = Path(__file__).resolve().parents[1] +MANIFEST = ROOT / 'third_party/msvc_runtime/manifest.json' + + +class RuntimeErrorCode(Exception): + """A public, path-free deployment failure code.""" + + +def digest(data): + return hashlib.sha256(data).hexdigest() + + +def toolset_version(value): + # Compiler self versions (19.x) are deliberately not interpreted as the + # selected VC/Tools/MSVC folder's redistributable toolset version (14.x). + if not re.fullmatch(r'14\.[0-9]+\.[0-9]+', value): + raise RuntimeErrorCode('crt_toolset_version') + return tuple(map(int, value.split('.'))) + + +def is_reparse_point(path): + information = path.lstat() + return (stat.S_ISLNK(information.st_mode) or + bool(getattr(information, 'st_file_attributes', 0) & + stat.FILE_ATTRIBUTE_REPARSE_POINT)) + + +def directory_argument(path): + # Preserve the caller's path until every existing node has been checked; + # resolve() would erase junctions and symbolic links from that identity. + absolute = Path(os.path.abspath(path)) + for node in reversed((absolute, *absolute.parents)): + try: + if is_reparse_point(node): + raise RuntimeErrorCode('runtime_reparse_point') + except FileNotFoundError: + # Deployment may create a missing destination below real parents. + continue + return absolute.resolve() + + +def checked_files(directory, metadata, strict=False): + """Read and validate the entire source set before a destination is changed.""" + if not directory.is_dir() or is_reparse_point(directory): + raise RuntimeErrorCode('crt_source_directory') + expected = dict(metadata['files']) + license_metadata = metadata['license'] + expected[license_metadata['deployed_name']] = license_metadata + notice = ROOT / 'third_party/msvc_runtime/NOTICE.txt' + expected['NOTICE.txt'] = {'bytes': notice.stat().st_size, + 'sha256': metadata['notice_sha256']} + if strict and {path.name for path in directory.iterdir()} != set(expected): + raise RuntimeErrorCode('crt_source_files') + contents = {} + for name, identity in expected.items(): + if Path(name).name != name or '/' in name or '\\' in name: + raise RuntimeErrorCode('crt_file_name') + path = directory / name + if not path.is_file() or is_reparse_point(path): + raise RuntimeErrorCode('crt_file_missing') + data = path.read_bytes() + if len(data) != identity['bytes'] or digest(data) != identity['sha256']: + raise RuntimeErrorCode('crt_file_identity') + contents[name] = data + return contents + + +def atomic_write(path, data): + # Each file is replaced atomically. This is not a directory transaction; + # packaging must only consume a successfully completed deployment. + candidate = None + try: + with tempfile.NamedTemporaryFile(prefix='.crt-', dir=path.parent, delete=False) as temporary: + candidate = Path(temporary.name) + temporary.write(data) + candidate.replace(path) + finally: + # Windows cannot unlink this file while its writing handle is open. + if candidate is not None: + candidate.unlink(missing_ok=True) + + +def deploy(source, destination, metadata, version): + if source == destination or source in destination.parents or destination in source.parents: + raise RuntimeErrorCode('crt_directory_overlap') + if toolset_version(version) > toolset_version(metadata['maximum_toolset_version']): + raise RuntimeErrorCode('crt_toolset_newer_than_runtime') + contents = checked_files(source, metadata, strict=True) + destination.mkdir(parents=True, exist_ok=True) + if is_reparse_point(destination): + raise RuntimeErrorCode('crt_destination_directory') + for name, data in contents.items(): + atomic_write(destination / name, data) + return {'files': len(contents), 'toolset_version': version} + + +def inventory(directory, executable, metadata): + checked_files(directory, metadata) + if Path(executable).name != executable or '/' in executable or '\\' in executable: + raise RuntimeErrorCode('runtime_executable_name') + if not (directory / executable).is_file(): + raise RuntimeErrorCode('runtime_executable_missing') + files = {} + pending = [directory] + while pending: + for path in sorted(pending.pop().iterdir()): + # Check the node before deciding to descend. Windows junctions are + # reparse points but are not reported by Path.is_symlink(). + if is_reparse_point(path): + raise RuntimeErrorCode('runtime_reparse_point') + if path.is_dir(): + pending.append(path) + elif path.is_file() and path != directory / 'runtime-manifest.json': + data = path.read_bytes() + files[path.relative_to(directory).as_posix()] = {'bytes': len(data), 'sha256': digest(data)} + files = dict(sorted(files.items())) + result = {'schema': 'termforge-windows-runtime-v1', 'executable': executable, + 'architecture': metadata['architecture'], 'msvc_runtime_version': metadata['version'], + 'msvc_runtime_manifest_sha256': digest(MANIFEST.read_bytes()), 'files': files} + atomic_write(directory / 'runtime-manifest.json', (json.dumps(result, indent=2) + '\n').encode('utf-8')) + return {'files': len(files), 'runtime_manifest_sha256': digest((directory / 'runtime-manifest.json').read_bytes())} + + +def main(argv=None): + parser = argparse.ArgumentParser(description=__doc__) + commands = parser.add_subparsers(dest='command', required=True) + for command in ('verify', 'deploy'): + operation = commands.add_parser(command) + operation.add_argument('--source', required=True, type=Path) + operation.add_argument('--toolset-version', required=True) + if command == 'deploy': + operation.add_argument('--destination', required=True, type=Path) + operation = commands.add_parser('manifest') + operation.add_argument('--directory', required=True, type=Path) + operation.add_argument('--executable', required=True) + arguments = parser.parse_args(argv) + try: + metadata = json.loads(MANIFEST.read_text(encoding='utf-8')) + if arguments.command == 'manifest': + detail = inventory(directory_argument(arguments.directory), arguments.executable, metadata) + elif arguments.command == 'deploy': + detail = deploy(directory_argument(arguments.source), directory_argument(arguments.destination), metadata, + arguments.toolset_version) + else: + if toolset_version(arguments.toolset_version) > toolset_version(metadata['maximum_toolset_version']): + raise RuntimeErrorCode('crt_toolset_newer_than_runtime') + detail = {'files': len(checked_files(directory_argument(arguments.source), metadata, strict=True)), + 'toolset_version': arguments.toolset_version} + result = {'schema': 'termforge-msvc-runtime-operation-v1', 'status': 'passed', + 'operation': arguments.command, 'version': metadata['version'], **detail} + except RuntimeErrorCode as error: + result = {'schema': 'termforge-msvc-runtime-operation-v1', 'status': 'failed', 'error': str(error)} + except (OSError, ValueError, KeyError, TypeError): + result = {'schema': 'termforge-msvc-runtime-operation-v1', 'status': 'failed', 'error': 'runtime_input_failed'} + print(json.dumps(result, indent=2)) + return 0 if result['status'] == 'passed' else 1 + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/tools/prepare_qt_build.py b/tools/prepare_qt_build.py index 2df64be1..8de1699e 100644 --- a/tools/prepare_qt_build.py +++ b/tools/prepare_qt_build.py @@ -1,8 +1,9 @@ -"""Prepare the manifest-pinned Windows Qt/ConPTY build inputs locally. +"""Prepare the manifest-pinned Windows Qt/ConPTY/CRT build inputs locally. Only untouched archives are cached. Each run extracts a fresh SDK, adds a relative qt.conf, verifies the required files, and publishes a path-free summary. -No global installation, PATH modification, or product redistribution occurs. +The CRT installer is read as an archive, never executed. No global installation, +PATH modification, or product redistribution occurs. """ from __future__ import annotations @@ -10,6 +11,9 @@ import hashlib import json from pathlib import Path +import re +import shutil +import struct import subprocess import tempfile import urllib.request @@ -79,9 +83,77 @@ def tree_identity(directory): return {"files": count, "tree_sha256": identity.hexdigest()} -def prepare(cache, out, offline): +def prepare_runtime(cache, staging, offline): + """Extract the fixed AMD64 CRT without executing its installer.""" + metadata = json.loads((ROOT / "third_party/msvc_runtime/manifest.json").read_text(encoding="utf-8")) + package, license_metadata = metadata["package"], metadata["license"] + installer = acquire(cache, package["archive"], package["url"], package["bytes"], package["sha256"], offline) + license_path = acquire(cache, license_metadata["archive"], license_metadata["url"], + license_metadata["bytes"], license_metadata["sha256"], offline) + notice = ROOT / "third_party/msvc_runtime/NOTICE.txt" + if sha256(notice) != metadata["notice_sha256"]: + raise PreparationError("crt_notice_identity") + data = installer.read_bytes() + container = metadata["attached_container"] + offset, size = container["offset"], container["bytes"] + if (type(offset) is not int or type(size) is not int or offset < 0 or size < 36 or + offset + size > len(data) or hashlib.sha256(data).hexdigest() != package["sha256"]): + raise PreparationError("crt_container_identity") + cabinet = data[offset:offset + size] + if (cabinet[:4] != b"MSCF" or struct.unpack_from(" len(contents) or contents[pe:pe + 4] != b"PE\0\0" or struct.unpack_from("