The host now mints its own audio endpoints from Steam's streaming drivers — "Punktfunk Speakers" (the client-only desktop-audio sink) and "Punktfunk Microphone" (mic passthrough) — and wires them by identity as the plan's tier-0. VB-Cable is fully de-bundled: audio needs Steam installed (never running); a user-installed cable keeps working as a fallback mic target. Field-verified end to end on the RTX box, including the mic at true pitch.
Design + full measurement record: punktfunk-planning/design/windows-audio-endpoints-and-vbcable.md.
What's in here
Wiring correctness (ships value even without minting)
Game audio outranks the mic: the mic may hold the Steam Streaming Microphone only while the loopback keeps a preferred pick — a cable-less headless box streamed silence before this (mic took the only working sink, loopback fell to the known-silent Speakers).
The Steam-pair auto-install latch re-arms when Steam's INFs appear mid-run.
Pre-existing main-red fix: three undocumented unsafe blocks in windows/install.rs (landed while the Windows CI runner was down).
The minted substrate
audio/windows/minted.rs: devnode-per-role provider (marker-matched across restarts, startup worker + cooled-down retry, default-grab restoration), built on a shared minting surface extracted from pad_endpoint.rs (create_media_devnode, bind_driver, write_stamps, capture-side endpoint lookup with the correct {0.0.1.…} id prefix).
wiring_plan: MintedIds tier-0 by recorded endpoint ID (names cannot distinguish minted instances from Steam's primaries — measured), capture side paired by ID, minted sink heads the silent tier with the same narrowing discipline, AudioReadiness classification logged with every plan.
Endpoint identity stamps: names ("Punktfunk Speakers/Microphone") plus the per-direction format sets that make the mic pair pitch-true — render gets the pad-proven PCM16-device/float-mix stereo split, capture gets the device-format key only (mix/host keys are render-engine properties; on a capture endpoint they break its shared graph).
The mic pump provisions synchronously before its first resolve (a boot race left it on the cable while the plan paired the minted capture nothing wrote into — measured on deploy).
VB-Cable retirement
Installer task/payload/donationware notice, packer flag, CI runner provisioning, and the SBOM component: removed. Suppressible installer notice when Steam is absent. Winget agreement now states the Steam requirement. Docs (windows-host, uninstall, security, echo) rewritten. The name ladder is deliberately not demoted — on a box where minting transiently fails, that would let the SSM steal an installed cable's sink.
Surfacing
/status gains audio (readiness, role endpoint names, mic_withheld/last_resort/narrowing); openapi regenerated, drift test green.
Web console Dashboard "Audio wiring" card (en+de).
punktfunk-host audio-probe devtest: the S1–S3 spikes plus mint, plan, micpitch (zero-crossing pitch detector — peaks are pitch-blind, which is how the octave bug initially slipped through) and micpins (exclusive/shared format-capability map).
Measurements behind the decisions
Minted SSM instance: render→capture peak 0.5012 at 48 kHz stereo (S3); minted SSS instance: default-routed loopback peak 0.5000 (S2); the "SSS loopback is silent" verdict does not reproduce (S1).
The field-reported octave-low mic voice: the driver's default endpoints disagree (stereo render / mono capture over a raw crossing). micpitch 440 Hz → 220 Hz before the format stamps; 440 Hz → 440 Hz at exact peak after. Both pins accept stereo/48 kHz (micpins).
Verified per commit on the Windows CI runner: fmt, CI-parity clippy (nvenc,amf-qsv,qsv), audio:: tests 81/81, openapi drift.
Still open (follow-ups, not blockers)
Client-side "host has no audio" notice (wire message + four clients — its own WP).
Apple clients don't send mic uplink (client-side, reproduced on three devices; Android works) — separate investigation.
The host now mints its own audio endpoints from Steam's streaming drivers — **"Punktfunk Speakers"** (the client-only desktop-audio sink) and **"Punktfunk Microphone"** (mic passthrough) — and wires them by identity as the plan's tier-0. VB-Cable is fully de-bundled: audio needs Steam **installed** (never running); a user-installed cable keeps working as a fallback mic target. Field-verified end to end on the RTX box, including the mic at true pitch.
Design + full measurement record: `punktfunk-planning/design/windows-audio-endpoints-and-vbcable.md`.
## What's in here
**Wiring correctness (ships value even without minting)**
- Game audio outranks the mic: the mic may hold the Steam Streaming Microphone only while the loopback keeps a preferred pick — a cable-less headless box streamed *silence* before this (mic took the only working sink, loopback fell to the known-silent Speakers).
- The Steam-pair auto-install latch re-arms when Steam's INFs appear mid-run.
- Pre-existing main-red fix: three undocumented unsafe blocks in `windows/install.rs` (landed while the Windows CI runner was down).
**The minted substrate**
- `audio/windows/minted.rs`: devnode-per-role provider (marker-matched across restarts, startup worker + cooled-down retry, default-grab restoration), built on a shared minting surface extracted from `pad_endpoint.rs` (`create_media_devnode`, `bind_driver`, `write_stamps`, capture-side endpoint lookup with the correct `{0.0.1.…}` id prefix).
- `wiring_plan`: `MintedIds` tier-0 by recorded endpoint ID (names cannot distinguish minted instances from Steam's primaries — measured), capture side paired by ID, minted sink heads the silent tier with the same narrowing discipline, `AudioReadiness` classification logged with every plan.
- Endpoint identity stamps: names ("Punktfunk Speakers/Microphone") plus the per-direction format sets that make the mic pair pitch-true — render gets the pad-proven PCM16-device/float-mix stereo split, **capture gets the device-format key only** (mix/host keys are render-engine properties; on a capture endpoint they break its shared graph).
- The mic pump provisions synchronously before its first resolve (a boot race left it on the cable while the plan paired the minted capture nothing wrote into — measured on deploy).
**VB-Cable retirement**
- Installer task/payload/donationware notice, packer flag, CI runner provisioning, and the SBOM component: removed. Suppressible installer notice when Steam is absent. Winget agreement now states the Steam requirement. Docs (windows-host, uninstall, security, echo) rewritten. The name ladder is deliberately *not* demoted — on a box where minting transiently fails, that would let the SSM steal an installed cable's sink.
**Surfacing**
- `/status` gains `audio` (readiness, role endpoint names, `mic_withheld`/`last_resort`/`narrowing`); openapi regenerated, drift test green.
- Web console Dashboard "Audio wiring" card (en+de).
- `punktfunk-host audio-probe` devtest: the S1–S3 spikes plus `mint`, `plan`, `micpitch` (zero-crossing pitch detector — peaks are pitch-blind, which is how the octave bug initially slipped through) and `micpins` (exclusive/shared format-capability map).
## Measurements behind the decisions
- Minted SSM instance: render→capture peak 0.5012 at 48 kHz stereo (S3); minted SSS instance: default-routed loopback peak 0.5000 (S2); the "SSS loopback is silent" verdict does not reproduce (S1).
- The field-reported octave-low mic voice: the driver's *default* endpoints disagree (stereo render / mono capture over a raw crossing). `micpitch` 440 Hz → 220 Hz before the format stamps; **440 Hz → 440 Hz at exact peak after**. Both pins accept stereo/48 kHz (`micpins`).
- Verified per commit on the Windows CI runner: fmt, CI-parity clippy (`nvenc,amf-qsv,qsv`), `audio::` tests 81/81, openapi drift.
## Still open (follow-ups, not blockers)
- Client-side "host has no audio" notice (wire message + four clients — its own WP).
- Apple clients don't send mic uplink (client-side, reproduced on three devices; Android works) — separate investigation.
The wiring plan reserved the mic target unconditionally first, so on a box
without VB-Cable the mic took the Steam Streaming Microphone — the only
working client-only loopback sink — and desktop audio fell to the
known-silent Speakers last resort: a headless Steam-only host streamed
SILENCE (the 2026-08 field case), and the installer's 'optional (mic
passthrough)' wording never warned anyone.
The mic may now hold the Streaming Microphone only while the loopback still
gets a preferred (non-last-resort) pick without it — another silent sink or
real hardware. Otherwise the loopback takes the endpoint and the mic falls
to a lesser candidate or is honestly withheld (Wiring::mic_withheld), with
the open error naming the trade and the remedy. An operator
PUNKTFUNK_MIC_DEVICE override is exempt: an explicit choice may still
strand the loopback on the last resort.
Also: the Steam-pair auto-install latch is now once per INF-state instead
of once per process — an attempt made while Steam was absent re-arms when
its driver INFs later appear (files are invisible to the endpoint-set
fingerprint, so nothing else would ever retry), and a withheld mic skips
the pointless reinstall (the pair exists; the plan gave it to the loopback).
install.rs (landed 2026-08-05 with the security-review remediation, while
the Windows CI runner was down) fails windows-host.yml's clippy gate:
#![deny(clippy::undocumented_unsafe_blocks)] wants the SAFETY comment on
the line preceding EACH unsafe block, and three blocks didn't have one —
two sat behind a comment anchored to the enclosing closure/neighbouring
statement, and EqualSid had none at all. Comments only; no behavior
change.
The S1-S3 spikes from windows-audio-endpoints-and-vbcable.md as one
runnable devtest (no game, no client, ssh-drivable):
audio-probe ssm S3, the decision gate: mint a SECOND devnode of
Valve's Steam Streaming Microphone driver and
prove the pair end to end (tone into its render
endpoint must come back out of its capture
endpoint). Pass = a punktfunk-owned virtual mic
needs no VB-Cable wherever Steam is installed.
audio-probe sink S2: mint a Speakers instance, park the DEFAULT
playback on it, tone through the default device,
WASAPI-loopback the instance - the desktop-audio
capture path minus the game.
audio-probe sss-primary S1: the primary Speakers' known-silent loopback,
re-measured, with mix format + steam.exe state.
audio-probe cleanup remove every probe-minted devnode (marker value
in Device Parameters, never name-guessing).
pad_endpoint grows the first slice of the design's §C1 shared minting
surface: create_media_devnode(desc, hwid, mark), bind_driver(hwid, inf),
find_capture_endpoint_for_devnode — the pad provisioner now calls the
same functions. The probe restores whatever default devices the minting
disturbed before it exits.
The audio-substrate program's Phase 2 (spikes S2+S3 measured green on the
target box): the host mints its OWN instances of Valve's streaming-audio
drivers and wires by IDENTITY instead of borrowing Steam's primaries —
minted.rs the provider: one devnode per role ('Punktfunk Speakers'
from SteamStreamingSpeakers.inf, 'Punktfunk Microphone'
from SteamStreamingMicrophone.inf), marker-matched across
restarts (PunktfunkAudioRole in Device Parameters — names
are NOT identity, a minted instance is name-identical to
the primaries), provisioned on a startup worker like pad
audio, retried with a 60 s cool-down from wiring passes,
defaults restored when a fresh endpoint grabs them.
wiring_plan MintedIds tier-0: the mic takes its minted device outright
(capture side paired by the provider's id — a name search
cannot tell it from the primary), the loopback prefers the
minted sink at the head of the silent tier, an operator
override still beats everything, a narrowing minted sink
demotes below real hardware, and stale ids fall back to
the ladder unchanged. Plus AudioReadiness — the
full/audio-only/mic-only/nothing classification, logged
with every plan change (§C4's seed).
audio-probe 'mint' runs the provider synchronously; 'plan' prints one
real wiring pass + readiness — the field-triage command.
Without Steam's drivers nothing changes: provisioning degrades to absent
ids and the plan keeps the name-based ladder (primaries → cable → real
hardware) exactly as before.
The other half of the audio-substrate decision (spikes S2+S3 green, minted
endpoints landed in the previous commit): stop bundling a third-party
kernel driver the host no longer needs.
installer the VB-CABLE task, payload, silent-install run and the
donationware notice are gone; a suppressible notice tells
a Steam-less box that audio needs Steam INSTALLED (never
running) and that installing it later just works. A cable
from an older install is still deliberately not removed.
packer + CI -VbCableDir/VBCABLE_DIR, the staged-payload check and the
runner provisioning download are gone; SBOM drops the
redistributed-driver component.
winget the VB-Audio bundling-grant agreement becomes the honest
Steam requirement (surfaced on the unattended path where
no wizard is on screen).
docs windows-host/uninstall/security/echo say what actually
ships: no kernel-mode driver of our own, endpoints minted
from Valve's vendor-signed drivers, VB-CABLE mentioned
only as the historical fallback that keeps working.
host wording the mic-open guidance and module headers lead with Steam;
the NAME ladder itself is untouched — demoting 'cable
input' was considered and rejected (on a box where minting
transiently fails, the SSM would outrank an installed
cable, steal the silent sink, and make audio host-audible).
A fresh CLI process has no startup worker to have finished, so the plan
devtest raced its own background provisioning thread and printed the name
ladder instead of tier-0. ensure_blocking() re-resolves existing marker
devnodes in milliseconds before the wiring pass runs.
The capture-direction lookup built its endpoint id with the RENDER prefix
{0.0.0.00000000}., but WASAPI's enumeration returns capture ids as
{0.0.1.00000000}.{guid} — so the minted microphone's capture side never
string-matched the enumeration and the wiring plan paired no recording
device (audio-probe plan on the target box: mic_capture = '-'). Measured;
IMMDeviceEnumerator::GetDevice tolerated the wrong prefix, which is why
the S3 spike's direct open still passed.
RuntimeStatus gains an 'audio' object (Windows hosts): readiness
(full/audio_only/mic_only/none), the friendly names carrying each role,
and the three degradation flags (mic_withheld, last_resort, narrowing) —
the verdicts that previously lived only in tracing logs. Snapshot of the
last wiring pass (the mic pump wires at host start and on every reopen);
a status poll never triggers COM work or IPolicyConfig writes.
An Audio wiring card (Windows hosts) below the status tiles: a readiness
badge (Ready / No microphone / No game audio / Not wired), the friendly
names carrying each role, and the degradation notes that were previously
visible only in the host log — mic withheld for game audio, the known-
degraded last resort, a narrowing endpoint. api/openapi.json regenerated
from the host build (AudioWiring + RuntimeStatus.audio); en+de messages.
Measured on the target box: the pump wired 2 s before the provisioning
worker latched, took the cable as its write target, and the next wiring
pass would then have paired the default recording with the minted
microphone — which nothing writes into: dead mic-air until a pump reopen.
resolve_target now provisions synchronously (instant once latched; the
opt-out env is honoured), so the pump's held device and the plan's verdict
can never disagree.
Observed in the first real session on the substrate: the loopback ran on
the minted 'Punktfunk Speakers' (silent on the host by construction), but
have_silent name-matches only the Streaming Microphone — so the capture
open logged 'desktop audio will also play on the host' (false) and
re-attempted the Steam-pair install it doesn't need. The minted sink is
recognized by id; its name honestly says Speakers, which the name rule
must keep refusing for FOREIGN instances.
Field-measured necessity, not cosmetics: unstamped, the minted instances
read 'Lautsprecher (2- Steam Streaming Microphone)' and even the box's
owner picked the wrong device out of the Sound settings zoo (as did the
S1 probe's name match before it). The provider now stamps device-desc +
device-name through the pad program's proven machinery — write_stamps/
stamps_served, extracted from the pad-only stamp functions — with the
same store-first/registry-fallback routes and settle/re-pass discipline.
Names only: a wider stamp set makes AudioEndpointBuilder re-mint the
endpoint under a new GUID (measured on pads). Stamping is best-effort
(SYSTEM ACL route); the wiring never depends on names — identity stays
the recorded id.
Field report through the minted microphone: voice plays back an octave
low. Peaks are pitch-blind — S3 passed while a potential half-rate link
hid in the numbers (288k samples fits both the honest and the half-speed
story). Every probe measurement now estimates the dominant frequency by
zero crossings over the signal span, and `audio-probe micpitch` runs the
decisive experiment against the LIVE minted pair: 440 Hz in, frequency
out — ~440 = pair innocent, ~220 = the stereo render stream is forwarded
raw into the mono capture.
Measured with the new pitch probe: 440 Hz into the minted mic render came
back as 220 Hz off its capture side. The driver forwards the render
stream RAW into its mono capture, so a stereo-declared render (the
driver-default we inherited) turns every stereo frame into two mono
samples — half speed, octave down, exactly the field report. The mic
render now gets a coherent MONO 48 kHz format set stamped alongside its
name (PCM16 device format + float mix/host formats), making the engine
downmix before the driver crossing. The mic pump keeps pushing stereo;
shared-mode autoconvert handles the rest.
Second measurement round: the driver render pin is STEREO-ONLY — the
mono render stamp turned the endpoint unopenable (0x88890008 on every
open, the incoherent-stamp signature the pad program documented). Since
the crossing is raw, the coherent choice inverts: the CAPTURE side now
declares the stereo float stream that actually crosses (fixing the
octave-low voice), and the render has its stereo float default stamped
explicitly — pinning the pair AND healing any endpoint a previous build
left mono-stamped.
Final pitch-probe verdict on the SSM driver pair: the render pin is
stereo-only, the capture pin mono-only (stamping either differently makes
the endpoint unopenable), and the crossing between them is a RAW byte
pass — so voice fed through the render endpoint reads back an octave low
and no format stamp can fix it. S3 peak-based PASS = false pass; per the
design doc revert clause the mic falls back to the name ladder (a virtual
cable), pending the user re-decision. The SPEAKERS substrate keeps tier-0
(no driver crossing — a plain engine loopback tap, measured clean).
minted_ids() publishes speakers only; the mic endpoints stay minted and
recorded (provisioned()) for the micpitch probe and a possible future
non-render transport, and their format stamps now pin each side to its
pin one true format — healing the endpoints this branch earlier
mis-stamped.
The user challenged the format-locked-pins verdict, and the pad program
is the counter-evidence: it hit the SAME 0x88890008 unopenable-endpoint
signature and cured it with a COHERENT stamp set, after which the same
driver family served 4ch happily. This branch previous attempts were
contaminated twice over — a float device-format (the pad bisect proved
the split must be PCM16 device / float mix+host) and no
AudioEndpointBuilder restart (Restart-Service Audiosrv never touches its
dependency, so endpoint configs were never rebuilt). Both mic endpoints
now get one identical coherent stereo set; the octave-low hypothesis
shifts from "raw crossing by design" to "the two endpoint stores
disagreed (stereo render default vs mono capture default)".
Exclusive+shared IsFormatSupported across {1,2}ch x {16,32}bit x
{44.1,48,96}kHz on both minted mic pins. Interrogates the DRIVER,
bypassing every endpoint-store stamping question: what the pins truly
accept decides whether the mic leg has any coherent configuration, and
whether an exclusive-mode mono open is an escape hatch. (The pad program
made its own breakthrough with exactly this instrument on the sibling
SSS driver.)
Measured resolution of the 0x88890008 mystery: IsFormatSupported said the
capture accepts 2ch/48k shared while Initialize kept failing — because
the probe itself had switched to a MONO ask for frequency counting, and
this stack does not bridge channel counts on capture even under
autoconvert. Every unopenable-endpoint verdict after that switch was the
instrument, not the endpoint. Stereo ask restored; crossings counted on
channel 0.
Live bisect on a fresh endpoint: the mix/host format keys are
RENDER-engine properties — stamped onto a capture endpoint they broke its
shared-mode graph (IsFormatSupported reported 2ch/48k OK while Initialize
failed 0x88890008 on a once-stamped fresh endpoint; unstamped it opened
fine, S3). The capture now gets ONLY the device-format key — the knob
mmsys.cpl itself writes — declaring the stereo the pins actually accept.
The revert un-reverts, on measurement: with the per-direction stamp sets
(render = the pad-proven PCM16-device/float-mix stereo split, capture =
device-format only), micpitch reads 440 Hz in as 440 Hz out at exact
peak. The octave-low voice was the driver DEFAULT endpoints disagreeing
(stereo render vs mono capture), never a raw-crossing design. The user
called the wrong verdict — the pad program 4ch success was the
counter-evidence that reopened the case.
Two conflicts, both unions of independent removals/fixes: main fixed the
same three install.rs SAFETY comments this branch fixed (main's phrasing
kept), and the runner provisioning drops BOTH env lines — main removed
PF_FFVK_VULKAN_INCLUDE (pf-ffvk is gone since the FFmpeg replacement),
this branch removed VBCABLE_DIR (the retirement).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The host now mints its own audio endpoints from Steam's streaming drivers — "Punktfunk Speakers" (the client-only desktop-audio sink) and "Punktfunk Microphone" (mic passthrough) — and wires them by identity as the plan's tier-0. VB-Cable is fully de-bundled: audio needs Steam installed (never running); a user-installed cable keeps working as a fallback mic target. Field-verified end to end on the RTX box, including the mic at true pitch.
Design + full measurement record:
punktfunk-planning/design/windows-audio-endpoints-and-vbcable.md.What's in here
Wiring correctness (ships value even without minting)
windows/install.rs(landed while the Windows CI runner was down).The minted substrate
audio/windows/minted.rs: devnode-per-role provider (marker-matched across restarts, startup worker + cooled-down retry, default-grab restoration), built on a shared minting surface extracted frompad_endpoint.rs(create_media_devnode,bind_driver,write_stamps, capture-side endpoint lookup with the correct{0.0.1.…}id prefix).wiring_plan:MintedIdstier-0 by recorded endpoint ID (names cannot distinguish minted instances from Steam's primaries — measured), capture side paired by ID, minted sink heads the silent tier with the same narrowing discipline,AudioReadinessclassification logged with every plan.VB-Cable retirement
Surfacing
/statusgainsaudio(readiness, role endpoint names,mic_withheld/last_resort/narrowing); openapi regenerated, drift test green.punktfunk-host audio-probedevtest: the S1–S3 spikes plusmint,plan,micpitch(zero-crossing pitch detector — peaks are pitch-blind, which is how the octave bug initially slipped through) andmicpins(exclusive/shared format-capability map).Measurements behind the decisions
micpitch440 Hz → 220 Hz before the format stamps; 440 Hz → 440 Hz at exact peak after. Both pins accept stereo/48 kHz (micpins).nvenc,amf-qsv,qsv),audio::tests 81/81, openapi drift.Still open (follow-ups, not blockers)
The S1-S3 spikes from windows-audio-endpoints-and-vbcable.md as one runnable devtest (no game, no client, ssh-drivable): audio-probe ssm S3, the decision gate: mint a SECOND devnode of Valve's Steam Streaming Microphone driver and prove the pair end to end (tone into its render endpoint must come back out of its capture endpoint). Pass = a punktfunk-owned virtual mic needs no VB-Cable wherever Steam is installed. audio-probe sink S2: mint a Speakers instance, park the DEFAULT playback on it, tone through the default device, WASAPI-loopback the instance - the desktop-audio capture path minus the game. audio-probe sss-primary S1: the primary Speakers' known-silent loopback, re-measured, with mix format + steam.exe state. audio-probe cleanup remove every probe-minted devnode (marker value in Device Parameters, never name-guessing). pad_endpoint grows the first slice of the design's §C1 shared minting surface: create_media_devnode(desc, hwid, mark), bind_driver(hwid, inf), find_capture_endpoint_for_devnode — the pad provisioner now calls the same functions. The probe restores whatever default devices the minting disturbed before it exits.The audio-substrate program's Phase 2 (spikes S2+S3 measured green on the target box): the host mints its OWN instances of Valve's streaming-audio drivers and wires by IDENTITY instead of borrowing Steam's primaries — minted.rs the provider: one devnode per role ('Punktfunk Speakers' from SteamStreamingSpeakers.inf, 'Punktfunk Microphone' from SteamStreamingMicrophone.inf), marker-matched across restarts (PunktfunkAudioRole in Device Parameters — names are NOT identity, a minted instance is name-identical to the primaries), provisioned on a startup worker like pad audio, retried with a 60 s cool-down from wiring passes, defaults restored when a fresh endpoint grabs them. wiring_plan MintedIds tier-0: the mic takes its minted device outright (capture side paired by the provider's id — a name search cannot tell it from the primary), the loopback prefers the minted sink at the head of the silent tier, an operator override still beats everything, a narrowing minted sink demotes below real hardware, and stale ids fall back to the ladder unchanged. Plus AudioReadiness — the full/audio-only/mic-only/nothing classification, logged with every plan change (§C4's seed). audio-probe 'mint' runs the provider synchronously; 'plan' prints one real wiring pass + readiness — the field-triage command. Without Steam's drivers nothing changes: provisioning degrades to absent ids and the plan keeps the name-based ladder (primaries → cable → real hardware) exactly as before.The other half of the audio-substrate decision (spikes S2+S3 green, minted endpoints landed in the previous commit): stop bundling a third-party kernel driver the host no longer needs. installer the VB-CABLE task, payload, silent-install run and the donationware notice are gone; a suppressible notice tells a Steam-less box that audio needs Steam INSTALLED (never running) and that installing it later just works. A cable from an older install is still deliberately not removed. packer + CI -VbCableDir/VBCABLE_DIR, the staged-payload check and the runner provisioning download are gone; SBOM drops the redistributed-driver component. winget the VB-Audio bundling-grant agreement becomes the honest Steam requirement (surfaced on the unattended path where no wizard is on screen). docs windows-host/uninstall/security/echo say what actually ships: no kernel-mode driver of our own, endpoints minted from Valve's vendor-signed drivers, VB-CABLE mentioned only as the historical fallback that keeps working. host wording the mic-open guidance and module headers lead with Steam; the NAME ladder itself is untouched — demoting 'cable input' was considered and rejected (on a box where minting transiently fails, the SSM would outrank an installed cable, steal the silent sink, and make audio host-audible).The capture-direction lookup built its endpoint id with the RENDER prefix {0.0.0.00000000}., but WASAPI's enumeration returns capture ids as {0.0.1.00000000}.{guid} — so the minted microphone's capture side never string-matched the enumeration and the wiring plan paired no recording device (audio-probe plan on the target box: mic_capture = '-'). Measured; IMMDeviceEnumerator::GetDevice tolerated the wrong prefix, which is why the S3 spike's direct open still passed.Exclusive+shared IsFormatSupported across {1,2}ch x {16,32}bit x {44.1,48,96}kHz on both minted mic pins. Interrogates the DRIVER, bypassing every endpoint-store stamping question: what the pins truly accept decides whether the mic leg has any coherent configuration, and whether an exclusive-mode mono open is an escape hatch. (The pad program made its own breakthrough with exactly this instrument on the sibling SSS driver.)