Skip to content

test: supplement retained ProcessStop counters without new diagnostic measurements - #191

Merged
Iviesever merged 1 commit into
mainfrom
codex/v5.6-retained-process-stop
Sep 14, 2026
Merged

Iviesever merged 1 commit into
mainfrom
codex/v5.6-retained-process-stop

Conversation

@Iviesever

Copy link
Copy Markdown
Owner

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, tree 1544b00ac059caae79a4dc9c14d91f1dcca83fce.
Exact head 2aa3cc7f7cab30b7b370be98c55044ea8a260be0, tree 5f48fe99cd252148f4d6ff46f15878d7a656fb1b.
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 SHA256 71ceb8b6c861f9e2b7ba36aea680b3909cf21b65380e0853bd584fe3c3419220. 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

  • A dedicated offline Python auditor accepts only the two exact retained ProcessStart v4/ProcessStop v2 schemas and 64-bit record architecture. Width/order/flags, SID/UTF16, opaque ANSI and complete payload consumption are checked. Schema cache is capture-local; absent/conflicting/unsupported schema is rejected, never backfilled from another capture.
  • The original health/readiness/boundary and lifetime auditor is reused unchanged. Recompute its entire original trace result, then cross-check raw PID/CreateTime, ProcessSequenceNumber, parent generation/sequence, original event sequence/QPC and exact image names. Never use emitter PID or a bare PID to choose a process.
  • Validate all18 original positive MQB captures, all1050 cl plus16 link generations, and the three existing calibration children. Scored tool exits must be0; both deliberate non-scored compiler failures have real cl exit2, separately mapped to MQB exit4. Calibration preserves original0/17/0 and both output streams.
  • Root/calibration creation, exit and exit code match retained independent handle queries. CPU/IO snapshot differences are emitted verbatim, not forced equal with a new tolerance. Transfers remain event kilobytes versus queried bytes; zeroKB is not represented as zerobytes. OFF fields remain null. CPU milliseconds/wait duration/cause stay unavailable.
  • Verify input ZIP hashes before/after replay; output must be a new directory, with a failure record on handled exceptions. Temporary copies contain only fixed trace files. The offline replay imports no subprocess/ctypes/Windows API or tool launcher. It does not execute archive binaries, rebuild MQB, perform fresh TDH ETL decoding, copy live build state or infer all-writer quiescence.

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:

  • 34 original rows =32 scored+2 explicitly non-scored failures; all16 OFF supplements remain null.
  • 18 MQB positive captures + existing calibration0/17/0; 1050 cl +16 link supplemented. Original full lifetime result equality checked for every MQB ON capture.
  • Original32 score summaries retained unchanged; raw stdout/stderr identity checked for all34 selected MQB rows plus six calibration streams. This supplement does not claim a fresh re-audit of all78 original calls or all38 warm audits.
  • Read187 unique cold-archive members and4 input-archive members with member hashes retained; both whole archives unchanged. Local result JSON SHA256 4718aea7f8eeeed36f9baf5d55009fd642cd4c53ba2680ed32b0e6089fbb1500.

Exploratory recovery of the old fault controls:

Original non-scored cl Lifetime ms CPUCycleCount HardFaultCount cl exit / MQB exit
baseline 8125.0709 85417295 28 2 / 4
candidate 32.1711 78247586 0 2 / 4

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

  1. Exact base/head/test-merge/tree and this complete3-file diff; substantive review before Ready/merge.
  2. Original Windows Debug79/Release79 actual program execution, pinned-seed Stage0/1/2, runtime-only exact package/checksum/installer lifecycle and applicable docs. Missing/skipped work is not success.
  3. First-run hosted read-only replay of the pinned original archives; verify source/run provenance, full result and portable rejection logs. It is Linux replay, not a Windows CPU/wait capture.
  4. Independent unchanged 19×4 ABBA on exact base/head. Retain76 pairs and all72 available complete vectors; external no-op paired-median blocker remains conjunction >+1ms AND >+10%, unrounded. Other adverse observations remain individually recorded risks. No same-head rerun to replace first evidence.
  5. Any missing/failed mandatory evidence => Draft/HOLD. No performance/release waiver on the basis of successful collection.

#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.

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 Iviesever left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

实质验收:接纳 #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伪装为已经解决。

@Iviesever Iviesever changed the title perf: supplement retained ProcessStop counters without new diagnostic measurements test: supplement retained ProcessStop counters without new diagnostic measurements Sep 14, 2026
@Iviesever
Iviesever marked this pull request as ready for review September 14, 2026 08:47
@Iviesever
Iviesever merged commit 55f57a8 into main Sep 14, 2026
19 checks passed
@Iviesever
Iviesever deleted the codex/v5.6-retained-process-stop branch September 14, 2026 08:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant