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
Check · Review · Land · Live done — Landed and live in production.
The exact wording from the failed quorum run was already matched by `NETWORK`. I added a test that pins it, and I made the pattern accept a typographic apostrophe.
shipped production is serving it deploy 84c60a0
The exact wording from the failed quorum run was already matched by NETWORK. I added a test that pins it, and I made the pattern accept a typographic apostrophe.
I read the run through the API (GET /api/v1/repos/trevato/quorum/runs/01m2vkf45fq3wkrbd7373yr2ah). Only its summary was available; I found no route for a full log, so I didn't see the raw log. The run is failed at attempt 6 with 0 turns, and its summary is:
no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)
Both EAI_AGAIN and can'?t reach the API server in src/crew/network.ts match that string.
- Pattern change:
can'?tis nowcan['’]?t, so a curly apostrophe in the message can't slip past. - Test:
test/crew-network.test.tsnow has a case using the exact logged string, checked against bothresultandreason. It also covers the curly-apostrophe variant. - Checks:
bun test test/crew-network.test.tspasses (10 tests).bun x tsc --noEmitcouldn't run here because bun can't write to its temp directory in the sandbox, so I haven't type-checked the change.
One thing for a person to check: the run still ended failed after 6 attempts. The summary is network-shaped, so the retry code should have caught it. Why it still failed is a separate question, and I didn't investigate it. I wouldn't call the sentinel report fixed on the strength of this change alone.
🤖 Generated with Claude Code
Approved. The change is a one-character widening of the NETWORK pattern (can['’]?t) plus a test pinning the exact logged string from run 01m2vkf45fq3wkrbd7373yr2ah. It touches no input boundary, no UI and no dependency, so the security, terminal and both-doors items do not apply. The curly-apostrophe assertion fails without the pattern change, so the test earns its place. The first two assertions already passed on main, and the test name says so honestly.
Two things to do next:
- Find out why that run ended
failedafter 6 attempts when its summary matchesEAI_AGAIN. Check whetherisNetworkErroris reached on the path that producedno changes pushed: ..., and whether the retry count is exhausted by a longer outage than 5+20+60s. Scout flagged this too; this pull does not fix the sentinel report. - Scout could not run
tscin its sandbox, so the type check is unverified. The forge check will cover it. Keep an eye on its verdict.
The exact wording from the failed quorum run was already matched by
NETWORK. I added a test that pins it, and I made the pattern accept a typographic apostrophe.I read the run through the API (
GET /api/v1/repos/trevato/quorum/runs/01m2vkf45fq3wkrbd7373yr2ah). Only its summary was available; I found no route for a full log, so I didn't see the raw log. The run isfailedat attempt 6 with 0 turns, and its summary is:no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)Both
EAI_AGAINandcan'?t reach the API serverinsrc/crew/network.tsmatch that string.can'?tis nowcan['’]?t, so a curly apostrophe in the message can't slip past.test/crew-network.test.tsnow has a case using the exact logged string, checked against bothresultandreason. It also covers the curly-apostrophe variant.bun test test/crew-network.test.tspasses (10 tests).bun x tsc --noEmitcouldn't run here because bun can't write to its temp directory in the sandbox, so I haven't type-checked the change.One thing for a person to check: the run still ended
failedafter 6 attempts. The summary is network-shaped, so the retry code should have caught it. Why it still failed is a separate question, and I didn't investigate it. I wouldn't call the sentinel report fixed on the strength of this change alone.🤖 Generated with Claude Code
Closes #3123