자율적이지만 눈먼 시스템
제 자동화 시스템에는 자기개선 게이트가 있습니다. 조건이 맞으면 게이트가 발화하고, 다시 손볼 만한 재패키징 후보가 목록에 쌓입니다. 이 부분은 사람 손 없이 잘 돌아가고 있었습니다.
문제는 그다음이었습니다. 게이트가 발화해도, 후보가 쌓여도, 아무 일도 일어나지 않았습니다. 정확히는 일어났는데 아무도 몰랐습니다. 그 상태를 확인하는 방법은 제가 대시보드를 직접 여는 것 하나뿐이었습니다.
커밋 메시지에 저는 이 상태를 "autonomous but blind"라고 적었습니다. 자율적으로 움직이지만, 그 움직임이 바깥으로는 보이지 않는 상태입니다.
여러분의 자동화에서 "중요한 상태 변화가 일어났다"는 사실은 누가, 어떤 경로로 알게 되나요? 대시보드를 열어야만 보인다면, 그건 사실상 아무도 모르는 것과 비슷하지 않을까요?
알림을 붙이면 되는 것 아닌가
가장 쉬운 답은 게이트 상태를 주기적으로 메시지로 보내는 것입니다. 하지만 그러면 같은 상태가 매번 반복해서 날아옵니다. 이미 발화한 게이트, 이미 알고 있는 후보가 계속 다시 알려지면, 결국 알림 자체를 무시하게 됩니다. 소음이 된 알림은 대시보드보다 나을 게 없습니다.
그래서 진짜 질문은 "알릴 것인가"가 아니라 "무엇을 새로운 것으로 볼 것인가"였습니다.
당신이라면 매 실행마다 현재 상태 전체를 보내겠습니까, 아니면 지난번과 달라진 것만 보내겠습니까?
전이만 알리기
저는 후자를 택했습니다. 추가한 스크립트가 하는 일은 단순합니다.
- 현재 게이트 상태를 읽습니다.
- 저장해 둔 직전 스냅샷과 비교합니다.
- 새로 발화한 게이트(○→●)와 새로 생긴 재패키징 후보만 텔레그램으로 보냅니다.
- 상태가 그대로면 아무것도 보내지 않습니다.
정상 상태에서는 조용하고, 바뀐 순간에만 말합니다. 발화 로직 자체는 한 줄도 건드리지 않았습니다. 이번 변경은 관측 가능성만 더한 것입니다.
자격 증명 처리도 기존 관례를 따랐습니다. 알림용 토큰과 채팅 ID가 설정되어 있지 않으면 메시지를 보내지 않고 로그만 남깁니다. 설정되기 전까지는 아무것도 하지 않는다는, 제 시스템 전반의 방식과 맞췄습니다.
이 감시 스크립트는 숏폼 자동 실행 스크립트에 한 줄로 연결했습니다. 그리고 "무엇이 새로 발화했는가"를 계산하는 부분과 스냅샷을 읽고 쓰는 부분을 분리했습니다. 비교 로직이 파일이나 네트워크에 의존하지 않는 순수 함수가 되니, 테스트를 따로 붙일 수 있었습니다. 변경 규모는 파일 3개, 156줄 추가였습니다.
자가진단 체크리스트
- 자동화가 스스로 내리는 판단(발화, 승격, 후보 추가)을 대시보드를 열지 않고도 알 수 있습니까?
- 알림이 "현재 상태"가 아니라 "직전 대비 변화"를 기준으로 나갑니까? 같은 내용이 반복 발송되고 있지는 않습니까?
- 알림 채널의 자격 증명이 없을 때, 시스템이 조용히 실패하는 대신 최소한 로그라도 남깁니까?
솔직한 부분
이번에 바꾼 것은 "보이게 만든 것"뿐입니다. 게이트가 올바른 순간에 발화하는지, 쌓인 재패키징 후보가 실제로 가치가 있는지는 이 변경으로 전혀 검증되지 않습니다. 스냅샷 비교 방식이라 이전 상태 파일이 없거나 손상되면 첫 실행에서 어떤 식으로 동작할지도 이 기록만으로는 말씀드릴 수 없습니다. 그리고 알림이 오게 됐다고 해서 제가 그 알림에 제때 반응하리라는 보장도 없습니다. 눈은 달았지만, 그 눈이 본 것을 누가 어떻게 처리하는지는 아직 다음 문제로 남아 있습니다.