Files
multi-agent-mux/.agents/reports/reviewer-grok-01/report-3ea06fb6.md
T
GodopuandClaude Fable 5.1 1cc84282f3 docs(reports): archive v4.4.3 unanimous PASS review reports (Issues #10, #11, #13, #15)
Final-round reports of the fix/issue-10-11-13-15 review loop: planner-reviewer-claude-01
(aa16fa5c), reviewer-agy-01 (0f41ea47), reviewer-grok-01 (3ea06fb6) and
planner-reviewer-codex-01 (79204d61), all [VERDICT: PASS] on fae70c1.

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

3.7 KiB
Raw Blame History

🔍 Review Report — Job 3ea06fb6 (fix/issue-10-11-13-15 2회차, HEAD fae70c1)

  • Reviewer: reviewer-grok-01 (role: reviewer) · 2026-09-13
  • 범위: git log/git diff bd3df89...HEAD
  • HEAD: fae70c1 fix(issue-10,13): check every agy artifact for holders and purge orphaned leftovers
  • 선행: ba3e3ab5 PASS(0282312) → 4b113d10 NOT PASS(N2) → 1752c893 PASS(f5a6575). 이번 초점: 7610258 재확인 + fae70c1 Codex R1/R2.
  • 안전: 실제 홈 purge 없음. 테스트는 uuid4 픽스처만. 다른 worktree 미접촉. 소스 무변경.

커밋: c82ea75 → 0282312 → 7610258 → f5a6575 → fae70c1.

(1) 7610258 conversation_in_use

  • AGENT_SESSION_ENV 5종이 uuid 와 같으면 즉시 in-use.
  • cmdline 헬퍼 사슬은 자기부터 가장 가까운 _is_agent_cli 조상 직전만 제외. 그 조상이 uuid 를 들고 있으면 holder.
  • _is_agent_cli: 첫 - 옵션 이전 토큰의 basename ∈ {claude,agy,hermes,grok,opencode,codex}.

오탐/미탐: python -m <agent> 조상은 이름 매칭이 안 되어 헬퍼로 남을 수 있음(배포 claude/agy 바이너리 경로에서는 env+basename 으로 잡힘). uuid 를 언급만 하는 프로세스도 holder — SKILL.md 가 그렇게 문서화. 자기 세션 purge 거부는 유지.

(2) fae70c1 R1/R2

R1 AgyAgentAdapter.conversation_in_use (agy.py:92-96): _artifact_paths 의 DB·wal/shm/journal·brain·annotation·lock 전부를 conversation_in_use(..., paths) 에 넘김. cmdline/env 없이 lock 만 flock 한 보유자도 lsof 에 잡힘. test_purge_cli_refuses_when_only_the_presence_lock_is_held_open 통과. CLI 는 그 결과로 exit 4, 아무것도 안 지움.

R2 has_artifacts:

  • 기본 (base.py:194-200): uuid in artifact_path and exists. 공유 DB(opencode → opencode.db, 경로에 uuid 없음)는 모든 uuid 에 매치되지 않음.
  • agy 오버라이드 (agy.py:86-90): _artifact_paths 중 하나라도 있으면 참 (DB 없는 WAL/annotation/lock).
  • _resolve_purge_target 2단계: verify_artifact 후 has_artifacts (옛 uuid in path and exists 대체). claude/hermes/grok/codex 경로는 uuid 를 포함하므로 기존 폴백과 동등. test_purge_cli_resolves_agy_from_orphaned_leftovers 통과.

다른 어댑터는 has_artifacts 를 오버라이드하지 않음. verify 가 먼저이므로 정상 jsonl/session 파일은 1단계에서 해결.

(3) orc_onboard.sh / 문서

흐름 불변: --yes 없으면 exit 4, Python in-use 4 → 셸 5(등록 유지), 미해결 5 → WARN 후 등록 제거, dry-run 무변경, purge 가 YAML 앞. SKILL.md·VERSIONS.md v4.4.3 항목 1–2 가 lock 전 경로 lsof 와 고아 부속을 반영.

(4) #15

MAM_JOBS_DIR → WORKSPACE_ROOT/.mam/… → cwd. job_subscriber --registry-dir 기본값 default_registry_dir() (7610258 R-d). conftest 격리 유지.

(5) 락스텝

lib.sh/eager.py/8 SKILL.md/VERSIONS.md = 4.4.3. verify_framework_version 통과. 릴리스 커밋 0282312 제목 유지. fae70c1 은 changelog 항목 1–2 만.

(6) 테스트

.venv/bin/python -m pytest -q \
  tests/test_issue10_13_purge.py tests/test_issue15_registry_isolation.py \
  tests/test_orc_onboard.py tests/test_a4_adapter_contract.py \
  tests/test_issue5_phase1_delegation.py tests/test_tier1_unit.py \
  tests/test_loop_cli.py tests/test_issue5_phase4_runtime.py \
  tests/test_version_consistency.py

250 passed in 162.54s (직전 248 + R1/R2 2건). uuid4 픽스처. git diff --check 클린. 전체 스위트 미실행.

종합

Codex R1(lock-only holder)과 R2(고아 부속)가 어댑터 단위로 닫혔고, 1회차 PASS 항목은 회귀 없음. 설계 재작업 불필요.

[VERDICT: PASS]