리눅스와 macOS 서버의 보안 설정을 점검하는 명령줄 도구 Bluepy를 릴리즈로 닫으면서 검사기 세 개를 지웠다.
하드코딩된 테스트 코퍼스는 73건에서 71건으로 줄었다.
그 커밋에 들어간 나머지 작업도 대부분 같은 방향이었다.
문제
닫힌 산출물의 성적표는 대개 남은 기능 수로 읽힌다.
릴리즈 노트에 몇 항목이 실렸는지, 화면이 몇 장인지를 센다.
그런데 그해 여름에 내가 닫으면서 실제로 한 일을 커밋 단위로 세면 방향이 반대다.
더한 것보다 지운 것이 많고, 지운 것의 성격이 넷 다 같다.
검증을 통과하지 못한 채 참인 척 서 있던 주장을 먼저 걷어냈다.
이 순서는 닫을 당시에는 보이지 않았다.
네 리포의 커밋 목록을 나란히 놓고서야 같은 모양이 드러났다.
그래서 이 글은 왜 닫았는지를 다루지 않고 닫는 커밋에 무엇이 들어 있었는지만 본다.
계열은 넷이고 대상은 각각 도구, 서비스, 제품, 나 자신이다.
줄여서 닫은 릴리즈
Bluepy에는 PC에서 쓰던 시절의 커밋이 77건 쌓여 있었고, 맥북으로 넘어온 뒤 남은 커밋은 하나다.
그 하나에 릴리즈 전체가 들어 있다.
인과 검증을 통과하지 못한 검사기 세 개를 함수와 공개 목록과 룰 파일에서 동시에 지웠고, 하드코딩된 테스트 코퍼스를 단일 소스에서 73건에서 71건으로 다시 맞췄다.
같은 커밋이 실험 단계 룰에 메타데이터 표시를 붙여 기본 스캔에서 빼고 옵트인 플래그로만 보이게 했다.
릴리즈 이름 자체에 정직한 알파라는 말과 검증된 것만 스캔한다는 말이 박혀 있다.
줄이기만 한 것은 아니다.
같은 커밋이 리눅스 두 항목과 macOS 세 항목을 통과와 실패와 수동 분기까지 덮는 인과 테스트로 고정했고, 실제 시스템 명령의 출력을 캡처해 붙였다.
커밋 본문에 적힌 검증 결과는 테스트 536건 통과와 라이브 수용 시험 종료 코드 0이다.
노출된 검사기 개수는 줄었고 개수당 근거는 늘었다.
삭제와 나란히 놓인 것이 명시적 보류다.
같은 커밋이 윈도우 트랙 노출과 화면 인터페이스와 자동 조치와 레거시 매핑 전면 복구를 보류 항목으로 못 박아 커밋 본문에 남겼다.
릴리즈에 없는 것을 없다고 적어두는 작업이다.
방향은 삭제와 같다. 검증되지 않은 주장을 밖으로 내보내지 않는다.
닫는 커밋 하나에 지우기와 못 박기가 같이 들어 있었다.
하루에 아홉 커밋으로 갚은 부채
알림 파이프라인을 돌리던 서비스 ASHD에는 맥북 시대 커밋이 21건 남았다.
2026년 6월 16일 이후 작성일 기준으로 센 값이고, 그중 내가 쓴 것은 18건이다.
나머지 셋은 의존성 봇과 릴리즈 자동화가 남겼다.
7월 초 하루에 하드닝 브랜치 아홉 커밋이 한꺼번에 들어갔다.
그 아홉의 내용은 추적되던 시크릿 파일 제거, 파이프라인의 무음 실패 제거, 모델 출력 검증, 업로드 검증, 일일 쿼터, 열린 리다이렉트 방어, 알림 본문 이스케이핑, 룰 추출기 평가 하니스, 지속 통합 단계의 회귀 게이트다.
사용자가 새로 얻는 화면은 이 목록에 없다.
갚은 것은 정직성 부채다.
무음 실패를 남겨두면 파이프라인은 돌지 않은 날에도 돈 것처럼 보이고, 모델 출력을 검증하지 않으면 형식이 깨진 결과가 그대로 나간다.
아홉 커밋이 공통으로 지운 것은 그 시스템이 스스로를 두고 하던 거짓 보고다.
파는 문구를 지운 새벽
포트폴리오를 만들어주는 연습용 제품 OurFolio에는 같은 필터로 센 맥북 시대 커밋이 28건 남았다.
7월 13일 새벽 35분 사이에 그 리포는 제품에서 전시물로 바뀐다.
랜딩에서 사회적 증거와 세일즈 카피를 걷어냈고, 마지막 행동 유도에 붙어 있던 무료 티어 문구를 지웠다.
소유하지 않은 자산은 교체했고 데모는 자체 시드로 다시 배선했다.
닷새 앞서는 반복 알림을 만들던 자동화가 통째로 제거됐다.
같은 실패를 알리는 이슈가 넉 달에 걸쳐 두 번 열려 있었는데, 알림을 고치는 대신 알림 자동 생성을 걷어내는 쪽으로 닫혔다.
그리고 ASHD가 전시물로 바뀐 것도 같은 날 같은 새벽이다.
두 리포가 몇 시간 사이에 같은 처리를 받았다.
자기 기록에도 같은 손이 갔다
같은 시기에 내 기록도 같은 처리를 받았다.
적용되지 않은 설정을 적용된 것처럼 출력하던 부트스트랩 도구가 고쳐졌고, 배포 상태와 어긋나 있던 검증 영수증이 정정됐다.
대상이 도구에서 사람으로 옮겨갔을 뿐 동작은 같다.
참이 아닌 진술을 먼저 지운다.
네 계열이 같은 모양이다
| 닫은 것 | 지운 것 | 줄어든 것 |
|---|---|---|
| 보안 점검 도구 Bluepy | 인과 검증을 통과하지 못한 검사기 3개 | 테스트 코퍼스 73건에서 71건 |
| 알림 서비스 ASHD | 무음 실패, 추적되던 시크릿 파일, 검증 없는 모델 출력과 업로드 | 사용자에게 보이는 새 기능 없음 |
| 연습용 제품 OurFolio | 사회적 증거, 세일즈 카피, 무료 티어 문구, 반복 알림 자동 생성 | 랜딩이 하던 판매 주장 |
| 자기 기록 | 적용되지 않은 설정의 성공 보고, 배포와 어긋난 검증 영수증 | 내 환경이 스스로에게 하던 성공 보고 |
네 줄의 가운데 열이 전부 같은 종류다.
전부 그 산출물이 밖으로 내보내던 검증되지 않은 진술이다.
닫는 시점에 새 기능을 하나 붙이면 그 기능은 검증 이력이 가장 얇은 항목으로 남는다.
넷 다 반대로 갔다.
결론
정직화는 이 시기에 반복해서 나타난 커밋 유형이었다.
그리고 이건 계측 규칙이기도 하다.
닫힌 산출물의 품질은 남은 기능 수보다 남은 주장 가운데 검증된 것의 비율로 잰다.
개수가 줄어든 릴리즈가 더 정직한 릴리즈일 수 있다.
그래서 릴리즈 노트를 볼 때 세는 대상을 옮긴다.
항목 수를 적고, 그 항목 중 인과 검증을 통과한 것의 수를 따로 적는다. 두 숫자가 갈리면 앞의 숫자는 성적표보다 판매 문구에 가깝다.
Bluepy를 닫은 커밋이 남긴 수치는 검사기 세 개 삭제와 코퍼스 73건에서 71건, 테스트 536건 통과였다.
한계·재검토 트리거
2026-09 기준 / 재검토 트리거: 같은 방식으로 닫는 다음 산출물의 마감 구간에서 삭제 커밋보다 기능 추가 커밋이 많아지면 이 글의 판정을 다시 연다.
참고
- 접는 판단에 붙은 조건 - 같은 시기에 무엇을 접기로 정했는지는 이쪽에 있다