패턴 요약
패턴 요약
이 문서는 마지막에 읽는다. 앞선 강제 문서들을 먼저 읽은 뒤, 전체를 한눈에 조망한다.
강제 구조 전체 지도
강제 계층별 요약
빌드 타임 강제
| 환경 | 도구 | 차단하는 것 |
|---|---|---|
| Atlas | Roslyn Analyzer | 레이어 경계 위반, validator 누락, 실패 은닉 |
| Glif | ESLint | 직접 컴포넌트 import, raw context, global fallback |
특성: 가장 싸고, 즉각적이고, 일관됨. 코드 작성 시점에 피드백.
런타임 강제
| 패턴 | 목적 |
|---|---|
| Guard @ 진입점 | 잘못된 입력이 내부로 진입하기 전 차단 |
| Assertion | 전제 조건을 코드로 명시 |
| Silent fallback 제거 | 문제를 숨기지 않고 드러냄 |
| Side-effect 전 검증 | 되돌릴 수 없는 작업 전 반드시 검증 |
특성: 빌드 타임을 통과한 동적 우회를 처리. 최후의 방어선.
전이 통제
| 구성 요소 | 역할 |
|---|---|
| 전이 허용 목록 | 가능한 상태 이동을 명시적으로 정의 |
| Private 상태 필드 | 직접 변경 경로 차단 |
| Transition 메서드 | 유일한 합법 경로 |
특성: “값"이 아닌 “경로"로 상태를 다룸.
Planner 통제
| 구성 요소 | 역할 |
|---|---|
| Executor 숨기기 | 직접 호출 경로 제거 |
| 단일 진입점 (dispatch) | 모든 실행을 Planner 경유 강제 |
| 실행 컨텍스트 검증 | Planner 외 호출 차단 |
특성: AI가 직접 실행을 선택할 수 없게 만듦.
테스트 하네스 강제
| 구성 요소 | 역할 |
|---|---|
| renderWithAppProviders 강제 | Provider 없는 렌더링 차단 |
| 상태 직접 설정 금지 | 테스트도 동일한 전이 경로 사용 |
| Planner 우회 금지 | 테스트에서도 dispatch 경유 |
특성: 테스트가 우회 패턴의 정본이 되지 않게 막음.
하네스 패턴 → 강제 연결
| 하네스 패턴 | 강제 방식 | 문서 |
|---|---|---|
| 백엔드 레이어 우회 | Roslyn ATL001 + internal 키워드 | 빌드 타임 |
| 검증 우회 | Roslyn ATL401/402 + Guard | 빌드 타임, 런타임 |
| 상태 변경 우회 | Transition 통제 + ESLint | 전이 통제 |
| 컴포넌트 레지스트리 우회 | ESLint no-restricted-imports | 빌드 타임 |
| AI 실행 흐름 우회 | Planner 통제 + 실행 컨텍스트 검증 | Planner 통제 |
| 테스트 우회 | renderWithAppProviders 강제 | 테스트 강제 |
적용 우선순위
모든 것을 한 번에 적용할 수 없다면, 이 순서로 시작한다.
- 가장 자주 발생하는 우회 경로 1개 를 먼저 닫는다
- 빌드 타임 규칙 1개 를 error로 설정한다
- CI gate 를 설정해서 빌드 실패가 merge를 막게 한다
- 점진적으로 커버리지를 넓힌다
완벽한 강제보다 일관된 강제가 더 중요하다.