Skip to content

docs: the MSVC ecosystem round, and the tool that made it decidable - #445

Merged
Sunrisepeak merged 1 commit into
mainfrom
docs/msvc-ecosystem-final-report
Aug 16, 2026
Merged

docs: the MSVC ecosystem round, and the tool that made it decidable#445
Sunrisepeak merged 1 commit into
mainfrom
docs/msvc-ecosystem-final-report

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Two things worth keeping after the work is merged.

The report

Eleven defect layers, each reachable only once the one before it was fixed, every one of them green in CI at the time:

installed() only checked cl.exe  →  checked directories, not files
  → no kernel32.lib              →  no um/shared headers, no rc/mt
  → mcpp accepted a headers-only SDK
  → the build linked; remove failed on Windows
  → the error did not name the file
  → vctip.exe held the payload open
  → not installing it ≠ fixing machines that already had it
  → renaming the directory (wrong premise)
  → an empty skeleton would not delete either

One shape throughout: an acceptance criterion weaker than "usable". The endpoint is the one criterion that could not be met by adjusting a test — a real Windows runner completing the whole lifecycle, plus xrgui building 54/54 on the pinned Insider toolset with the vswhere workaround still deleted.

It also records what I got wrong, because those were the expensive parts:

  • a premise about renaming directories on Windows that CI disproved
  • a "which file is stuck" probe that found out by deleting
  • an invented gcc@system proposal that ran against the design it claimed to improve (feat(toolchain): gcc@system is rejected, and says what to do instead #441, closed)
  • three occasions where the honest conclusion was "this test cannot fail on the platform that would run it, so do not write it"

The tool

tools-msimap.py resolves an MSI's File/Component/Directory tables to real install paths, offline (7z for the OLE streams, !_Columns for the schema — the SDK's MSIs do not share column widths, and a guessed width silently misaligns every column after it).

It is here because it was the only thing that could answer "what is actually inside this payload". The package names, Microsoft's documentation, and my own comments in this repository were each wrong about the Windows SDK — Windows SDK Desktop Headers x64 ships four files, none of them a Win32 header — and only the tables were right.

Keeps two things that are worth more than the diff they came from.

The report records eleven defect layers, each reachable only once the one
before it was fixed, and every one of them green in CI at the time. They
share a single shape -- an acceptance criterion weaker than "usable" -- and
the endpoint is the one criterion that could not be satisfied by adjusting a
test:

    PASS: msvc@14.44.35207 installs, builds, stays distinct from
          msvc@system, and removes

It also records what I got wrong: a premise about renaming directories that
CI disproved, a diagnostic that probed by deleting, an invented `gcc@system`
proposal that ran against the design it claimed to improve, and three
separate occasions where the honest conclusion was "this test cannot fail on
the platform that would run it, so do not write it".

`tools-msimap.py` resolves an MSI's File/Component/Directory tables to real
install paths, offline. It is here because it was the only thing that could
answer "what is actually inside this payload" -- the package names,
Microsoft's own docs, and my own comments in this repo were each wrong about
the Windows SDK, and only the tables were right. Anyone auditing a payload
set again will need it.
@Sunrisepeak
Sunrisepeak merged commit 7b3f7ef into main Aug 16, 2026
19 checks passed
@Sunrisepeak
Sunrisepeak deleted the docs/msvc-ecosystem-final-report branch August 16, 2026 15:32
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.

2 participants