--- kind: REFERENCE slug: derive-the-route-lists-from-the-route-contract title: 라우트에 딸린 목록은 라우트 계약에서 유도하고, 유도할 수 없는 것은 대조 검사를 둔다 topic: one-route-many-hand-kept-lists topicName: 라우트 하나가 울리는 손 목록 project: TechLog status: 게시 전 verifiedOn: 2026-09-04 sourceRevision: tech-log@2026-09-02 source: - final/document.md#§8.3 - final/document.md#§8.2 --- # 라우트에 딸린 목록은 라우트 계약에서 유도하고, 유도할 수 없는 것은 대조 검사를 둔다 라우트를 하나 더하면 서빙 패턴·청크 이름·게이트 기준값이 함께 움직인다. 손으로 유지하는 목록은 같은 방식으로 두 번 실패했다. 유도할 수 있는 것은 라우트 계약에서 유도하고, 유도할 수 없는 상수는 옛 값을 재현한 뒤에 갱신한다. ## 관계 - **nginx 가 모르는 라우트는 새로고침에서 404 다** 이 기준의 근거 사건이다. - **라우트 하나가 건드리는 여덟 곳과, 그것들이 우는 시점** 유도할 수 있는 것과 없는 것이 그 기록에 갈려 있다. - **종류를 나열하는 곳은 컴파일러나 계약 대조 검사가 세게 만든다** 같은 병을 다른 유한 집합에서 다루는 기준이다. ## 목적 라우트를 더할 때 함께 움직여야 하는 목록이 빠지는 것을 막는다. 이 부류는 우는 시점이 제각각이라, 어떤 것은 배포한 뒤 방문자가 먼저 만난다. ## 규칙 **서빙 패턴은 라우트 계약에서 유도한다** 등록된 Public 라우트마다 정규식 하나를 만든다. 파라미터는 한 세그먼트만 잡고 슬래시는 잡지 않는다. **빌드가 아는 목록을 서빙 계약의 근거로 쓰지 않는다** 번들된 픽스처에 우연히 들어 있던 경로를 열거하면 빌드 이후에 게시된 기록이 엣지에서 404 가 된다. **유도할 수 없는 목록에는 대조 검사를 둔다** vite chunk 이름 표가 그렇다. 이 표를 빠뜨리면 다섯 검사를 다 통과한 뒤 빌드 매니페스트 단계에서 멈춘다. **기준값 상수는 옛 값을 먼저 재현한 뒤 갱신한다** 그렇게 하지 않으면 계산 방법이 달라져 새 값이 나온 것과 파일이 바뀌어 새 값이 나온 것을 구분할 수 없다. ## 적용 조건 라우트 하나가 서빙 패턴·청크 이름·게이트 기준값 같은 목록을 함께 움직이는 프론트엔드. 라우트를 더하거나 지우는 변경에서 걸린다. ## 예외 catch-all 라우트는 서빙 패턴으로 번역하지 않는다. 모든 미매치 URL 에 index.html 을 주면 엣지 404 가 soft 200 이 된다. 목록이 하나이고 그 목록을 빌드가 강제하면 유도 규칙을 따로 두지 않아도 된다. ## 예시 `/studio/releases` 가 평문 404 였다. 라우트도 청크도 있었고 서빙 계약의 손 배열에만 없었다. 주제 편집 화면을 더하고 청크 이름 표를 빠뜨렸더니 빌드 매니페스트 단계에서 멈췄다. 라우트 셋을 더하면서 게이트 기준값을 빠뜨렸다. 게이트가 빨간 채로 여러 커밋을 지나갔다.