rewriting-technical-prose-naturally 를 서브에이전트 셋으로 나눠 56편에 적용했다. ai-tells.md 의 첫 절대로 다른 표현으로 바꾸는 대신 문장을 통째로 지웠다. 설명한 것의 중요성을 다시 평가하는 꼬리 19 이미 설명한 것을 추상어로 되풀이 19 독자에게 읽는 법을 지시하거나 오해를 가정 9 자료가 뒷받침하지 않는 덧붙인 이득 4 문서군 전체의 문형 편중도 풀었다 — 함께 27→7(한 묶음), 그대로 22→12(두 묶음), 하게 된다 1→0. 한 편에서 세 번 반복되던 「같은 병이 ~에서도 났다」와 두 기록에 같은 문장으로 있던 세 쌍을 갈랐다. 계약 제목 「여덟 자리」가 본문의 「여덟 곳」과 어긋나 있었다. 제목이 spatial-metaphor 규칙에도 걸리므로 계약과 기록을 함께 「여덟 곳」으로 맞췄다. 검사 넷 전부 통과한다 — check_prose 56편 error 0 · check_body PASS · check_evidence --repo 문제 없음 · verify-tech-log-tree error 0 warn 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3.1 KiB
kind, slug, title, topic, topicName, project, status, verifiedOn, sourceRevision, source
| kind | slug | title | topic | topicName | project | status | verifiedOn | sourceRevision | source | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| REFERENCE | what-a-person-must-run-before-deploying | 배포 전에 사람이 돌려야 하는 것과 그 함정 | when-a-guard-can-be-trusted | 가드를 언제 믿을 수 있는가 | TechLog | 게시 전 | 2026-09-04 | tech-log@2026-09-02 |
|
배포 전에 사람이 돌려야 하는 것과 그 함정
CI 에 묶이지 않은 검증이 남아 있으면 그것을 돌리는 것은 사람이다. 다섯 명령을 다 돌려야 하고, 그중 둘은 순서와 환경 때문에 그냥 돌리면 틀린 답을 준다.
관계
- 가드는 작동했는데 제가 그것을 돌리지 않아 두 번 새어 나갔다 이 목록이 필요해진 사건이다.
- npx tsc --noEmit 이 한 파일도 검사하지 않고 성공했다 목록의 첫 줄이 왜 그 명령이 아닌지가 그 기록에 있다.
- 레지스트리 없이 tar 를 import 하는 배포 경로 빌드 산출물에 커밋 해시가 들어가는 이유가 그 개념에 있다.
목적
배포 전에 돌려야 하는 것을 사람이 기억에 의존해 고르는 것을 막는다. 두 번 빠뜨려 결함이 배포까지 갔다.
규칙
프론트는 다섯 개를 다 돌린다 타입 검사 · lint · 단위 테스트 · 컴포넌트 테스트 · 화면 테스트다. 화면 테스트는 단위 테스트 명령이 돌리지 않는다.
타입 검사는 프로젝트를 순회하는 명령으로 돌린다 루트 tsconfig 를 직접 부르는 명령은 한 파일도 검사하지 않고 성공한다.
백엔드는 커밋한 뒤에 빌드한다 빌드 산출물 이름에 커밋 해시가 들어간다. 작업 트리가 더러우면 해시가 달라져 stale 산출물 검사가 멈춘다.
테스트를 npm 이나 npx 로 감싸 돌리지 않는다
npm_config_* 환경 변수가 설정되어 CI 워크플로 생성 테스트가 실패한다. 그 변수를 지우고 실행기를 직접 부른다.
적용 조건
CI 에 묶이지 않은 검증이 남아 있는 저장소에서 배포 직전에 하는 일.
예외
CI 가 그 명령을 돌리면 이 목록에서 뺀다.
환경 때문에 실패하는 것은 실패로 세지 않는다. 하위 프로세스를 띄우는 세 케이스는 이 환경에서 실패하고 같은 리비전의 다른 실행에서도 똑같이 재현되므로 코드 변경과 무관하다.
예시
프론트 다섯 명령 :
npm run check:types
npm run lint
단위 · 컴포넌트 · 화면 테스트
백엔드 : 커밋한 뒤 stale 산출물을 지우고 빌드한다. 이 순서를 몰라 두 번 헤맸다.
설계 패키지 : 계약 자체의 유효성 · 세 계약 사이의 정합 · 프론트와 백엔드가 아는 종류와 오류 코드가 같은지, 셋을 돌린다.
테스트 JVM 힙이 기본값이면 컨텍스트 캐시와 아키텍처 검사와 컨테이너가 겹치면서 메모리가 모자란다. 증상이 테스트 실패가 아니라 실행기를 완료할 수 없다는 메시지라 원인을 가린다.