Repository navigation
test(cli-e2e): cover the replay server with effect lint (CLI-2880) - #7387
Conversation
There was a problem hiding this comment.
🤖 AI Review
Both independent reviews completed. Claude reported three findings; Codex reported none. Two findings are refuted by the configured runtime and the previous error-handling path. The enqueue race remains uncertain without Effect runtime validation; no blocking defect was confirmed.
Findings
| Severity | Location | Category | Sources | Claim |
|---|---|---|---|---|
| ⚪ NIT | apps/cli-e2e/src/server/replay-server.ts:879 |
error-handling |
claude | After an idle timeout errors the downstream controller, the reader could enqueue another chunk before scope cleanup interrupts it, producing a TypeError. |
Refuted findings (kept for transparency, not posted as review comments)
apps/cli-e2e/src/server/replay-server.ts:235(robustness): Docker routing relies on Bun honoring socketPath in Agent options and could misroute to localhost:80 on another Bun version.
Refuted: The repository pins Bun 1.4.4. A native node:http probe under that exact runtime, using these Agent options, attempted the supplied Unix socket path rather than localhost:80. The finding identifies a dependency on runtime behavior, but its failure scenario requires an unsupported or hypothetical future runtime; it does not establish a defect on the configured runtime.apps/cli-e2e/src/server/replay-server.ts:803(error-handling): Using the generic aborted error for idle timeout removes the descriptive timeout message previously shown in the Docker body-capture log.
Refuted: The old descriptive error was passed to request.destroy, but the body-capture log consumed the separate response error. A transport-only reproduction under pinned Bun 1.4.4 produced 'Docker socket idle for 60s' on the request and 'aborted' on the response. The old body-capture log therefore also received 'aborted'; the claimed diagnostic regression is not present.
Stats
Claude findings: 3 · Codex findings: 0 · Confirmed: 0 · Refuted: 2 · Uncertain: 1
Models: claude-opus-5-5 + gpt-6.1-sol · Trigger: auto · Workflow run
This review runs once per PR. A maintainer can request another with a /ai-review comment.
CLI benchmark: no changes foundCommit
API calls: unchanged for all 7 commands. Binary size: 134.0 MB, unchanged. Details: timing ranges, API calls per command, slowest phasesTiming ranges
API calls per command
Slowest phasesNo command moved beyond noise, so there are no phase deltas. Comment |
TL;DR
brings the
apps/cli-e2ereplay server under the effect lint, so the allow list covers the wholewhats introduced?
FileSystem,HttpClientand typed errors withBun.serveas its only edge, and the global setup owns it through a scopenode:httpclient from@effect/platform-node, because bun'sfetchsorts response headers and recorded fixtures keep them in arrival orderps: in record mode the docker relay can send a response chunked where it used to send
content-length, with the same body bytes, and a failed relay logs its own error instead of the raw socket errorref