Neil
f737f3499f
fix(relay): stream an oversized fs.listFiles reply instead of refusing it ( #17954 )
...
Opening Orca's own checkout over SSH cannot list its files in one response frame.
22,617 tracked paths average 58 characters, so the 20,001-row page the client asks
for serializes to 1,223,415 bytes — past `DISPATCHER_CONTROL_QUEUE_MAX_BYTES`, so
`sendResponse` demotes it to the `legacy-response` lane, where an unrelated
producer backlog can refuse it as an opaque `ResponseOverCapacity`. Break-even is
around 49 characters of average path; any `packages/<name>/src/...` monorepo is
over the line.
Picking a ceiling to refuse at does not fix that, it just moves where it shows up
and refuses listings that would have been delivered. `__streamResponse` already
exists for exactly this on the git methods, and it is its own negotiation in both
directions: an old client never sends it and gets the plain array on the
legacy-response lane as before, and an old relay ignores it and answers plainly,
which the client detects by the sentinel marker being absent. So fs.listFiles opts
into it — no new method, no new opcode, nothing to advertise — and the size of a
listing stops being a correctness question.
The response-stream registry becomes one per relay, shared by FsHandler and
GitHandler. A second registry is not an option and the header of
git-response-stream.ts says why: a client keys reassembly on `streamId` alone, so
two would hand out the same id and cross-feed chunks, and only the handler that
registers `git.responseAck` can credit the window a pump parks on.
Also declares `maxResults` on the runtime-RPC `files.listAll` and forwards it.
The mechanism "the client names its cap, so a full page reads as truncation" was
wired only on the Electron IPC hop; web and mobile were saved incidentally by
`remoteFileContentBudget` defaulting the cap inside `listRuntimeFiles`. A new
optional field is additive in both directions (wire rule 1).
The new Docker-gated spec is claimed by run-ssh-docker-e2e.mjs. The sharded e2e
lanes set no ORCA_E2E_SSH_DOCKER, so a Docker-gated spec that no runner names
self-skips everywhere and still reports green — pr-e2e-gate-contract enforces that.
Closes #12547
2026-09-02 05:36:54 -07:00
..
2026-06-29 22:38:29 -07:00
2026-06-29 22:38:29 -07:00
2026-08-13 21:51:55 -07:00
2026-07-23 18:35:31 -07:00
2026-08-28 04:17:45 -07:00
2026-08-27 12:32:29 -07:00
2026-08-24 20:45:38 -07:00
2026-08-01 14:27:16 -07:00
2026-08-01 14:27:16 -07:00
2026-08-17 11:10:38 -07:00
2026-08-30 21:20:53 -07:00
2026-08-28 04:17:45 -07:00
2026-07-27 23:50:25 -07:00
2026-08-27 12:32:29 -07:00
2026-08-28 04:17:45 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-08-11 18:19:43 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-07-23 18:35:31 -07:00
2026-06-29 22:38:29 -07:00
2026-06-29 22:38:29 -07:00
2026-09-02 01:29:26 -07:00
2026-08-29 20:15:10 -07:00
2026-08-05 02:56:07 -07:00
2026-08-29 20:15:10 -07:00
2026-08-29 20:15:10 -07:00
2026-08-11 18:19:43 -07:00
2026-08-05 10:30:04 -07:00
2026-08-29 20:15:10 -07:00
2026-08-29 20:15:10 -07:00
2026-08-10 05:56:39 -07:00
2026-08-10 01:17:14 -07:00
2026-08-18 12:37:39 -07:00
2026-08-29 20:15:10 -07:00
2026-08-29 20:15:10 -07:00
2026-08-29 20:15:10 -07:00
2026-08-29 20:15:10 -07:00
2026-09-02 01:29:26 -07:00
2026-09-01 22:38:07 -07:00
2026-08-07 23:02:29 -07:00
2026-08-10 00:59:51 -07:00
2026-08-10 00:59:51 -07:00
2026-08-05 10:30:04 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-08-10 01:17:14 -07:00
2026-08-29 20:15:10 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-27 23:27:39 -07:00
2026-08-19 16:45:42 -07:00
2026-09-02 01:29:26 -07:00
2026-08-19 16:45:42 -07:00
2026-08-19 16:45:42 -07:00
2026-07-23 18:35:31 -07:00
2026-06-29 22:38:29 -07:00
2026-06-19 17:14:55 -07:00
2026-08-18 13:32:48 -07:00
2026-08-10 17:25:26 -07:00
2026-08-22 13:06:38 -07:00
2026-08-22 13:06:38 -07:00
2026-07-16 13:26:15 -07:00
2026-07-16 13:26:15 -07:00
2026-08-18 13:32:48 -07:00
2026-08-01 14:27:16 -07:00
2026-07-23 18:35:31 -07:00
2026-08-13 22:48:24 -07:00
2026-08-05 17:11:28 -07:00
2026-09-02 05:36:54 -07:00
2026-08-10 17:25:26 -07:00
2026-08-18 13:32:48 -07:00
2026-09-02 05:36:54 -07:00
2026-07-08 12:01:06 -07:00
2026-07-08 12:01:06 -07:00
2026-08-30 23:04:08 -07:00
2026-08-30 23:04:08 -07:00
2026-08-15 18:25:37 -07:00
2026-07-29 17:03:15 -07:00
2026-07-23 18:35:31 -07:00
2026-06-15 22:13:46 -07:00
2026-06-29 22:38:29 -07:00
2026-08-31 16:27:28 -07:00
2026-08-21 14:44:08 -07:00
2026-07-16 18:21:08 -07:00
2026-08-01 21:59:41 -07:00
2026-08-01 21:59:41 -07:00
2026-08-25 22:19:04 -07:00
2026-08-11 02:18:29 -07:00
2026-08-11 02:18:29 -07:00
2026-08-11 02:18:29 -07:00
2026-07-10 19:10:01 -07:00
2026-07-10 19:10:01 -07:00
2026-08-29 20:19:09 -07:00
2026-06-19 17:14:55 -07:00
2026-08-29 20:19:09 -07:00
2026-08-15 00:54:20 -07:00
2026-08-29 20:19:09 -07:00
2026-09-01 22:44:05 -07:00
2026-08-29 20:19:09 -07:00
2026-08-15 00:54:20 -07:00
2026-08-21 14:44:08 -07:00
2026-07-10 18:19:36 -07:00
2026-08-29 20:19:09 -07:00
2026-08-29 20:19:09 -07:00
2026-08-29 20:19:09 -07:00
2026-08-25 22:19:04 -07:00
2026-07-13 12:42:55 -07:00
2026-06-16 18:10:01 -07:00
2026-08-13 22:48:24 -07:00
2026-08-29 20:19:09 -07:00
2026-09-01 22:44:05 -07:00
2026-08-24 12:11:55 -07:00
2026-07-12 21:04:13 -07:00
2026-08-30 14:19:05 -07:00
2026-08-30 23:04:51 -07:00
2026-07-11 01:30:19 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-07-20 14:50:12 -07:00
2026-08-29 20:19:09 -07:00
2026-08-24 12:11:55 -07:00
2026-08-15 00:54:20 -07:00
2026-06-29 22:38:29 -07:00
2026-08-10 20:25:48 -07:00
2026-08-11 18:19:43 -07:00
2026-08-15 00:54:20 -07:00
2026-08-29 20:19:09 -07:00
2026-05-31 01:50:16 -07:00
2026-07-10 18:19:36 -07:00
2026-08-30 16:36:14 -07:00
2026-09-01 22:05:30 -07:00
2026-07-15 15:24:15 -07:00
2026-07-15 15:24:15 -07:00
2026-09-01 22:05:30 -07:00
2026-08-22 23:00:31 -07:00
2026-08-22 23:00:31 -07:00
2026-07-10 18:19:36 -07:00
2026-08-15 00:54:20 -07:00
2026-08-13 22:48:24 -07:00
2026-09-01 22:44:05 -07:00
2026-09-02 05:36:54 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-09-02 05:36:54 -07:00
2026-08-07 09:55:54 -07:00
2026-08-05 14:46:00 -07:00
2026-07-23 18:35:31 -07:00
2026-08-13 22:48:24 -07:00
2026-07-20 14:50:12 -07:00
2026-07-20 14:50:12 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-07-23 18:35:31 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 20:19:18 -07:00
2026-07-29 20:19:18 -07:00
2026-09-01 22:38:07 -07:00
2026-09-01 22:38:07 -07:00
2026-09-01 22:38:07 -07:00
2026-09-01 22:38:07 -07:00
2026-07-27 01:14:33 -07:00
2026-08-11 21:16:36 -07:00
2026-08-11 21:16:36 -07:00
2026-08-09 16:45:27 -07:00
2026-08-11 22:13:35 -07:00
2026-05-14 16:06:23 -07:00
2026-05-14 16:06:23 -07:00
2026-08-18 18:55:56 -07:00
2026-08-10 20:49:21 -07:00
2026-08-07 21:59:24 -07:00
2026-08-07 21:59:24 -07:00
2026-07-29 17:03:15 -07:00
2026-07-23 18:35:31 -07:00
2026-08-10 01:17:14 -07:00
2026-08-10 01:17:14 -07:00
2026-08-30 14:49:18 -07:00
2026-08-30 14:49:18 -07:00
2026-08-15 00:54:20 -07:00
2026-08-31 17:45:55 -07:00
2026-08-30 14:49:18 -07:00
2026-08-31 01:28:29 -07:00
2026-08-31 08:17:40 -07:00
2026-08-30 14:49:18 -07:00
2026-08-15 00:54:20 -07:00
2026-08-30 14:49:18 -07:00
2026-08-30 14:49:18 -07:00
2026-09-01 22:38:07 -07:00
2026-08-30 14:49:18 -07:00
2026-08-30 14:49:18 -07:00
2026-08-30 14:49:18 -07:00
2026-09-01 22:38:07 -07:00
2026-07-27 16:40:59 -07:00
2026-08-19 22:37:42 -07:00
2026-08-19 22:37:42 -07:00
2026-08-30 18:13:36 -07:00
2026-08-31 18:38:03 -07:00
2026-08-31 18:38:03 -07:00
2026-07-29 17:03:15 -07:00
2026-07-30 18:42:10 -07:00
2026-08-31 03:10:44 -07:00
2026-08-31 02:41:15 -07:00
2026-07-29 17:03:15 -07:00
2026-08-31 03:10:44 -07:00
2026-08-31 02:41:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-08-31 03:10:44 -07:00
2026-07-29 17:03:15 -07:00
2026-08-31 03:10:44 -07:00
2026-08-31 03:10:44 -07:00
2026-08-28 04:17:45 -07:00
2026-07-14 15:23:06 -07:00
2026-07-14 15:23:06 -07:00
2026-08-24 19:55:57 -07:00
2026-08-30 12:36:23 -07:00
2026-08-30 12:36:23 -07:00
2026-07-08 13:06:39 -07:00
2026-07-08 13:06:39 -07:00
2026-08-01 22:21:37 -07:00
2026-08-01 14:27:16 -07:00
2026-08-02 00:58:10 -07:00
2026-08-01 15:45:45 -07:00
2026-08-01 15:45:45 -07:00
2026-08-24 19:55:57 -07:00
2026-07-29 17:03:15 -07:00
2026-08-01 14:24:31 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-24 19:55:57 -07:00
2026-08-01 14:27:16 -07:00
2026-08-24 19:55:57 -07:00
2026-08-05 10:30:04 -07:00
2026-08-05 10:30:04 -07:00
2026-07-29 17:03:15 -07:00
2026-07-31 05:44:53 -07:00
2026-07-31 05:44:53 -07:00
2026-07-31 05:44:53 -07:00
2026-08-05 10:30:04 -07:00
2026-08-05 10:30:04 -07:00
2026-09-01 23:35:38 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-29 17:03:15 -07:00
2026-07-30 18:42:10 -07:00
2026-07-30 18:42:10 -07:00
2026-09-01 23:35:38 -07:00
2026-08-24 19:55:57 -07:00
2026-09-02 05:36:54 -07:00
2026-08-24 19:55:57 -07:00
2026-06-29 22:38:29 -07:00
2026-08-11 18:19:43 -07:00
2026-08-10 01:17:14 -07:00
2026-08-01 14:27:16 -07:00
2026-08-01 02:56:52 -07:00
2026-07-15 15:23:35 -07:00
2026-08-01 02:56:52 -07:00
2026-07-13 05:32:31 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-23 18:35:31 -07:00
2026-07-15 15:23:35 -07:00
2026-08-24 19:55:57 -07:00
2026-08-07 23:02:29 -07:00
2026-08-07 23:02:29 -07:00
2026-08-07 23:02:29 -07:00
2026-07-29 11:31:35 -07:00
2026-07-29 11:31:35 -07:00
2026-07-08 13:59:42 -07:00
2026-07-08 13:59:42 -07:00
2026-07-26 12:50:05 -07:00
2026-07-26 12:50:05 -07:00
2026-08-28 04:17:45 -07:00
2026-08-28 04:17:45 -07:00
2026-07-10 12:56:17 -07:00
2026-07-10 12:56:17 -07:00
2026-08-17 00:55:04 -07:00
2026-08-21 13:15:46 -07:00
2026-08-21 13:15:46 -07:00
2026-08-05 02:56:07 -07:00
2026-08-05 10:30:04 -07:00
2026-08-05 10:30:04 -07:00
2026-08-05 10:30:04 -07:00
2026-07-30 18:42:10 -07:00
2026-07-31 05:44:53 -07:00
2026-07-16 21:32:13 -07:00
2026-07-20 14:50:12 -07:00
2026-07-20 14:50:12 -07:00
2026-08-30 14:49:18 -07:00
2026-08-17 22:39:02 -07:00
2026-08-18 03:12:47 -07:00
2026-08-18 03:12:47 -07:00
2026-08-18 18:55:56 -07:00
2026-07-05 23:56:37 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-07-27 18:50:52 -07:00
2026-07-27 18:50:52 -07:00
2026-08-29 20:06:41 -07:00
2026-07-10 00:19:45 -07:00
2026-08-01 14:27:16 -07:00
2026-08-25 15:36:51 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-07-25 02:30:59 -07:00
2026-08-09 16:45:27 -07:00