Skip to content

test: correlate original MSVC invocations with calibrated PDB events - #175

Merged
Iviesever merged 2 commits into
mainfrom
codex/v6-pdb-invocation-evidence
Sep 9, 2026
Merged

Iviesever merged 2 commits into
mainfrom
codex/v6-pdb-invocation-evidence

Conversation

@Iviesever

@Iviesever Iviesever commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Final decision: accept correlation tooling; retain #170/#172 HOLD

Final exact-source, execution, raw-artifact, full19-rowABBA review and decision

  • Base: 11489fa74da519a20c8e3b91e8f8ce52f7e8cbd4.
  • Reviewed head: 7ce1422b591366c5d4445c8cebd060ab73b01b0b.
  • Candidate/native test-merge tree: 9bd2908d7f8cc18ed4d37f1ea2143bf554106c1f.
  • Test-merge 14c7f76d72a1d0c44fbece23c0235608826a96a3, exactly those base/head parents.
  • Four test/CI files, 497 additions/25 deletions. No product src/include, scheduler, accepted ETW recorder/readiness/verifier, original benchmark/ABBA, manifest, native executable inventory, CLI/freshness or VERSION change.
  • VERSION5.5.0 unchanged. No historical tag/asset or formal Release change.

Continue #164 with one bounded invocation/event-correlation topic. No held #170/#172 code is imported, no historical failure is explained away by later success, and M1b remains incomplete.

Delivered contract

Explicit --invocation-case records separate begin/end QPC sidecars, native caller PID+creation FILETIME, executable identity and its own DOS-device mapping, and the original tool result. Original diagnostics/results are saved before the ending timestamp and sidecar; the interval therefore includes diagnostic serialization, not just tool execution. The per-process flag is set before workers. Normal probe modes take no new timestamps, though wrapper construction remains possible overhead.

The new read-only verifier reuses the accepted calibrated trace audit, checks required AND observed result/argv/span/diagnostic inventories and finite A/B PDB physical identities, and returns all parent/image/interval-compatible tool-child starts. Concurrent B calls retain ambiguous candidates instead of choosing by order. Candidate starts are not retained tool HANDLEs, exact RPC identities or full child-completion certificates. Time overlap does not assign a shared service to a request. Missing evidence, original failure and later recovery remain distinct results.

The workflow retains the original four-case calibration study and adds the predeclared eight fresh A-started/direct-drain cases: PCH Release/Modules Debug, M/P, P/M, M/P (P/M,M/P,P/M,M/P overall). Original RM queries stay on; original24kA/6kB inputs,/FS,/Zi, PCH/Modules/optimization/runtime flags and large-A-only/bigobj stay unchanged. Each study has its own actual missing-readiness negative test, and every positive trace retains original before/after success/error32 calibrations. Missing evidence or failed original controls stops remaining slots without retries.

Completed accepted-head gates

Gate Actual run Result
Native Debug/all subshards/freshness/runtime #721/34332200130 Passed, actual build/tests
Complete Release/self-host/exact package #612/34332200125 Passed; publish-release skipped
Documentation/Cross-Stage #173/34332200079; #198/34332200075 Passed
Existing PDB Open Investigation #3/34332200070 Passed
Invocation and original trace contracts Event#6/34332200078 40/40(11accepted/29rejected), original36/36(4accepted/32rejected), PowerShell parsing
Native traced studies Event#6/34332200078 8/8new+4/4reference, both negative admission controls pass
Original default/private matrices #16/34332200045; #18/34332200087 56/56 and42/42, required positive controls pass
Independent original observer-OFF ABBA #570/34332200063 76pairs;72instrumented complete semantic identities match

The complete published source was reconstructed and its Git tree matched. Exact Python analyzers were rerun over raw ZIPs and compared with saved reports, not merely green workflow status.80source files and80argv records match the same-head uninstrumented default controls after normalizing only fixture directories.

New evidence and its limits

Eight new cases yield80invocation intervals,88tool results and176stdout/stderr records. Ten intervals preserve multiple candidates. All original A/B controls pass; original recovery is separate. New traces retain502real PDB/PCH completion pairs and78nonzero statuses, including six0xc0000043 sharing violations.

All six sharing violations are attributed to the coordinator ownership-probe process, not a candidate cl.exe or MSPDBSRV process, despite overlapping A/work0 intervals. They must not be described as compiler failure or proven compiler retry. Per-API call stacks were not captured, so no exact observer API or historical C1041 cause is established. The four reference traces retain302real pairs and26nonzero statuses. Raw failures are not removed because compilation succeeded. No C1041 recurred in the new8cases; historic cause remains unresolved.

All12positive traces have24matched native sharing-failure calibrations and24successful-open calibrations; native no-readiness controls admit no child. Actual observer-input executable hashes match provenance, but are not the independent performance binary pair. ETW raw/decoded correspondence is checked using the accepted decoder; Python is not a second binary ETL implementation. Finite file identities, calibrated coverage and zero reported loss do not enumerate all writers or prove durable quiescence.

Original default matrices retain seven intentionally adverse managed B failures(C1090/C1051/C2471). Private B results happened to succeed, but all28A-started managed endings still kill the original service. Recovery does not erase failure; missing resource identity is not a writer-lease certificate.

Independent performance and unchanged gates

External timings-off no-op paired median +1.29565ms/+9.7257307%,3/4slower: exceeds1ms but not10%, so it does not cross the unchanged predeclared BOTH>1ms AND>10% gate. It is close to the boundary, not zero overhead. Keep discovery-no-op4/4slower, discovery-cold+755.829ms tail and discovery-header+110.26% instrumented paired median. Every favorable/adverse sample and all72complete instrumented counter/breakdown/hit-miss identities are retained. Four external counter sets are unavailable, not zero; only that row uses external elapsed. Four-pair P95 is a maximum. No speedup claim, AA subtraction, presumed-noise deletion or historic #170/cold-tail debt closure.

Initial ABBA#569 remains separately recomputed and retained: externalmedian−1.2762ms/−9.1115%, adversemax+6.221ms, modules-cold tail+927.861ms. No same-head remeasurement was requested. A local read-only clock-label assertion was corrected to actual external_stopwatch; only offline JSON was rerun, not CI/raw measurements.

Original acceptance gates remain: exact-source full native/selfhost/package, original/new calibrated traces and negative controls, all required original matrix controls, synthetic record tests and independent19x4ABBA with the declared conjunction. The cross-volume amendment added four tests rather than dropping old36. All current applicable gates pass; acceptance does not waive held-PR requirements.

Initial failure and handoff

Initial 08480710... used only the trace directory's device mapping and rejected a real C:-tool/D:-fixture layout. Its first invocation slot reports tool child lifetime absent, one rejected/seven unattempted. Raw artifact10096185164 is preserved; the current verifier still rejects that unamended historical record for missing executable mapping. The two-file23addition/2deletion fix records the actual executable mapping, not a guessed path. Initial cancelled workflows are not new-head validation; completed old ABBA/doc/Cross-Stage results remain separately labeled.

Accept ordinary expected-head merge under unchanged protection; keep #170/#172 held. Next distinguish coordinator query/file operations from compiler/shared-service operations using this recorder and retained events, with only the minimal same-clock observer-query boundary needed to investigate the six actual coordinator-origin conflicts. Do not create another competing observer, infer causality from overlap, or rely on success-only reruns. Historical missing events cannot be fabricated. Future held-PR decisions need the then-current combined tree and explicit original-failure disposition.

No CLI cancellation, writer-lease/transaction/build-run/session/residency or formal release authority is included. Raw current/initial artifacts, exact published sources and repeatable audits are retained; Actions retention30days. Compiler-generated binary bodies are excluded by the diagnostic contract, while separate input ZIPs retain actual observer tools. Post-case hashes are not failure-instant snapshots. Temporary perf title changed only after actual#570 finished; subsequent skipped perf jobs do not replace that measurement.

…events

Add explicit invocation-only QPC/owner begin/end records and read-only outcome correlation using the accepted ETW recorder. Preserve concurrent child ambiguity and shared-service RPC limits. Run a predeclared eight-case PCH Release/Modules Debug study with original workloads and RM queries, retaining the four-case recorder regression and negative readiness controls. Original errors and recovery outcomes remain separate; a complete record never makes a failed compiler control pass. Product source, scheduler, benchmark, VERSION5.5.0 and historical held PRs unchanged.

Copy link
Copy Markdown
Owner Author

Source review found a cross-volume process-image correlation defect

Before accepting current-head Windows results, re-read the unchanged prior raw ETW artifact10093649346 (SHA256 13de1b3f15b4cf91d61466d0ab1bf5157d8ff2f4c763478ef144caa3fecc437c). Its capture maps D: to \Device\HarddiskVolume5, while cl.exe is launched from C: and ProcessStart names \Device\HarddiskVolume4\Program Files\...\cl.exe. The submitted auditor only knows the trace-directory mapping, so it would incorrectly reject this real cross-volume layout as a missing tool child. This is an evidence-correlation defect, not a compiler failure.

Targeted amendment records the executable's own current QueryDosDeviceW mapping in each invocation-begin sidecar, before tool launch, and uses that captured mapping only for executable identity comparison. No mapping is inferred from a guessed volume number or basename; absent/malformed/wrong mappings fail closed. Native QueryDosDevice's first returned string is the current mapping (Microsoft documentation); this finite snapshot is not continuous path identity or a filesystem ownership certificate.

Added four contract cases: cross-volume accepted, missing/wrong device and mismatched DOS-root rejected. New total40/40 local Python expectations (11accepted/29rejected), old36 retained. A synthetic regression independently rejects the old implementation and accepts the mapped one; the three extracted C++ wrapper tests still pass with explicit Win32/Windows-path mocks and strict GCC23+ASan/UBSan. No local MSVC execution is claimed. The old raw ETL and compiled workload are unchanged.

The amendment is two files,23additions/2deletions relative to the submitted head. It does not change the eight-case budget, source input, compiler flags, success criteria, original matrix behavior, ETW readiness, external ABBA threshold or held decisions. The corrected head receives its own full exact-source validation. Initial-head completed/failed/cancelled artifacts will remain labeled with their actual source; no same-head rerun requested.

Prior real trace shows compiler on C: and fixture on D:; trace-root-only normalization falsely reports absent cl.exe lifetimes. Capture the executable's current QueryDosDeviceW mapping in its invocation record and use it for process-image comparison. Add four positive/negative mapping contracts, preserving the original 36 tests. No basename/volume guesses, no compiler behavior, study budget or gate change. Earlier source results retained; corrected source requires separate CI and ABBA. VERSION5.5.0 unchanged.

Copy link
Copy Markdown
Owner Author

Corrected source published; prior source remains separate evidence

New head 7ce1422b591366c5d4445c8cebd060ab73b01b0b, tree 9bd2908d7f8cc18ed4d37f1ea2143bf554106c1f, base remains 11489fa74da519a20c8e3b91e8f8ce52f7e8cbd4. The two-file correction is exactly23additions/2deletions; total PR now497additions/25deletions across the same four files. Uploaded blobs match local hashes and the complete source index matches the remote tree.

New invocation contracts are 40expected outcomes(11accepted/29rejected); the existing36trace contracts, native negative admission controls, new8/old4traces, original56/42matrices and unchanged independent19x4ABBA/fullnative/selfhost/package gates remain. This adds coverage, not a lowered acceptance requirement. Any cancelled/incomplete initial-head run is retained as such, never relabeled corrected-head validation. No same-head CI/benchmark rerun was requested.

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

Final iteration review — accept bounded invocation/event correlation, retain historical holds

Source/evidence self-review with separate read-only reconstruction and raw-artifact recomputation; not an independent human approval. The already-published PR was resumed rather than duplicated or overwritten.

Base 11489fa74da519a20c8e3b91e8f8ce52f7e8cbd4; reviewed head 7ce1422b591366c5d4445c8cebd060ab73b01b0b; tree 9bd2908d7f8cc18ed4d37f1ea2143bf554106c1f. Native test-merge 14c7f76d72a1d0c44fbece23c0235608826a96a3 has that identical tree and exactly those parents. Reconstructed the complete published source, not the unused local alternative draft, and matched the Git tree. Full diff: four test/CI files, 497 additions / 25 deletions. No product src/include, scheduler, accepted ETW recorder/readiness/verifier, original benchmark/ABBA, manifest, native executable inventory, CLI/freshness or VERSION changes.

Matched blobs: probe 8a77eb59eec94f619e24d64751b2e55a7f90ac8e; collector 6ada00c64c2916dcac527389fec257fa909afcb5; invocation verifier 20eb688dd04a9ebaa74698cff768c33fe71db99b; workflow 4ee7df35ee7b1f356d52f9fbc3f425cb0928700e. Published Python40 and original trace36 contracts were independently executed locally after this reconstruction. No local MSVC/PowerShell/ETW execution is claimed.

Scope review

Explicit investigation entry points set the per-process span flag before workers start. Original tool stdout/stderr/result are saved before the ending timestamp/sidecar. The interval includes begin-sidecar and diagnostic serialization, not pure compiler execution. QueryDosDevice records the executable's own volume mapping, avoiding guessed device names or basename matching on cross-volume hosts. The physical file snapshots remain finite observations, not continuous file identity or locks.

The auditor matches native owner PID+creation time and returns all parent/image/time-compatible child starts. It deliberately does not use ordering to select an exact B child. A candidate start is not a retained child HANDLE or a per-RPC identity/completion certificate; the list should not be presented as either. Shared-service events merely contained in a compilation interval are not assigned exclusive request ownership. Incomplete spans/diagnostics and original failure/recovery outcomes remain distinct and fail closed where required.

Completed current-head execution

  • Native Debug #721 /34332200130: actual Debug build, all paired subshards, runtime/ambient/include/parameter and freshness/side-output checks and final gate passed, not a classifier skip.
  • Native Release #612 /34332200125: Stage0, all four Release shard jobs, full self-host, staging and exact runtime-only package validation passed. publish-release skipped.
  • Documentation #173 /34332200079, Cross-Stage #198 /34332200075, existing PDB Open Investigation #3 /34332200070 passed.
  • File Event #6 /34332200078: actual recorder/probe build, PowerShell parsing, 40/40 invocation expectations (11 accepted/29 rejected) and 36/36 original trace expectations (4 accepted/32 rejected), both native missing-readiness controls, new eight-case study and old four-case calibration study passed.
  • Original default #16 /34332200045 and private #18 /34332200087: full56/42 matrices with their required positive controls passed.
  • Independent Performance #570 /34332200063: exact base/head checkouts, both Release builds, instrumentation check, actual19x4ABBA and upload all ran. This is not a skipped performance job.

Raw investigation results — a useful attribution distinction

Verified immutable ZIP hashes/CRCs and reran the exact published trace and invocation analyzers against all raw files, comparing their entire recomputed results with saved reports:

  • New study artifact 10096645386,25,227,758bytes,775entries; SHA256 341da88d5711eaa07fd18c3736797761927e3a75d916e5bb4258cf9ca8ff8725.
  • Existing calibration regression 10096595055,12,169,038bytes,331entries; SHA256 e67bede75da1e27ea279f0a3292595c490f02e41a1a9ad88e58efbc22812fda8.
  • Actual input 10096526922,1,372,060bytes; SHA256 6fd52d433de8a4de6a74d6027aaf35bef8ecb6e516099e9e822c823ec11a2a9a.
  • Contract artifact 10096224603,2,350bytes; SHA256 af93fe03d1a1df66b178ab790b5c747abaecbe6b145ffca5265a6d4fe8a8f47b.

8/8 new +4/4 reference traces complete, preserving the predeclared order. All original A compiles/B compile-link-run controls pass, pending A work is suppressed and original service survives. Each study's separately withheld-provider negative passes with no admitted child. Across12positive traces all24native failure calibrations and24successful-open calibrations rematch to the ETL-decoded stream. The Python verifier is not a second binary ETL decoder.

New study: 80 original/recovery invocation intervals,88 tool result files and176 stdout/stderr files checked. 10 intervals retain multiple direct-child candidates; none was guessed away. Original reference study adds44results/88diagnostics. Compared 80 workload source files and80 argv records to the same-head uninstrumented default-matrix controls; sources are byte-identical and argv equal after normalizing only fixture-directory identity.

The new traces retain502real PDB/PCH open-completion pairs and78nonzero statuses:72x0xc0000034 and6x0xc0000043. Crucially, all six sharing-violation events in slots02/03/06 are attributed by PID+creation identity to the coordinator ownership-probe process, not a candidate cl.exe or MSPDBSRV process. They overlap A/work0 intervals while the original compiler succeeds. Therefore they are not evidence of compiler failure or a compiler RPC retry. Per-API call stacks were not captured; no exact observer API or historical C1041 cause is established. This is precisely why temporal overlap must not be reported as exclusive attribution. The old four calibration cases retain302real pairs, including24x0xc0000034 and2x0xc0000043; no raw nonzero result was deleted.

Original source/capture provenance matches actual three executable members: MQB 7d0d5f6f176866e005ef79bd3fa389a923b3c5e658083f355a3c90b5a4d6a939; ownership probe 434400e9598a418f545ca39d012c8da10c38a3ccca8de3d4fb7f39f1c6c08508; recorder 7efcf4af9e80e3a86ee15bcbd903150eb983f7fcf4636136810e5b5e22df26cf. These are observer inputs, not the independent performance executable pair. No C1041 recurred in the new eight-case study; that does not explain or waive either historical failed control.

Independent ABBA — every scenario retained

Artifact 10096562695,35,856bytes,SHA256 29decbb05e8cba1dda23a08fc7077da3ff9dd89783635c34b9641ba0a66b1bb7. Recomputed all76paired samples, arithmetic, medians/MAD/nearest-rank P95, AB/BA/AB/BA orientation and marginal medians. 72/72 instrumented complete counters/breakdowns/compile-link-archive hit-miss match. Four external samples have unavailable counters, not zero. Only the last row is timings-off external Stopwatch elapsed; other rows use mqb.timings. Four-pair P95 is merely the maximum.

Scenario Paired median Δms Paired median Δ% MAD ms Paired P95 Δms Slower
cold +39.846 +2.31 13.953 +63.336 3/4
no-op −0.090 −1.93 0.091 +0.071 1/4
single-tu −7.733 −7.10 5.591 +0.204 1/4
public-header −7.982 −6.51 8.544 +2.649 1/4
build-run −0.098 −0.55 0.696 +0.698 2/4
link-only −8.561 −10.71 11.115 +3.739 2/4
target-scale-cold −891.374 −14.99 935.969 +84.439 2/4
target-scale-no-op −1.138 −3.13 2.110 +2.358 1/4
target-scale-no-op-auto −0.331 −0.99 0.665 +0.814 1/4
target-scale-no-op-j1 +0.412 +0.92 1.155 +2.436 3/4
target-scale-common-header-no-op +2.692 +6.58 6.384 +15.937 2/4
target-scale-single-tu −22.959 −14.19 10.843 −1.679 0/4
discovery-cold +124.718 +6.96 136.736 +755.829 3/4
discovery-no-op +0.875 +10.52 0.484 +3.822 4/4
discovery-header +126.062 +110.26 132.467 +289.533 2/4
modules-cold −11.842 −0.65 71.740 +227.026 1/4
modules-no-op −0.053 −0.89 0.234 +0.417 2/4
timings-enabled-no-op −0.145 −3.54 0.108 +0.012 1/4
timings-disabled-no-op (external) +1.296 +9.73 1.233 +2.872 3/4

Unrounded external paired median +1.29565ms/+9.7257307% is close to the boundary: it exceeds1ms but does not exceed10%, so the predeclared conjunction is not crossed. Do not round it up/down to change acceptance or call it zero overhead. The 4/4slower discovery-no-op and+755.829ms discovery-cold tail remain; discovery-header's+110.26% instrumented median is not an external whole-process claim. No attribution to source changes has been established, no sample was discarded as noise, and favorable scale-cold observations do not cancel these adverse results. Historical #170 crossing and cold-tail debt remain open.

Original ownership failures and source correction retained

Current default56/private42 independently audited556/417tool results and1112/834diagnostics. All required unmanaged/drain controls pass, while seven default managed B failures (C1090/C1051/C2471) remain. Private original B builds happened to succeed, but all28A-started managed endings across both modes still kill the original service. Recovery does not replace original failures. B-resource identity is observed13/56default and3/42private; empty sets do not establish writer quiescence. Raw default10096706689 SHA256 f74f5b2230ab45310112aab17949a8a103afde25e7c608aaf547d6a0f866376a; private10096638752 42cc628bd483ff41d619dda7567bcd7422facb139a9961c6f82c20a4950a05bb.

Initial head0848071's invocation artifact 10096185164 (3,315,007bytes),SHA256 ac1374e247a042d7c550f0953d38008317992b80aee67edf2a094268c7c0773b, is preserved: one rejected slot/seven unattempted, error tool child lifetime absent. Its missing cross-volume mapping is not retroactively supplied. The new verifier also rejects that original record as missing mapping. The actual correction adds the current executable mapping plus four regression cases; no workload/threshold/sample-budget change or same-head retry.

Initial ABBA#569/34331286594 completed and is independently recomputed: artifact10096188161 SHA256 f6be3e2811fdfaed63e06a1f9b5612dd7cb80a736ca97bdb5d35a63831ee5e95, external median−1.2762ms/−9.1115%, maximum adverse+6.221ms;72semantic identities match. Keep its+927.861ms modules-cold tail. Initial Native Debug#720/Release#611/default#15/private#17/Event#5/PDB-study#2 were cancelled by the source correction; they are not completed current-head validation. Initial documentation/Cross-Stage passed separately.

A read-only external audit initially asserted an incorrect clock-label spelling (external-elapsed); the actual recorded value and original script use external_stopwatch. Corrected the audit, preserved that local failure, and reran only offline JSON analysis—no source, CI or raw measurements changed.

Decision / handoff

Accept ordinary merge with expected head 7ce1422b591366c5d4445c8cebd060ab73b01b0b, under current main/protection. This accepts a bounded evidence-correlation capability, not historical-cause resolution. The original gates were not relaxed. Keep VERSION5.5.0, #170/#172 held, M1b incomplete, both safety-authority fields false. No CLI cancellation, RPC ownership, complete-writer quiescence, transaction/lease or formal release authority is granted.

Next focus on distinguishing the coordinator's own file/query operations from compiler/shared-service operations using this accepted recorder and retained raw events—particularly the six actual coordinator-origin sharing violations—before attributing a C1041 to a compiler. Add only the minimal same-clock query boundary needed to disambiguate the existing evidence, not another competing observer or success-only remeasurement campaign. Historic missing events cannot be fabricated; any later held-PR review needs the current combined tree and explicit disposition of original failures.

Raw current/initial investigation and performance ZIPs, exact published source and replayable audits are retained in delivery; Actions artifacts expire after30days. Compiler-generated binaries are excluded by the diagnostic contract; finite post-case inventories are not failure-time snapshots. A title/ready-triggered skipped performance job is not a replacement for actual#570, and post-merge push CI is not claimed completed here.

@Iviesever Iviesever changed the title perf: correlate original MSVC invocations with calibrated PDB events test: correlate original MSVC invocations with calibrated PDB events Sep 9, 2026
@Iviesever
Iviesever marked this pull request as ready for review September 9, 2026 09:37
@Iviesever
Iviesever merged commit 564becf into main Sep 9, 2026
30 checks passed
@Iviesever
Iviesever deleted the codex/v6-pdb-invocation-evidence branch September 9, 2026 09:37
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