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

This commit is contained in:
2026-07-29 00:14:32 -07:00
parent b342860779
commit 140b358da6
6 changed files with 127 additions and 80 deletions
+18 -9
View File
@@ -11,15 +11,23 @@ NuGet and a real WSL stack, so they are built by path.
## `WslcApiDump` — what does the wslc API actually look like?
**The problem it solves.** Items 5, 6 and 7 — the C# broker, the Swift wslc client, and the
control plane — were all built against Microsoft's *documentation*, on machines with no WSL.
`NucleicBroker/Wslc/WslcFacade.cs` is therefore a careful transcription that has never been
compiled against the real assembly, and `-p:UseWslc=true` is the only thing standing between it
and the build. Every line in it might be right. We have no idea which.
**Status: it has served its original purpose (docs/WINDOWS_PORT.md §13.1).** The real API is
known, and it was obtained without a Windows machine at all — the package is public, so the
`.nupkg` was downloaded, its projection assembly extracted, and its metadata read with
`MetadataLoadContext`. What this tool is *for* has therefore changed: its assumption list now
describes the surface actually observed in 2.9.3, so running it says **what the next package
version moved**, not what we guessed wrong.
A typed spike cannot tell us: if `Session.CreateOrOpen` is really `Session.Open`, the spike fails
to **compile**, which teaches us one name and stops. So this tool is written entirely in
reflection. It cannot fail to build, and a single run prints the complete list of what is wrong.
**Why it is still reflection.** Same reason as before: a typed check fails to compile on the
first rename and reports one problem, where this reports all of them at once. That property is
worth keeping for a preview API whose next version can break anything.
Two facts it discovered that anything referencing this package needs:
- the assembly is **`wslcsdkcs.dll`**, not `Microsoft.WSL.Containers.dll` — loading it by package
name fails;
- the only published version is **2.9.3**, targeting `net8.0-windows10.0.19041.0`. The
`0.1.0-preview.1` pin this repo carried could never have restored.
```powershell
cd windows/spikes/WslcApiDump
@@ -33,7 +41,8 @@ It writes the full public object model to `wslc-api-dump.txt` (`--out` to reloca
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.
**What to send back:** the console output, and `wslc-api-dump.txt` if anything is MISSING.
**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.
### Why `--session` earns its risk