Issue #25: a promoted plan is reused only with --plan-file; the implicit newest-plan load is gone in both runners, and an empty planner report no longer passes silently. VERSIONS.md carries the entry; the four merge-side review reports and their identity sidecars (base6fc9194-> head1e82651, 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.6 KiB
🔍 Review Report — Job 06fb4a9e (PR #32 @ 1e82651)
- Reviewer:
reviewer-grok-01· 2026-09-22 - 검증 경로:
/var/folders/q_/68sxgw3j073dgjg8wl9s08vw0000gn/T/mam-review/loop-20260921T150212Z-97d845/1 - identity: base
6fc9194head1e82651tree4fd82ad(일치) - 소스 워크트리·본 체크아웃: 읽기 전용. 본 체크아웃
main6fc9194유지.
git diff --check 6fc9194...HEAD 클린. 5커밋.
(1) 암묵적 로드 제거
Python: Phase 1 else 가 glob/plan-*.md 를 쓰지 않음 (runner.py:1064-1073). import glob 삭제. resolve_planner_session (:990) 은 세션 이름만 로그하고 파일을 읽지 않음. --planner 는 --plan 없이 exit 1 (:244-248).
레거시 셸 (MAM_LOOP_PY=0): ls -t .agents/reports/.../plan-*.md 제거 (run_loop.sh Phase 1 else). plan-*.md 문자열이 두 구현에 없음 (test_p8).
(2) --plan-file
상대경로는 workspace_root / path (runner.py:264); POSIX 에서 절대경로는 / 로 치환되어 그대로. ~ 는 expanduser. 없는/빈/공백뿐/디렉터리/읽기 실패 → _plan_text None → parse_args sys.exit(1), 잡 없음. --plan 과 상호 배타. --review-only 는 파일 검사 후 경고·무시(current_plan 비움). --planner 는 --plan 필수라 --plan-file 과 함께면 먼저 --planner 규칙에 걸린다.
레거시 셸은 --plan-file 을 Python 전용으로 명시 거부 exit 1, 루프 락 전 (run_loop.sh:127-134, test_p7b). 공백 경로는 pathlib 가 처리; 전용 테스트는 없음(비차단).
(3) _plan_text (e551e3b)
한 함수 (:304-316)가 --plan-file, 초기 planner 리포트, 논의 refine, 에스컬레이션 refine 에 사용. 빈 초기 계획 → return 1, Worker 없음 (test_p9). 빈 refine → 경고·이전 계획 유지 (test_p10, test_p11 ESCALATE). 수정 프롬프트가 빈 계획을 싣지 않음.
(4) 체크포인트
current_plan 은 기록만 (_record_checkpoint). load_checkpoint 를 runner 가 호출하지 않음. 새 실행은 current_plan="" 에서 시작. 본 체크아웃 .mam/loop-checkpoint.json 의 옛 계획은 우회가 아님.
(5) 옵션 없음
의도된 변화만: 자기계획 프롬프트. 승격은 --plan 성공 시 plan-{id}.md 기록 유지 (test_p6). 기존 테스트는 검증 경로에서 실행.
(6) 테스트 P1–P11
전부 tmp_path. 검증 경로:
PYTHONDONTWRITEBYTECODE=1 <control .venv python> -m pytest -p no:cacheprovider --basetemp=/tmp/mam-review-basetemp-...
tests/test_issue25_plan_reuse.py
17 passed (P1–P11 + p3b/c/d, p5b, p7/p7b, p8). 수정 전 P1 은 옛 glob 을 단언하므로 실패했을 테스트.
같은 인터프리터로 test_loop_cli·test_issue5_phase3·test_issue21_worktree_prereqs·test_version_consistency 포함 시 래퍼 서브프로세스가 검증 트리에 .venv 가 없어 paho 를 못 찾는 실패 2건이 났고, DELEGATE_JOB_PYTHON 을 컨트롤 .venv 로 주면 19 passed. 제품 회귀가 아니라 스냅샷에 venv 가 없는 환경.
(7) 문서
SKILL.md 에서 "기존에 승격된 계획서가 있다면 이를 로드" 잔존 없음. usage·CLI 표·Workflow 예시가 --plan-file 과 일치. .claude/skills 는 이 스냅샷에 없음.
(8) 락스텝
MAM_VERSION=4.7.0. 4.7.1 bump 는 오케스트레이터 예정. 병합 차단 아님.
종합
암묵적 최신 계획 로드가 Python·레거시 양쪽에서 제거됐고, 재사용은 --plan-file 뿐이다. 빈 리포트는 조용히 계획을 지우지 않는다. 설계 재작업 불필요.
[VERDICT: PASS]