mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-11-15 10:59:32 +01:00
fix(edit-history): a remote read with many subagents spans several round trips
The read script carries one case line per subagent cursor, and the whole script is one argument of the ssh line, which Linux caps at 128 KiB. From about 1000 subagents the command failed with E2BIG. The cursors have no cap and the stored conversation is read first, so the session stayed unavailable and not even a /clear got past it. A read with more than 300 subagent requests now takes several round trips. The cut is by name range, not only by count: the script takes a file no case line names for a new one, so plain groups would read each other's files as new. Each round trip walks only the names between its cuts, through one awk, so a new file lands in exactly one range. Budget and meta budget carry over, and a later round trip still lists its files, because a requested file missing from the result loses its cursor. A failed round trip fails the whole read and nothing of it reaches the store. A read of up to 300 runs no awk at all. Each round of the 60-seed fuzz is also cut at a random size and compared with the local reader. Run outside the suite too: bash --posix, BusyBox and mawk, and bash 3.2 in a container, which is macOS sh. That shell cannot parse a case inside $(...), so the names come from a shell function. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
26b63aea2d
commit
b5066744be
5 files changed
+451
-58
No files matched your search
@@ -33,8 +33,9 @@
|
||||
*
|
||||
* WHICH SESSIONS. Claude sessions, local and remote. Docker and non-claude sessions answer
|
||||
* `unsupported` and are never read. The deps get the session and read a remote one over ssh
|
||||
* (`remote-files.ts`): one round trip to find its transcript, one per read. A remote read never
|
||||
* wakes its host; a sleeping one is a connect timeout (`unavailable`, stored entries kept).
|
||||
* (`remote-files.ts`): one round trip to find its transcript, one per read (more for a
|
||||
* conversation with hundreds of subagents). A remote read never wakes its host; a sleeping one
|
||||
* is a connect timeout (`unavailable`, stored entries kept).
|
||||
*
|
||||
* IMAGES. A Bash candidate counts only when the file's mtime lies in the call's window
|
||||
* (start − 2 s … end + 2 s), so `ls *.png` lists nothing. Transcript times and mtimes come
|
||||
|
||||
Reference in new issue
Block a user