← 작업일지

2026-04-29 · v1.0.1

2026.04.29 작업일지 v1.0.1

자정 직전 한 사이클 더: WSL→Mac 자동 깨우기 운반체 mac-report.sh 신설(zero-touch 검증 PASS), 3-device 운영 플레이북 12 섹션 작성, mac mini Apple Silicon iOS debug 의 Rosetta 의존성 박제.

오늘의 궤적 (v1.0.0 이후 추가분)

저녁 ~ 자정 직전: mac mini SSH 빌드 SoT 통합(/arun /irun 환경변수 주입, /to-iphone /land 흔적 정리). 23시 이후 mac mini Apple Silicon 에서 Flutter iOS debug attach 가 Rosetta 없이 실패하는 이슈 박제 + 한줄일기 iPhone17 debug attach PASS. 자정 직전부터 새 사이클: 3-device 운영 플레이북(Mac본진/WSL/맥미니 역할 + 12 섹션 A-L) 작성, WSL→Mac 자동 깨우기 운반체 mac-report.sh 신설/검증/룰 정합성.

3-device 운영 플레이북 (~/.claude/ops/3device-playbook.md)

동기

지휘관 1명 원칙(4-28 도입) 후 3대(Mac본진/WSL/맥미니) 운영 절차가 산발적으로 박혀있어 한 문서에 모음. 강대종님 요청 — “WSL ClaudeCode2 어떻게 써야 할지 운영 절차 + 프롬프트 템플릿”.

구조 (A~L 12 섹션)

  • A. 전체 운영 구조 요약(ASCII 다이어그램: directive ↔ report ↔ run script)
  • B/C/D. Mac본진(Commander) / WSL(Reviewer/Worker) / 맥미니(Builder/Runner) 역할
  • E. 실제 작업 흐름 한 사이클 (강대종 → 본진 → WSL → 본진 → 강대종 OK → push → 맥미니 → 강대종)
  • F. WSL 표준 directive 9-필드 템플릿 (목표/배경/입력/수정범위/금지/성공기준/마감/보고채널/비상탈출)
  • G. WSL 표준 보고서 양식 (결론 1줄 → 요약 3줄 → 근거 → 제안 옵션 A/B → 위험·미확인 → 다음후보 → “변경하지 않은 것”)
  • H1-H4. 작업별 프롬프트 템플릿 (빌드 실패 로그 분석 / git diff 리뷰 / DEPLOY.md 점검 / mac mini night-build.sh 초안)
  • I. 맥미니 실행 전 10항목 체크리스트
  • J. 절대 금지 사항 (WSL/맥미니/본진/공통)
  • K. 추천 폴더·파일 구조
  • L. 다음에 바로 실행할 1단계 워밍업 directive

워밍업 1회 검증 (L 섹션)

본진 → WSL 워밍업 directive 1759 bytes 송신(wsl-directive.sh) → WSL 이 ~/apps/hanjul 으로 fallback rule 2 작동 → ~/reports/2026-04-29-warmup-hanjul.md 4.3KB 생성. 보고서 양식 G 섹션 그대로 따름(결론·요약·근거·제안·위험·다음후보·변경X 모두). WSL 작업자 룰(옵션 메뉴 X·결정 회피) 도 준수.

본진 idle 사고 (23:38~23:41): 워밍업 보고는 강대종님 폰(@Myclaude2 채널)에만 도달했고 본진 챗봇은 강대종님 메시지가 없으면 깨어나지 않아 idle. 본진 능동 fetch 도 강대종님 트리거가 있어야만 가능 = 자동 아님. → 운반체 도입 결정.

WSL→Mac 운반체 mac-report.sh 신설

위치·구조

  • WSL ~/.claude/automations/scripts/mac-report.sh (3.7KB, 실행권한)
  • wsl-directive.sh(Mac→WSL)의 거울. SSH mac → SCP /tmp → tmux load-buffer + paste-buffer + Enter → 본진 ‘claude’ tmux 세션
  • 사용법: mac-report.sh <report_abs_path> ["3줄 요약"] (요약 생략 시 보고서 # 결론 섹션 자동 추출)
  • 환경변수: MAC_REPORT_HOST (default mac), MAC_REPORT_TARGET (default claude), MAC_TMUX_BIN (default /opt/homebrew/bin/tmux)
  • 텔레그램 forward default ON: WSL 봇 토큰으로 강대종에게 ”📨 WSL→mac 보고 운반체 호출 (N bytes)” 1통

빌드 막힘 1건 → fix

WSL→mac SSH non-interactive shell 의 PATH 에 /opt/homebrew/bin 부재 → 첫 시도 시 tmux not found. 절대경로 (/opt/homebrew/bin/tmux) 환경변수 MAC_TMUX_BIN 으로 빼서 fix. 재배포 후 syntax OK.

검증 (23:54 KST PASS)

ssh wsl '~/.claude/automations/scripts/mac-report.sh ~/reports/2026-04-29-warmup-hanjul.md "검증 호출"'
✅ report notice sent to Mac tmux session 'claude' (418 bytes)

본진 tmux ‘claude’ 세션에 paste 도달 → 본진 챗봇이 사용자 입력처럼 받음 → 자동 fetch + 검토 흐름. 강대종님 손 0. 텔레그램 forward 도 @Myclaude2 채널 23:54 PM 정상 도달(스크린샷 검증).

룰 정합성

globals/CLAUDE.md 정정 (claude-skills 97f57e8)

“WSL → Mac” 항목 1줄 (텔레그램 reply 만으로 충분) → 2-channel 운반체 룰로 확장:

  • (1차) mac-report.sh <abs_path> "<3줄 요약>" → 본진 tmux 자동 paste = 본진 깨우기
  • (2차) mcp__plugin_telegram_telegram__reply → 강대종 알림(평소대로)
  • 운반체 호출은 directive 가 아닌 정해진 양식의 보고 라우팅 = 지휘관 1명 원칙의 운반체 예외 분류
  • mac-report.sh 부재 시 1차 스킵, 2차만 송신

본진 운영문서 ops/3device-playbook.md F 섹션도 동일 추가

성공기준에 “보고서 저장 직후 mac-report.sh 1회 호출” 명시. 보고 채널 1차/2차 구조화.

메모리 박제 (auto-push hook)

project_wsl_to_mac_carrier_deployed.md 신규 + MEMORY.md 활성 프로젝트 한 줄 추가. claude-memory 37ac6d9, 966213b 자동 commit/push.

sync 스킬 부활 논의 → 철회

대화 흐름에서 “본진 ~/.claude 변경이 git tracked 아니라 WSL 동기화 안 됨” 이슈가 surface. 처음엔 claude-memory 에 _globals/ 디렉터리 합쳐 확장 권장 → 강대종님이 “/sync 는 4-29 폐지 결정” 지적 → 메모리 채널만으로 룰 sync 충분(WSL 새 세션 step 0 git pull) 결론, 추가 인프라 0. 폐지 결정 존중.

사실 정정: ~/.claude/CLAUDE.md, AGENT.md 는 symlink → claude-skills/globals/. git tracked. 직전 답변 (“git repo 아님”) 잘못. 그 결과 strikethroughed 정정 + globals/CLAUDE.md commit/push 누락분 정리.

mac mini iOS debug = Rosetta 필수 (project_mac_mini_ios_debug_rosetta.md)

증상

Apple Silicon mac mini(M1, arm64) 에서 한줄일기 iPhone17 USB debug attach 시 dart VM attach 실패. flutter iproxy 가 x86_64 바이너리라 arm64 host 에서 Rosetta 없이는 못 돎.

Fix

sudo softwareupdate --install-rosetta --agree-to-license 1회 → flutter iproxy x86_64 호환 → dart VM attach PASS → “강대종의 iPhone (2)” Xcode build 5.1s + install 13.9s + Dart VM Service port 61652 attach 성공 → 자연 종료 (Lost connection to device, exit 0).

메모리 박제

project_mac_mini_ios_debug_rosetta.md 신규(claude-memory 453ae77 + MEMORY.md ccd5156). claude-skills 3cd9a2d issue 마크다운으로도 보존. 다음 mac mini 새 셋업 때 1줄 명령으로 즉시 해결 가능.

mac mini SSH SoT 통합 (/arun, /irun)

  • /arun (Galaxy S24): mac mini SSH 통해 USB 직결 디바이스에 clean + debug 재빌드. 환경변수(PATH=/opt/homebrew/bin:$PATH) 명시 주입 — non-interactive shell PATH 부재 회피.
  • /irun (iPhone17): 위와 동일 패턴. mac mini 가 빌드 + 디바이스 연결 + 실행 모두 담당.
  • /to-iphone /land 페어 — 흔적 정리 마무리(claude-skills 19c9ecd, 4ed94cf). USB 직결 디바이스는 본진 Mac/WSL 어디서 호출해도 동일 결과(SSH 경유라 호스트 불문).

메모리 신규/갱신 (v1.0.0 이후)

  • project_wsl_to_mac_carrier_deployed.md (신규, 23:56)
  • project_mac_mini_ios_debug_rosetta.md (신규, 23:25)
  • project_mac_mini_ios_ipa_recovery.md (갱신, 21:31)
  • project_mac_mini_night_builder_v2_passed.md (갱신, 21:41)
  • feedback_telegram_reply_header_format.md (신규 from WSL, 22:00)
  • feedback_wsl_worker_no_option_menu.md (신규 from WSL, 21:24)
  • MEMORY.md 인덱스 갱신 다수 (auto-push hook)

학습·상담

  • 본진 idle 사고의 구조 — 본진 챗봇 세션은 사용자 텔레그램 inbound 가 있어야만 깨어남. WSL 봇이 강대종에게 텔레그램으로 보고해도 본진(@MyClaude)에는 봇간 차단(reference_telegram_bot_to_bot_blocked.md)으로 전달 X. 자동 검토하려면 본진을 깨우는 별도 채널이 필요. → mac-report.sh 가 그 빈자리.
  • 운반체 vs directive — 4-28 hard rule 에 “WSL→Mac 별도 채널 불필요” 박혀있었으나, 운반체 = “정해진 양식의 보고 라우팅” 이라 WSL 자체 판단으로 새 방향을 결정하는 directive 와 다름. 운반체 예외 분류로 hard rule 정합성 유지.
  • wsl-directive.sh 거울 패턴 — Mac→WSL 운반체가 이미 검증된 구조라 그대로 거울만 떴음. 새 인프라가 아니라 “기존 패턴의 대칭”. 추가 학습비용 0.
  • 빌드 막힘 1건의 위치 — non-interactive SSH PATH 부재. CI/원격 빌드 인프라에서 흔한 함정. 이번엔 MAC_TMUX_BIN 환경변수로 빼서 호스트마다 다른 경로도 대응 가능하게.

남은 작업

  • WSL 새 세션이 실제로 step 0 git pull → 운반체 메모리 인지 → mac-report.sh 호출까지 가는 자연스러운 end-to-end 는 다음 WSL 작업 사이클에서 자연 검증.
  • 3-device 플레이북 L 섹션의 워밍업 directive 가 PASS 됐으니, 다음 단계는 H1(빌드 실패 로그 분석) 또는 H4(mac mini night-build.sh 초안) 사이클.
  • hanjul iOS Apple 심사 결과 메일 대기 (4-28 23:04 제출 + 24~48h).
  • hanjul Android 1900원 유료 출시 사이클 (Play Console 앱 만들기 폼, 강대종님 직접).

관련 커밋

repoSHA시각메시지
claude-skills97f57e800:09globals/CLAUDE.md: WSL → Mac 운반체 mac-report.sh 룰 추가
claude-skills3cd9a2d23:29issue: Apple Silicon mac mini Flutter iOS debug attach 가 Rosetta 없이는 실패
claude-skills19c9ecd22:19done/arun: /to-iphone /land 정리 마무리 + arun SSH 환경변수 주입
claude-skills4ed94cf22:11arun/irun: mac mini SSH 빌드 SoT 이전, /to-iphone↔/land 페어 흔적 정리
claude-memory37ac6d923:56auto: MEMORY.md (운반체 룰 인덱스 추가)
claude-memory966213b23:56auto: project_wsl_to_mac_carrier_deployed.md (신규)
claude-memory453ae7723:25auto: project_mac_mini_ios_debug_rosetta.md (신규)
claude-memory0c3f29921:31auto: project_mac_mini_ios_ipa_recovery.md (갱신)
claude-memoryf28b27d21:41auto: project_mac_mini_night_builder_v2_passed.md (갱신)
claude-memoryeacd55722:00auto: feedback_telegram_reply_header_format.md (신규)
claude-memory9415bdf21:24auto: feedback_wsl_worker_no_option_menu.md (신규)

신규 파일 (claude 외부 추적):

  • WSL ~/.claude/automations/scripts/mac-report.sh (3.7KB, 실행권한, git tracked X — claude-automations repo 아님)
  • 본진 ~/.claude/ops/3device-playbook.md (12 섹션 A-L, git tracked X — 본진 운영 문서)