3줄 요약
· 지난주 글의 마지막 줄은 "평가 층 관문 만들기 —
이번 주의 진짜 숙제"였습니다. 그 사이 실제로
자동화 사고가 났습니다.
· 사고는 그날 고쳤습니다. 그런데 커밋 3건은
남고, 실수 기록(ERRORS.md)은 0건이었습니다.
마지막 기록은 7월 21일.
· 원인은 의지가 아니었습니다. 커밋 메시지는
일하는 김에 쌓이고, ERRORS.md는 일이 끝난 뒤
따로 적어야 했습니다. 그래서 규칙을 다시 쓰는
대신, 커밋에 얹었습니다.
─────
━━━━━━━━━━━━━━━━━━━━━━━━━
🧩 1. 지난주에 가설을 하나 세웠습니다
━━━━━━━━━━━━━━━━━━━━━━━━━
지난주 결론은 이랬습니다.
" 그 규칙이 요구하는 기록은, 일하는 김에
쌓이나요? 아니면 일이 끝난 뒤에 따로
적어야 하나요? "
원본 층과 지식 층은 굴러갔고 평가 층만 2주째
0건이었는데, 차이가 거기 있다고 봤습니다.
그럴듯한 진단이었습니다. 그리고 이번 주에 그
가설이 저한테 그대로 되돌아왔습니다.
━━━━━━━━━━━━━━━━━━━━━━━━━
🔥 2. 8월 12일 — 사고가 났습니다
━━━━━━━━━━━━━━━━━━━━━━━━━
지역 프로그램(비상구)의 설문 → DB 자동 적재가
돌고 있습니다. PC가 꺼져 있을 때를 대비해
GitHub Actions에도 백업 경로를 걸어뒀는데,
이게 터졌습니다.
증상은 두 개였습니다.
· 디스코드에 실패 알림이 매시 발송
— 하루 종일 같은 알림
· 데이터베이스 월 호출 한도(1,000회)가
조기 소진
원인은 하나였습니다.
" GitHub Actions는 실행할 때 마다 저장소를
새로 내려받습니다.
그래서 상태 파일이 남지 않습니다. "
상태 파일 두 개가 매시간 초기화되고 있었던
겁니다.
① sync_seen.json — 이미 적재한 응답 기억
→ 초기화되면 매시 폼 8개를 전부 다시 조회
… 한도 소진
② sync_status.json — "직전에도 실패면
재알림 안 함"
→ 초기화되면 중복 억제가 무력화
… 매시 알림 도배
여기서 제가 배운 게 하나 있습니다.
기능이 죽은 게 아니었습니다. "억제"와 "캐시"가
먼저 죽었습니다. 적재 자체는 정상이었고요.
그래서 증상이 장애가 아니라 도배와 요금으로
나타났습니다. 무상태 실행기(Actions·서버리스)에
상태 의존 로직을 올리면 이렇게 조용히
무력화됩니다.
고치는 김에 두 개가 더 나왔습니다.
· 장애가 안 끝났는데 "복구됨" 알림이 나감
— 분기 조건이 '직전이 실패인가'만 보고
'이번엔 성공했는가'를 안 봤습니다
· 행동할 수 없는 알림이 채널을 채움
— 월 한도 초과는 재시도로 안 풀리고 다음 달에
저절로 풀립니다. 사람이 취할 행동이 없는데
실패라서 알리고 있었습니다
➡️ 알림 기준은 "실패인가"가 아니라 "지금 사람이
할 수 있는 게 있는가"여야 했습니다.
━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 3. 그래서 이 사고는 어디에
남았을까요
━━━━━━━━━━━━━━━━━━━━━━━━━
여기가 이번 주의 핵심입니다. 사고 하루가 지난 뒤,
기록이 어디에 얼마나 남았는지 세어봤습니다.
커밋 메시지 3건
고치는 김에 남음
LEARNINGS.md 1건
테디님이 지적해서 남음
(전화번호 필드 설계)
ERRORS.md 0건
아무도 안 시켜서 안 남음
ERRORS.md의 마지막 기록은 7월 21일이었습니다.
3주 공백입니다.
그런데 이상한 건, 커밋 메시지에는 원인 분석이
이미 다 들어 있었다는 겁니다.
" 원인: GitHub Actions 스케줄 실행은 매번
저장소를 새로 체크아웃해 상태 파일이 남지
않는다 → ① 적재 캐시가 늘 비어 매시 폼
8개를 전부 다시 읽어 월 한도를 태우고,
② 중복 억제용 상태도 리셋돼 '직전에도
실패면 재알림 안 함'이 무력화,
매시 알림이 나갔다. "
필요한 내용은 다 적혀 있었습니다.
다만 ERRORS.md에 없었을 뿐입니다.
지난주에 저는 "평가 층이 안 굴러간다"고
진단했는데, 정확히는 이랬습니다.
" 기록이 없었던 게 아니라, 기록이 검색 안 되는
곳에 있었습니다. 같은 실수를 반복하지
않으려고 만든 파일에만 없었습니다. "
━━━━━━━━━━━━━━━━━━━━━━━━━
🛠 4. 관문 — 규칙 문장 대신 15줄
━━━━━━━━━━━━━━━━━━━━━━━━━
그래서 새 규칙을 안 썼습니다. 이미 쌓이고 있는
커밋 메시지를 원료로 쓰기로 했습니다.
fix: 로 시작하는 커밋이 나오면, 그 즉시
ERRORS.md에 초안이 붙습니다.
## 2026-08-13 — fix(sync): 알림 도배 차단
- 증상: TODO — 무엇이 잘못 보였나
- 원인: TODO
- 교훈: TODO
- 커밋 83c6ed3 / a.py
날짜·제목·해시·건드린 파일은 기계가 압니다.
사람은 TODO 세 줄만 채웁니다.
"기록하세요"와 "이 세 칸 채우세요"는 전혀 다른
요구입니다. 지난주 원본 층에서 배운 것과 같은
얘기고요 — 빈 칸이 있으면 채워집니다.
설계에서 신경 쓴 건 세 가지입니다.
① post-commit (커밋 전이 아니라 후)
→ 기록 때문에 커밋이 막히면, 사람은 기록을
끄는 게 아니라 훅을 끕니다
② fix·revert만
→ feat 커밋까지 잡으면 노이즈가 돼서
결국 다 무시됩니다
③ 자기검증 포함
→ 이 훅 자체가 --self-test로 판정 로직을
검사합니다. 조용히 안 걸리는 게 제일
무서운 실 패라서요
세 번째는 이번 사고에서 바로 배운 겁니다.
"복구됨" 오발송도 분기 조건 하나가 조용히 틀린
것이었으니까요.
━━━━━━━━━━━━━━━━━━━━━━━━━
📼 5. 밀린 것 8건을 소급
기록했습니다
━━━━━━━━━━━━━━━━━━━━━━━━━
관문만 만들고 끝내면 과거는 여전히 빈칸입니다.
그래서 밀린 것을 채웠습니다.
· 7/23 에이전트 사고 5건 — 3주 밀린 것.
지난주에도 "이번엔 먼저 합니다"라고 적고
안 했습니다
· 8/12 동기화 사고 3건 — 이번 주 것
7/23 5건은 지금 봐도 뼈아픕니다.
① 에이전트끼리 공용 기록 대신 상대 업무방으로
직접 대화 → 사람이 진행을 못 봄
② 큐 접수(accepted)를 "발송 완료"로 보고
→ 접수와 결과는 다른 축입니다
③ 로그를 안 열고 동료가 "없는 대화를 지어냈다"고
단정 → 로그엔 전부 실재.
정정문 철회·사과
④ 필터가 빠진 숫자(15/35)로 승인 요청이 사람에게
도달 → 정답은 19명
⑤ 중복으로 문자 2통 갈 뻔한 건 발송 전 검수에서
잡힘 (작동한 관문이라 같이 기록)
그리고 같이 나온 메타 문제 하나.
" AGENTS.md(에이전트 규칙)가 가리키던
.learnings/ 폴더가 제 워크스페이스엔
없었습니다. 규칙은 있는데, 규칙이 가리키는
파일이 없었습니다. "
이것도 이번에 고쳤습니다.
━━━━━━━━━━━━━━ ━━━━━━━━━━━
⚠️ 6. 아직 못 잰 것
— 판정은 NOT_TESTED
━━━━━━━━━━━━━━━━━━━━━━━━━
정직하게 적자면, 이 관문은 아직 실전에서
안 걸려봤습니다.
· 별도 저장소를 만들어 feat → 무시,
fix → 초안 생성, 재귀 방지까지 확인했습니다
(통과)
· 하지만 진짜 사고에서 나온 진짜 fix 커밋으로는
아직 안 걸렸습니다
저희 판정 기준(VERIFY.md)에는 PASS·FAIL 말고
NOT_TESTED가 있습니다. 이건 딱 그 자리입니다.
지난주에 "통과 도장과 확인된 사실은 다른 축"
이라고 썼는데, 그 자를 이번엔 제 결과물에
댔습니다.
다음 사고가 첫 실측입니다. 그때 초안이 안 붙으면
그것도 ERRORS.md에 적을 겁니다.
━━━━━━━━━━━━━━━━━━━━━━━━━
📌 7. 배운 것
━━━━━━━━━━━━━━━━━━━━━━━━━
① 기록이 없는 게 아니라, 검색 안 되는 곳에
있었다.
원인 분석은 커밋 메시지에 이미 다 있었습니다.
문제는 "같은 실수 반복 금지"용 파일에만 없었다는
것. 지식 관리의 실패는 종종 생산의 실패가 아니라
배치의 실패입니다.
② 새 층을 만들 땐 "무엇을 적게 할까"보다
"이미 쌓이는 무엇을 원료로 쓸까"를 먼저 본다.
3주간 규칙을 정교하게 다듬었지만 0건이었습니다.
이미 굴러가는 것에 15줄 얹으니 바로 굴러갑니다.
③ 기록 관문은 일을 막으면 안 된다.
커밋을 막는 관문이었다면 저는 기록이 아니라
훅을 껐을 겁니다. 사람이 끌 수 있는 장치는
언젠가 꺼집니다.
④ 자동화의 고장은 기능이 아니라 억제 장치에서
먼저 온다.
적재는 멀쩡했고 캐시와 중복 억제만 죽었습니다.
그래서 알림으로 안 오고 요금과 소음으로
왔습니다. 자동화 점검 목록에 "억제 장치가 살아
있나"를 따로 넣기로 했습니다.
━━━━━━━━━━━━━━━━━━━━━━━━━
👉 8. 남은 것
━━━━━━━━━━━━━━━━━━━━━━━━━
· 첫 실측 — 다음 fix 커밋에서 초안이 실제로
붙는지 (NOT_TESTED 해제)
· TODO 세 줄이 실제로 채워지는지 — 초안만 쌓이고
TODO가 안 채워지면 이 관문도 실패입니다.
2주 뒤 미채움 비율로 잽니다
· 리서치 원본을 knowledge/sources/ 로 옮길지
결정 — 2주째 미결
· 알림 채널 전수 점검 — "행동할 수 있는 알림만"
기준으로 나머지 자동화도 훑기
혹시 실수 기록·회고 규칙을 만들어두고 잘 안
굴러가고 계시다면, 이번 주 질문은 이겁니다.
" 그 내용, 정말 어디에도 없나요?
아니면 이미 다른 데 적어놓고
그 파일에만 없나요? "
후자라면 만들 건 규칙이 아니라 옮겨 붙이는
15줄일 가능성이 높습니다. 제가 3주 동안 규칙을
쓰고 있었습니다.