2026.07.28 작업일지 v1.0.0
00:08, 문서 색인에서 링크 하나가 빠졌다. 그것만으로 주 브랜치가 빨갛게 됐고, 그날 밤 올라온 모든 검증이 같이 떨어졌다. 18:00, 진짜 문제가 드러났다. 검사기는 62개 중 3개만 돌리고도 합격 도장을 찍고 있었다. 21:40, 메모에 백틱을 쓰면 그 안이 실행된다는 걸 알았다. 이미 한 번 실행된 뒤였다.
전날 밤 나는 이렇게 물었다. “영수증이 뭔데 아직도 안 끝났어.” 여기서 영수증은 “이 코드가 검사를 진짜로 다 통과했다”는 증거 문서다. 합칠 때 그걸 보고 판단한다. 이날은 그 영수증이 실은 아무것도 증명하지 않고 있었다는 게 드러난 날이다. 자동화 저장소에 62건, 스킬 저장소에 12건, 홈페이지에 9건이 들어갔다.
1. 링크 하나가 밤새 모든 검증을 무너뜨렸다
새벽에 문서 색인에서 링크 하나가 빠진 게 발견됐다. 사소해 보이지만 검사 항목 중에 “색인에 빠진 문서가 없는가”가 있었다. 그래서 주 브랜치가 빨간 상태가 됐고, 그 브랜치를 기준으로 검사하는 모든 작업이 같이 떨어졌다. 그날 밤 올라온 PR들은 자기 잘못이 아닌 이유로 전부 불합격을 받고 있었다.
배운 것 — 공용 기준선이 빨간 상태로 방치되면, 그 뒤로 오는 모든 판정이 자기 잘못이 아닌 이유로 오염된다. 기준선 복구는 개별 작업보다 항상 먼저다.
2. 도장은 찍혔는데 아무것도 안 재고 있었다
오후에 훨씬 나쁜 게 나왔다. 검사기가 검사 대상 62개 중 61개를 건너뛰고 3개만 통과시킨 뒤 초록불을 냈다.
건너뛰기 자체는 정당한 기능이다. 이 컴퓨터에 그 도구가 없으면 건너뛴다. 문제는 건너뛴 것을 “재지 못한 것”이 아니라 “통과한 것”으로 셌다는 점이다. 그래서 커버리지가 100%로 표시됐다. 61개를 안 쟀는데 전부 쟀다고 적혀 있었다.
852172d5 18:00 fix(receipt): 자동 선언 스킵을 커버리지에서 빼고
목록·트리를 인자로 고정
배운 것 — “건너뜀”을 “통과”로 세는 순간, 검사기는 검사를 그만두고 검사한 척을 시작한다. 두 값은 절대 같은 칸에 넣으면 안 된다.
3. 같은 검사기가 양쪽으로 틀렸다
세 시간 뒤 같은 검사기에서 두 번째 결함이 나왔다. 검사는 격리된 임시 폴더에서 돌린다. 그런데 그 폴더 이름이 판정을 뒤집고 있었다.
- 폴더 이름과 검사 목록이 어긋나면 → 실제로는 대부분 건너뛰었는데 초록불 (있는 죄를 감춤)
- 폴더 이름이 원본과 다르면 → 코드와 무관한 실패가 발생 (없는 죄를 만듦)
같은 명령에 이름만 바꿔 돌리니 합격 2건이 실패 2건으로 바뀌었다. 한 검사기가 양방향으로 틀릴 수 있다는 게 실측으로 확인된 것이다.
196f7676 21:00 fix(iso-runner): 샌드박스 트리 이름이 판정을 뒤집던 것
— repo 정체성 파생
4. 메모에 백틱을 쓰면 그 안이 실행된다
밤에는 성격이 다른 게 터졌다. 작업 기록에 메모를 붙이는 명령이 있는데, 메모 본문이 셸을 두 번 거치고 있었다. 그래서 메모 안에 백틱이나 달러 기호를 쓰면 그 안의 내용이 명령으로 실행됐다.
발견 경로가 아찔했다. 누군가 메모에 개발 명령을 인용해 적었는데 그게 실제로 실행됐다. 다행히 무해한 명령이었다.
수리는 두 갈래로 갔다. 셸을 아예 안 거치는 입력 경로를 새로 만들고(파일로 넘기기·표준입력), 본문을 다시 해석하던 층을 걷어냈다.
be53ff57 21:40 fix(sot): sot-mark 노트에 셸 비경유 입력 경로 신설
7a009470 21:33 fix(sot): tasks.md 엔트리 줄에 상한이 없어 무한히 자라던 것
두 번째 줄은 덤으로 잡힌 것이다. 작업 하나에 메모가 계속 붙으면서 한 줄이 무한히 길어지고 있었다. 긴 메모는 별도 보관함으로 옮기고 본문에는 요약만 남기게 바꿨다.
배운 것 — 사람이 자유롭게 쓰는 텍스트가 명령 해석기를 지나가면, 그건 입력이 아니라 실행 가능한 코드다. 인용부호로 막는 건 임시방편이고, 해석기를 안 지나가게 만드는 게 수리다.
5. 그래서 뭐가 남았나
- 자동화 저장소 62건, 스킬 저장소 12건, 홈페이지 9건 착지
- 영수증 검사기의 커버리지 계산과 격리 폴더 결속을 둘 다 수리 — 이제 안 잰 건 안 쟀다고 나온다
- 메모 입력 경로에서 셸 해석면 제거
- 홈페이지에 뉴스레터 5편(ep76~ep80) 게시, 작업일지 1편 발행
- 팀 편성이 선언 상태에서 실제 활성 상태로 전환 — 다만 설정 파일 두 벌 중 한 벌만 바꿔서 처음엔 안 먹었다
마지막 줄이 이날의 축소판이다. 선언은 바꿨는데 그 선언을 실제로 읽는 쪽은 다른 파일이었다. 이날 잡은 결함 세 개가 전부 같은 모양이었다 — 표시와 실제가 다른 자리.
다음 이야기는 규칙을 코드로 옮긴 다음 날, 그 코드가 규칙을 안 지키고 있었다는 이야기.
— 강대종 / @ssamssae