Merge nucleic/olive-jade-civet-rznt into dev

This commit is contained in:
2026-07-29 00:45:56 -07:00
parent dcb9f428bb
commit e2a1d55528
2 changed files with 116 additions and 21 deletions
+18 -3
View File
@@ -32,17 +32,32 @@ Two facts it discovered that anything referencing this package needs:
```powershell
cd windows/spikes/WslcApiDump
dotnet run # dump the API + check every facade assumption
dotnet run -- --probe # + call the two read-only statics (service version, missing components)
dotnet run -- --session # + create a real session and print its live property VALUES
dotnet run -- --probe # + GetMissingComponents / GetVersion
dotnet run -- --session # + create a session, then a SECOND one with the same name
dotnet run -- --all-types # include the ABI/marshalling plumbing in the dump
```
**If it reports missing components** (`VirtualMachinePlatform`, `WslPackage`), the machine cannot
run wslc yet: `wsl --install`, reboot for the Virtual Machine Platform feature, and run again.
Everything that reaches the service fails with `REGDB_E_CLASSNOTREG` (0x80040154) until then, and
the tool says so rather than emitting a string of unexplained COM errors. `--session` is skipped
in that state instead of failing.
Note that the assumption check reads the **`Microsoft.WSL.Containers`** namespace only. That is
correctness, not tidiness: a C#/WinRT projection also exports `ABI.Microsoft.WSL.Containers.*`
marshalling types with the *same short names*, and matching on short name alone checks every
member against the marshalling struct — which reported 42 false MISSINGs, with `CreateMarshaler`
helpfully offered as the nearest name.
It writes the full public object model to `wslc-api-dump.txt` (`--out` to relocate) and prints an
`ok` / `MISSING` line per assumption, each with *why that member matters* and a nearest-name hint.
It exits 0 even when assumptions fail — a mismatch is the product, not an error. Only a genuinely
broken run (the assembly won't load) exits non-zero.
Every path in it has been exercised against a stand-in assembly carrying the observed 2.9.3 type
and member names, so a failure on your machine is a finding about wslc, not about this tool.
and member names — including the `ABI.` shadow types and a service that reports missing components
and throws `0x80040154` — so a failure on your machine is a finding about wslc, not about this
tool.
**What to send back:** the console output, and `wslc-api-dump.txt` if anything is MISSING —
which now means the package moved under us, not that we guessed wrong.