← 작업일지

2026-07-29 · v1.0.0

2026.07.29 작업일지 v1.0.0

08:18, 봇이 “설치 성공”을 몇 번이고 다시 보내고 있었다. 재시작할 때마다 자기가 처음인 줄 알았기 때문이다. 11:13, 코드를 합칠 자격을 한 대에서 세 대로 넓히는 조항이 발효됐다. 22:46, 그 자격을 지키는 가드가 그때까지 보기만 하고 안 막고 있었다는 걸 확인하고, 차단으로 바꿨다.

이날 자동화 저장소에 76건이 들어갔다. 이번 주 최다다. 그런데 하루의 뼈대는 새 기능이 아니라 “이미 만들어 둔 장치가 실제로는 일을 안 하고 있었다”는 발견 세 개였다.

1. 봇이 같은 소식을 몇 번이고 다시 보냈다

아침에 알림 봇 하나가 “설치 성공” 메시지를 반복해서 보내고 있었다. 스스로 업데이트한 뒤 알리는 기능인데, 같은 소식을 계속 재발송했다.

원인은 중복 방지 표시를 메모리에만 갖고 있었다는 것이다. 봇은 업데이트하면 스스로 재시작한다. 재시작하면 메모리가 비워진다. 그러니까 “이미 알렸다”는 기록이 매번 사라졌고, 봇은 매번 자기가 처음인 줄 알았다. 가드를 지우는 행위가 가드가 막으려던 바로 그 행위 안에 들어 있었다.

f34c2415  08:18  fix(bridge): 자기업데이트 재진입 가드를 디스크로
                 — 재시작이 가드를 지워 스팸 폭풍

배운 것 — 어떤 동작을 한 번만 하게 막고 싶으면, 그 표시는 그 동작이 파괴하지 못하는 곳에 둬야 한다. 재시작을 유발하는 작업의 중복 방지를 메모리에 두는 건 자기 무효화다.

2. 보고만 있던 가드를 막게 했다

이틀 전 “코드를 합치는 쪽은 그 코드를 쓴 쪽이 아니어야 한다”는 규칙을 코드로 옮겼다. 이날 자격 범위를 한 대에서 세 대로 넓히는 조항이 발효됐다.

그리고 밤에 확인해 보니, 그 가드는 위반을 기록만 하고 통과시키고 있었다. 관찰 모드로 켜 둔 걸 실제 차단으로 올리는 걸 잊은 것이다. 규칙은 문서에 있었고 코드에도 있었는데, 코드가 “그렇군요” 하고 지나가고 있었다.

같은 축에서 하나 더 나왔다. 누가 쓴 코드인지를 브랜치 이름 문자열 하나로 판정하고 있었는데, 이름 규칙을 안 따르면 판정이 통째로 빗나갔다. 작업 점유 기록과 교차 검증하도록 바꿨다.

7b761009  22:46  fix(merge-gate): 자가머지를 관측에서 차단으로
                 — author≠merger 를 실제로 강제한다

여기에 타이밍 축도 붙였다. 영수증이 아직 안 올라온 상태를 “없음”으로 읽고 그냥 통과시키던 구멍이 있었다. 검증이 도는 중인데 합쳐지면 검증한 의미가 없다.

3. 훅이 조용히 배포되지 않고 있었다

컴퓨터마다 자동화 스크립트가 붙는 방식이 달랐다. 어떤 기계는 폴더째 연결돼 있어서 코드를 받으면 즉시 반영되고, 어떤 기계는 파일 하나하나가 개별로 연결돼 있어서 새로 고친 파일만 조용히 안 붙었다.

에러는 없다. 로그도 안 남는다. 그 기계에서만 옛날 코드가 계속 돈다. 검사기를 만들어 “지금 돌고 있는 것과 저장소의 정본이 같은 내용인가”를 재게 했고, 그 결과를 영수증에 필드로 박아 넣었다.

배운 것 — 배포됐는지는 연결 개수나 설치 로그가 아니라 내용이 같은가로 재야 한다. 형태가 같아도 내용이 다를 수 있고, 그 차이는 아무 소리도 내지 않는다.

4. 인증번호를 문자 대신 카톡으로

제품 쪽에서는 작명 서비스에 인증번호 발송을 붙였다. 이메일만 쓰던 것을 카카오 알림톡을 1차로 보내고, 실패하면 이메일로 넘어가는 2단 구조로 바꿨다. 실제로 발송해서 끝까지 확인했다.

145242b  18:57  feat(otp): 인증번호를 카카오 알림톡으로 1차 발송하고
                실패 시 이메일로 폴백

같은 서비스의 판매 문구도 손봤다. 19,900원을 기능 목록으로 설명하던 것을 “다른 물건과 비교하면 이렇다”는 논지로 바꿨다.

5. 사이트맵이 없는 주소를 제출하고 있었다

검색엔진에 색인이 안 되는 페이지가 셋 있었는데, 원인은 콘텐츠가 아니었다. 사이트맵에 적힌 주소가 다른 주소로 넘어가는 주소였다. 검색엔진 입장에서는 “여기 봐 주세요” 하고 알려준 자리에 가면 “저쪽으로 가세요”만 있었다. 종착지 주소를 직접 적도록 고쳤다.

6. 그래서 뭐가 남았나

  • 자동화 저장소 76건, 스킬 저장소 9건, 서비스 저장소 10건, 홈페이지 3건 착지
  • 운영 규칙 두 건 개정 — 합칠 자격 3대 발효, 그리고 작업 지시 권한 문구를 실제 코드에 맞춰 좁힘
  • 자가 합병 차단이 기록 모드에서 실제 차단으로 전환
  • 배포 여부를 내용 동일성으로 재는 검사기 신설

이날 고친 세 가지는 전부 같은 문장으로 요약된다. 장치는 이미 있었고, 켜져 있지 않았다. 만드는 것과 작동시키는 것 사이에는 생각보다 넓은 틈이 있다.


다음 이야기는 첫 손님이 실제로 결제한 날, 영수증 첫 줄이 “-님”으로 시작한 이야기.

— 강대종 / @ssamssae