Why Windows discovery finds zero services: one readiness check speaking for seven engines #63
Replies: 2 comments
|
Follow-up: a second, unrelated defect with the same symptom turned up when I went back through the stage telemetry β filed as #64, analysis in #65. Short version: Relevant to this thread because it means the framing here β Windows-specific β is only half the story. The picker bug costs more runs fleet-wide (~40 vs 32) and hits macOS too; it was just quieter. |
|
All three asks are done now. Verify every engine. Report which are missing. The missing-engine toast named only the engine whose turn it was to notice, so a partial Distinguish a dependency bail from a real failure. The handbook stage returned a bare The cascade you traced is the part worth keeping in view: none of these were wrong answers, they were absent ones, and every stage that returned |
Uh oh!
There was an error while loading. Please reload this page.
What happens
On Windows,
Discovercompletes and finds zero services, every time. No.vinv/vinv.mdis written, no.vinv/services.jsonfollows, and the pipeline dead-ends before a single line is traced. macOS and Linux are unaffected.Confusingly, the extension reports that the engines installed successfully first.
Why
Two different checks answer "is the engine there?", and they disagree.
The readiness check probes one engine:
But
ENGINE_NAMEShas seven:and each stage gates on its own binary:
So a
uv syncthat materialisestracelensbut nothandbookputs the two in conflict.enginesSyncedsays ready. Then:The stage returns
falsebefore doing any work. And because the telemetry wrapper classifies a falsy return as an error without distinguishing why:a missing engine is indistinguishable from an agent that ran for ten minutes and failed.
Why it cascades
Bring-up is gated on the handbook existing, so it never runs at all β the stage that would write
services.jsonis never reached. That is why the symptom presents as "zero services" rather than "missing handbook": the failure surfaces two stages downstream of its cause.What the field data shows
Aggregate across extension versions 0.2.8 β 0.2.15:
handbook_okhandbook_okpredicts the outcome perfectly β 21/21 runs with a handbook found services, 0/75 without.It is not the harness:
claude-codeis 7/18 on darwin and 0/40 on win32.Stage outcomes on win32 β
handbook32 error / 0 ok,index61 error / 0 ok,deadcode10 ok,bringupno rows at all. 19 of the 32 handbook errors finish in under a second, which is the precondition bail above; the other 13 run long (up to 600 s) and still write nothing, which looks like a separate bug.The clincher:
deadcodeis the only stage that ever succeeds on Windows, and the only one not inENGINE_NAMESβ it needs no engine binary at all. Every Windows-failing stage requires one.Ruled out
Checked at
v0.2.15and correct in each case β venv path handling (enginesVenvBinDirreturnsScriptson win32,executableFileNameappends.exe), PowerShell chaining (; if ($?) { β¦ }, the&&parse error was fixed earlier),_resolve_bash(prefers Git-for-Windows bash, skips the WSL launcher), process teardown (taskkill /T /F), and every harness spawn site (shell: true). Missinguv/rustprerequisites appear on darwin at a comparable rate, so they are not the discriminator.Proposed direction
enginesSyncedverifies every engine the pipeline will invoke, not justtracelens.uv syncis visible rather than silent.outcome: 'error'.Separately, why
uv syncyieldstracelensbut nothandbookon Windows still needs a reproduction. But a readiness check should not be able to report ready while a required engine is absent, whatever the cause.Tracked as #62.
All reactions