Files
document-haness/docs/TechLog/tech-log-studio/when-a-guard-can-be-trusted/case/case-the-guard-worked-and-i-did-not-run-it.md
T
DongHyeonkaandClaude Opus 5 0650d91def docs(TechLog): 설명 뒤에 붙은 평가·예고·되풀이를 걷어낸다
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>
2026-09-07 16:03:16 +09:00

3.9 KiB

kind, slug, title, topic, topicName, project, status, lastVerifiedOn, sourceRevision, source
kind slug title topic topicName project status lastVerifiedOn sourceRevision source
CASE the-guard-worked-and-i-did-not-run-it 가드는 작동했는데 제가 그것을 돌리지 않아 두 번 새어 나갔다 when-a-guard-can-be-trusted 가드를 언제 믿을 수 있는가 TechLog 게시 전 2026-09-04 tech-log@2026-09-02
final/document.md#§7.5
final/document.md#§8.5
final/document.md#§17.4

가드는 작동했는데 제가 그것을 돌리지 않아 두 번 새어 나갔다

가드를 넣고 제가 그것을 돌리지 않아 두 번 새어 나갔다. 화면 테스트를 다른 명령이 돌리는데 그 명령을 안 돌려서 23건이 빨간 채로 여러 커밋을 지나갔고, 주제 화면 셋을 더하면서 CI 게이트 기준값을 빠뜨려 게이트가 빨간 채로 여러 커밋을 지나갔다.

관계

  • 가드는 결함을 되돌려 실제로 멈추는 것을 확인한 뒤 커밋한다 가드가 무엇을 잡는지 확인하는 기준이다.
  • 배포 전에 사람이 돌려야 하는 것과 그 함정 이 사건 뒤에 목록으로 굳혔다.
  • 라우트 하나가 건드리는 여덟 곳과, 그것들이 우는 시점 두 번째 사건에서 빠뜨린 목록이 그 기록에 있다.

문제

가드는 있었고 작동했다. 실행되지 않았다.

화면 테스트는 단위 테스트 명령이 아니라 별도 명령이 돌린다. 그 명령을 돌리지 않으면 화면 테스트가 빨간 것을 아무도 모른다.

CI 게이트도 마찬가지였다. 라우트를 더하면서 기준값을 함께 올리지 않으면 게이트가 거절하는데, 그 게이트가 빨간 것을 확인하지 않은 채 커밋을 이어 갔다.

결론

두 번 다 가드가 아니라 실행이 빠진 것이었다.

첫 번째 : 화면 테스트를 별도 명령이 돌리는데 그것을 안 돌려 23건이 빨간 채로 여러 커밋을 지나갔다 두 번째 : 주제 화면 셋을 더하면서 게이트 기준값을 빠뜨려 게이트가 빨간 채로 여러 커밋을 지나갔다

가드는 CI 에 묶여야 의미가 있습니다. 사람이 기억해서 돌리는 가드는 절반만 존재합니다.

검증 환경

tech-log-frontend : fd73bc8 · fe6b56a 명령 : check:types · lint · test:unit · test:component · test:tech-log 다섯 확인 방식 : 다섯 명령을 각각 돌려 어느 것이 무엇을 잡는지 확인

재현 조건

  1. 화면 테스트가 깨지는 변경을 하나 넣는다
  2. 단위 테스트 명령만 돌린다 — 통과한다
  3. 화면 테스트 명령을 돌린다 — 깨진다

본문

화면 테스트를 돌리지 않았다

화면 테스트는 test:unit 이 아니라 test:tech-log 가 돌린다. 그것을 돌리지 않아 위 두 결함과, 의도한 변경에 고정돼 있던 단언들이 23건 빨간 채로 여러 커밋을 지나갔다.

23건 중에는 실제 결함을 잡은 것도 있고 의도한 변경에 고정된 단언도 있었다. 둘을 구분하려면 그 명령을 돌려야 하는데, 돌리지 않으니 둘 다 그대로 남았다.

게이트 기준값을 빠뜨렸다

주제 화면 셋을 더하면서 CI 게이트가 요구하는 기준값 셋을 올리지 않았다. 게이트는 정확히 그것을 거절한다.

게이트가 빨간 채로 여러 커밋을 지나갔고, 결정 링크 404 를 고치던 커밋에서야 맞췄다.

가드가 아니라 실행이 빠졌다

두 번 다 가드는 정확했다. 화면 테스트는 실제 결함을 잡았고 게이트는 기준값이 어긋난 것을 정확히 거절했다.

가드는 CI 에 묶여야 의미가 있습니다. 사람이 기억해서 돌리는 가드는 절반만 존재합니다.

확인하지 못한 것

다섯 명령을 CI 에 묶는 작업은 하지 않았다. 메모리와 배포 전 검증 목록으로만 남겨 뒀다.