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, base59be1c8-> head708262a, 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
3.0 KiB
🔍 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
1debc7dhead59be1c8treea009c90(일치) - 본 체크아웃:
main1debc7d유지
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]