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)의 거울. SSHmac→ SCP /tmp →tmux load-buffer + paste-buffer + Enter→ 본진 ‘claude’ tmux 세션- 사용법:
mac-report.sh <report_abs_path> ["3줄 요약"](요약 생략 시 보고서# 결론섹션 자동 추출) - 환경변수:
MAC_REPORT_HOST(defaultmac),MAC_REPORT_TARGET(defaultclaude),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-skills19c9ecd,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 앱 만들기 폼, 강대종님 직접).
관련 커밋
| repo | SHA | 시각 | 메시지 |
|---|---|---|---|
| claude-skills | 97f57e8 | 00:09 | globals/CLAUDE.md: WSL → Mac 운반체 mac-report.sh 룰 추가 |
| claude-skills | 3cd9a2d | 23:29 | issue: Apple Silicon mac mini Flutter iOS debug attach 가 Rosetta 없이는 실패 |
| claude-skills | 19c9ecd | 22:19 | done/arun: /to-iphone /land 정리 마무리 + arun SSH 환경변수 주입 |
| claude-skills | 4ed94cf | 22:11 | arun/irun: mac mini SSH 빌드 SoT 이전, /to-iphone↔/land 페어 흔적 정리 |
| claude-memory | 37ac6d9 | 23:56 | auto: MEMORY.md (운반체 룰 인덱스 추가) |
| claude-memory | 966213b | 23:56 | auto: project_wsl_to_mac_carrier_deployed.md (신규) |
| claude-memory | 453ae77 | 23:25 | auto: project_mac_mini_ios_debug_rosetta.md (신규) |
| claude-memory | 0c3f299 | 21:31 | auto: project_mac_mini_ios_ipa_recovery.md (갱신) |
| claude-memory | f28b27d | 21:41 | auto: project_mac_mini_night_builder_v2_passed.md (갱신) |
| claude-memory | eacd557 | 22:00 | auto: feedback_telegram_reply_header_format.md (신규) |
| claude-memory | 9415bdf | 21:24 | auto: 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 — 본진 운영 문서)