Run the native integration clients from the repo so they test src/
All three native clients were spawned with cwd "/tmp". Module resolution follows the working directory, so (sigil websocket) came from the globally installed package and src/ was never executed.
Measured, per test, by planting an unconditional raise in a procedure the test must run and checking whether the suite noticed:
binary validate-handshake raises -> still "integration-ok" VACUOUS
upgrade-timeout validate-handshake raises -> still "integration-ok" VACUOUS
connect-timeout fails rc=1 on CLEAN source at cwd=/tmp BROKENconnect-timeout deserves its own note: under a plant it exited 1 and looked like it was detecting the defect. It was not. The positive control -- the same test on unmodified source -- also exits 1, twice. Without that control this would have been recorded as a working gate.
With cwd set to the repo all three pass on clean source and all three go red under a plant appropriate to the path they exercise (validate-handshake for binary and upgrade-timeout, tcp-connect/bounded for connect-timeout, which never reaches the handshake).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AbXvyDXoTUyqV1tb1fkeFa
test/integration/test-native-websocket-binary.mjs | 2 +-
test/integration/test-native-websocket-connect-timeout.mjs | 2 +-
test/integration/test-native-websocket-upgrade-timeout.mjs | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)test/integration/test-native-websocket-binary.mjsmodified
path.join(here, "native-binary-client.sgl"),];const child = spawn("sigil", args, { cwd: "/tmp", cwd: repo, env: { ...process.env, SIGIL_WS_TEST_PORT: String(port) }, stdio: ["ignore", "pipe", "pipe"],});test/integration/test-native-websocket-connect-timeout.mjsmodified
path.join(here, "native-connect-timeout-client.sgl"),];const child = spawn("sigil", args, { cwd: "/tmp", env: process.env, stdio: ["ignore", "pipe", "pipe"], cwd: repo, env: process.env, stdio: ["ignore", "pipe", "pipe"],});let stdout = "";let stderr = "";test/integration/test-native-websocket-upgrade-timeout.mjsmodified
path.join(here, "native-upgrade-timeout-client.sgl"),];const child = spawn("sigil", args, { cwd: "/tmp", cwd: repo, env: { ...process.env, SIGIL_WS_TEST_PORT: String(port) }, stdio: ["ignore", "pipe", "pipe"],});