← 작업일지

2026-06-25 · v1.0.0

2026.06.25 작업일지 v1.0.0

09:42, 5노드 Claude를 최신으로 맞추라는 요청이 자동업데이트 사고 조사의 출발점이 됐다. 10:08, 라이덴은 깨진 claude 바이너리를 데스크탑 패키지 복제로 되살렸다. 23:25, lease precheck는 노드 로컬 기준과 대문자 hostname까지 처리하도록 닫혔다.

6월 25일은 “업데이트를 자동화하자”로 시작했지만, 실제 결론은 “이미 있는 안전한 업데이트 인프라를 다시 발견하고, 위험한 중복 자동화를 걷어내자”였다. 그 사이 텔레그램 브릿지, taskless observe, lease 제안 게이트, drift precheck가 줄줄이 이어졌다. 하루의 공통 주제는 속도가 아니라 정합성이었다.

1. 자동업데이트는 만들기 전에 먼저 찾아야 했다

아침에는 5노드 Claude 버전을 확인했고, 곧바로 최신 버전 동기화와 자동업데이트 구축 요청이 들어왔다. 처음에는 OS별로 macOS는 launchd, WSL은 cron을 붙이는 새 updater를 만들었다. 하지만 라이덴에서 npm install -g @anthropic-ai/claude-code가 실행 중 세션과 충돌하며 설치가 멈췄고, claude bin이 사라지는 위험한 상태가 됐다.

복구는 데스크탑의 정상 2.1.191 패키지를 tar로 복제하는 방식으로 끝났다. 그 뒤 더 중요한 사실이 나왔다. 기존에 이미 claude-code-nightly-update.sh라는 안전한 nightly 업데이트 인프라가 있었고, 새로 만든 updater는 중복이었다. 그래서 새 cron/plist는 제거하고, 맥미니에는 기존 nightly 잡을 맞춰 넣는 쪽으로 정리했다.

배운 것 — 자동화를 새로 만들기 전에, 이미 실패를 겪고 살아남은 기존 인프라가 있는지 먼저 찾아야 한다.

2. “버릴 게 없다”는 말도 다시 실측했다

낮에는 stale 브랜치 정리를 앞두고 코덱스 결재를 받았다. 결재 문구는 byte-identical이라 잃을 고유 변경이 없다는 쪽이었지만, 라이덴에서 직접 diff를 보니 처음에는 PR #176의 고유 커밋처럼 보이는 조각이 남아 있었다. 그래서 reset을 바로 밀지 않고, 백업과 main 반영 여부를 다시 확인했다.

최종 결론은 손실 0이었다. backup patch reverse apply가 fresh main에 성공했고, untracked 파일도 main에 존재했다. 중요한 것은 결과보다 과정이었다. 가역 백업이 있어도, “delta=0”이라는 전제를 실행 노드에서 다시 검증하지 않으면 정리 작업은 쉽게 파괴 작업으로 바뀐다.

3. 브릿지는 더 많은 증거를 말하게 됐다

오후부터는 브릿지와 노드 소통 표면이 계속 다듬어졌다. taskless observe hook이 5노드에 배포됐고, Codex CLI smoke에서 SessionStart, PreToolUse, PostToolUse, Stop payload가 실제로 어떤 필드를 주는지 확인했다. Telegram mirror에는 route label과 sender engine이 붙었고, mac-report는 summary mode와 ack 흐름을 더 명확히 남기기 시작했다.

관련 커밋도 촘촘했다. e518287은 taskless observe hook을 배포했고, 3288a15는 그 증거를 보고하게 했다. 02f6ef18fdd6ad 계열은 노드 간 라벨과 ack 표면을 맞췄다. 작은 표시처럼 보이지만, 5노드 운영에서는 “누가 누구에게 보냈는지”가 곧 디버깅 시간이다.

4. lease-gate는 제안과 승인을 분리했다

밤의 큰 축은 lease 제안 시스템이었다. f38619c는 proposal approval gate MVP를 넣었고, 5607f31은 proposal scheduler를 추가했다. 이어 fd6784d는 fleet drift precheck를 붙여 노드가 제안을 만들기 전에 자기 상태가 맞는지 먼저 보게 했다. 마지막에는 6db6dab이 대문자 hostname false drift까지 잡았다.

이 흐름은 자율 워커가 곧바로 실행하지 않고, 먼저 “내가 이 일을 해도 되는가”를 제안하게 만드는 방향이었다. 즉 자동화가 일을 시작하는 순간보다, 일을 시작하기 전에 남기는 허가 흔적이 더 중요해졌다.

5. 그래서 뭐가 남았나

이날 남은 산출물은 세 갈래였다. Claude 5노드는 2.1.191로 정합됐고, 중복 updater는 걷어냈으며, 기존 nightly 업데이트 인프라를 정본으로 다시 세웠다. 브릿지 쪽은 route label, ack, taskless observe 증거를 더 많이 남기게 됐다. lease-gate 쪽은 proposal scheduler와 drift precheck까지 올라갔다.

남은 일은 분명했다. scheduler를 실제로 계속 켤 때는 gate-enabled 세션과 service restart 권한을 통과해야 했고, 브릿지 민감 경로는 재시작 전 리뷰가 필요했다. 6월 25일의 결론은 자동화의 양을 늘리는 것이 아니라, 자동화가 움직이기 전에 스스로 증거를 남기게 만드는 것이었다.


다음 이야기는 깨진 바이너리를 watchdog이 알아보게 만들고, 장시간 작업 보고가 사용자에게 빠지지 않게 고치는 이야기.

— 강대종 / @ssamssae