실수 기록이 3주간 0건이었습니다 — 규칙을 고치는 대신 커밋에 얹었습니다

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주 동안 규칙을

쓰고 있었습니다.

1
4개의 답글
밀어주고 끌어주는

온·오프라인 AI 스터디

AI로 어디까지 할 수 있는지
직접 확인하실 분만 신청하세요.