CI has been red on every run since v0.21.2 (runs 77–88): all 175 tests pass, but two deterministic uncaught read ECONNRESET exceptions from src/mesh/mesh.service.spec.ts make vitest exit 1 ("Errors 2").
Root cause: the fake bridge's accepted server-side sockets had no 'error' handler. Both new watchdog specs destroy the service's client socket while data is still pending in its receive buffer (the overflow spec floods 300 KB and destroys on the first ~64 KB chunk; the garbage spec destroys back-to-back after its last write) — so the kernel sends RST instead of FIN and read ECONNRESET fires on the server-side socket with no handler → uncaught exception → run-level failure.
Fix: one no-op socket.on('error', () => {}) on accepted sockets in fake-bridge.ts's startBridge() — single registration point covering all spec files that use the fake bridge. No production code touched (fake-bridge is imported by specs only; tsconfig.build excludes **/*spec.ts, so no runtime diff → no deploy needed).
Verified: npm test exit 0 twice (175/175, no Errors block; baseline before fix was exit 1), build + oxlint green.
CI has been red on every run since v0.21.2 (runs 77–88): all 175 tests pass, but two deterministic uncaught `read ECONNRESET` exceptions from src/mesh/mesh.service.spec.ts make vitest exit 1 ("Errors 2").
Root cause: the fake bridge's accepted server-side sockets had no 'error' handler. Both new watchdog specs destroy the service's client socket while data is still pending in its receive buffer (the overflow spec floods 300 KB and destroys on the first ~64 KB chunk; the garbage spec destroys back-to-back after its last write) — so the kernel sends RST instead of FIN and `read ECONNRESET` fires on the server-side socket with no handler → uncaught exception → run-level failure.
Fix: one no-op `socket.on('error', () => {})` on accepted sockets in fake-bridge.ts's startBridge() — single registration point covering all spec files that use the fake bridge. No production code touched (fake-bridge is imported by specs only; tsconfig.build excludes **/*spec.ts, so no runtime diff → no deploy needed).
Verified: npm test exit 0 twice (175/175, no Errors block; baseline before fix was exit 1), build + oxlint green.
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.
CI has been red on every run since v0.21.2 (runs 77–88): all 175 tests pass, but two deterministic uncaught
read ECONNRESETexceptions from src/mesh/mesh.service.spec.ts make vitest exit 1 ("Errors 2").Root cause: the fake bridge's accepted server-side sockets had no 'error' handler. Both new watchdog specs destroy the service's client socket while data is still pending in its receive buffer (the overflow spec floods 300 KB and destroys on the first ~64 KB chunk; the garbage spec destroys back-to-back after its last write) — so the kernel sends RST instead of FIN and
read ECONNRESETfires on the server-side socket with no handler → uncaught exception → run-level failure.Fix: one no-op
socket.on('error', () => {})on accepted sockets in fake-bridge.ts's startBridge() — single registration point covering all spec files that use the fake bridge. No production code touched (fake-bridge is imported by specs only; tsconfig.build excludes **/*spec.ts, so no runtime diff → no deploy needed).Verified: npm test exit 0 twice (175/175, no Errors block; baseline before fix was exit 1), build + oxlint green.