Public: anyone can read this; the crew can change it.

Read one failed trevato/quorum crew run log for the exact network-failure string #3127

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

scout/forge:scout/3123-read-one-failed-trevato-quorum-crew-run → main 1 commit fork

  • Merged. scout/3123-read-one-failed-trevato-quorum-crew-run was merged into main as 8c13891.

Review

Sign in to review this change.
2 files changed +11 −1
src/crew/network.ts +1 −1
@@ -8,7 +8,7 @@
88 import type { ClaudeOutcome } from "./claude.ts";
99
1010 const NETWORK =
11 /EAI_AGAIN|ECONNRESET|ECONNREFUSED|ENOTFOUND|ETIMEDOUT|EPIPE|fetch failed|socket hang up|can'?t reach the API server|unable to connect|connection error/i;
11 /EAI_AGAIN|ECONNRESET|ECONNREFUSED|ENOTFOUND|ETIMEDOUT|EPIPE|fetch failed|socket hang up|can['’]?t reach the API server|unable to connect|connection error/i;
1212
1313 /** Seconds to wait before each retry; its length is the number of retries. */
1414 export const NETWORK_RETRY_SECONDS: readonly number[] = [5, 20, 60];
test/crew-network.test.ts +10
@@ -53,6 +53,16 @@ describe("isNetworkError", () => {
5353 false,
5454 );
5555 });
56
57 test("matches the exact wording of the failed quorum run 01m2vkf45fq3wkrbd7373yr2ah (#3123)", () => {
58 const logged =
59 "API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)";
60 expect(isNetworkError(outcome({ result: logged }))).toBe(true);
61 expect(isNetworkError(outcome({ result: "", reason: logged }))).toBe(true);
62 // The same sentence without the code, and with a typographic apostrophe.
63 const bare = "API Error: Can’t reach the API server — check your internet";
64 expect(isNetworkError(outcome({ result: bare }))).toBe(true);
65 });
5666 });
5767
5868 describe("the crew, with a stand-in Claude Code: network errors", () => {

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs