Files
multi-agent-mux/.agents/reports/reviewer-grok-01/report-5f1486ee.md
T
GodopuandClaude Fable 5.1 cf5d1142e9 release(v4.7.0): bump framework and eight skills to 4.7.0 in lockstep; archive PR #29 reviews
Issue #21 items 4, 5, 7 (worktree helpers, review identity, acceptance
A1-A8), #20 test isolation, #27 .gitignore managed block, #28 host
portability. VERSIONS.md carries the entry; the eight review reports of
PR #29 (two rounds plus the codex re-review) 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-20 21:43:25 +09:00

64 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔍 Review Report — Job 5f1486ee (PR #29 @ `46ea4cc`)
- **Reviewer**: `reviewer-grok-01` · 2026-09-14
- **트리**: 워크트리 `/Users/godopu16/PuKi/laa/canary_projects/multi-agent-mux-wt/pr-29` detached `46ea4cc`
- **베이스**: main `1134d74` (본 체크아웃은 그대로 `main`)
- **범위**: `git log`/`git diff` **`1134d74...HEAD`** (워크트리)
- **안전**: 워크트리·본 체크아웃 미수정. `worktree_remove.sh` 미실행(샌드박스 테스트만). 실제 `.mam` 미조작.
`git diff --check 1134d74...HEAD` 클린. 20 커밋.
## (1) 워크트리 헬퍼 (항목 4)
**prepare `.venv`**: 실제 venv 가 아니라 **컨트롤 루트 `.venv` 의 심링크** (`worktree_prepare.sh:111-117`). 설계 문서의 `ln -s` 와 같음. 인터프리터는 컨트롤 루트 경로. 공유 `info/exclude` 에 `/.venv`, `.pytest_cache/` (`:120-129`) — 본 체크아웃 exclude 에도 들어가며, 비차단 권고(선반영)와 같음.
**서브모듈 opt-in** (`--submodules`). 실패 시 이번 시도만 deinit·modules 삭제·config 복원 (`:174-198`). 비어 있지 않은 미init 경로는 변경 전 거부 (`:163-172`).
**remove R1–R6**: 검사 전부 선행, 실패 시 무변경(exit 3). `--stop` 후 재검사(R1). 서브모듈 stash 거부. `git worktree remove --force` 는 submodule trace 가 있고 judge 가 통과한 뒤에만 (`:158-163`). 미커밋/미push 는 `UNPUSHED_REVS` (`worktree.py:27-30`: HEAD + `--all` − stash − remotes, 태그 포함 R6) 로 거부. **강제 제거가 보존된 커밋을 삼키는 경로는 검사 통과를 전제로 막혀 있다.** 잠긴 워크트리는 force 도 거부.
## (2) resume (2679ddf)
원래 `pane.cwd` 와 `--workspace` 불일치·경로 없음 → exit 2 (`resume_session.sh:61-69`). **단일 워크스페이스** 사용자는 cwd=체크아웃이라 기존과 같다. `ROW_CWD` 없는 레거시 행은 검사를 건너뜀. 컨트롤 평면 바인딩은 행 값이 이김; 계산 실패는 워크트리면 exit 2, 컨트롤 루트면 경고 (`:92-98`). 이미 실행 중 경로에도 영속화(주석 A13). 기존 resume 을 깨지 않음.
## (3) 리뷰 identity (항목 5)
`(loop_id, base_sha, head_sha)` 기록·stale (`runner.py:831-840`). `--review-isolation` 기본 `worktree` 이지만 **`--worktree`/`--base` 없을 때 `_worktree_context` 는 빈 문자열** (`:564-570`) — 프롬프트 바이트 동일. 옵션만 주면 경고 후 무시 (`:266-267`). detached 리뷰 워크트리 add/remove (`:775-786`). dirty 서브모듈 거부. `--remote-review` 기본 refuse. 승격 전 재확인 경로 존재. 기본(옵션 없음) 회귀 없음.
## (4) #20 격리
`pytest_configure` 가 ambient `MAM_JOBS_DIR`/`DELEGATE_JOB_LOGS_DIR`/`AGENT_SESSIONS_YAML` 을 수집 전에 pop (`conftest.py:139-147`). 매 테스트 autouse 가 tmp `.mam-test-state` 로 보냄 (`:161-172`). issue15 해석 테스트는 자체 `delenv` 로 옵트아웃. 세션 가드는 기록된 제어 평면 (`mam_state_leak_guard`).
**직접 확인**: 테스트 전후 본 체크아웃 `.mam/jobs/*.json` **53**, `delegate_job_logs` **547** — 증가 없음. 워크트리 `git status` 깨끗.
## (5) acceptance5
세션·secret 런마다 고유 (`test_issue18_liveness_contract.py:1194-1201`). skip 은 러너가 started 를 찍고 구독자가 그 job 을 전혀 못 받은 경우만 (`:1164-1186`). started `--heartbeat` 계약은 유지. 약화 없음.
## (6) A1–A8
`test_issue21_acceptance.py`: mock herdr / mam_sandbox. 실제 herdr pane 은 stage C. 결정적. 지정 스위트에 loop_b 전체는 없음(작성 측 별도).
## (7)–(8) 문서·버전
design doc·SKILL 정합. 비차단 4건(exclude 공유, prune, 서브모듈 거부 중복 출력 등)은 병합 비차단. 락스텝 4.7.0 은 오케스트레이터 예정 — **병합 차단 아님**. 브랜치는 4.6.0.
## 테스트
워크트리:
```
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python -m pytest -p no:cacheprovider -q \
tests/test_issue21_acceptance.py tests/test_issue21_phase2_loop_a.py \
tests/test_issue21_worktree_prereqs.py tests/test_issue20_state_isolation.py \
tests/test_issue15_registry_isolation.py tests/test_issue6_turn_handshake.py \
tests/test_version_consistency.py
```
**100 passed, 1 skipped in 359.97s.** 본 체크아웃 `main` `1134d74` 유지.
## 종합
항목 4·5·7·#20·#27 이 코드·테스트와 맞다. `git worktree remove --force` 는 검사 통과 후에만. 설계 재작업 불필요.
[VERDICT: PASS]