Files
multi-agent-mux/.agents/reports/reviewer-grok-01/report-93408cd8.md
T
GodopuandClaude Fable 5.1 c3e6a7e96d release(v4.7.3): bump framework and eight skills to 4.7.3 in lockstep; archive PR #37 merge-side reviews
Issue #36: delegated prompts travel by file, a delegation that fails ends
the loop with rc 1. VERSIONS.md carries the entry; the merge-side reports
(round 1 @59be1c8 and round 2 @708262a with identity sidecars, base
59be1c8 -> head 708262a, evidence review-tree) are archived under
.agents/reports/<session>/.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VCgu9Fa9iT7TbJUSzdq4Ff
2026-09-24 18:10:28 +09:00

3.0 KiB
Raw Blame History

🔍 Review Report — Job 93408cd8 (PR #37 @ 59be1c8)

  • Reviewer: reviewer-grok-01 · 2026-09-24
  • 검증 경로: /var/folders/q_/68sxgw3j073dgjg8wl9s08vw0000gn/T/mam-review/loop-20260924T080014Z-2b3df0/1
  • identity: base 1debc7d head 59be1c8 tree a009c90 (일치)
  • 본 체크아웃: main 1debc7d 유지

git diff --check 클린. 6커밋.

NOT PASS

N1. S9 가 macOS 에서 실패한다

tests/test_issue36_prompt_transport.py:602 가 stderr 에 리터럴 File too large 를 요구한다. 이 호스트(Darwin)에서 ulimit -f 1 로 delegate_job_safe 쓰기가 실패하면 rc 는 1 이고 stderr 는 이식 가능한 문장뿐이다:

delegate_job_safe: cannot write the prompt file under …/.mam

bash 가 libc 문구 File too large 를 찍지 않아 단언이 깨진다. 같은 스위트는 1 failed, 99 passed, 1 skipped (s1b 는 linux_only).

대안: 잔여 파일 없음과 cannot write the prompt file 은 모든 플랫폼에서 단언하고, File too large 는 Linux 에서만 보거나 빼라. 제품 경로(run_loop.sh 의 rm -f + stderr)는 이미 그 계약이다.

그 외 (N1 만 막음)

(1) 전달. 러너 _run_cmd 는 --prompt-file 만 (runner.py:485). 래퍼는 파일이면 그 경로를 registry 에 넘기고, 그 전에 읽는다 (multi-agent-mux-delegate-job:188-199). cli.py / registry.py 는 --prompt 와 --prompt-file 상호 배타. lib.sh 제출 두 곳과 delegate_job_safe 가 --prompt 를 파일로 바꾼다. 옛 셸 러너의 --prompt 호출은 모두 delegate_job_safe 를 탄다. 문서의 --prompt 예시는 하위 호환. 임시 파일은 제어 루트 .mam/prompt-*, 래퍼 반환 후 삭제. 셸 쓰기 실패는 rm -f.

(2) 실패. OSError → rc 126, 재시도도 같은 처리, 등록 실패면 None → 루프 rc 1. 재심·중재 미등록 은 rc 1. 순응 잡은 미등록뿐 아니라 wait_for_job 실패도 rc 1 (runner.py:1393-1395). 코드가 안 고쳐진 채 다음 라운드로 가면 안 되므로 강화가 맞다. 로그 문장이 wait 실패에도 “Failed to register” 인 것은 비차단.

(3) diff 상한. diff_collect.sh 주석: 증거만 자르고 전달은 파일. 잘린 diff 의 diff-only 원격 거부는 runner.py:1204 그대로.

(4) create. 주입문은 brief 절대경로만. delegate_publish_cmd 와 --expect-dispatch-token 유지. S8(100·130500) 통과.

(5) 테스트. 140KB 는 실제 wrapper/registry subprocess. S1b(E2BIG)는 Linux 전용 — macOS 는 커널 상한이 없어 skip 이 맞다. 경로는 파일을 검증한다. S8/S9 는 mock 이 아님.

(6)–(8). --prompt 짧은 문자열은 그대로. 4.7.3 bump 는 오케스트레이터 예정.

테스트

검증 경로, AGENT_PYTHON_BIN = 컨트롤 .venv, basetemp /tmp:

test_issue36_prompt_transport.py + test_issue23_24_startup_path.py + test_loop_cli.py

1 failed, 99 passed, 1 skipped in 237.33s.

[VERDICT: NOT PASS]