Files
document-haness/docs/clean-architecture-backend-template/tech-log-studio/what-a-gate-does-not-prove/reference/reference-a-gate-declared-in-prose-is-not-in-the-build.md
T
DongHyeonkaandClaude Opus 5 ab59130196 chore: 이전 세션이 남긴 변경을 커밋한다
이번 파이프라인 작업과 무관하게 작업 트리에 남아 있던 것을 그대로 올린다.
사용자가 「전부 커밋」으로 정했고, 이번 작업과 섞이지 않게 커밋만 나눴다.

대부분은 clean-architecture-backend-template 의 그림 정본 재배치다 —
final/assets/diagrams/<이름>/ 에 있던 것이 CLAUDE.md 가 적은 배치인
final/assets/<이름>/ 로 옮겨졌고 .techviz/<이름>/ 이 함께 들어왔다.
삽입 줄의 대부분(3.15M)이 그 .techviz context.json 이다.

그 밖에 ca-tmpl·document-haness 의 정리, .claude/agents/ 열한 개,
writing-practitioner-guides 스킬, .playwright-mcp 세션 산출물,
scripts/check-ssot-facts.py 와 그 시험이 들어 있다.

이 커밋의 내용은 내가 만든 것이 아니라 이전 세션이 남긴 것이고 검증하지 않았다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 11:02:02 +09:00

66 lines
3.9 KiB
Markdown

---
kind: REFERENCE
slug: a-gate-declared-in-prose-is-not-in-the-build
title: 산문이 선언한 게이트는 빌드에 있는 게이트가 아니다
topic: what-a-gate-does-not-prove
project: clean-architecture-backend-template
status: 게시 전
sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
rootTreeNode: reference:a-gate-declared-in-prose-is-not-in-the-build
verifiedOn: # 이 기록은 이번 회차에 실행 확인을 하지 않았다
---
# 산문이 선언한 게이트는 빌드에 있는 게이트가 아니다
주석이나 문서가 검사의 실행을 단언할 때 그것을 관찰로 읽지 않게 한다. 게이트가 도는지를 묻기 전에 그 문장이 지목한 심볼 이름으로 빌드 스크립트와 CI 정의를 검색하고, 나오지 않으면 그 문장은 지금 사실이 아니다.
## 목적
주석이나 문서가 검사의 실행을 단언할 때 그것을 관찰로 읽지 않게 한다. 게이트가 도는지를 묻기 전에 게이트가 존재한다는 문장이 무엇에 근거하는지 묻는다.
## 규칙
1. 실행을 단언하는 문장을 먼저 찾는다
빌드를 실패시킨다, 기동 시점에 거부한다, 다른 방식으로 조립된 런타임도 확인한다 같은 현재 시제 문장이 대상이다.
2. 그 문장이 지목한 심볼 이름으로 빌드 스크립트와 CI 정의를 검색한다
나오지 않으면 그 문장은 지금 사실이 아니다.
3. 실행하는 것이 테스트뿐이면 그 테스트의 대상 집합을 확인한다
목록이 하드코딩되어 있으면 게이트의 범위는 그 목록이지 저장소가 아니다.
4. 미래를 서술하는 선언과 구분한다
아직 돌지 않는다고 시제로 밝힌 선언은 이 규칙의 대상이 아니다.
## 적용 조건
주석 밀도가 높은 저장소의 모든 검증 코드. 근거를 문장으로 남기는 관행이 자산인 만큼, 그 문장이 실행을 단언할 때 비용도 같이 커진다. 읽는 사람이 게이트의 존재를 근거 있게 믿기 때문이다.
## 예외
의도적으로 미래를 서술하는 선언은 문제가 아니다. 다만 시제가 달라야 한다. 코드 생성 매니페스트가 좋은 예다. 이 빌드에서는 아직 돌지 않는다고 적고, 왜 돌지 않는지를 결정 기록으로 지목하며, 이 매니페스트는 그것을 켜기로 하는 미래의 결정이 대체가 아니라 만족시켜야 할 선언이라고 적는다.
## 예시
이 저장소에서 다섯 곳이 걸렸다.
스키마 규칙 엔진은 두 파일이 빌드를 실패시킨다고 적는데 빌드 스크립트에 이름이 없다.
스키마 거버넌스 정책의 네 수명주기 태스크 이름은 어떤 빌드 파일에도 없고, 그 javadoc 은 이름을 정책에 두면 단계가 사라질 때 테스트가 실패한다고 적는다.
고급 모듈 가드의 런타임 확인 메서드는 팻 자와 셰이드 산출물과 테스트 하네스도 확인한다고 적는데 호출자가 없다.
두 실험 어댑터의 프로파일 검증기는 전송 javadoc 이 기동 시점 거부를 단언하는데, 한쪽은 흔적이 javadoc 링크 한 줄이고 다른 쪽은 자기 선언 말고 아무 데도 없다.
## 관계
- **두 파일이 같은 검증기를 빌드를 실패시키는 것이라 적고 어떤 빌드도 그것을 부르지 않는다**
이 규칙을 만든 사례다.
- **아무도 돌리지 않는 레인의 게이트는 마지막으로 돌린 사람이 본 것을 보고한다**
이 규칙의 다음 단계다. 게이트가 존재한 뒤에 무엇이 그것을 주기적으로 돌리는가를 묻는다.
- **시작 검증기가 네 설정 키의 유일한 소비자인데 시작 시 실행되지 않는다**
같은 형태가 구성 경계에서 나타난 사례다.
- **검증기는 발행이 아니라 주입이 강제다**
실행 경로를 묻는 같은 계열의 규칙이다.