test: supplement retained ProcessStop counters without new diagnostic measurements - #191
Conversation
Preregistered #164 comment5660738503. Add only an offline supplemental parser, 23 adversarial tests and immutable-archive replay workflow. Reproduce all 18 original MQB positive captures, 1050 cl and 16 link exits plus calibration 0/17/0. Preserve original scores, OFF nulls, root query differences and every historical HOLD. CPU cycles are not CPU milliseconds or a wait-cause diagnosis; no new MQB diagnosis calls or ETW captures, product changes, VERSION change or release.
Iviesever
left a comment
There was a problem hiding this comment.
实质验收:接纳 #191 的只读补解析工具;不是产品修复,也不解除 5.6.0 发布 HOLD
2026-09-14,接续 #164 预登记5660738503及进度5661143165。此 COMMENT 是本轮实施者的代码与证据复核记录,不冒称第三方人工审批。先审查全部三文件、原始产物和实际运行,再作接纳决定;本记录提交时 PR 仍 Draft。
1. 精确对象与范围
重新读取 main/base f359f519af0f9e6ea43e8b7bf474f64d6b09dca9;head 2aa3cc7f7cab30b7b370be98c55044ea8a260be0,tree 5f48fe99cd252148f4d6ff46f15878d7a656fb1b。test-merge 4a83c544e0712df6785014cc6cc22e506e9a0c21 的两个父提交精确匹配 base/head、tree 相同。只有一个提交、3 个新增文件711行,原445文件全部不变;远端blob及源码树与本地已测试版本一致。产品、旧Recorder/ETW decoder/统计/原生清单、VERSION5.5.0及历史资产未改。
#762/run34799968776已确认首次成功;本轮只重新核对旧main的run/job状态,没有声称再读全部原始分片日志。
2. 补解析的正确性与边界
新增auditor只接受原始已保留的ProcessStart v4/ProcessStop v2精确schema及64位记录,验证字段名/顺序/宽度/flags、SID/UTF16、opaque ANSI、payload完整消费。schema缓存限定单次捕获,不跨捕获猜偏移;未知版本、缺失/冲突schema、截断/后缀、原TDH身份不一致均拒绝。此工具刻意不是通用ETW解码器。
原health/ready/边界/生命周期审计器保持原字节,逐份重新计算的完整trace结果与旧报告一致。新增以payload PID+CreateTime、ProcessSequenceNumber、父代际/序号、原event序号/QPC及映像交叉校验,不按裸PID或事件发出者PID归属。保留原报告与OFF null,不覆盖旧字段或把无法获得的数据填零。
已完成所有18份旧MQB正向捕获、1050cl/16link、原校准三进程0/17/0;1050cl含1048个评分成功工具及2个故意失败工具。故意失败cl实际exit2,MQB映射exit4,明确分开。校准双输出流和退出码可对应。18根进程与原独立句柄查询的创建/退出时间、退出码一致;cycles查询比事件快照多2269938..5637927,read/write操作计数一致,差异全部输出而非调容差抹平。事件KB与query bytes分别保留,0KB不推定0bytes。
32评分+2非评分故障行保留,16OFF补充仍null;本轮校验34条旧MQB行68份原stdout/stderr及6校准流,187冷产物成员+4输入成员hash,ZIP前后hash不变。没有冒称本补解析重新验过旧78次全部调用或38次暖审计。新增诊断MQB调用0、新ETW捕获0;本PR自身native/自举/ABBA确有执行MQB,与诊断预算分开。
3. 原始诊断来源与首次托管重放
原cold run34765281714/artifact10320014327 SHA256 85daa4dfdb6b342644fe42be555960bc0edb2fe28b924b020a6a8a3bf927270b;输入artifact10320680860 SHA256 71ceb8b6c861f9e2b7ba36aea680b3909cf21b65380e0853bd584fe3c3419220。原源码ZIP、实际A/B程序、原累计ZIP、实际recorder与未改审计helpers均按固定hash核验,不以重建程序替换历史对象。
本地23新增拒绝/回归测试、原14cold测试和health/readiness自测通过,YAML/bash/嵌入Python语法与diff检查通过。保留初版plan.attempt整数/字符串假设错误的实际拒绝、修正及新增测试;另保留单次工具120秒上限中断10捕获的日志,随后完整逻辑重放通过。均为本地只读审计器/执行限制,不是新的Windows失败或被替换的评分。用户重放包装入口仅语法检查,核心auditor已完成本地与托管全量重放。
Retained ProcessStop #1/run34822035724 attempt1、完整job103905573090日志已读。托管artifact10339320139已下载,99906953bytes,SHA256 9fabb1745891a8ddf7dbf9f69d4382d40a7a67764b5eb73dbd49bec7c985acb6。8成员全部核验;preflight精确base/head/tree/run,源码448文件逐一Git blob匹配;完整result.json与本地逐字节相同,SHA256 4718aea7f8eeeed36f9baf5d55009fd642cd4c53ba2680ed32b0e6089fbb1500。这是Linux对保存schema/raw/decoder输出的复核,不是新的Windows TDH解码,也不是产品EXE可复现证明。
4. 诊断发现不升级为历史因果结论
旧非评分ON故障cl:baseline8125.0709ms/85417295cycles/28hardfault;candidate32.1711ms/78247586cycles/0hardfault;cl/MQB退出码均2/4。生命周期比252.558,记录周期差+9.16285%。这收窄调查方向,但cycles不是CPU毫秒,不能除以标称GHz算等待时间,28次hardfault也不是8秒等待原因的证明。8秒属于baseline故障控制,不是candidate common评分退化。
旧common block2 link:baseline57.4128ms/89093844cycles/2hardfault;candidate414.218ms/85465461cycles/2hardfault。存活+356.8052ms、cycles−4.07254%、hardfault数相同。所有16评分捕获cl hardfault0/link2,故不能用故障cl的28次缺页统一解释其他长尾。仍无CPU栈、上下文切换和完整I/O;未覆盖区间不是已证明的MQB额外工作,没有具体产品原因就不盲改调度器。
5. Windows原生、自举、实际包、文档
最终REST读取确认5个PR workflow均completed/success/run_attempt1,未调用rerun。
Native C++ #763/run34822035665完整读四配对job103908204923/103908204802/103908204856/103908204832;Native Release #638/run34822035746完整读103907824548/103907824616/103907824588/103907824673。每配置八子片8/9/9/9/10/12/11/11,Debug79/79、Release79/79实际程序执行。保留预期C2338、LNK2019/LNK1120、foreground37、stdin正反对照、39domain/33mapping及false边界、既有编译warning。Release测试宿主不等于每个内嵌目标也按Release构建。两个prepare仅核对状态,不冒称其完整日志已读。
自举/包完整job103908521158已读:Stage0→Stage1→干净Stage2,后两代各83TU实际构建,脚本两次-Clean;包中程序等于Stage1。Stage1 SHA256 941c80f9d8dac7b05dbdc8d6927c3b1967a81bde22b1b0a6b0a8099d3f69f71e,Stage2日志hash 4e2b729eaadb01c8e575a8bf76501bf8a21f2e40e95865b8717c0bcfed7ed143,后者未独立下载;两者不同,不声称字节可复现。
实际包artifact10339003578已下载独立验:851424bytes,外SHA256 b3f82295d04500a184e96c283426678a80a11eed4fccd5b6d35883b295385b2a;内ZIP/sidecar SHA256 66da8a7cd24a4fd766d0db6fa63e4b6038c2b12bb72f01eef2c9ed8f4ba42436。扁平7文件、AMD64 PE、VERSION5.5.0、包内EXE=Stage1;其他源码文件按Git文本换行规则核对,binary install.bat精确字节不归一化。原Windows安装/重装/卸载/PATHownership通过,本地未运行安装程序。Docs #202/run34822035714/job103905573694完整日志确认19对维护文档通过。publish-release103910487964明确skipped,不算发布成功。
6. 独立ABBA #637:原门槛未触发,不利尾部完整保留
Performance run34822035723/job103905573567完整原日志核对同一固定v5.0.0-rc.2 seed、精确basef359/head2aa、两端Release各83TU实构建、原instrumentation、AB/BA/AB/BA。实际artifact10339410943已下载,35028bytes,SHA256 3fc2573238159f8dda4b46a08eafdc2f9a30458db15b6373e923eb92809cc15b。原19场景76对全部重算;72组全部可用cache/counters/breakdown/hit-miss向量一致,4外部内部字段保持不可用,−1哨兵不当有效零。
external no-op原四差−4.4972/+1.9893/+0.1537/−0.3924ms,未舍入配对中位 −0.11935ms/−0.965444662572195%,MAD1.19085ms、P95+1.9893ms。原AND门槛>1ms且>10%未触发;但第2对+1.9893ms/+17.6519131%单独跨两项,完整保留。
全部19场景的原值和统计留在报告,尤其discovery-cold中位+13.706ms/+0.83788%、尾+924.106ms;discovery-header中位+26.511ms/+20.29938%、尾+649.521ms;modules-cold中位+53.6955ms/+3.10481%、尾+699.861ms。没有删值、重跑取优、observer扣除或噪声结论。新link-only中位改善不能撤销旧#634 +164.53ms/+300.17%。本ABBA产物仅有comparison JSON,没有实际测量两端EXE;不拿诊断历史A/B或安装包冒充,原留存缺口仍在。
结论与后续
满足的是本三文件工具PR的既定验收,不是产品性能全面放行。可转Ready并在再次核对main/head后正常head保护合并;合并后新push CI需另列,不能用本PR绿灯代替。代码发布后无追加提交、无重跑旧测量。#188/#172、#630、private暖flag、common历史冷尾、C1041及历次不利数据继续HOLD;VERSION5.5.0,5.6.0不发布,6.0路线保留。
下一单主题不再补跑旧矩阵,而是先检查现有ThreadStop原始schema是否还能提供同代际CPU时间;若不存在,才预登记一个固定预算、带OFF对照及失败控制的计算/等待归因采集。缺少CPU时间/调度轨迹不能被补解析cycles伪装为已经解决。
One read-only diagnostic topic; no product repair or release
Continue #190 / #164 comment5658259410. Preregistered #164 comment5660738503 after exploratory inspection of existing raw bytes, before new Windows execution. The initial
perf:title requests the unchanged independent per-PR ABBA gate; it is not an optimization claim.Exact base
f359f519af0f9e6ea43e8b7bf474f64d6b09dca9, tree1544b00ac059caae79a4dc9c14d91f1dcca83fce.Exact head
2aa3cc7f7cab30b7b370be98c55044ea8a260be0, tree5f48fe99cd252148f4d6ff46f15878d7a656fb1b.One commit, 3 added files / 711 additions / 0 deletions; all original445 files unchanged. Remote blobs/tree equal the locally tested source. Main Native C++ #762/run34799968776 completed successfully on attempt1; this round checked run/job status, not every original full job log.
Why this is preferable to another measurement matrix
The retained same-capture TDH schemas and raw ProcessStop v2 payloads already contain ExitCode, CPUCycleCount, operation/transfer counters and HardFaultCount. The old decoder did not expand these fields in
data. Keep the original decoder/reports intact and provide a separately named, source-linked supplement. Missing old fields do not mean their original raw bytes are unavailable.Pinned original input: cold run34765281714/artifact10320014327 SHA256
85daa4dfdb6b342644fe42be555960bc0edb2fe28b924b020a6a8a3bf927270b, input artifact10320680860 SHA25671ceb8b6c861f9e2b7ba36aea680b3909cf21b65380e0853bd584fe3c3419220. Also verify original source archive, immutable cumulative ZIP/A/B actual executable hashes, original recorder bytes and unchanged lifetime/health helpers.New diagnostic MQB calls: 0. New ETW captures: 0. Old matrix reruns: 0. New PR native/self-host/performance gates are separate validation work, not new historical diagnostic scores. No original scores are deleted, adjusted or replaced. No default cancellation, write lock, scheduler repair, transaction, recovery or residency changes.
Scope and fail-closed decoding
Completed local evidence (Linux, not new MSVC/ETW evidence)
23 new adversarial tests, original14 cold-contract tests and unchanged trace health/readiness self-tests passed. Workflow YAML and embedded Python were parsed; diff whitespace passed. Full read-only replay completed:
4718aea7f8eeeed36f9baf5d55009fd642cd4c53ba2680ed32b0e6089fbb1500.Exploratory recovery of the old fault controls:
The lifetime ratio is252.558 while recorded cycles differ by+9.16285%. This motivates a narrower investigation; it does not establish CPU milliseconds, an8-second wait, disk/antivirus/service causality or a product defect. The long sample is baseline/observer-ON/a deliberate failure, NOT a scored candidate common129 regression. HardFaultCount is not a wait-duration record. No nominal-GHz conversion or observer subtraction.
All18 root post-exit cycle queries exceed their event snapshots by2269938..5637927 cycles; read/write operation counts agree. Preserve both views. Do not silently replace tool event counts with root queries or declare identical accounting semantics. Historical cause/risk/release booleans remain false.
Local failures retained before publication
Initial22 tests passed, but the first real offline replay rejected an auditor assumption: plan.attempt is integer1, whereas trace.identity.attempt is string'1'. Corrected the per-format validation and added a regression test (23total), without modifying inputs. The next monolithic local replay was terminated by the tool's120-second execution limit after10 captures; its log remains. The generator interface permits bounded local read-only continuation and emits no completed report until all input hashes are rechecked. The final uninterrupted logical pass completed all18 captures/calibration. Unsupported streaming-exec and initial directory-permission errors are also documented as local setup limitations. None is a new Windows measurement failure or a substituted score.
Mandatory PR gates — not yet accepted
#188/#172 remain original-head Draft/HOLD, main's obsolete cumulative entry is not run. #630/private129 warm flag/common historical cold tails/C1041/#634 link-only and all other adverse samples remain. Product, old recorder/decoder/statistics, VERSION5.5.0, existing tags/assets and #164's6.0 route are unchanged. 5.6.0 publication stays HOLD.