게시된 Reference 15편이 전부 규칙을 `### N. 제목` 으로 쓰고 적용 조건·예외·예시를 항목으로 쓴다. 내 15편은 규칙을 `**굵게**` 로, 나머지 셋을 문단으로 쓰고 있었다 — Studio 의 rules[]·applyWhen[]·exceptions[]·examples[] 는 배열이라 문단으로 두면 항목이 하나로 접힌다. 규칙 68개를 `### N. 제목` 으로 바꿨다 (편당 3~7개, 게시된 것은 4~10개) 적용 조건·예외·예시를 항목으로 갈랐다. 한 항목뿐이던 아홉 편은 조건을 나눠 적었다 주제 6 은 본문을 다시 썼다 — location = 이 정확히 일치하는 경로만 잡아 27개가 얼어붙은 구조, 여덟 곳이 우는 시점을 셋으로 가른 표, digest 를 다시 계산할 때 옛 값을 먼저 재현하는 이유. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
74 lines
3.1 KiB
Markdown
74 lines
3.1 KiB
Markdown
---
|
|
kind: REFERENCE
|
|
slug: revert-the-defect-and-watch-the-guard-fail
|
|
title: 가드는 결함을 되돌려 실제로 멈추는 것을 확인한 뒤 커밋한다
|
|
topic: when-a-guard-can-be-trusted
|
|
topicName: 가드를 언제 믿을 수 있는가
|
|
project: TechLog
|
|
status: 게시 전
|
|
verifiedOn: 2026-09-04
|
|
evidence:
|
|
- ../../../final/evidence/raw/guards/guards-actually-fail.txt
|
|
sourceRevision: tech-log@2026-09-02
|
|
source:
|
|
- final/document.md#§15
|
|
- final/document.md#§3.5
|
|
- final/document.md#§17.4
|
|
---
|
|
|
|
# 가드는 결함을 되돌려 실제로 멈추는 것을 확인한 뒤 커밋한다
|
|
|
|
결함을 되돌려 실제로 빨개지는 것을 확인한 뒤에 커밋한다. 확인하지 않은 가드는 그 결함이 원래 없었는지 검사가 안 도는지 구별되지 않는다.
|
|
|
|
## 관계
|
|
|
|
- **가드는 작동했는데 제가 그것을 돌리지 않아 두 번 새어 나갔다**
|
|
가드가 정확해도 돌리지 않으면 소용없다는 사건이다.
|
|
- **매번 우는 검사는 읽히지 않는다 — 기대된 실패는 조건을 적어 빼고 나머지는 전부 실패시킨다**
|
|
가드가 늘 빨간 상태로 남는 다른 실패 모양이다.
|
|
- **이음매마다 그 이음매를 실제로 지나는 검사를 하나씩 둔다**
|
|
어디에 가드를 둘지를 다루는 기준이다.
|
|
|
|
## 목적
|
|
|
|
무엇도 잡지 못하는 가드가 초록불로 남는 것을 막는다. 이 상태는 가드가 있는 것과 화면에서 구분되지 않는다.
|
|
|
|
## 규칙
|
|
|
|
### 1. 결함을 되돌려 그 가드가 실제로 멈추는 것을 확인한 뒤 커밋한다
|
|
|
|
계약에서 값을 빼고 대조 검사가 빨개지는지 본다. 매핑을 떼어 보고 그 연산 하나를 짚는지 본다.
|
|
|
|
### 2. 가드가 짚는 대상이 하나인지 본다
|
|
|
|
전부를 짚으면 어디가 문제인지 알 수 없고, 결과가 곧 읽히지 않는다.
|
|
|
|
### 3. 되돌릴 수 없는 것은 현재 상태를 대신 증거로 남긴다
|
|
|
|
이미 마이그레이션으로 고친 데이터는 실패 상태를 다시 만들 수 없다. 그럴 때는 지금 고쳐져 있다는 것을 남긴다.
|
|
|
|
### 4. 가드를 CI 에 묶는다
|
|
|
|
사람이 기억해서 돌리는 가드는 절반만 존재한다.
|
|
|
|
## 적용 조건
|
|
|
|
- 재발 방지로 테스트·아키텍처 규칙·CI 게이트를 넣을 때
|
|
- 결함을 고치는 커밋에서 가드를 함께 넣을 때
|
|
- 이미 있는 가드가 무엇을 잡는지 확인해야 할 때
|
|
|
|
## 예외
|
|
|
|
- 결함을 되돌릴 수 없는 것 — 이미 마이그레이션으로 고친 데이터, 지난 배포에서만 나던 상태 — 은 현재 상태가 고쳐져 있음을 증거로 남긴다.
|
|
|
|
- 기존 가드를 옮기거나 이름만 바꾸는 변경은 되돌려 확인하지 않아도 된다. 다만 옮긴 뒤에 한 번은 돌린다.
|
|
|
|
## 예시
|
|
|
|
- 가드 셋을 각각 결함으로 되돌려 실제로 빨개지는 것을 확인한 기록을 남겼다.
|
|
|
|
- 계약에서 CONCEPT 을 빼자 백엔드의 계약 대조 테스트가 빨개졌다.
|
|
|
|
- 매핑을 떼어 보고 계약 대조 테스트가 그 연산 하나를 정확히 짚는 것을 확인했다.
|
|
|
|
- 굵기 선언을 빼 보고 제목 급 검사가 실제로 멈추는 것을 확인했다. |