2026.04.28 작업일지 v1.0.1
23시 이후 추가분: 지휘관 1명 원칙 Mac 적용 + 운반체 예외 + 정합성 보강 R1/R2/R3. /night-runner v0 → v1 안전모드 재설계 + Mac mini launchd 03:00 KST 가동. Mac mini SSH 키 GitHub 등록 + claude-automations/skills clone + 텔레그램 채널 미러링.
오늘의 궤적 (v1.0.1 추가분)
밤 23시: WSL 작업자가 어제 박은 “지휘관 1명 원칙” 변경분 (globals/CLAUDE.md, AGENT.md, handoff/SKILL.md) 을 Mac 본진에서 점검·적용 요청. claude-skills + ~/.claude/skills (심볼릭) fast-forward pull 로 한 번에 적용. ~/.claude/CLAUDE.md / AGENT.md 가 globals/* 심볼릭이라 다음 turn 부터 hard rule 즉시 발효.
23:30 KST: 회색지대 점검 후 b 항목(to-iphone/land 페어 같은 사용자 명령 운반 트리거) 운반체 예외 한 줄 globals/CLAUDE.md + AGENT.md 에 추가. a/c 회색지대는 재분석 결과 보강 불필요 드롭.
23:42 KST: 멀티 디바이스 오케스트레이션 정합성 보강 R1/R2/R3 — handoff/SKILL.md L64 의 WSL→Mac 핑 텍스트 “directive 따라 진행” → “report 검토/판단” (회귀 직접 위험), §3 명칭 “디렉티브 메시지 포맷 규칙” → “디렉티브 / 리포트 메시지 포맷 규칙” + 도입 한 줄, todo/SKILL.md 0단계 라우팅 운반체 명시.
자정 직후 (4/29 00:14 KST): /night-runner 재설계 사이클 진입. v0 (WSL 측 ~/.claude/runner/run.sh, claude headless —agent repo-janitor + —dangerously-skip-permissions + janitor 브랜치 + git push + gh pr create + 2시간 timeout + $5 예산) 을 v1 안전모드 (read-only 점검만, claude headless 0, commit/push/PR 0, 코드 수정 0) 로 다시 그림. Mac mini launchd 매일 03:00 KST 자동 실행 (02:00 night-build 와 시각 분리).
00:33 KST: Mac mini private repo (claude-automations) clone 인증 실패 → SSH 키 generate + 강대종님 GitHub Settings 수동 등록 → 검증 PASS → 인프라 셋업 (claude-automations/skills clone + telegram channel 미러링).
00:37 KST: Mac mini ~/Library/LaunchAgents/com.claude.night-runner-check.plist 심볼릭 + launchctl bootstrap + 1회 kickstart 검증 PASS (last exit code 0, 보고서 SKIPPED — dutch_pay_calculator Mac mini clone 부재, scripts 자체 동작 정상).
지휘관 1명 원칙 — 어제 결정의 Mac 본진 적용 + 운반체 예외
적용 (1차 사이클)
- 어제 WSL 작업분 origin/main 5 commits 확인 → claude-skills + ~/.claude/skills (심볼릭) 한 번에 fast-forward pull
- ~/.claude/CLAUDE.md / AGENT.md 가 ~/claude-skills/globals/* 심볼릭 → 다음 turn 부터 hard rule 즉시 발효
- 회색지대 점검 결과 a/c 항목은 재분석 후 보강 불필요로 드롭, b 항목(사용자 명령 운반 트리거 vs WSL 자체 directive)만 globals 보강
운반체 예외 추가 (commit a00825b)
globals/CLAUDE.md 의 “지휘관 1명 원칙” 절 끝에 한 줄:
예외 (운반체): 사용자 명령을 자동화로 라우팅하는 트리거(/to-iphone → /land 페어 등 WSL 자동화→Mac 자동화)는 directive 가 아닌 운반체. WSL 세션이 자체 판단으로 새 방향을 결정한 게 아니면 새 원칙 위반 아님.
globals/AGENT.md 동일 위치에 예시 1개 더 명시 (Mac /goodnight step 4.5 → WSL /insta-post 핸드오프).
정합성 보강 R1/R2/R3 (commit 3e85237)
- R1 (회귀 직접 위험): handoff/SKILL.md L64 의 WSL→Mac 핑 텍스트
directive 따라 진행→report 검토/판단. 새 원칙(WSL→Mac=report) 와 정확히 일관. - R2 (명칭 헷갈림): handoff §3 명칭
디렉티브 메시지 포맷 규칙→디렉티브 / 리포트 메시지 포맷 규칙+ 도입 한 줄 (“이 포맷 규칙은 Mac→WSL directive 와 WSL→Mac report 양쪽 메시지 형식에 동일 적용 — 형식만 동일이지 컨텐츠 권한은 비대칭”). - R3 (운반체 명시 보강): todo/SKILL.md 0단계 라우팅 —
(/to-iphone → /land 패턴)→(사용자 발화 운반체 — globals 운반체 예외 적용, /to-iphone → /land 동일 패턴).
a/c 회색지대 드롭 사유: a) handoff/SKILL.md L122 는 이미 “잘못된 예 ❌” 블록 안 anti-example. c) memory feedback_handoff_method_a_default.md 의 “양방향” 키워드는 강대종님 발화 인용 + 사용자 발화 매칭용 트리거. 정의 자리(handoff/SKILL.md “방향성” 절) 따로 있음.
/night-runner — v0 → v1 안전모드 + Mac mini 가동
v0 위험 요소 (재설계 동기)
--dangerously-skip-permissions권한 우회claude -p --agent repo-janitor자율 코드 수정git push+gh pr create자동 PR 생성- timeout 7200 + 예산 $5
- 사람 review 없는 야간 자동 실행 → 잘못된 PR 누적 위험
v1 안전모드 동작
- 진입점:
~/claude-automations/scripts/night-runner-check.sh - projects.yaml 라운드로빈 enabled repo 1개 점검 (정해진 시간 정해진 스크립트)
- 점검 5개 (read-only):
BACKLOG.md/TODO.md미해결 항목 grepTODO|FIXME|HACK소스 디렉토리 grep- 마지막 commit 7일 경과 여부 (
COMMIT_SILENT_DAYS=7) - test 호출 (pubspec.yaml →
flutter test/ package.json →npm test/ pyproject.toml →pytest -q) - lint 호출 (
flutter analyze/npm run lint/ruff check .)
- 출력:
~/claude-automations/reports/night-runner/$(date +%F).md(suffix-2/-3같은 날 재실행 시) - 텔레그램 1통 완료 알림 (시작 알림 없음 — 새벽 노이즈 제거)
- 전체 timeout 1200초, 실패 시 재시도 0
- claude headless 0,
--dangerously-skip-permissions0, git commit/push/branch/PR 0
호환성 패치 (작성 중 발견)
- bash 3.2 호환 (
mapfileMac 기본 bash 에 없음 →read루프로 대체) - python3 yaml 의존 제거 (Mac mini 기본 python3 에 pyyaml 없음 → stdlib regex 파싱)
- timeout portable wrapper (
timeoutMac 기본 없음 →gtimeout/ perlalarmfallback)
Mac mini install (4/29 00:37 KST PASS)
~/Library/LaunchAgents/com.claude.night-runner-check.plist심볼릭 →~/claude-automations/launchd/launchctl bootstrap gui/$(id -u)성공- 1회 kickstart 검증: last exit code 0, 보고서 1개 (SKIPPED — dutch_pay_calculator Mac mini 측 clone 부재. 스크립트 자체 동작 정상)
- 매일 03:00 KST 자동 실행 (RunAtLoad false, 02:00 com.claude.night-build 와 시각 분리)
WSL 측 v0 처리
~/.claude/runner/run.sh→run.sh.disabledmv (보존, 폐기 X)~/.claude/runner/settings-janitor.json→.disabledmv- v2 (제한적 PR 모드) 검토 시 참고용으로 남겨둠
Mac mini 인프라 셋업 (인증 사고 + 풀 셋업)
claude-automations clone 실패
처음에 https URL 로 clone 시도 → could not read Username for 'https://github.com'. claude-automations 가 private repo 라 인증 부재. claude-skills 는 public 이라 OK.
SSH 키 generate + GitHub 등록
- Mac mini 측
ssh-keygen -t ed25519 -N '' -C 'user@mac-mini'(~10초) - public key 강대종님께 텔레그램 송신
- 강대종님 GitHub Settings → SSH and GPG keys → New SSH key 등록 (4/29 00:35 KST)
- 검증:
ssh mac-mini "ssh -T git@github.com"→ “Hi ssamssae!”
인프라 미러링
- ~/claude-automations clone (SSH URL)
- ~/claude-skills clone (HTTPS URL — public)
- ~/.claude/channels/telegram/{send.sh, .env} SCP from Mac 본진
- ~/.claude/runner/projects.yaml SCP from Mac 본진 (Mac mini path 동일 /Users/user/*)
- ~/Library/LaunchAgents/com.claude.night-runner-check.plist 심볼릭
미설치 (현 시점, someday 박힘)
- flutter — Flutter test/lint 일부 SKIPPED
- python3 yaml — check.sh 가 stdlib regex 우회로 OK
- gh CLI — 미확인
- Claude Code CLI — 의도적 미설치 (지휘관 1명 원칙: Mac mini 챗봇 X)
부수 발견 (보고만, 별도 사이클)
d19a315 night-build도 Mac mini 측 git pull + launchctl bootstrap 안 거쳤음. 02:00 잡 사실상 가동 0 — 별도 사이클로 처리install.sh의 hostname case 패턴*.local|Daejong*|USER*가 Mac mini hostnamemac-mini매칭 안 함. 이번 install 은 직접launchctl bootstrap으로 우회. 다음 사이클에 한 줄 패치 후보 (someday)
인프라·스킬·자동화
- 새 메모리 3건 박음:
project_commander_one_principle.mdproject_night_runner_v1_deployed.mdreference_mac_mini_github_ssh_key.md
- MEMORY.md 활성 프로젝트 + 인프라/참조 섹션 갱신
- someday 4건 추가:
- install.sh hostname case 패턴 mac-mini* 추가
- d19a315 night-build Mac mini install
- night-runner v1.1 보고서 텔레그램 inline
- dutch_pay_calculator Mac mini clone + flutter 설치
- todos.md 의 한줄일기 todo 본문 갱신 (iOS 완료 표시 + Android 만 남기기)
학습·상담
- 시각 표기 사고: 23:08 KST 라고 박았는데 진짜는 4/29 00:08 KST. UTC ts +9h KST 변환 실수. 시스템
date "+%Z"로 확인 후 정정. 강대종님이 “12:13” (12시간 표기 AM) 으로 정정 요청. - bash 3.2 함정: Mac 기본 bash 가 아직 3.2 라
mapfile미지원.read루프로 대체. - timeout 함정: Mac 기본
timeout없음. brew coreutils 의gtimeout또는 perlalarmfallback 필요.
남은 작업
- 한줄일기 Android 1900원 출시 (강대종님 직접, Play Console 앱 만들기)
- iOS 심사 결과 대기 (4/28 23:04 제출, 24~48h)
- night-runner v1 첫 자동 실행 모니터 (오늘 03:00 KST, 강대종님 06:30~ 보고서 manual review)
관련 커밋 (4/28 23시 이후 + 4/29 새벽)
| repo | SHA | 메시지 |
|---|---|---|
| claude-skills | ca6ac01 | night-runner: SKILL.md v1 안전모드 동작 반영 + 03:00 KST 자동 실행 |
| claude-skills | 3e85237 | skills: 지휘관 1명 원칙 정합성 보강 (R1/R2/R3) |
| claude-automations | 5b072ff | night-runner: Mac mini launchd 03:00 KST plist |
| claude-automations | bccc165 | night-runner: v1 read-only 안전모드 (check.sh + reports/) |
| claude-skills | a00825b | globals: 지휘관 1명 원칙 — 운반체 예외 명시 (b 회색지대) |