주제 11~13 을 다시 쓰고, Case 가 얇은 것들을 저장소에서 실물을 확인해 채웠다.
§13.4 ManagementClientSafeMessages — 삭제 관련 코드 여섯의 고정 문구와
원문 메시지를 내보내지 않는 이유(javadoc)
§16.1 다섯 참조가 전부 DOCUMENT_IN_USE 하나로 나가고, SSOT 가 인용한 영어 문장은
DeleteDocumentDraftUseCase 안에 남는 진단 메시지라 밖으로 나가지 않는다
§13.6 romanizeSyllable 실물과 음운 변동을 뺀 이유, 문서 slug 와 같은 정규식을 쓰는 이유
§15.4 check:types 가 도는 tsconfig 여섯 — app·node·test·recipes·web-worker·service-worker
SSOT 62,643 → 67,526 자. 인용한 코드는 전부 저장소에서 찾아 대조했다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3.7 KiB
3.7 KiB
kind, slug, title, topic, topicName, project, status, verifiedOn, evidence, sourceRevision, source
| kind | slug | title | topic | topicName | project | status | verifiedOn | evidence | sourceRevision | source | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| REFERENCE | revert-the-defect-and-watch-the-guard-fail | 가드는 결함을 되돌려 실제로 멈추는 것을 확인한 뒤 커밋한다 | when-a-guard-can-be-trusted | 가드를 언제 믿을 수 있는가 | TechLog | 게시 전 | 2026-09-04 |
|
tech-log@2026-09-02 |
|
가드는 결함을 되돌려 실제로 멈추는 것을 확인한 뒤 커밋한다
결함을 되돌려 실제로 빨개지는 것을 확인한 뒤에 커밋한다. 확인하지 않은 가드는 그 결함이 원래 없었는지 검사가 안 도는지 구별되지 않는다.
관계
- 가드는 작동했는데 제가 그것을 돌리지 않아 두 번 새어 나갔다 가드가 정확해도 돌리지 않으면 소용없다는 사건이다.
- 매번 우는 검사는 읽히지 않는다 — 기대된 실패는 조건을 적어 빼고 나머지는 전부 실패시킨다 가드가 늘 빨간 상태로 남는 다른 실패 모양이다.
- 이음매마다 그 이음매를 실제로 지나는 검사를 하나씩 둔다 어디에 가드를 둘지를 다루는 기준이다.
목적
무엇도 잡지 못하는 가드가 초록불로 남는 것을 막는다.
가드를 넣었다는 것과 그 가드가 무엇을 잡는다는 것은 다르다. 둘은 화면에서 구분되지 않는다 — 검사가 통과했을 때 그 결함이 원래 없었는지 검사가 그것을 안 보는지 알 방법이 없다.
규칙
1. 결함을 되돌려 그 가드가 실제로 멈추는 것을 확인한 뒤 커밋한다
계약에서 값을 빼고 대조 검사가 빨개지는지 본다. 매핑을 떼어 보고 그 연산을 짚는지 본다. 굵기 선언을 빼고 제목 급 검사가 멈추는지 본다.
되돌리는 것이 어려우면 그 가드가 무엇을 전제하는지 다시 본다. 되돌릴 수 없는 상태를 잡는 가드는 그 상태가 어떻게 생기는지를 아무도 모른다는 뜻이다.
2. 가드가 짚는 대상이 하나인지 본다
전부를 짚으면 어디가 문제인지 알 수 없고, 결과가 곧 읽히지 않는다. 매핑 하나를 떼었을 때 그 연산 하나만 나와야 한다.
3. 되돌릴 수 없는 것은 현재 상태를 대신 증거로 남긴다
이미 마이그레이션으로 고친 데이터는 실패 상태를 다시 만들 수 없다. 그럴 때는 지금 고쳐져 있다는 것을 남긴다.
4. 가드를 CI 에 묶는다
사람이 기억해서 돌리는 가드는 절반만 존재한다. 가드가 정확해도 결과를 아무도 읽지 않으면 빨간 채로 여러 커밋을 지나간다.
적용 조건
- 재발 방지로 테스트·아키텍처 규칙·CI 게이트를 넣을 때
- 결함을 고치는 커밋에서 가드를 함께 넣을 때
- 이미 있는 가드가 무엇을 잡는지 확인해야 할 때
예외
- 결함을 되돌릴 수 없는 것 — 이미 마이그레이션으로 고친 데이터, 지난 배포에서만 나던 상태 — 은 현재 상태가 고쳐져 있음을 대신 증거로 남긴다.
- 기존 가드를 옮기거나 이름만 바꾸는 변경은 되돌려 확인하지 않아도 된다. 다만 옮긴 뒤에 한 번은 돌린다.
예시
- 가드 셋을 각각 결함으로 되돌려 실제로 빨개지는 것을 확인한 기록을 남겼다
- 계약에서 CONCEPT 을 빼자 백엔드의 계약 대조 테스트가 빨개졌다
- 매핑을 떼어 보고 계약 대조 테스트가 그 연산 하나를 정확히 짚는 것을 확인했다
- 굵기 선언을 빼 보고 제목 급 검사가 실제로 멈추는 것을 확인했다